Amazon S3 버킷에 있는 파일을 보호하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 11월 10일

Amazon Simple Storage Service(Amazon S3) 버킷 및 객체의 보안을 확보하려고 합니다. 비공개로 유지하고자 하는 리소스는 비공개 상태여야 합니다. Amazon S3 리소스에 대한 권한을 제한하려면 어떻게 해야 합니까? 이러한 리소스에 대한 액세스를 모니터링하려면 어떻게 해야 합니까?

해결 방법

S3 리소스에 대한 액세스 제한

기본적으로 모든 S3 버킷은 비공개이며 명시적으로 액세스 권한이 부여된 사용자만 액세스할 수 있습니다. AWS를 사용할 때의 모범 사례는 반드시 액세스 권한이 필요한 사람으로만 리소스에 대한 액세스 권한을 제한하는 것입니다. 최소 권한 원칙을 따르십시오.

다음과 같은 방식으로 S3 버킷에 대한 액세스를 제한하십시오.

  • 특정 버킷 및 객체에 액세스할 수 있는 사용자를 지정하는 AWS Identity and Access Management(IAM) 사용자 정책을 작성합니다. IAM 정책을 사용하면 프로그래밍 방식으로 여러 사용자에 대한 Amazon S3 권한을 관리할 수 있습니다. 사용자 정책의 생성 및 테스트에 대한 자세한 내용은 AWS Policy GeneratorIAM 정책 시뮬레이터를 참조하십시오.
  • 특정 버킷 및 객체에 대한 액세스를 정의하는 버킷 정책을 작성합니다. 버킷 정책을 사용하면 AWS 계정에서 액세스 권한을 부여하고, 퍼블릭 또는 익명 권한을 부여하며 조건에 따라 액세스를 허용 또는 차단할 수 있습니다. 버킷 정책의 생성 및 테스트에 대한 자세한 내용은 AWS Policy Generator를 참조하십시오.
    참고: 버킷 정책에서 거부문을 사용하면 IAM 정책에서 사용자에게 액세스 권한이 부여된 경우에도 해당 IAM 사용자의 액세스 권한을 제한할 수 있습니다.
  • Amazon S3 퍼블릭 액세스 차단을 사용하여 중앙 집중식으로 퍼블릭 액세스를 제한합니다. 퍼블릭 액세스 차단 설정은 버킷 정책 및 객체 사용 권한을 재정의합니다. 공개적으로 액세스하지 않으려는 모든 계정 및 버킷에 대해 공용 액세스 차단을 사용하도록 설정해야 합니다.
  • 버킷 및 객체에 ACL(액세스 제어 목록)을 설정합니다.
    참고: 프로그래밍 방식으로 사용 권한을 관리해야 하는 경우 ACL 대신 IAM 정책 또는 버킷 정책을 사용하십시오. 그러나 버킷 정책이 최대 파일 크기인 20KB를 초과하면 ACL을 사용할 수 있습니다. 또는 ACL을 사용하여 Amazon S3 서버 액세스 로깅 또는 Amazon CloudFront 로깅에 액세스 권한을 부여할 수 있습니다.

ACL을 사용하여 리소스를 보호할 때 다음 모범 사례를 고려하십시오.

  • 버킷 또는 객체에 대한 Amazon S3 작업을 허용하는 ACL 권한을 검토합니다. ACL 권한 및 해당 권한이 허용하는 작업에 대한 목록은 부여할 수 있는 권한을 참조하십시오.
  • 버킷에 대한 읽기쓰기 액세스 권한을 가진 사람을 엄격하게 관리하십시오.
  • Everyone 그룹에 읽기 액세스 권한을 부여하는 경우, 모든 사용자가 버킷이나 객체에 액세스할 수 있으므로 권한 부여 전에 사용 사례를 신중하게 고려해야 합니다.
  • 절대 쓰기 액세스 권한을 [Everyone] 그룹에 부여하지 않도록 합니다. 이 설정을 사용하면 누구든지 버킷에 객체를 추가할 수 있으며 이 경우 추가 요금이 청구됩니다. 또한 이 설정으로 누구나 버킷의 객체를 삭제할 수도 있습니다.
  • Any authenticated AWS user 그룹에 대해 절대 쓰기 액세스를 허용하지 마십시오. 이 그룹에는 사용자의 계정에 있는 IAM 사용자뿐만 아니라 활성 AWS 계정을 가진 모든 사용자를 포함합니다. 계정에 포함된 IAM 사용자에 대한 액세스를 제어하려면 IAM 정책을 사용하십시오. Amazon S3가 IAM 정책을 평가하는 방법에 대한 자세한 내용은 Amazon S3에서 요청에 권한을 부여하는 방법을 참조하십시오.

정책, 퍼블릭 액세스 차단 및 ACL을 사용하는 것 외에도 다음과 같은 방식으로 특정 작업에 대한 액세스를 제한할 수 있습니다.

  • MFA delete를 활성화합니다. 이 설정은 사용자가 객체를 삭제하거나 버킷 버전 관리를 비활성화하기 전에 Multi-Factor Authentication(MFA) 디바이스를 사용하여 인증을 수행할 것을 요구합니다.
  • MFA 보호 API 액세스를 설정합니다. 이 설정은 사용자가 특정 Amazon S3 API 작업을 호출하기 전에 AWS MFA 디바이스를 사용하여 인증을 수행할 것을 요구합니다.
  • 다른 사용자와 일시적으로 S3 객체를 공유하는 경우에는 사전 서명된 URL을 생성하여 객체에 대한 한시적 액세스 권한을 부여합니다. 자세한 내용은 다른 사용자와 객체 공유를 참조하십시오.

S3 리소스 모니터링

다음과 같은 방법으로 S3 리소스를 로깅하고 모니터링할 수 있습니다.

암호화를 사용한 데이터 보호

이동 중 암호화가 필요한 사용 사례를 위해 Amazon S3는 Amazon S3에서 송수신하는 데이터를 암호화하는 HTTPS 프로토콜을 지원합니다. 모든 AWS SDK 및 AWS 도구는 기본적으로 HTTPS를 사용합니다.
참고: Amazon S3에 타사 도구를 사용하는 경우, 개발자에게 해당 도구도 HTTPS 프로토콜을 지원하는지 문의하십시오.

저장 중 데이터의 암호화가 필요한 사용 사례를 위해 Amazon S3는 서버 측 암호화(SSE)를 제공합니다. SSE 옵션은 SSE-S3, SSE-KMS 또는 SSE-C를 포함합니다. SSE 파라미터는 버킷에 대한 객체를 작성할 때 지정할 수 있습니다. SSE-S3 또는 SSE-KMS를 통해 버킷에 대한 기본 암호화를 활성화할 수도 있습니다.

클라이언트측 암호화가 필요한 사용 사례의 경우 클라이언트측 암호화를 사용하여 데이터 보호를 참조하십시오.