我最近一直在使用资源标记编写IAM策略,下面是一个示例。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/team": "${aws:PrincipalTag/team}",
"aws:ResourceTag/environment": "${aws:PrincipalTag/environment}"
}
}
}
]
}
但是,这不允许传递角色(即使它们被标记(,因为这是iam:ResourceTag
而不是aws:ResourceTag
。如何确定服务是否使用ec2:ResourceTags
、aws:ResourceTags
或iam:ResourceTags
例如,我正在标记一个Cloudformation堆栈,不知道这个标记类型是ec2:ResourceTag
还是aws:ResourceTag
。经过反复试验,我发现它是aws:ResourceTag
。
此外,有没有办法将所有这些标签都包括在我的IAM策略中(如*:ResourceTags
(?
aws:ResourceTag属于aws全局条件上下文键(aws
前缀(。要检查哪些服务支持此密钥,您可以在与IAM一起工作的AWS服务中检查Authorization based on tags
以获得感兴趣的服务。
iam:ResourceTag或ec2:ResourceTag是服务特定条件密钥,在本例中分别为iam
和ec2
。您可以在Actions、resources和AWS服务的条件密钥中检查每个服务的所有支持密钥。