【问题标题】:AWS IAM Conditional PoliciesAWS IAM 条件策略
【发布时间】:2020-10-23 02:29:48
【问题描述】:

我正在尝试在特定资源具有某些标签键/值对的条件下提供对 IAM 策略的访问权限。尽管关注了AWS documentation,但它似乎不起作用。

IAM 政策如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "dev"
                }
            }
        }
    ]
}

我有一个 S3 存储桶(名为 my-bucket-name),其标签为:environment = dev。谁能向我解释为什么以下命令失败?

$ aws s3 ls s3://my-bucket-name
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
$ aws s3 cp s3://my-bucket-name/file.json .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

更新:基于 @Dennis Traub@jarmod 响应,我稍微编辑了这个以将标签添加到 S3 存储桶中的对象,我是仍然无法读取对象。我还尝试将条件更改为"s3:RequestObjectTag/environment": "dev",但仍然不行。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-iam


    【解决方案1】:

    如果我没记错的话,Amazon S3 不支持基于存储桶标签的条件键,只支持对象标签。这就是它不起作用的原因。

    【讨论】:

    • S3 部分支持authorization based on tags。仅针对对象资源的部分含义。
    • 感谢您确认我的假设,@jarmod
    • 所以澄清一下,如果我将这些标签放在 S3 对象上,它应该可以工作吗?因为我没有看到这一点。使用aws s3 ls s3://my-bucket-nameaws s3 cp s3://my-bucket-name/object.json .。我分别得到Access DeniedForbidden
    【解决方案2】:

    基于 @Dennis Traub 的回答,要使其与存储桶中的特定对象一起使用,IAM 策略必须利用 "s3:ExistingObjectTag/environment": "dev" 条件。以下政策对我有用:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "s3:ExistingObjectTag/environment": "dev"
                    }
                }
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 2020-01-23
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2019-04-18
      • 2021-09-29
      • 2018-05-08
      • 1970-01-01
      相关资源
      最近更新 更多