Amazon S3 버킷에 대한 노출 문제 해결 - AWS Security Hub

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3 버킷에 대한 노출 문제 해결

AWS Security Hub는 Amazon Simple Storage Service(S3) 버킷에 대한 노출 조사 결과를 생성할 수 있습니다.

Security Hub 콘솔에서 노출 조사 결과와 관련된 Amazon S3 버킷 및 해당 식별 정보가 조사 결과 세부 정보의 리소스 섹션에 나열됩니다. 프로그래밍 방식으로 Security Hub CSPM API의 GetFindingsV2 작업을 통해 리소스 세부 정보를 검색할 수 있습니다.

노출 조사 결과와 관련된 리소스를 식별한 후 필요하지 않은 경우 리소스를 삭제할 수 있습니다. 필수적이지 않은 리소스를 삭제하면 노출 프로필과 AWS 비용을 줄일 수 있습니다. 리소스가 필수적인 경우 다음 권장 문제 해결 단계를 수행하여 위험을 완화하세요. 문제 해결 주제는 특성 유형에 따라 구분됩니다.

단일 노출 조사 결과에는 여러 문제 해결 주제에서 식별된 문제가 포함됩니다. 반대로, 하나의 문제 해결 주제만 처리하여 노출 조사 결과를 해결하고 심각도 수준을 낮출 수 있습니다. 위험 문제 해결에 대한 접근 방식은 조직의 요구 사항 및 워크로드에 따라 달라집니다.

참고

이 주제에 제공된 문제 해결 지침은 다른 AWS 리소스에서 추가 상담이 필요할 수 있습니다.

Amazon S3 버킷의 잘못된 구성 특성

다음은 Amazon S3 버킷의 잘못된 구성 특성 및 제안된 문제 해결 단계입니다.

Amazon S3 버킷에서 버전 관리가 비활성화됨

Amazon S3 버전 관리는 동일한 버킷 내에 여러 개의 객체 변형을 유지하는 데 도움이 됩니다. 버전 관리를 비활성화하면 Amazon S3는 각 객체의 최신 버전만 저장합니다. 즉, 객체가 실수로 또는 악의적으로 삭제되거나 덮어써지면 복구할 수 없습니다. 버전 관리가 활성화된 버킷은 우발적인 삭제, 애플리케이션 장애, 데이터 무단 수정 또는 삭제가 발생할 수 있는 랜섬웨어 공격과 같은 보안 사고로부터 보호됩니다. 보안 모범 사례에 따라 분실 시 다시 생성하기 어렵거나 불가능한 중요한 데이터가 포함된 버킷에 대해 버전 관리를 활성화할 것을 권장합니다.

  1. 버전 관리 활성화 - 버킷에서 Amazon S3 버전 관리를 활성화하려면 Amazon Simple Storage Service 사용 설명서버킷에서 버전 관리 활성화를 참조하세요. 버전 관리를 활성화할 때는 스토리지를 관리하기 위하 수명 주기 규칙을 구현하는 것이 좋습니다. 버전 관리는 객체의 여러 복사본을 유지 관리하기 때문입니다.

Amazon S3 버킷에 Object Lock이 비활성화되어 있음

Amazon S3 Object Lock은 Amazon S3 객체에 대해 Write Once Read Many(WORM) 모델을 제공하므로, 객체가 고정 기간 동안 또는 무기한으로 삭제되거나 덮어쓰이지 않습니다. Object Lock이 비활성화되면 객체가 랜섬웨어에 의한 우발적이거나 악의적인 삭제, 수정 또는 암호화에 취약할 수 있습니다. Object Lock은 변경 불가능한 데이터 스토리지가 필요한 규제 요구 사항을 준수하고 데이터 암호화를 시도할 수 있는 랜섬웨어와 같은 정교한 위협으로부터 보호하는 데 특히 중요합니다. Object Lock을 활성화하면 보존 정책을 추가된 데이터 보호 계층으로 적용하고 중요한 데이터에 대해 변경 불가능한 백업 전략을 생성할 수 있습니다. 보안 모범 사례에 따라 객체가 악의적으로 수정되지 않도록 Object Lock을 활성화할 것을 권장합니다.

  1. Object Lock은 새 버킷을 생성할 때만 활성화할 수 있으므로 Object Lock이 활성화된 새 버킷을 생성해야 합니다. 대규모 마이그레이션의 경우 Batch Operations를 사용하여 객체를 새 버킷에 복사하는 것이 좋습니다. 객체를 잠그기 전에 버킷에 Amazon S3 버전 관리 및 Object Lock도 활성화해야 합니다. Object Lock은 새 버킷에서만 활성화할 수 있으므로 기존 데이터를 Object Lock이 활성화된 새 버킷으로 마이그레이션해야 합니다. Amazon S3 객체 잠금 구성 - 버킷에서 객체 잠금을 구성하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3 객체 잠금 구성을 참조하세요. Object Lock을 설정한 후 환경에 따라 적절한 보존 모드를 선택합니다.

