首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS桶策略语句优先级顺序

AWS桶策略语句优先级顺序
EN

Stack Overflow用户
提问于 2021-06-10 13:14:59
回答 2查看 1.4K关注 0票数 0

我正试图使用桶策略限制用户对桶的访问。我有一组用户,他们都有S3FullAccess策略。我不能改变IAM中的任何东西。我只能使用我的水桶政策。因此,我希望使用桶策略来控制用户的访问。我把用户分成3类。

  1. 管理员访问我的桶(所有访问我的桶)
  2. 用户对我的桶的访问权限有限(比如获取-桶策略,获取-桶-位置)
  3. 无法进入我的水桶。(无法进入我的水桶)

下面的政策是我尝试过的,但没有起作用。

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Id": "PolicyTesting",
    "Statement": [
        {
            "Sid": "0",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<<account_id>>:user/users_with_limited_access"
            },
            "Action": [
                "s3:GetBucketPolicy",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<<my_bucket_name>>",
                "arn:aws:s3:::<<my_bucket_name>>/*"
            ]
        },
        {
            "Sid": "1",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::<<account_id>>:user/admin_users"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<<my_bucket_name>>",
                "arn:aws:s3:::<<my_bucket_name>>/*"
            ]
        }
    ]
}

我尝试了上面的策略,但是只有管理员用户才能访问桶。具有有限访问权限的用户无法执行其授予的操作,如get-bucket策略、get-bucket- exception,他们正在获得一个拒绝访问的异常。帮我解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2021-06-10 22:42:52

在AWS IAM策略中没有优先级顺序。请参考策略评估逻辑这里

AWS执行代码评估应用于请求的帐户中的所有策略。如果代码找到一个应用的显式拒绝,代码将返回一个拒绝的最终决定。

您的当前策略拒绝所有用户(管理员-用户除外)任何S3操作。因此,users_with_limited_access无法执行授予的操作。

请以适当的校长(如您的问题中的评论)更新您的政策,并参考下面更新的政策,使其发挥作用。

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/s3-limited-access-user"
            },
            "Action": [
                "s3:GetBucketPolicy",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::example-bucket",
                "arn:aws:s3:::example-bucket/*"
            ]
        },
        {
            "Sid": "2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/s3-no-access-user"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::example-bucket",
                "arn:aws:s3:::example-bucket/*"
            ]
        },
        {
            "Sid": "3",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/admin-user"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::example-bucket",
                "arn:aws:s3:::example-bucket/*"
            ]
        }
    ]
}
票数 1
EN

Stack Overflow用户

发布于 2021-06-11 17:25:41

您应该非常小心地对待NotPrincipal。这是避免同时使用它的最佳做法。在大多数情况下,不使用“危险”NotPrincipal很容易实现相同的功能(策略语义)。

我认为最好创建特定的IAM角色,并将它们分配给您希望允许访问S3桶的相应用户组。在此之后,用显式的Deny (用于"Principal" : "*"aws:userIdaws:PrincipalArn )阻止对桶的所有其他访问。

查看本文以获得更多详细信息( https://levelup.gitconnected.com/how-i-locked-the-whole-company-out-of-an-amazon-s3-bucket-1781de51e4be )

最好,斯特凡

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67921921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档