我想要一个逻辑或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"
}
}
}
在这种情况下,如果类型为t1或t2 micro之一或区域为us-east-1,我想拒绝Ec2运行实例API。 但是在此代码段中,这是条件之间的逻辑“和”,这表示该政策将在(t1.micro或t2.micro)和(us-east-1区域)(我希望添加“或”
为了将文本保存在SCP中(由于限制),我想在1个策略2条件下使用“或”一起缩小,以备不时之需
希望这个例子很清楚
答案 0 :(得分:1)
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
条件位于每个语句之间,如果您要减小语句的大小,请尝试对相似的语句进行分组。例如,禁用同一条语句中的常见操作,或者如果您要拒绝多个区域,请将它们全部添加到同一条语句中,而不是每个都添加一个。