2017-12-12 9 views
0

전체 버킷 (*)을 사용하는 모든 사용자가 GetObject를 사용할 수있는 버킷을 사용했습니다. 개체 수준 작업 ACL을 통해 몇 개의 개체를 비공개로 만들고 싶습니다. 즉, 버킷 소유자 만 개체에 대한 읽기 권한을 가져야합니다. 사용 가능한 모든 설명서를 살펴 보았지만 가능한 방법을 찾지 못했습니다. 누구나 확인할 수 있습니까?AWS S3 Bucket 정책 공개. 개체를 비공개로 설정하는 방법?

+1

버킷을 공개하면 모든 콘텐츠가 공개됩니다. 간단한 해결책은 개인 데이터가 들어있는 다른 버킷을 만드는 것입니다. 그런 다음 읽기 권한을 허용하고 개인 데이터에 대한 액세스가 필요한 사용자에게만 그룹/정책을 할당하는 새 보안 정책 (및 그룹)을 만듭니다. –

+0

"버킷을 공개하면 모든 콘텐츠가 공개됩니다." 문서에서 명시 적으로 찾을 수 없으므로 이에 대한 확인을 원했습니다. 고맙습니다. 나는 또한 당신이 제안한 해결책을 생각하고 있었지만 버킷 정책이 공개적으로 가능한지 여부를 확인하기를 원했습니다. – user3275863

답변

1

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" 
       ] 
      } 
     } 
+0

DENY를 추가하면 버킷 소유자가 개체에 액세스하는 것을 방지 할 수도 있습니다. –

+1

@JohnRotenstein. 이 첫 번째 예는 소유자를 거부하므로 모두에 대한 메모를 포함 시켰습니다. 두 번째 예는 지정된 사용자에 대해 GetObject를 허용하는 조건을 만드는 방법을 보여줍니다. 그들을 부인하지 마십시오. –