在 AWS Identity and Access Management(IAM)中创建策略以强制在资源上设置多个标签。要实现此目的,需要使用 AWS 的条件语句来检查标记的数量或具有特定名称的标记是否存在。
以下是一个示例策略,它确保 EC2 实例上至少有两个标记 - “Environment” 和“Owner”,并且它们都不为空值。如果实例上不存在这些标记或它们中的任何一个是空的,则不允许通过请求。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceMultipleTags",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "*",
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys":[
"Environment",
"Owner"
]
},
"NumericGreaterThanEquals": {
"aws:TagCount": "2"
},
"ForAnyValue:StringNotEquals": {
"aws:TagKeys": ["Environment", "Owner"]
},
"ForAllValues:StringNotEqualsIgnoreCase": {
"aws:TagValues": ["", "none", "null"]
}
},
"Principal": {
"AWS": "*"
}
}
]
}
在上面的示例策略中,“aws:TagKeys”指定需要存在的标记名称,而“aws:TagCount”指定标记的最少数量。如果标签的数量和名称都匹配,则 AWS 允许请求。此外,“aws:TagValues”条件确保标签不是空白值(例如,“”、“none”或“null”)。
可以根据需要自定义此策略。例如,可以添加要求实例上存在其他标记的条款,或者可以使用此策略作为其他 AWS 服务的基础,例如 Amazon S3 存储桶或 Amazon RDS 数据库实例。