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

최종 업데이트 날짜: 2019년 5월 17일

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을 사용하는 것 외에도 다음과 같은 방법으로 특정 작업에 대한 액세스를 제한할 수 있습니다.

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

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를 사용하여 버킷에 대한 기본 암호화를 활성화할 수 있습니다.

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