데이터 보호 및 암호화

데이터 보호 및 암호화 (Data protection and encryption)

디렉터리 버킷에 대한 암호화를 구성하는 방법은 아래 주제들에서 자세히 다뤄요.

출처: 문서

본문

  • 서버 측 암호화(Server-side encryption)
  • 디렉터리 버킷의 기본 암호화 설정·모니터링
  • 디렉터리 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화
  • 전송 중 암호화(Encryption in transit)
  • 데이터 삭제(Data deletion)

서버 측 암호화

모든 디렉터리 버킷에는 기본으로 암호화가 구성되어 있으며, 디렉터리 버킷에 업로드되는 모든 새 객체는 저장 시 자동으로 암호화돼요. Amazon S3 관리 키를 사용한 서버 측 암호화(SSE-S3)는 모든 디렉터리 버킷의 기본 암호화 구성이에요. 다른 암호화 유형을 지정하려면 버킷의 기본 암호화 구성을 설정해 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 사용할 수 있어요. 디렉터리 버킷의 SSE-KMS에 대한 자세한 내용은 디렉터리 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 를 참고하세요.

버킷의 기본 암호화가 원하는 암호화 구성으로 설정되어 있도록 하고, CreateSession 요청이나 PUT object 요청에서 버킷 기본 암호화를 덮어쓰지 않는 것을 권장해요. 그러면 새 객체가 원하는 암호화 설정으로 자동 암호화돼요. 디렉터리 버킷의 암호화 덮어쓰기 동작에 대한 자세한 내용은 새 객체 업로드에 AWS KMS를 사용한 서버 측 암호화 지정 을 참고하세요.