Amazon S3 버킷이 AWS KMS 키로 저장 시 암호화되지 않음

Amazon S3은 Amazon S3 관리형 키를 사용한 서버 측 암호화를 모든 새 버킷의 기본 암호화 수준으로 적용합니다. Amazon S3 관리형 키는 강력한 암호화 보호를 제공하지만 AWS Key Management Service 키와 동일한 수준의 액세스 제어 및 감사 기능을 제공하지 않습니다. KMS 키를 사용하는 경우 객체에 액세스하려면 Amazon S3 버킷과 객체를 암호화한 KMS 키 모두에 대한 권한이 필요합니다. 이는 암호화된 객체에 액세스할 수 있는 사용자를 세부적으로 제어해야 하고 암호화 키 사용에 대한 포괄적인 감사 로깅이 필요한 민감한 데이터에 특히 중요합니다. 보안 모범 사례에 따라 KMS 키를 사용하여 민감한 데이터가 포함된 버킷을 암호화하거나 규정 준수 요구 사항이 엄격한 환경에 사용할 것을 권장합니다.

  1. Amazon S3 버킷 키 구성

    새 객체에 Amazon S3 버킷 키를 사용하도록 버킷을 구성하려면 Amazon Simple Storage Service 사용 설명서새 객체에 SSE-KMS와 함께 Amazon S3 버킷 키를 사용하도록 버킷 구성을 참조하세요. 기존 객체를 암호화하는 방법에 대한 자세한 내용은 AWS 스토리지 블로그의 Amazon S3 배치 작업을 사용하여 객체 암호화를 참조하세요.

AWS KMS 암호화를 구현할 때는 다음 사항을 고려하세요.

  • 키 관리 - AWS 관리형 키 또는 고객 관리형 키(CMK)를 사용할지 여부를 결정합니다. CMK를 사용하면 고객이 키의 수명 주기 및 사용을 완벽하게 제어합니다. 두 키 유형의 차이점에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS KMS 키를 참조하세요.

  • 키 교체 - 추가 보안 조치를 위해 KMS 키에 대해 자동 키 교체를 활성화합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서자동 키 교체 활성화를 참조하세요.

버전이 지정된 Amazon S3 버킷에서 다중 인증(MFA) 삭제가 비활성화됨

다중 인증(MFA) 삭제는 Amazon S3 버킷에 대한 추가 보안 계층을 제공합니다. 파괴적인 Amazon S3 작업을 위해서는 다중 인증이 필요합니다. MFA 삭제가 비활성화되면 적절한 권한이 있는 사용자는 추가 인증 문제 없이 버킷에서 객체 버전을 영구적으로 삭제하거나 버전 관리를 일시 중지할 수 있습니다. MFA 삭제를 활성화하면 데이터를 무단 또는 우발적 삭제로부터 보호하여 랜섬웨어 공격, 내부자 위협 및 운영 오류에 대한 보호를 강화할 수 있습니다. MFA 삭제는 무단 삭제로부터 보호해야 하는 중요하거나 규정 준수에 민감한 데이터가 포함된 버킷에 특히 유용합니다. 보안 모범 사례에 따라 Amazon S3 버킷에 대해 MFA를 활성화할 것을 권장합니다.

  1. MFA 유형 검토

    AWS 는 다음과 같은 MFA 유형을 지원합니다. 물리적 디바이스를 사용한 인증은 일반적으로 더 엄격한 보안 보호를 제공하지만, 어떤 유형의 MFA를 사용해도 MFA를 비활성화하는 것보다 안전합니다.

  2. 리소스 정책 수준에서 MFA 적용

    버킷 정책의 aws:MultiFactorAuthAge 조건 키를 사용하여 민감한 작업에 MFA를 요구합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서MFA 필요를 참조하세요.

  3. MFA 활성화

    MFA 삭제를 활성화하려면 먼저 Amazon S3 버킷에서 버전 관리가 활성화되어 있어야 합니다. MFA 삭제는 버전 관리가 활성화된 버킷에서만 지원됩니다. Amazon S3 버전 관리를 활성화하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서버킷에서 버전 관리 활성화를 참조하세요. MFA 삭제는 Amazon S3 콘솔을 통해 활성화할 수 없습니다. Amazon S3 API 또는 AWS CLI를 사용해야 합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서MFA 삭제 구성을 참조하세요.

