首页 > 解决方案 > ssm:resourceTag 跨账户问题

问题描述

我正在使用 ssm:tag of documents 来根据用户角色和文档标签限制对用户的访问。我在 IAM 政策中添加了一个条件,它正在工作。但是当我尝试使用跨帐户执行此操作时,它不起作用。

1) 我的 SSM 文件在主账户中,与子账户共享

2)基于标签限制访问的IAM策略在子账户中(标签键:角色)

3) 请求是针对儿童帐户的

场景 1:当 IAM 策略中的条件被删除时,我可以成功执行文档。因此,子 AWS 账户可以从主 AWS 账户获取 SSM 文档。

场景 2:当基于标签过滤时,我无法执行文档,即添加到 IAM 策略的条件。这表明子 AWS 账户无法从主 AWS 账户获取 SSM 文档的标签。有人可以帮我吗?附加 IAM 政策以供参考。

IAM 政策文件:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ssm:SendCommand",
            "Resource": [
                "arn:aws:s3:::ssm-deliverables/ssm-*",
                "arn:aws:ec2:ap-south-1:20**********:instance/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ssm:ListCommandInvocations",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "ssm:SendCommand",
            "Resource": "arn:aws:ssm:::document/*",
            "Condition": {
                "StringEquals": {
                    "ssm:resourceTag/Role": "${aws:PrincipalTag/Role}"
                }
            }
        }
    ]
}

标签: amazon-web-servicesamazon-iamdocumentssm

解决方案


此处使用的aws:PrincipalTag是 aws 全局条件上下文键之一。我们必须使用上述键将附加到发出请求的委托人的标签与您在策略中指定的标签进行比较。

在这种情况下,委托人是附加了上述策略的 IAM 用户/角色。因此,IAM 用户/角色本身应使用 IAM 策略中提到的相同值进行标记。

例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:StartInstances",
      "Resource": "*",
      "Condition": {"StringEquals": {"ec2:resourceTag/Name": "${aws:PrincipalTag/Name}" 
       }
      }
    }
  ]
}

假设上述策略附加到想要启动 EC2 实例的 IAM 用户,如果该用户使用与 IAM 策略中提到的资源标签相同的标签,则该用户将能够启动 EC2 实例。

因此,您必须标记向 SSM 发出请求的 IAM 用户,使用键“角色”和值设置角色名称或与 ssm 文档标签相同。


推荐阅读