반응형

S3 액세스 제어

기본적으로 버킷, 객체, 관련 리소스 등의 모든 S3 리소스(예_ 수명주기, 웹사이트 구성 등)는 프라이빗으로 설정됩니다. 리소스 소유자는 액세스 정책을 작성하여 다른 사용자에게 액세스 권한을 부여할 수 있습니다.

 

S3의 특정 리소스를 퍼블릭으로 설정할 수 있습니다. 그러면 누구나 해당 리소스에 액세스할 수 있겍 됩니다. 그러나 대부분의 S3 사용 사례에서는 퍼블릭 액세스 권한이 필요하지 않습니다. S3는 대개 다른 애플리케이션의 데이터를 저장합니다.  이러한 유형의 버킷에는 퍼블릭 액세스를 사용하지 않는 것이 좋습니다. S3에는 퍼블릭 액세스 차단 기능이 포함되어 있습니다. 이 기능은 실수로 인한 고객 데이터 노출을 방지하기 위해 추가 보 호 계층 역할을 합니다.

 

리소스 소유자는 리소스에 대해 제어 간으한 액세스 권한을 제공할 수 있습니다. 액세스 정책을 작성하여 다른 사용자에게 액세스 권한을 부여할 수 있습니다.

 

자세한 내용

 

버킷 정책

버킷 정책을 작성 및 구성하여 S3 버킷과 객체에 대한 권한을 부여할 수 있습니다. 버킷 정책은 S3 버킷용 리소스 기반 정책입니다. IAM 정책, S3 버킷 정책, AWS Organiztions 서비스 제어 정책(SCP)등의 정책을 기반으로 데이터 액세스를 제어합니다.

 

JSON 기반 액세스 정책 언어를 사용해 버킷 정책을 작성합니다. 버킷 정책을 사용하면 버킷의 객체에 대한 권한을 추가하거나 거부할 수 있습니다.

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
        }
    ]
}

 

위 예시는 버킷 정책을 JSON 형식으로 표현한 것입니다. 이 버킷 정책은 모든 보안 주체가 버킷을 나열하고 버킷에서 객체를 가져올 수 있도록 허용되어 있습니다. 하지만 이런 방식의 버킷과 객체에 대한 퍼블릭 액세스는 제한해야 합니다. S3에는 이와 같이 액세스를 지나치게 허용하는 퍼블릭 버킷 생성을 방지할 수 있는 도구가 포함되어 있습니다.

 

S3 퍼블릭 액세스 차단

경우에 따라 버킷에 퍼블릭 액세스가 절대 없도록 해야할 수 있습니다. 새로 생성된 S3 버킷과 객체는 기본적으로 비공개이며 보호되고 있습니다. S3 액세스 제어를 사용해 ACL, 버킷 정책 및 교차 오리진 리소스 공유(CORS) 설정에 의한 모든 버킷 액세스를 차단할 수 있습니다.

 

ACL이나 버킷 정책 중 하나 또는 두 가지를 모두 사용하여 버킷과 객체에 대한 퍼블릭 액세스 권한을 부여합니다. 모든 S3 버킷과 객체에 대한 퍼블릭 액세스를 방지하려면 계정 수준에서 모든 퍼블릭 액세스 차단을 활성화합니다. 이러한 설정은 계정 전체에서 현재 버킷과 앞으로 생성하는 버킷에 적용됩니다.

 

 S3 퍼블릭 액세스 차단 설정을 사용하면 정보 유출로부터 본인과 조직을 보호할 수 있습니다. 이 설정을 활성화하면 운영자가 실수로 버킷을 퍼블릭으로 설정해 공개하는 상황을 방지할 수 있습니다.

 

S3에서 차단되는 퍼블릭 액세스 유형

  • 새  ACL을 통해 부여된 버킷 및 객체에 대한 액세스 권한
  • 모든 ACL을 통해 부여된 버킷과 객체에 대한 액세스 권한
  • 새 퍼블릭 버킷이나 액세스 포인트 정책을 통해 부여된 버킷과 객체에 대한 액세스 권한
  • 모든 퍼블릭 버킷이나 액세스 포인트 정책을 통해 적용되는 버킷과 객체에 대한 교차 계정 액세스 권한

 

ACL(Access Control List)
컴퓨터 네트워크에서 특정 사용자 또는 그룹에 대한 액세스 권한을 제어하는 목적으로 사용되는 목록입니다. ACL은 일반적으로 IP 주소, 포트 번호, 프로토콜과 같은 요소를 기반으로 작성되며, 해당 요건을 충족하는 사용자 또는 그룹은 네트워크 리소스에 대한 액세스 권한을 갖게 됩니다.

ACL은 네트워크 보안을 강화하고 네트워크 리소스를 보호하는 데 중요한 역할을 합니다. 예를 들어, 특정 IP 주소에서만 특정 웹 사이트에 액세스할 수 있도록 허용하는 ACL을 생성할 수 있습니다. 또한, 특정 포트 번호에서만 특정 서비스에 액세스할 수 있도록 허용하는 ACL을 생성할 수도 있습니다.

