目前,我有一个应用于测试存储桶的策略,该策略旨在阻止用户使用“公共读取”和“公共读写”ACL 上传 s3object。
当我尝试通过命令行上传时,请求被成功阻止,并按预期“拒绝访问”:
Write-S3Object -bucketname testbucket -File C:\Users\user\Desktop\DemoFolder\secret_data.txt -cannedACLName public-read
与“public-read-write”结果相同:
Write-S3Object -bucketname testbucket -File C:\Users\user\Desktop\DemoFolder\secret_data.txt -CannedACLName public-read-write
但是,当我通过 Web 控制台 GUI 访问 s3bucket 时,我可以上传公共对象。通过“公开”按钮将现有的“私有”对象公开。
这是存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyPublic",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::testbucket/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": [
"public-read",
"public-read-write"
]
}
}
}
]
这里还有用户访问 s3 的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
我觉得修复或逻辑非常简单。我就是无法指指点点。