Amazon S3 버킷의 일부 객체에 대한 퍼블릭 읽기 액세스 권한을 부여하려면 어떻게 해야 합니까?
Amazon Simple Storage Service(S3) 버킷의 일부 객체를 공개적으로 읽을 수 있게 하고 싶습니다. 하지만 같은 버킷에 있는 다른 객체에 대한 권한은 변경하고 싶지 않습니다.
간략한 설명
다음 방법 중 하나를 사용하여 S3 버킷의 객체에 대한 퍼블릭 읽기 액세스 권한을 부여하십시오.
- Amazon S3 콘솔을 사용하여 객체의 액세스 제어 목록(ACL) 업데이트.
- AWS Command Line Interface(AWS CLI)를 사용하여 객체의 ACL 업데이트.
- 특정 객체 태그에 대한 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용.
- 특정 접두사에 대한 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용.
중요: S3 객체 소유권을 버킷의 버킷 소유자 적용으로 설정하면 버킷 및 객체 ACL을 사용하여 퍼블릭 액세스 권한을 부여할 수 없습니다. 대부분의 경우 객체와 버킷에 권한을 부여하는 데 ACL이 필요하지 않습니다. 대신 AWS Identity Access and Management(IAM) 정책과 S3 버킷 정책을 사용하여 권한을 부여합니다.
새 버킷, 액세스 포인트, 객체는 기본적으로 퍼블릭 액세스를 허용하지 않습니다. AWS 계정 내 모든 버킷에 대한 퍼블릭 액세스를 차단하도록 구성한 경우 "Bucket and objects not public" 메시지가 표시됩니다.
퍼블릭 버킷에 액세스하려면 네트워크에 버킷 도메인으로의 아웃바운드 트래픽을 차단하는 방화벽이나 설정이 없어야 합니다.
해결 방법
중요: 기본적으로 새로운 S3 버킷에서 퍼블릭 액세스 차단 설정은 True로 설정됩니다. 시작하기 전에 계정 수준 또는 버킷 수준에서 퍼블릭 액세스 차단 설정을 False로 변경합니다.
Amazon S3 콘솔을 사용하여 객체의 ACL 업데이트
여러 객체를 한 번에 퍼블릭으로 설정
경고: 퍼블릭으로 설정하기 전에 객체를 주의 깊게 검토하십시오. 여러 객체를 퍼블릭으로 설정한 후에는 모든 객체에 대해 이 작업을 한 번에 취소할 수 없습니다. 대신 각 객체의 권한 탭에서 퍼블릭 액세스를 수정해야 합니다.
여러 객체를 한 번에 퍼블릭으로 설정하려면 다음 단계를 완료하십시오.
- Amazon S3 콘솔을 열고 퍼블릭으로 설정하려는 객체를 선택합니다.
- 작업을 선택한 다음 퍼블릭으로 설정을 선택합니다.
- 퍼블릭으로 설정 대화 상자에서 객체 목록이 정확한지 확인합니다.
- 퍼블릭으로 설정을 선택합니다.
하나의 객체를 퍼블릭으로 설정
하나의 객체만 퍼블릭으로 설정하려면 이전 프로세스를 반복하거나 다음 단계를 완료하십시오.
- Amazon S3 콘솔을 열고 퍼블릭으로 설정하려는 객체의 버킷을 선택합니다.
- 객체에서 객체를 선택합니다.
- 권한 탭을 선택하고, 편집을 선택합니다.
- 모든 사람 섹션에서 객체 읽기를 선택합니다.
- 이 변경 사항이 이 객체에 미치는 영향을 이해합니다를 선택합니다.
- 변경 사항 저장을 선택합니다.
AWS CLI를 사용하여 객체의 ACL 업데이트
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
이미 Amazon S3에 저장된 객체의 경우 put-object-acl 명령을 실행하여 퍼블릭 읽기 액세스를 위해 객체의 ACL을 업데이트할 수 있습니다.
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --acl public-read
참고: exampleobject를 객체로 변경합니다.
또는 put-object-acl 명령을 실행하여 계정 소유자에게 객체에 대한 전체 제어 권한을 부여하고 다른 모든 사람에게는 읽기 권한을 부여할 수 있습니다.
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --grant-full-control id="008exampleA45666666668889999008853" --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers
참고: grant-full-control id에 계정의 정식 사용자 ID를 입력합니다.
특정 객체 태그에 대한 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용
중요: 시작하기 전에 Amazon S3 요금에서 객체 태그 지정을 검토하십시오.
정책을 사용하여 특정 태그가 있는 객체에 대한 퍼블릭 읽기 권한을 부여하려면 다음 단계를 완료하십시오.
-
특정 태그가 포함된 모든 객체에 퍼블릭 읽기 액세스를 허용하는 버킷 정책을 추가합니다. 예를 들어, 다음 정책은 키-값 쌍 태그가 public=yes인 모든 객체에 대한 퍼블릭 읽기 액세스를 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/public": "yes" } } } ] }
-
공개적으로 읽을 수 있게 하려는 객체에 태그를 추가합니다.
-
객체에 어떤 태그가 있는지 확인하려면 AWS CLI에서 get-object-tagging 명령을 실행합니다.
aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject
-
태그가 없는 객체에 태그를 추가하려면 다음 put-object-tagging 명령을 실행합니다.
aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'
경고: 위 명령은 객체에 있는 모든 태그를 덮어씁니다.
-
이미 태그가 있는 객체에 새 태그를 추가하려면 다음 put-object-tagging 명령을 실행합니다.
aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'
참고: 객체의 새 태그뿐 아니라 유지하려는 기존 태그도 포함하십시오.
-
객체의 태그를 확인하려면 get-object-tagging 명령을 다시 실행합니다.
aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject
특정 접두사에 대한 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용
경고: 다음 버킷 정책은 특정 접두사의 모든 객체에 대한 퍼블릭 읽기 액세스 권한을 부여합니다. 이 버킷 정책을 사용하기 전에 사용 사례가 접두사 내에서 공개적으로 읽을 수 있는 모든 객체를 지원하는지 확인하세요. 다음 정책은 접두사에 대한 목록 액세스 권한을 부여하지 않습니다. 사용자는 객체 경로를 알고 있는 경우에만 객체에 액세스할 수 있습니다. 사용자가 접두사에 없는 객체에 액세스하려고 하면 403 오류가 발생합니다.
-
특정 객체 접두사에 대한 퍼블릭 읽기 액세스 권한을 부여하려면 다음 버킷 정책을 추가하십시오.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*" ] } ] }
-
cp 명령을 실행하여 퍼블릭 읽기 액세스 권한이 있는 접두사에 객체를 복사합니다.
aws s3 cp s3://DOC-EXAMPLE-BUCKET/exampleobject s3://DOC-EXAMPLE-BUCKET/publicprefix/exampleobject
참고: 객체에 이미 공개적으로 읽을 수 있는 접두사가 있는 경우 객체를 새 접두사에 복사할 필요가 없습니다.
제한된 네트워크에서 퍼블릭 S3 버킷 또는 객체에 액세스
제한된 네트워크에서 퍼블릭 S3 버킷 또는 객체에 액세스하려면 특정 IP 주소 범위에서의 액세스를 허용하는 버킷 정책을 추가할 수 있습니다. 다음 정책 예시는 192.0.2.0/24 및 203.0.113.0/24 CIDR 범위에서 GET 요청을 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }
관련 정보
관련 콘텐츠
- 질문됨 2년 전lg...
- 질문됨 2년 전lg...
- AWS 공식업데이트됨 2달 전
- AWS 공식업데이트됨 4년 전