Amazon S3 버킷을 사용하면 다른 AWS 계정의 보안 주체가 버킷 권한을 수정할 수 있습니다.

Amazon S3 버킷 리소스 정책은 버킷 및 객체에 대한 액세스를 제어합니다. 버킷 정책에서 다른 AWS 계정의 보안 주체가 버킷 권한을 수정하도록 허용하는 경우 권한이 없는 사용자는 버킷을 재구성할 수 있습니다. 외부 보안 주체 자격 증명이 손상되면 권한이 없는 사용자가 버킷을 제어하여 데이터 침해 또는 서비스 중단을 초래할 수 있습니다. 표준 보안 원칙에 따라 권한 관리 작업을 신뢰할 수 있는 보안 주체로만 제한하는 것이 AWS 좋습니다.

  1. 버킷 정책 검토 및 식별

    노출에서 ARN 필드에서 Amazon S3 버킷을 식별합니다. Amazon S3 콘솔에서 버킷을 선택하고 권한 탭으로 이동하여 버킷 정책을 검토합니다. 버킷에 연결된 권한 정책을 검토합니다. 위탁자 문에 표시된 대로 s3:PutBucketPolicy, s3:PutBucketAcl, s3:DeleteBucketPolicy, s3:* 과 같은 작업을 부여하는 정책 문 또는 계정 외부의 위탁자에게 액세스를 허용하는 정책 문을 찾습니다.

  2. 버킷 정책 수정

    버킷 정책을 수정하여 다른 AWS 계정에 부여된 작업을 제거하거나 제한합니다.

    • 외부 계정에 권한 관리 작업을 부여하는 정책 설명을 제거합니다.

    • 교차 계정 액세스가 필요한 경우 광범위한 권한 (s3:*)을 버킷 권한 관리가 포함되지 않은 특정 작업으로 바꿉니다.

    버킷 정책 수정에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3 콘솔을 사용하여 버킷 정책 추가를 참조하세요.

Amazon S3 버킷의 연결성 특성

다음은 Amazon S3 버킷의 연결성 특성 및 제안된 문제 해결 단계입니다.

Amazon S3 버킷에 퍼블릭 액세스가 있음

기본적으로 Amazon S3 버킷 및 객체는 비공개이지만 다양한 구성을 통해 공개로 만들 수 있습니다. 퍼블릭 액세스를 허용하도록 버킷 정책, 액세스 포인트 정책 또는 객체 권한을 수정하면 민감한 데이터가 노출될 위험이 있습니다.

  1. 버킷 평가

    조직 정책, 규정 준수 요구 사항 또는 데이터 분류에 따라 버킷을 비공개로 만들 수 있는지 평가합니다. 퍼블릭 또는 다른에 버킷 액세스 권한을 부여하지 않으려는 경우 나머지 수정 지침을 AWS 계정따릅니다.

  2. 버킷을 비공개로 구성

    다음 옵션 중 하나를 선택하여 Amazon S3 버킷에 대한 프라이빗 액세스를 구성합니다.

    • 계정 수준 - 계정 수준 설정을 사용하여 계정의 모든 버킷에 대한 퍼블릭 액세스를 차단하려면 Amazon Simple Storage Service 사용 설명서계정에 대한 퍼블릭 액세스 차단 설정 구성을 참조하세요.

    • 버킷 수준 - 특정 버킷에 대한 퍼블릭 액세스를 차단하려면 Amazon Simple Storage Service 사용 설명서의 Amazon S3buckets에 대한 yourAmazon.

    • 버킷 ACL 또는 정책 - 버킷 액세스 제어 목록(ACL), 버킷 정책, 다중 리전 액세스 포인트(MRAP) 정책 또는 액세스 포인트 정책을 수정하여 버킷에 대한 퍼블릭 액세스를 제거하려면 Amazon Simple Storage Service 사용 설명서버킷 액세스 검토 및 변경을 참조하세요. 계정 수준 또는 버킷 수준에서 퍼블릭 액세스를 차단하면 차단 설정이 퍼블릭 액세스를 허용하는 정책보다 우선합니다.

