amazon-web-services - 即使使用正确的标签键,我的 AWS SCP 会阻止创建任何 EC2 实例是什么?
问题描述
我正在尝试应用阻止创建 EC2 实例的 AWS 服务控制策略,除非请求中提供了特定标签。
为什么以下 SCP 拒绝在所有情况下创建 EC2 实例(带有 ENI 和 EBS 卷),据我所知,即使我提供了所需的标签?(仅供参考,我正在从 AWS 控制台创建实例并在请求中添加标签。)如果不应用此策略,我可以成功创建实例。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireEnvironmentTag",
"Effect": "Deny",
"Action": [
"ec2:CreateTags",
"ec2:RunInstances"
],
"Resource": "*",
"Condition": {
"ForAllValues:StringNotEquals": {
"aws:TagKeys": "sc:environment"
}
}
}
]
}
解决方案
您提供的 SCP 已Resource
设置为*
,这会阻止创建您的 ENI ( network-interface
)。
将资源设置为Amazon EC2 定义的特定支持资源类型以解决问题。
例如,下面的 SCP 应该只允许创建标签键为 的EC2实例sc:environment
。
我还假设您指定ec2:CreateTags
一个动作来阻止修改标签后,它们被设置为ec2:CreateTags
评估修改现有标签以及创建新标签(他们可能应该重命名该动作)。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireEnvironmentTag",
"Effect": "Deny",
"Action": [
"ec2:CreateTags",
"ec2:RunInstances"
]
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"ForAllValues:StringNotEquals": {
"aws:TagKeys": "sc:environment"
}
}
}
]
}
推荐阅读
- android - 重新进入应用程序时如何将我的应用程序重定向到锁定屏幕
- python-3.x - 如何从字符串中搜索特定关键字并返回其索引号
- javascript - 这些 FormData 构造函数有什么区别?
- openapi - 使用 Dredd 测试错误响应的最佳实践是什么?
- ansible - Concat of variables causes "template error while templating string: unexpected '/'"
- node.js - 如何立即触发 apollo graphql 订阅?
- typescript - vuex-smart-module 中的“MyComponent”类型上不存在属性“double”
- git - VSCode Git + Ftp
- nlp - Does doc2vec work with multi-class problem with only 1 sample per class?
- laravel - 如何在查看本地磁盘上的文件(Laravel)上显示?