Amazon S3 버킷의 특정 폴더 또는 파일에 액세스할 수 없는 이유는 무엇인가요?

4분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷에 있는 특정 접두사나 객체에 액세스할 수 없습니다. 버킷의 나머지 데이터에 액세스할 수 있습니다.

간략한 설명

접두사 또는 객체에 대한 액세스를 거부하는 설정에 대해 다음 권한을 확인하세요.

  • 접두사 또는 객체의 소유권
  • 버킷 정책의 제한
  • AWS Identity and Access Management(IAM) 사용자 정책의 제한
  • AWS Key Management Service(AWS KMS)로 암호화된 객체에 대한 권한

또한 다음과 같은 액세스 조건을 참고하세요.

  • AWS KMS 키로 객체를 암호화한 경우 객체를 암호화한 AWS 계정만 객체를 읽을 수 있습니다.
  • 권한 경계 설정 및 세션 정책을 정의한 경우 요청자의 최대 권한이 영향을 받을 수 있습니다. 객체 액세스도 영향을 받을 수 있습니다.
  • VPC 엔드포인트 정책서비스 제어 정책(SCP)과 같은 다른 정책에서는 제한을 지정할 수 있습니다. 따라서 이러한 정책을 확인하고 이에 따라 업데이트하세요.
  • Amazon S3 객체 소유권을 사용하여 업로드한 객체의 소유권을 제어할 수도 있습니다. 객체 소유권을 BucketOwnerPreferred로 설정하는 경우 bucket-owner-full-control canned ACL이 있는 계정은 버킷 소유자로 전환되는 객체에 쓸 수 있습니다.

해결 방법

접두사 또는 객체의 소유권

기본적으로 AWS 계정이 S3 객체를 업로드하면 계정이 해당 객체를 소유합니다. 이는 다른 계정이 해당 버킷을 소유한 경우에도 마찬가지입니다. 다른 계정이 버킷에 업로드할 수 있는 경우 다음 단계에 따라 액세스할 수 없는 객체 또는 접두사에 대한 권한을 얻으세요.

  1. 계정에 대한 Amazon S3 정식 ID를 가져오려면 다음 AWS Command Line Interface(AWS CLI) 명령을 실행합니다.

    aws s3api list-buckets --query Owner.ID
  2. 액세스할 수 없는 객체를 소유한 계정의 Amazon S3 정식 ID를 가져옵니다.

    aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  3. 정식 ID가 일치하지 않는 경우 귀하(버킷 소유자)가 객체를 소유하고 있지 않은 것입니다. 객체 소유자는 개별 객체에 대하여 다음과 같은 put-object-acl 명령을 사용하여 사용자에게 전체 제어 권한을 부여할 수 있습니다.

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control

    접두사 내의 객체의 경우 객체 소유자는 접두사를 다시 복사하고 작업의 일환으로 귀하에게 객체에 대한 전체 제어 권한을 부여해야 합니다. 예를 들어, 객체 소유자는 --acl bucket-owner-full-control 파라미터를 사용하여 다음 cp 명령을 실행할 수 있습니다.

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/abc/ s3://DOC-EXAMPLE-BUCKET/abc/ --acl bucket-owner-full-control --recursive --storage-class STANDARD

    팁: 버킷 정책을 사용하면 다른 계정이 버킷에 업로드하는 객체의 소유권을 귀하에게 부여하도록 요구할 수 있습니다.

버킷 정책의 제한

  1. Amazon S3 콘솔을 엽니다.

  2. 버킷 목록에서 확인하려는 버킷 정책이 있는 버킷을 엽니다.

  3. 권한 탭을 선택합니다.

  4. 버킷 정책을 선택합니다.

  5. **"Effect": "Deny"**가 포함된 문을 찾습니다. 그런 다음 해당 문에 액세스할 수 없는 접두사 또는 개체에 대한 참조가 있는지 검토합니다. 예를 들어, 이 버킷 정책은 DOC-EXAMPLE-BUCKETabc/* 접두사에 대한 모든 사용자의 액세스를 거부합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
        }
      ]
    }
  6. 버킷 정책을 수정하여 접두사 또는 개체에 대한 액세스를 잘못 거부하는 **"Effect": "Deny"**문을 편집하거나 제거합니다.

IAM 사용자 정책의 제한

  1. IAM 콘솔을 엽니다.

  2. 콘솔에서 접두사 또는 객체에 액세스하는 데 사용하는 IAM 사용자 또는 역할을 엽니다.

  3. IAM 사용자 또는 역할의 권한 탭에서 각 정책을 확장하여 해당 JSON 정책 문서를 확인합니다.

  4. JSON 정책 문서에서 Amazon S3 액세스와 관련된 정책을 검색합니다. 그런 다음 해당 정책에서 접두사 또는 객체에 대한 액세스를 차단하는 **"Effect": "Deny"**문을 검색합니다.

    예를 들어, 다음 IAM 정책에는 **"Effect": "Deny"**문이 있으며 이것은 DOC-EXAMPLE-BUCKET 내의 접두사 abc/*에 대한 IAM 자격 증명의 액세스를 차단합니다. 정책에는 다음과 같은 **"Effect": "Allow"**문이 있으며 이것은 DOC-EXAMPLE-BUCKET에 대한 액세스를 부여합니다. 전체 버킷에 대한 허용문에도 불구하고 명시적 거부문을 사용하면 IAM 자격 증명이 접두사 abc/*에 액세스할 수 없습니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
          ]
        },
        {
          "Sid": "StatementFullPermissionS3",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
          ]
        }
      ]
    }
  5. 정책을 수정하여 버킷에 대한 사용자의 액세스를 잘못 거부하는 **"Effect": "Deny"**문을 편집하거나 제거합니다.

AWS KMS로 암호화된 객체에 대한 권한

객체가 AWS KMS 키로 암호된 경우 객체와 키 모두에 대한 권한이 필요합니다. AWS KMS 키에 대한 권한이 없어 객체에 액세스할 수 없는지 확인합니다.

  1. Amazon S3 콘솔을 사용하여 액세스할 수 없는 객체 중 하나의 속성을 확인합니다. 객체의 암호화 속성을 검토합니다.

  2. 객체가 사용자 지정 AWS KMS 키로 암호화된 경우 키 정책을 검토합니다. 정책에서 IAM 자격 증명이 다음 작업을 수행하도록 허용하는지 확인합니다.

    "Action": ["kms:Decrypt"]
  3. IAM 자격 증명에 이러한 작업에 대한 권한이 누락된 경우 키 정책을 수정하여 누락된 권한을 부여합니다.

**중요:**IAM 자격 증명과 AWS KMS 키가 서로 다른 계정에 속한 경우 적절한 권한이 있는지 확인합니다. IAM 및 키 정책 모두 필요한 AWS KMS 작업에 대한 권한을 부여해야 합니다.

관련 정보

다른 AWS 계정에서 Amazon S3 버킷에 업로드한 객체에 액세스할 수 없는 이유는 무엇인가요?

사용자에게 Amazon S3 버킷의 특정 폴더에 대한 액세스 권한을 부여하려면 어떻게 해야 하나요?

Amazon S3에서 KMS로 암호화된 객체를 다운로드할 때 AWS KMS 키를 지정해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전