1

우리가 만드는 방법은 S3 Bucket 객체 목록 요청입니다. 우리가 자원을 요청하는 사용자에게 인라인 정책을 부착 있다고 가정특정 '접두어'를 명시 적으로 요구하는 대신 사용자의 접근 가능한 S3 버킷 개체 만 나열하려면 어떻게합니까?

final ListObjectsV2Request req = new ListObjectsV2Request().withBucketName(bucketName) 

,이 정책의

{ 
     "Sid": "AllowRootAndHomeListingOfBucket", 
     "Action": [ 
      "s3:ListBucket" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
      "arn:aws:s3:::XXXX.XXXX", 
      "arn:aws:s3:::XXXX.XXXXX/php_serialize.rb" 
     ] 
    }, 
    { 
     "Sid": "AllowAllS3ActionsInUserFolder", 
     "Effect": "Allow", 
     "Action": [ 
      "s3:*" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::XXXX.XXXX/php_serialize.rb" 
     ] 
    } 

효과가 포함한 모든 루트 레벨의 오브젝트를 나열하는 사용자를 할 수 있다는 것입니다 사용자에게 권한이 부여 된 자원. 이것의

do {    
      result = s3client.listObjectsV2(req); 

    for (S3ObjectSummary objectSummary : result.getObjectSummaries())  { 

      } 
      System.out.println("Next Continuation Token : " + result.getNextContinuationToken()); 
      req.setContinuationToken(result.getNextContinuationToken()); 
     } while(result.isTruncated() == true); 

결과는 다음과 같습니다 난 그냥 나열 얻으려면, php_serialize.rb을 원하는

text.rb 
test/abc 
php_serialize.rb 
xyx/test.txt 

. 요청하는 사용자가 접두어에 대해 알지 못하면 해당 접미사에게 권한이 부여됩니다.

요청에 따라이 경우 작동하지 않습니다.

final ListObjectsV2Request req = new ListObjectsV2Request().withBucketName(bucketName).withPrefix("php_serialize.rb"); 

답변

0

특정 사용자가 액세스 할 수있는 개체 목록을 보려면 S3에 질문 할 수 없습니다.

그럴 경우 해당 사용자와 해당 속성에 적용되는 특정 정책 제약 조건에 따라 최대로 계산적으로 집중적이며 최악의 경우 불가능한 (잠재적으로) 버킷의 모든 단일 개체에 대한 사용자의 모든 사용 권한을 평가해야합니다. 사용자가하는 요청에 따라 다를 수 있습니다.

서비스가 이러한 쿼리를 지원하지 않습니다.