我想使用服务控制策略 (SCP) 和标签策略,使我在 AWS Organizations 中的成员账户中的用户无法创建 AWS 资源。
简短描述
使用标签策略维护您的组织成员账户中支持的 AWS 资源的标准化标签。默认情况下,标签键大小写形式继承自父策略。要定义强制标签键的大小写形式,请选择 Use the capitalization that you've specified above for the tag key(使用上面为标签键指定的大小写形式)。如果父策略不存在或者您没有启用大小写形式,则全小写标签键将被视为合规。
创建资源时,标签策略会检查是否存在符合定义的标签值和大小写形式的合规标签键。但是,用户可以修改标准化标签键,并创建无合规标签的资源。请使用 SCP 限制成员账户中实体的权限。
解决方法
使用标签策略防止在新资源或现有资源上使用不合规标签
以下策略仅允许用户将其 Amazon Elastic Compute Cloud (Amazon EC2) 实例的 tag_value 更改为 Preprod 或 Production:
{
"tags": {
"Environment": {
"tag_key": {
"@@assign": "Environment"
},
"tag_value": {
"@@assign": [
"Preprod",
"Production"
]
},
"enforced_for": {
"@@assign": [
"ec2:instance"
]
}
}
}
}
在前面的策略中,用户无法为 tag_value 输入 Dev,因为该策略未定义 Dev 选项。此外,如果该策略包含大小写选项,则用户无法将 Environment 更改为 environment。
使用 SCP 在没有合规标签键的情况下停止创建实例资源
以下 SCP 要求用户在调用 RunInstances API 操作时在实例的元数据中包含合规的标签键。如果附加此 SCP 的用户创建了带有合规标签的资源,则该用户无法添加、修改或删除标签键值对:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUpdatingOrDeletingAnyTagOnInstanceWithAnAttachedCopliantTags",
"Effect": "Deny",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Environment": [
"Preprod",
"Production"
]
},
"Null": {
"aws:ResourceTag/Environment": "false"
}
}
},
{
"Sid": "DenyRunInstancesWithoutOneofTheCompliantTagKeys",
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"Null": {
"aws:RequestTag/Environment": "true"
}
}
}
]
}
**注意:**在调用 RunInstances API 时,请确保传递所有必需的标签。
相关信息
AWS Organizations 服务控制策略与 IAM 策略之间有何区别?
标签策略语法