ACL은 네트워크 보안을 강화하는 데 매우 효과적인 도구이지만, ACL을 잘못 설정하면 네트워크 보안을 오히려 약화시킬 수 있습니다. 따라서 ACL을 설정할 때는 신중하게 고려해야 합니다.

 

S3 액세스 포인트

S3 액세스 포인트를 활용하면 S3의 공유 데이터 집합에서 데이터 액세스를 대규모로 간편하게 관리할 수 있습니다. S3 액세스 포인트는 GetObject, PutObject 등의 S3 객체 작업을 수행한느 데 사용할 수 있는 명명된 네트워크 엔드포인트입니다. 액세스 포인트는 버킷에 연결됩니다. 각 액세스포인트는 해당 액세스 포인트를 통해 이루어진 요청에 대해 S3가 적용하고 고유한 구너한 및 네트워크 제어가 있습니다.

 

 

위 그림에서 재무 팀 IAM 역할을 수임한 재무 담당 직원이 재무 액세스 포인트에 GetObject 요청을 전송합니다. 액세스 포인트 정책을 적용하면 재무 담당 역할이 doc-example-bucket에서 접두가 /finance 및 /tax인 객체를 가져올 수 있습니다. 이 재무 담당 역할은 접두사가 sales, marketing인 객체나 S3 버킷의 기타 객체에는 액세스할 수 없습니다. 즉, S3 버킷 정책을 적용하여 각 사용자가 필요한 만큼만 액세스를 허용할 수 있습니다.

 

각 액세스 포인트는 사용자 정의된 액세스 포인트 정책을 적용합니다. 이 정책은 기본 버킷에 연결된 버킷 정책과 동시에 적용됩니다. S3 데이터 액세스를 프라이빗 네트워크로 제한하려는 경우 VPC의 요청만 수락하도록 액세스 포인트를 구성하면 됩니다. 각 액세스 포인트를 대상으로 사용자 정의 퍼블릭 액세스 차단 설정을 구성할 수도 있습니다.

 

액세스 포인트는 객체에서 작업을 수행할 때만 사용 가능합니다. 액세스 포인트를 사용하여 버킷 수정이나 삭제 등의 기타 S3 작업을 수행할 수 는 없습니다. S3 액세스 포인트는 일부 AWS 서비스 및 기능에서만 함께 사용할 수 있습니다. 예를 들어, S3 교차 리전 복제가 액세스 포인트를 통해 작동하도록 구성할 수는 없습니다.

 

서버 측 암호화 키 유형

암호화 키를 사용하여 저장 데이터를 암호화합니다. S3에서는 3 가지 객체 암호화 옵션이 제공됩니다.

 

  1. S3 관리형 키(SSE-S3)를 사용하는 서버 측 암호화(SSE)
    SSE-S3를 사용하는 경우 각 객체가 고유 키로 암호화됩니다. 추가적인 보안 조치로, 주기적으로 교체되는 기본 키를 사용하여 키 자체를 암호화합니다. S3 서버 측 암호화는 AES-256(256비트 Advenced Encryption Standard)를 사용하여 데이터를 암호화합니다.
  2. AWS Key Management Service(AWS KMS)에 저장된 AWS KMS 키(SSE-KMS)를 사용하는 서버 측 암호화
    SSE-KMS에 저장된 KMS 키는 SSE-S3와 비슷하지만 몇 가지 추가 이점이 제공되며 관련 요금이 청구됩니다. KMS 키 사용 시에는 별도의 권한이 있어야 합니다. 그러므로 S3 객체 무단 액세스를 더욱 철저하게 방어할 수 있습니다.

  3. 고객 제공 키(SSE-C)를 사용하는 서버측 암호화
    SSE-C 사용 시에는 사용자가 암호화 키를 관리하고 S3는 디스크에 쓰는 데이터의 암호화를 관리합니다. 또한 S3는 사용자가 객체에 액세스할 때 복호화를 관리합니다.
SSE(Server-Side Encryption)
서버 측 암호화는 데이터를 저장하는 서버에서 데이터를 암호화하는 기술입니다. 서버 측 암호화를 사용하면 데이터가 전송 중 또는 저장 중일 때에도 악의적인 공격으로부터 보호할 수 있습니다.
암호화와 복호화
암호화는 데이터를 숨기는 것입니다. 복호화는 암호화된 데이터를 원래의 데이터로 되돌리는 것입니다. 암호화와 복호화는 모두 암호화 키를 사용합니다. 암호화 키는 데이터를 암호화하고 복호화하는 데 사용되는 고유한 문자열입니다. 암호화 키는 안전하게 보관되어야 합니다. 암호화 키가 유출되면 누구나 암호화된 데이터를 복호화할 수 있습니다.
반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 20. S3 활용  (0) 2023.07.16
[AWS SAA] 19. S3 종류와 특징  (0) 2023.07.16
[AWS SAA] 17. 스토리지(S3)  (0) 2023.07.15
[AWS SAA] 16. 서버리스 컴퓨팅(Lambda)  (0) 2023.07.14
[AWS SAA] 15. EC2 비용 최적화  (0) 2023.07.08