存储桶策略与 iam 策略哪个优先

Nis*_*nth 5 amazon-web-services

我有一项任务是创建一个名为“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": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在我必须应用另一个条件,即将此存储桶的访问权限限制为特定 VPC。为此,我必须编写一个存储桶策略。

在尝试使用策略生成器生成存储桶策略时,它再次要求对 S3 存储桶执行操作。

如果我选择所有操作,即,s3:*它是否会将所有访问权限授予用户?

我想知道哪个政策优先。

MLu*_*MLu 10

它们中没有一个优先。这是权限在 AWS 中的工作方式:

  1. 是否有任何适用的政策明确允许访问

    ? 如果不是默认拒绝访问。

    ? 如果是,请转到下一步。

  2. 是否有任何适用的政策明确拒绝访问

    ? 如果是,则拒绝访问(即使另一个策略允许访问)。

    ? 如果没有拒绝访问现在被授予。

这意味着,如果没有适用的政策,则默认情况下拒绝访问,如果有任何政策拒绝访问,则访问也会被拒绝

只有当一个或多个策略明确允许访问并且没有一个拒绝访问时,才会授予访问权限。

在您的情况下,存储桶策略拒绝访问不在您的 VPC 中的所有人(使用策略条件)。然后,IAM 策略将向您的用户授予访问权限,而存储桶策略将拒绝来自您的 VPC 外部的访问。

另请注意,S3 中的各个对象也可以拥有自己的权限。

最好参考管理 S3 访问的概述以了解所有详细信息。

希望有帮助:)

  • @Nishanth 几乎相同的任务......但有一个区别。IAM 策略控制**您的**用户访问**任何**存储桶的权限,而存储桶策略控制**任何**用户访问**您的**存储桶的权限。需要这两个策略才能授予访问权限**除非**同一帐户同时拥有用户和存储桶,这就是您所看到的重叠。当用户和存储桶都属于同一帐户时,只要另一个策略不拒绝,任一策略都可以授予权限。 (4认同)