전체 버킷 (*)을 사용하는 모든 사용자가 GetObject를 사용할 수있는 버킷을 사용했습니다. 개체 수준 작업 ACL을 통해 몇 개의 개체를 비공개로 만들고 싶습니다. 즉, 버킷 소유자 만 개체에 대한 읽기 권한을 가져야합니다. 사용 가능한 모든 설명서를 살펴 보았지만 가능한 방법을 찾지 못했습니다. 누구나 확인할 수 있습니까?AWS S3 Bucket 정책 공개. 개체를 비공개로 설정하는 방법?
답변
ACL에 DENY가 없기 때문에 S3 개체 ACL을 사용할 수 없습니다.
개체를 지정하고 개별 항목에 대한 액세스를 거부하도록 S3 정책을 수정할 수 있습니다.
예 S3 정책 (이 정책은이 개 파일에 대한 GetObject를위한 모두에 대한 액세스를 금지한다는 통지) :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
},
{
"Sid": "DenyPublicReadGetObject",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::mybucket/block_this_file",
"arn:aws:s3:::mybucket/block_this_file_too"
]
}
]
}
특정 사용자가 여전히 개체에 액세스 할 수 있도록 조건을 추가, 조건을 추가하려면 이런 리소스 섹션 다음에. 이 조건은 IAM 사용자 인 john.wayne과 bob.hope가 여전히 GetObject를 호출 할 수있게합니다.
"Resource": [
"arn:aws:s3:::mybucket/block_this_file",
"arn:aws:s3:::mybucket/block_this_file_too"
],
"Condition": {
"StringNotEquals": {
"aws:username": [
"john.wayne",
"bob.hope"
]
}
}
DENY를 추가하면 버킷 소유자가 개체에 액세스하는 것을 방지 할 수도 있습니다. –
@JohnRotenstein. 이 첫 번째 예는 소유자를 거부하므로 모두에 대한 메모를 포함 시켰습니다. 두 번째 예는 지정된 사용자에 대해 GetObject를 허용하는 조건을 만드는 방법을 보여줍니다. 그들을 부인하지 마십시오. –
버킷을 공개하면 모든 콘텐츠가 공개됩니다. 간단한 해결책은 개인 데이터가 들어있는 다른 버킷을 만드는 것입니다. 그런 다음 읽기 권한을 허용하고 개인 데이터에 대한 액세스가 필요한 사용자에게만 그룹/정책을 할당하는 새 보안 정책 (및 그룹)을 만듭니다. –
"버킷을 공개하면 모든 콘텐츠가 공개됩니다." 문서에서 명시 적으로 찾을 수 없으므로 이에 대한 확인을 원했습니다. 고맙습니다. 나는 또한 당신이 제안한 해결책을 생각하고 있었지만 버킷 정책이 공개적으로 가능한지 여부를 확인하기를 원했습니다. – user3275863