我需要一个AWS IAM策略来强制所有服务的标记。(不是一个接一个(。这可能吗?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyCreateSecretWithNoProjectTag",
"Effect": "Deny",
"Action": "secretsmanager:CreateSecret",
"Resource": "*",
"Condition": {
"Null": {
"aws:RequestTag/Project": "true"
}
}
},
{
"Sid": "DenyRunInstanceWithNoProjectTag",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/*"
],
"Condition": {
"Null": {
"aws:RequestTag/Project": "true"
}
}
},
{
"Sid": "DenyCreateSecretWithNoCostCenterTag",
"Effect": "Deny",
"Action": "secretsmanager:CreateSecret",
"Resource": "*",
"Condition": {
"Null": {
"aws:RequestTag/CostCenter": "true"
}
}
},
{
"Sid": "DenyRunInstanceWithNoCostCenterTag",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/*"
],
"Condition": {
"Null": {
"aws:RequestTag/CostCenter": "true"
}
}
}
]
}
这来自AWS文档。我需要所有的aws服务。
没有办法预先为所有可能的资源强制标记。我建议阅读AWS白皮书:
- 标记最佳实践-亚马逊网络服务(AWS(
即使使用AWS组织和TagPolicies,您也无法完全强制执行标记,因为:
Enforcement对不带标记创建的资源没有影响。
此外,AWS组织的TagPolicies只支持一些资源,而不是AWS中所有可用的资源。
白皮书建议使用CloudFormation和Service Catalog来主动标记资源。
如果帐户是组织的一部分,则可以通过标记策略强制执行:https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html.
如果没有,您可以使用所需标签的AWS配置规则:https://docs.aws.amazon.com/config/latest/developerguide/required-tags.html
这是不可能的。
首先你不能使用"*"资源。例如EC2创建EBS卷、ENI。。。有些无法标记,因此您将无法启动实例
其次,并不是所有的AWS服务都在创建资源的过程中创建标签。例如,对于createBucket请求,S3不会发送标签
第三,一些AWS服务使用requestTag,一些在创建资源期间使用awsTag。
因此,您需要逐个服务并逐个测试这些服务:(然后您将达到SCP大小限制(5120字节(。。。。