首页 > 解决方案 > 放置存储桶策略时访问被拒绝

问题描述

我正在尝试使用以下规则将存储桶策略放在 S3 存储桶上。这样做时我收到错误访问被拒绝

{
        "Sid": "Deny bucket/policy delete",
        "Effect": "Deny",
        "Principal": "*",
        "Action": [
            "s3:DeleteBucket",
            "s3:DeleteBucketPolicy",
            "s3:PutBucketPolicy"
        ],
        "Resource": "arn:aws:s3:::mybucket",
        "Condition": {
            "ArnNotEquals": {
                "aws:PrincipalArn": "arn:aws:iam::<account-id>:role/role_name"
            }
        }
    }

我可以将相同的规则放在账户中的其他存储桶上,因此可以确认 IAM 角色具有权限。

我可以在此存储桶上放置其他规则,因此可以确认也有权在此存储桶上放置策略。我也可以删除存储桶策略。成功的规则之一如下:

{
        "Sid": "Deny http access",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::mybucket/*",
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        }
    }

成功的规则适用于 bucket/*

失败的规则在存储桶上。

如果 IAM 角色不限制其他可能是什么问题?不知道我错过了什么。请建议。

ACL 截图:

在此处输入图像描述

标签: amazon-web-servicesamazon-s3

解决方案


我将首先提到您正在添加一个“危险的”存储桶策略,如果您弄错了,您将只能通过使用 root 登录来删除它。这是因为如果编码不正确,它可能会拒绝每个人接触存储桶策略。

而不是使用条件,您可能可以使用NotPrincipal. 请参阅:AWS JSON 策略元素:NotPrincipal

此外,检查Block S3 Public Access的设置,它可以阻止创建存储桶策略。


推荐阅读