우리가 만드는 방법은 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");