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

최종 업데이트 날짜: 2021년 12월 3일

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

간략한 설명

파일과 Amazon S3 버킷이 안전한지 확인하려면 다음 모범 사례를 따르십시오.

해결 방법

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

기본적으로 모든 S3 버킷은 비공개이며 명시적으로 액세스 권한이 부여된 사용자만 액세스할 수 있습니다.

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

  • 특정 버킷 및 객체에 액세스할 수 있는 사용자를 지정하는 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 리소스를 로깅하고 모니터링할 수 있습니다.

  • AWS CloudTrail 로그를 구성합니다. 기본적으로 CloudTrail은 버킷 수준의 작업만 추적합니다. 객체 수준의 작업(예: GetObject)을 추적하려면 Amazon S3 데이터 이벤트를 활성화합니다.
  • Amazon S3 서버 액세스 로깅을 사용합니다. 이러한 로그의 검토에 대한 자세한 내용은 Amazon S3 서버 액세스 로그 형식을 참조하십시오.
  • AWS Config를 사용하여 버킷 ACL 및 버킷 정책에 퍼블릭 읽기 또는 쓰기 액세스를 허용하는 위반 사항이 있는지 모니터링합니다. 자세한 내용은 s3-bucket-public-read-prohibiteds3-bucket-public-write-prohibited를 참조하십시오.
  • AWS IAM Access Analyzer를 사용하여 다른 AWS 계정에서 S3 리소스에 대한 액세스 권한을 부여하는 버킷 또는 IAM 정책을 검토할 수 있습니다.
  • Amazon Macie를 사용하여 버킷에 저장된 민감한 데이터, 버킷에 대한 광범위한 액세스 및 계정의 암호화되지 않은 버킷의 식별을 자동화할 수 있습니다.
  • CloudTrail을 Amazon CloudWatch 또는 AWS Lambda와 같은 다른 서비스와 함께 사용하여 S3 리소스에 특정 작업이 실행될 때 특정 프로세스를 호출하게 합니다. 자세한 내용은 CloudWatch Events를 사용하여 Amazon S3 객체 수준 작업 기록을 참조하십시오.
  • Business Support 플랜 또는 Enterprise Support 플랜이 있는 경우 AWS Trusted Advisor의 S3 버킷 권한 확인을 사용할 수 있습니다. 이 확인 기능은 공개 액세스 권한이 있는 버킷에 대해 알려줍니다.
    참고: 이 Trusted Advisor 확인은 버킷 ACL을 재정의하는 버킷 정책을 모니터링하지 않습니다.

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

이동 중 암호화가 필요한 사용 사례를 위해 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를 통해 버킷에 대한 기본 암호화를 활성화할 수도 있습니다.

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