Amazon web services 策略条件AWS中的逻辑或

Amazon web services 策略条件AWS中的逻辑或,amazon-web-services,amazon-iam,scp,Amazon Web Services,Amazon Iam,Scp,我想有一个逻辑或AWS之间的政策,然后我需要附加到SCP。 其动机是添加一项适用于满足两个条件之一的政策 { "sid": "OnlyT1T2Micro", "Effect": "Deny", "Action": ["ec2:RunInstances"], "Resource": ["

我想有一个逻辑或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条件下使用“或”一起收缩,以防有选项


希望这个例子很清楚

一个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
,然后拒绝该操作


唯一的
条件是在每条语句之间,如果要减小语句的大小,请尝试将类似的语句分组。例如,禁用同一语句中的常见操作,或者如果要拒绝多个区域,请将它们全部添加到同一语句中,而不是每个语句都添加一个语句。

I达到scp文本限制。因此,我想知道,在同一政策中,您是否可以同时拥有这两种产品?还是超过了政策的长度?我必须考虑政策的长度。有一个SCP策略长度限制,我还没有超过这个限制,但我去过一次,我知道我们可以达到这个限制。在有选择权的情况下尽量提前避免,但唯一的选择权在语句之间。我的建议是尝试复合类似的条件,即如果您试图禁用us-east-1中的某些服务,您将在同一声明中包含它们。如果您更改答案并添加此评论,我将批准作为可接受的答案。或者我们可以加上否定选项?