【发布时间】:2017-11-28 19:47:15
【问题描述】:
目前,我有一个应用于测试存储桶的策略,旨在防止用户使用“public-read”和“public-read-write”ACL 上传 s3objects。
当我尝试通过命令行上传时,请求被“拒绝访问”成功阻止:
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": "*"
}
]
}
我觉得修复或逻辑非常简单。我就是拿不准。
【问题讨论】:
-
我相信可以使用 IAM 策略来完成。
标签: amazon-web-services amazon-s3