Json 为什么AWS API网关资源策略中的条件元素未触发?

Json 为什么AWS API网关资源策略中的条件元素未触发?,json,amazon-web-services,aws-api-gateway,Json,Amazon Web Services,Aws Api Gateway,我试图理解AWS API网关的资源策略中的Condition元素是如何触发的 我曾尝试使用SourceIP阻止所有流量,只允许128.0.0.0/1和0.0.0.0/1,但我两次都能从同一IP访问我的API。我还尝试用CurrentTime阻塞我的API。但我在条件中添加的任何内容似乎都不会阻止我调用API的能力。我误解了什么 我当前试图阻止API进行所有调用的尝试如下: { "Version": "2012-10-17", "Statement": [ {

我试图理解AWS API网关的资源策略中的Condition元素是如何触发的

我曾尝试使用SourceIP阻止所有流量,只允许128.0.0.0/1和0.0.0.0/1,但我两次都能从同一IP访问我的API。我还尝试用CurrentTime阻塞我的API。但我在条件中添加的任何内容似乎都不会阻止我调用API的能力。我误解了什么

我当前试图阻止API进行所有调用的尝试如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<AccountID>:root"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-west-2:<AccountID>:<API>/*/*",
            "Condition": {
                "DateGreaterThan": {
                    "aws:CurrentTime": "2019-12-15T12:00:00Z"
                }
            }
        }
    ]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“委托人”:{
“AWS”:“arn:AWS:iam:::root”
},
“操作”:“执行api:Invoke”,
“资源”:“arn:aws:execute api:us-west-2::/*/*”,
“条件”:{
“日期大于”:{
“aws:当前时间”:“2019-12-15T12:00:00Z”
}
}
}
]
}
根据我的理解,通过声明“Dategreater”早于“CurrentTime”到2019年12月,即目前的2019年9月,该API在未来三个月内不应被调用

有人能告诉我我要偏离轨道的地方吗

提前谢谢你

PS:我在使用AWS PublicKey/SecretKey的正文中有正确的授权。我只是想用目前的状况来阻止我的通话

PPS:我忘了提到我已经确认我的API部署正在使用此资源策略,因为在我添加AWS PublicKey/SecreyKey之前,我的API拒绝调用。(我已启用AWS_IAM授权)

按照乔伊·基尔帕特里克的要求,这是我更新的(仍然无效的)资源政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<AccountID>:user/Service_Account"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-west-2:<AccountID>:<API>/*/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "0.0.0.0/1"
                }
            }
        }
    ]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“委托人”:{
“AWS”:“arn:AWS:iam:::用户/服务帐户”
},
“操作”:“执行api:Invoke”,
“资源”:“arn:aws:execute api:us-west-2::/*/*”,
“条件”:{
“IP地址”:{
“aws:SourceIp:“0.0.0.0/1”
}
}
}
]
}

在本例中,我使用147.x.x.x IP访问API,因此我希望该API返回403。我还使用前面提到的“CurrentTime”条件进行了测试。

我想首先注意,将SourceIP限制为128.0.0.0/1和0.0.0.0/1会拒绝任何IP地址,因为每个IP都位于这两个CIDR块中的一个块中


但这并不是你最大的问题:你不能限制你的
root
用户的任何权限。这是故意的。看看为什么使用
root
user是个坏主意

我已经创建了一个仅具有API网关调用权限的服务帐户,并使用此帐户重试,根据时间进行阻塞,阻塞128.0.0.0/1>>或者是否可以使用新策略编辑问题?我不知道你是怎么做的。