Amazon S3 버킷에서 퍼블릭(익명) 소유권을 가진 객체의 소유권을 변경하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Simple Storage Service(S3) 버킷에 퍼블릭(익명) 소유권을 가진 객체가 있습니다. AWS 계정이 객체를 소유하도록 객체 소유권을 변경하고 싶습니다.

간략한 설명

기본적으로 Amazon S3 객체를 업로드한 ID가 해당 객체를 소유합니다. 즉, 버킷에 대한 퍼블릭 쓰기 액세스를 허용하면 퍼블릭(익명) 사용자가 업로드하는 객체는 퍼블릭 소유가 됩니다. 보안 문제를 방지하기 위한 모범 사례는 버킷에 대한 퍼블릭 액세스를 차단하는 것입니다.

익명의 사용자가 버킷에 객체를 업로드했는데 객체 소유권을 변경하려는 경우, 객체의 액세스 제어 목록(ACL)을 수정하세요. 객체의 ACL을 변경하여 버킷 소유자(AWS 계정) 에게 객체에 대한 모든 권한을 부여하세요.

참고: 또한 Amazon S3 객체 소유권을 사용하여 다른 AWS 계정이 업로드하는 객체의 소유권을 제어할 수 있습니다.

해결 방법

객체 소유권을 버킷을 소유한 AWS 계정으로 변경하려면 다음 단계를 따르세요.

  1. 객체 ACL을 추가하려면 AWS Command Line Interface(AWS CLI)에서 put-object-acl 명령을 실행합니다. bucket-owner-full-control 값과 함께 --acl 옵션을 포함하면 버킷 소유자에게 객체에 대한 제어 권한을 부여하는 ACL을 추가할 수 있습니다. 그런 다음 요청에 익명 자격 증명을 사용하려면 --no-sign-request 옵션을 포함하세요. 필요한 옵션이 포함된 전체 put-object-acl 명령은 다음 예제와 비슷합니다.

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key awsexampleobject --acl bucket-owner-full-control --no-sign-request

    참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI 를 사용하고 있는지 확인하세요.

  2. 소유권 변경 사항을 적용하려면 객체 자체를 복사해야 합니다. 이 작업을 수행하려면 cp 명령을 실행하세요.

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/awsexampleobject s3://DOC-EXAMPLE-BUCKET/awsexampleobject --storage-class STANDARD

    참고: 예제 명령의 --storage-class 값을 사용 사례에 해당하는 스토리지 클래스로 변경해야 합니다. 또한 객체에 필요한 다른 cp 명령 옵션을 포함해야 합니다.

  3. 소유권 변경을 확인하려면 get-object-acl 명령을 실행하세요.

    aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key awsexampleobject

    이 명령은 객체의 소유자를 표시하는 출력을 반환합니다.

    {
      "Owner": {
        "DisplayName": "jane",
        "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099"
      },
      "Grants": [
        {
          "Grantee": {
            "DisplayName": "jane",
            "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099",
            "Type": "CanonicalUser"
          },
          "Permission": "FULL_CONTROL"
        }
      ]
    }
  4. 버킷에 버전 관리가 있는 경우, 2단계의 cp 명령에서 생성된 이전 버전의 객체도 삭제해야 합니다. 이전 객체 버전에는 퍼블릭(익명) 소유권이 있습니다. 이 객체 버전을 삭제하려면 먼저 버킷에서 list-object-version 명령을 실행합니다. 명령의 --prefix 옵션을 포함하면 퍼블릭 소유권을 가진 객체로 결과를 필터링할 수 있습니다.

    aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix example.txt

    명령 출력에서 퍼블릭 소유권을 가진 객체 버전의 버전 ID를 복사합니다. 그런 다음 삭제하려는 버전 ID에 대해 delete-object 명령을 실행합니다.

    aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj'

    경고: 버전 ID를 세심하게 검토하여 퍼블릭 소유권을 가진 객체 버전의 버전 ID인지 확인하세요. 객체 버전을 삭제하면 검색할 수 없습니다.

관련 정보

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

AWS 공식
AWS 공식업데이트됨 8달 전
댓글 없음