Amazon S3 버킷에 퍼블릭 읽기 액세스가 있음

퍼블릭 읽기 액세스를 사용하는 Amazon S3 버킷에서는 인터넷상의 모든 사용자가 버킷의 콘텐츠를 볼 수 있습니다. 공개적으로 액세스할 수 있는 웹 사이트 또는 공유 리소스에서는 이 액세스가 필요할 수 있지만 버킷에 민감한 데이터가 포함된 경우 보안 위험이 발생할 수 있습니다. 퍼블릭 읽기 액세스로 인해 무단 보기 및 다운로드가 발생할 수 있으며, 민감한 데이터가 해당 버킷에 저장되면 데이터 침해가 발생할 수 있습니다. 표준 보안 원칙에 따라는 Amazon S3 버킷에 대한 액세스를 필요한 사용자 및 시스템으로 제한하는 것을 AWS 권장합니다.

  1. 버킷 수준에서 퍼블릭 액세스 차단

    Amazon S3는 버킷 정책 또는 ACL에 관계없이 퍼블릭 액세스를 방지하기 위해 버킷 수준 및 계정 수준 모두에서 구성할 수 있는 퍼블릭 액세스 차단 설정을 제공합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단을 참조하세요. 퍼블릭 액세스를 차단한 후 버킷 액세스 제어 구성을 검토하여 액세스 요구 사항에 부합하는지 확인합니다. 그런 다음 Amazon S3 버킷 정책을 검토하여 버킷에 액세스할 수 있는 사용자를 명시적으로 정의합니다. 버킷 정책의 예는 Amazon Simple Storage Service 사용 설명서Amazon S3 버킷 정책 예제를 참조하세요.

  2. 대체 액세스 방법

    퍼블릭 읽기 액세스가 필요한 경우 다음과 같은 보다 안전한 대안을 고려할 수 있습니다.

    • CloudFront - CloudFront를 오리진 액세스 ID(OAI) 또는 오리진 액세스 제어(OAC)와 함께 사용하여 프라이빗 Amazon S3 버킷에 대한 읽기 액세스를 허용합니다. 이 대안은 CloudFront를 통해 콘텐츠에 공개적으로 액세스할 수 있도록 허용하면서 Amazon S3 버킷에 대한 직접 액세스를 제한합니다. 자세한 내용은 Amazon CloudFront 개발자 안내서Amazon S3 오리진에 대한 액세스 제한을 참조하세요.

    • 미리 서명된 URL - 특정 객체에 대한 임시 액세스를 위해 미리 서명된 URL을 사용합니다. 자세한 내용은 Amazon CloudFront 개발자 안내서미리 서명된 URLs.

Amazon S3 버킷에 읽기 액세스가 있음

퍼블릭 쓰기 액세스를 사용하는 Amazon S3 버킷에서는 인터넷상의 모든 사용자가 버킷의 객체를 업로드, 수정 또는 삭제할 수 있습니다. 이로 인해 누군가 악성 파일을 업로드하고, 기존 파일을 수정하고, 데이터를 삭제할 수 있는 가능성을 포함하여 상당한 보안 위험이 발생합니다. 퍼블릭 쓰기 액세스는 공격자가 악용할 수 있는 보안 취약성을 생성합니다. 표준 보안 원칙에 따라는 Amazon S3 버킷에 대한 쓰기 액세스를 필요한 사용자 및 시스템으로만 제한할 것을 AWS 권장합니다.

  1. 계정 및 버킷 수준에서 퍼블릭 액세스 차단

    Amazon S3는 버킷 정책 또는 ACL에 관계없이 퍼블릭 액세스를 방지하기 위해 버킷 수준 및 계정 수준 모두에서 구성할 수 있는 퍼블릭 액세스 차단 설정을 제공합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단을 참조하세요.

  2. 버킷 정책 수정

    퍼블릭 쓰기 액세스를 제거하는 보다 세분화된 접근 방식을 사용하려면 버킷 정책을 검토하세요. s3:PutObject, s3:DeleteObject 또는 s3:*을 찾을 수 있습니다. 버킷 정책을 관리하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3의 버킷 정책을 참조하세요.

  3. 대체 액세스 방법

    퍼블릭 읽기 액세스가 필요한 경우 다음과 같은 보다 안전한 대안을 고려할 수 있습니다.

    • CloudFront - CloudFront를 오리진 액세스 ID(OAI) 또는 오리진 액세스 제어(OAC)와 함께 사용하여 프라이빗 Amazon S3 버킷에 대한 읽기 액세스를 허용합니다. 이 대안은 CloudFront를 통해 콘텐츠에 공개적으로 액세스할 수 있도록 허용하면서 Amazon S3 버킷에 대한 직접 액세스를 제한합니다. 자세한 내용은 Amazon CloudFront 개발자 안내서Amazon S3 오리진에 대한 액세스 제한을 참조하세요.

    • 미리 서명된 URL - 특정 객체에 대한 임시 액세스를 위해 미리 서명된 URL을 사용합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서미리 서명된 URL을 통해 객체 공유를 참조하세요.

