我想知道為什么我能夠列出甚至洗掉s3存盤桶中的物件,盡管公共訪問被阻止并且只有存盤桶所有者擁有對存盤桶的串列/寫入訪問權限。


這就是我在代碼中所做的:
using (var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USWest2))
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await s3Client.ListObjectsV2Async(request);
foreach (Amazon.S3.Model.S3Object obj in response.S3Objects)
{
Console.WriteLine(obj.Key);
}
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated);
DeleteObjectResponse resp = await s3Client.DeleteObjectAsync(new Amazon.S3.Model.DeleteObjectRequest() { BucketName = bucketName, Key = "dummykey" });
知道我做錯了什么嗎?acl 不應該阻止我列出任何內容嗎?
uj5u.com熱心網友回復:
我猜您使用 AWS SDK 的代碼會恢復與存盤桶所有者相關的憑證(一對 AWS Access KEY ID/AWS Secret Key)。
可以的話,查看一下bucket owner對應的IAM用戶,看看他是否有編程訪問權限。
代碼在哪個上運行?您應該查看存盤 AWS 憑證的不同可能性:
- 環境變數
~/.aws/credentials檔案- ...
有關更多資訊,請查看配置設定和優先級:https : //docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence
獎勵:請找到管理訪問密鑰的好方法:https ://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364126.html
