Amazon S3 버킷에서 공개적으로(익명으로) 소유한 객체의 소유권을 변경하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 9월 24일

Amazon Simple Storage Service(Amazon S3) 버킷에 퍼블릭(익명) 소유권이 있는 객체가 있습니다. 내 AWS 계정이 객체를 소유하도록 객체의 소유권을 변경하려면 어떻게 해야 합니까?

간략한 설명

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

익명 사용자가 객체를 버킷에 이미 업로드했으며 AWS 계정에서 해당 객체를 소유하게 하려면 객체의 ACL(액세스 제어 목록)을 수정해야 합니다. 객체의 ACL을 변경하여 버킷 소유자(사용자 계정)에게 객체에 대한 모든 권한을 부여합니다.

​해결 방법

다음 단계에 따라 객체의 소유권을 버킷을 소유한 AWS 계정으로 변경합니다.

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

aws s3api put-object-acl --bucket awsexamplebucket --key awsexampleobject  --acl bucket-owner-full-control   --no-sign-request

2.    소유권 변경을 적용하려면 객체를 그 자체에 복사해야 합니다. 이렇게 하려면 다음과 비슷한 cp 명령을 실행할 수 있습니다.

aws s3 cp s3://awsexamplebucket/awsexampleobject  s3://awsexamplebucket/awsexampleobject  --metadata-directive REPLACE

3.    소유권 변경을 확인하려면 다음과 같이 get-object-acl 명령을 실행합니다.

aws s3api get-object-acl --bucket awsexamplebucket --key awsexampleobject

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

{
    "Owner": {
        "DisplayName": "jane",
        "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "jane",
                "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        }]}

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?