Amazon S3 Access Points에 퍼블릭 액세스 설정이 활성화되어 있음

Amazon S3 Access Points는 Amazon S3 버킷의 공유 데이터세트에 대한 사용자 지정 액세스를 제공합니다. 액세스 포인트에 대한 퍼블릭 액세스를 활성화하면 인터넷에 있는 모든 사용자가 데이터에 액세스할 수 있습니다. 표준 보안 원칙에 따라 Amazon S3 액세스 포인트에 대한 퍼블릭 액세스를 제한하는 것이 AWS 좋습니다.

  1. 퍼블릭 액세스 차단이 활성화된 새 액세스 포인트 생성

    Amazon S3에서는 액세스 포인트가 생성된 후 액세스 포인트의 퍼블릭 액세스 차단 설정을 변경하도록 지원하지 않습니다. 액세스 포인트 생성에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서범용 버킷의 액세스 포인트에 대한 퍼블릭 액세스 관리를 참조하세요. 액세스 포인트에 대한 퍼블릭 액세스 관리에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서범용 버킷에 대한 액세스 포인트 생성을 참조하세요.

Amazon S3 버킷의 민감한 데이터 특성

다음은 Amazon S3 버킷의 민감한 데이터 특성 및 제안된 문제 해결 단계입니다.

Amazon S3 버킷의 민감한 데이터 특성

Macie가 Amazon S3 버킷에서 민감한 데이터를 식별하면 이는 즉각적인 조치가 필요한 잠재적 보안 및 규정 준수 노출을 나타냅니다.

민감한 데이터에는 다음이 포함될 수 있습니다.

  • 자격 증명

  • 개인 식별 정보

  • 금융 정보

  • 보호가 필요한 기밀 콘텐츠

구성 오류 또는 무단 액세스를 통해 민감한 데이터가 노출되면 규정 준수 위반, 데이터 침해, ID 도용 또는 재정적 손실이 발생할 수 있습니다. 보안 모범 사례에 따라는 적절한 데이터 분류와 Amazon S3 버킷의 민감한 데이터에 대한 지속적인 모니터링을 AWS 권장합니다.

민감한 데이터에 대한 제어 구현

노출 조사 결과에서 리소스 열기를 선택합니다. 탐지된 민감한 데이터의 유형과 버킷 내 위치를 검토합니다. Macie 조사 결과를 해석하는 데 도움이 필요하면 Amazon Macie 사용 설명서Macie 조사 결과 유형을 참조하세요.

검색된 민감한 데이터의 유형에 따라 적절한 보안 제어를 구현합니다.

  • 버킷에 대한 액세스 제한 - 버킷 권한을 검토하여 최소 권한 원칙을 준수하는지 확인합니다. IAM 정책, 버킷 정책 및 ACL을 사용하여 액세스를 제한합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3의 ID 및 액세스 관리를 참조하세요.

  • 서버 측 암호화 활성화 - 추가 보호를 위해 KMS 키로 서버 측 암호화를 활성화합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 사용을 참조하세요.

  • Use AWS Glue DataBrew – 데이터 준비 및 정리Glue DataBrew에 사용합니다. 자세한 내용은 AWS Glue DataBrew 개발자 안내서AWS Glue DataBrew란 무엇입니까?를 참조하세요.