>尝试拒绝所有人的写入权限,只允许单个用户写入 Amazon S3 存储桶,但我希望所有用户都能查看它。因此,我在存储桶上设置了公共访问权限。
IAM 用户 JoeAmazonS3FullAccess
。
以下是存储桶策略:
{
"Id": "Policy98745183475249",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt15681834712546",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::buketname/*",
"Principal": {
"AWS": [
"arn:aws:iam::98754131531:user/Joe"
]
}
},{
"Sid": "Stmt15681834478323",
"Action": [
"s3:PutObject"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::buketname/*",
"Principal": "*"
},
]
}
但是,它似乎无法正常工作。
Deny
总是击败Allow
。因此,该策略实际上拒绝了每个人写入存储桶的能力。
默认情况下,用户没有权限,因此通常只需要指定Allow
策略。
如果您希望将权限分配给特定的 IAM 用户,最好将权限放在 IAM 用户本身上,而不是放在存储桶策略中。这样可以更轻松地管理权限,因为将来会添加更多权限。
因此,您会在 IAM 中将这样的策略放在 Joe 上:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowWrite",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
要允许全世界的每个人都读取存储桶的内容(注意:从安全角度来看不好!(,请使用如下存储桶策略:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AnyoneRead",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::my-bucket/*"]
}
]
}