디렉터리 버킷의 SSE-KMS는 일반 용도 버킷의 SSE-KMS와 다음 면에서 달라요.

  • SSE-KMS 구성은 버킷의 수명 동안 디렉터리 버킷당 고객 관리 키(customer managed key) 1개만 지원해요. AWS 관리 키(aws/s3)는 지원되지 않아요. 또한 SSE-KMS에 고객 관리 키를 지정한 뒤에는 버킷의 SSE-KMS 구성용 고객 관리 키를 덮어쓸 수 없어요. 버킷의 SSE-KMS 구성에 지정한 고객 관리 키를 확인하려면 HeadObject API 작업 요청을 보내 응답에서 x-amz-server-side-encryption-aws-kms-key-id 값을 찾으면 돼요. 데이터에 새 고객 관리 키를 사용하려면 기존 객체를 새 고객 관리 키가 있는 새 디렉터리 버킷으로 복사하는 것을 권장해요.
  • HeadObject API 작업 요청을 보내 응답에서 x-amz-server-side-encryption-aws-kms-key-id 값을 찾아 확인할 수 있어요.
  • CopyObject와 UploadPartCopy를 제외한 Zonal 엔드포인트(객체 수준) API 작업은 낮은 지연 시간을 위해 CreateSession으로 요청을 인증하고 권한을 부여해요. 버킷의 기본 암호화가 원하는 암호화 구성으로 설정되어 있도록 하고, CreateSession 요청이나 PUT object 요청에서 버킷 기본 암호화를 덮어쓰지 않는 것을 권장해요. 그러면 새 객체가 원하는 암호화 설정으로 자동 암호화돼요. 디렉터리 버킷의 새 객체를 SSE-KMS로 암호화하려면 KMS 키(구체적으로는 고객 관리 키)와 함께 SSE-KMS를 디렉터리 버킷의 기본 암호화 구성으로 지정해야 해요. 그러면 Zonal 엔드포인트 API 작업용 세션이 생성될 때 세션 중에 새 객체가 SSE-KMS와 S3 Bucket Keys로 자동 암호화·복호화돼요. 디렉터리 버킷의 암호화 덮어쓰기 동작에 대한 자세한 내용은 새 객체 업로드에 AWS KMS를 사용한 서버 측 암호화 지정 을 참고하세요. Zonal 엔드포인트 API 호출(CopyObject와 UploadPartCopy 제외)에서는 CreateSession 요청의 암호화 설정 값(x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, x-amz-server-side-encryption-bucket-key-enabled)을 덮어쓸 수 없어요. Zonal 엔드포인트 API 호출에서 이러한 암호화 설정 값을 명시적으로 지정할 필요는 없으며, Amazon S3는 CreateSession 요청의 암호화 설정 값을 사용해 디렉터리 버킷의 새 객체를 보호해요. 참고 — AWS CLI나 AWS SDK를 사용하면 CreateSession의 세션 토큰은 세션 만료 시 서비스 중단을 막기 위해 자동으로 갱신돼요. AWS CLI나 AWS SDK는 CreateSession 요청에 버킷의 기본 암호화 구성을 사용해요. CreateSession 요청에서 암호화 설정 값을 덮어쓰는 것은 지원되지 않아요. 또한 CopyObject와 UploadPartCopy를 제외한 Zonal 엔드포인트 API 호출에서도 CreateSession 요청의 암호화 설정 값을 덮어쓰는 것은 지원되지 않아요.
  • CopyObject의 경우 디렉터리 버킷의 새 객체 복사본을 SSE-KMS로 암호화하려면 KMS 키(구체적으로는 고객 관리 키)와 함께 SSE-KMS를 디렉터리 버킷의 기본 암호화 구성으로 지정해야 해요. 그러면 SSE-KMS로 새 객체 복사본의 서버 측 암호화 설정을 지정할 때 그 암호화 키가 디렉터리 버킷의 기본 암호화 구성에 지정한 고객 관리 키와 같은지 확인해야 해요. UploadPartCopy의 경우 디렉터리 버킷의 새 객체 파트 복사본을 SSE-KMS로 암호화하려면 KMS 키(구체적으로는 고객 관리 키)와 함께 SSE-KMS를 디렉터리 버킷의 기본 암호화 구성으로 지정해야 해요. UploadPartCopy 요청 헤더에는 SSE-KMS로 새 객체 파트 복사본의 서버 측 암호화 설정을 지정할 수 없어요. 또한 CreateMultipartUpload 요청에 제공하는 암호화 설정은 대상 버킷의 기본 암호화 구성과 일치해야 해요.
  • S3 Bucket Keys는 디렉터리 버킷의 GET 및 PUT 작업에 항상 활성화되며 비활성화할 수 없어요. CopyObject, UploadPartCopy, Batch Operations의 Copy 작업, 또는 가져오기 작업(import job)으로 SSE-KMS 암호화 객체를 일반 용도 버킷과 디렉터리 버킷 사이(또는 디렉터리 버킷 사이)에서 복사할 때는 S3 Bucket Keys가 지원되지 않아요. 이 경우 Amazon S3는 KMS 암호화 객체에 대한 복사 요청이 있을 때마다 AWS KMS에 호출해요.
  • 디렉터리 버킷의 암호화에 AWS KMS 고객 관리 키를 지정할 때는 키 ID나 키 ARN만 사용해야 해요. KMS 키의 별칭(alias) 형식은 지원되지 않아요.

디렉터리 버킷은 AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)나 고객 제공 암호화 키를 사용한 서버 측 암호화(SSE-C)를 지원하지 않아요.

전송 중 암호화

디렉터리 버킷은 Regional 및 Zonal API 엔드포인트를 사용해요. 사용하는 Amazon S3 API 작업에 따라 Regional 또는 Zonal 엔드포인트가 필요해요. 게이트웨이 가상 사설 클라우드(VPC) 엔드포인트를 통해 Zonal 및 Regional 엔드포인트에 접근할 수 있어요. 게이트웨이 엔드포인트 사용에는 추가 요금이 없어요. Regional 및 Zonal API 엔드포인트에 대해 자세히 알아보려면 디렉터리 버킷의 네트워킹 을 참고하세요.

데이터 삭제

Amazon S3 콘솔, AWS SDK, AWS CLI, 또는 Amazon S3 REST API를 사용해 디렉터리 버킷에서 직접 객체 하나 이상을 삭제할 수 있어요. 디렉터리 버킷의 모든 객체는 스토리지 비용이 발생하므로, 더 이상 필요 없는 객체는 삭제하는 것을 권장해요.

디렉터리 버킷에 저장된 객체를 삭제하면, 삭제 중인 객체 외에 다른 객체를 포함하지 않는 상위 디렉터리는 재귀적으로 함께 삭제돼요.

참고

다중 인증(MFA) 삭제와 S3 버전 관리(Versioning)는 S3 Express One Zone에서 지원되지 않아요.

더 알아보기 (Learn more)