我有一个任务,创建一个名为“xyz”的 S3 存储桶,并向特定用户授予读写访问权限。我创建了存储桶并编写了如下所示的 IAM 策略,并将其附加到特定用户。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucket"
],
"Resource": [
"arn:aws:s3:::xyz",
"arn:aws:s3:::xyz/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
现在我必须应用另一个条件,即将对此存储桶的访问限制到特定 VPC。为此,我必须编写一个存储桶策略。
在尝试使用策略生成器生成存储桶策略时,它再次要求对 S3 存储桶执行操作。
如果我选择所有操作,s3:*
是否会向用户授予所有访问权限?
我想知道哪项政策优先。
答案1
它们都不优先。权限在 AWS 中的工作方式如下:
是否有任何适用的政策明确允许访问?
⇨ 如果没有访问权限默认拒绝。
⇨ 如果是,请转至下一步。
是否有任何适用的政策明确拒绝访问?
⇨ 如果是,则拒绝访问(即使另一个策略允许访问)。
⇨ 如果没有否定现已允许访问。
这意味着,如果有没有适用的政策然后默认访问被否认而如果任何政策拒绝访问,则访问被否认也。
仅当有一个或多个策略明确允许访问并且没有一个拒绝访问只有那时被授予访问权限。
就你的情况而言存储桶策略应该否定每个人都可以访问不在您的 VPC 中(使用策略条件)。IAM 策略然后授予您的用户将无法访问存储桶策略,而 VPC 之外的用户将无法访问存储桶策略。
还要注意,S3 中的各个对象也可以拥有自己的权限。
最好参考管理 S3 访问概述了解所有详细信息。
希望有帮助:)