amazon-web-services - 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}"
}
}
}
]
}
解决方案
此处使用的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 文档标签相同。
推荐阅读
- rust - 如何从带有客户端的 actix-web 处理程序向调用者返回错误?
- swift - 缺少类型 UIEvent?
- jenkins - Jenkins 在同一台服务器上部署工件
- sql - SQL:如何获取列的句子行中所有字符串的总和
- javascript - 如何在javascript中将escpaed unicode转换为表情符号?
- elasticsearch - 无法使用 elasticsearch 和 metricbeat 检索标准化 CPU 利用率百分比
- c# - 'JsonPropertyAttribute' 由于其保护级别而无法访问
- python - 如何使用单行标题(5k 列)将数据帧写入 csv?
- asp.net-mvc - 如何为查询字符串中的 sting 参数提供日期格式?
- apache-spark - 跨多个 Spark 作业重用 Spark 会话