[英]Logical or in policy condition AWS
我想要一个逻辑或 AWS 之间的策略,然后我需要将其附加到 SCP。 动机是添加一个在满足两个条件之一的情况下适用的策略。
{
"sid": "OnlyT1T2Micro",
"Effect": "Deny",
"Action": ["ec2:RunInstances"],
"Resource": ["arn:aws:ec2:us-east-1:accountid:instance/*"],
"Condition": {
"StringEquals": {
"ec2:InstanceType": ["t1.micro","t2.micro"]
},
"StringEquals": {
"ec2:Region": "us-east-1"
}
}
}
在这种情况下,我想拒绝 Ec2 运行实例 API,如果类型是 t1 或 t2 micro 之一,或者区域是 us-east-1。 但是在这个片段中,条件之间是一个逻辑“和”,这意味着如果它是(t1.micro 或 t2.micro)和(us-east-1 区域),我希望添加“或者”
为了将文本保存在 SCP 中(由于限制),我正在寻找在 1 个策略 2 条件下与“或”一起收缩,以防有选项
希望这个例子很清楚
一个 SCP 可以包含多个策略,目前您的单个策略需要满足所有条件(以及资源模式)才能拒绝。
如果您尝试拒绝其他 AWS 区域中的这些实例类的访问,您应该为这些条件中的每一个创建单独的语句,同时删除资源模式。
也许像下面这样的东西更合适。
{
"sid": "OnlyT1T2Micro",
"Effect": "Deny",
"Action": ["ec2:RunInstances"],
"Resource": ["*"],
"Condition": {
"StringEquals": {
"ec2:InstanceType": ["t1.micro","t2.micro"]
}
}
},
{
"sid": "NotInUsEast1",
"Effect": "Deny",
"Action": ["ec2:RunInstances"],
"Resource": ["*"],
"Condition": {
"StringEquals": {
"ec2:Region": "us-east-1"
}
}
}
这样,它将评估实例类型是否为t1.micro
或t2.micro
,或者如果区域为us-east-1
则拒绝该操作。
唯一的OR
条件是在每个语句之间,如果您试图减小语句的大小,请尝试将相似的语句分组。 例如,禁用同一语句中的常见操作,或者如果您想拒绝多个区域,请将它们全部添加到同一语句中,而不是每个语句中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.