我正在研究S3存储桶策略.我们的想法是明确拒绝访问帐户中的所有IAM用户,但明确授予的用户除外.
我找到了一篇博客文章,解释了如何限制对特定用户的访问.它运作良好.但是,我想扩展语法以包括将被允许访问的第二个IAM用户.实际上,这是OR条件.
但是,我对JSON很新,而且我不确定如何去做.
以下是用于限制对单个用户的访问的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"AIDA<obfuscated id>:*",
"AIDA<obfuscated id>",
"111111111111"
]
}
}
}
]
}
任何人都可以帮我编辑上面的JSON以允许OR条件,我可以指定一个允许访问的额外用户ID吗?
AdvThanksance!
最佳答案 您不需要创建此拒绝规则,因为除非有明确的允许规则,否则所有请求都是
denied by default.
要授权多个IAM用户,可以将它们列为数组元素.因此,您可以按如下方式编写存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAllS3ActionsForSpecificIAMUsers",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<account-number-without-hyphens>:user/<username1>",
"arn:aws:iam::<account-number-without-hyphens>:user/<username2>"
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
您可以找到有关Principal元素here的更多信息.