我使用ssm:tag of document根据用户角色和文档标签限制用户的访问。我已经向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}"
}
}
}
]
}发布于 2020-05-05 18:52:25
这里使用的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用户,并使用关键字' role‘和值设置角色名称或arn,与ssm文档标记相同。
https://stackoverflow.com/questions/61587419
复制相似问题