【问题标题】:S3 Bucket Policy to Allow access to specific roles and restrict allS3 存储桶策略允许访问特定角色并限制所有
【发布时间】:2018-05-29 08:21:22
【问题描述】:

我想限制对 S3 存储桶的所有角色的访问,除了使用 S3 存储桶策略选择少数角色。但是在这里,当我切换到我的写入者和读取者角色时,它的访问被拒绝。

存储桶政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::581262627839:role/Rk-S3-Reader-I-Role"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::rkimpdocs"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::581262627839:role/Rk-S3-Writer-I-Role"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::rkimpdocs/*"
        },
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::rkimpdocs",
                "arn:aws:s3:::rkimpdocs/*"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "JD",
                        "devops"
                    ]
                }
            }
        }
    ]
}  

作家角色的 IAM 角色权限(Rk-S3-Writer-I-Role)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::rkimpdocs"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::rkimpdocs",
                "arn:aws:s3:::rkimpdocs/*"
            ]
        }
    ]
}

输出:

存储桶策略和切换到提及角色均拒绝访问。任何帮助/建议都会有所帮助。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 aws-lambda


    【解决方案1】:

    显式拒绝将覆盖任何允许。在您的策略中,存储桶策略中的拒绝导致访问被拒绝。要授予对特定 IAM 角色的访问权限并拒绝其他角色,您应该使用“NotPrincipal”元素。请参阅此blog,它解释了您的确切用例。 此外,“aws:Tagkeys”条件在 S3 中为 not supported,因此您也必须省略它。

    【讨论】:

    • 感谢兄弟的宝贵意见帮助我很好地理解了“NotPrincipal”元素的概念,也非常感谢您为我指出“aws:TagKeys 现在我正在使用 s3:ExistingObjectTag 键 :)
    猜你喜欢
    • 2023-03-19
    • 2019-10-07
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2021-06-28
    • 2021-10-09
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多