为什么不触发AWS API Gateway资源策略中的条件元素?

时间:2019-09-21 00:11:39

标签: json amazon-web-services aws-api-gateway

我试图了解AWS API-Gateway资源策略中的条件元素如何触发。

我尝试使用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"
                }
            }
        }
    ]
}

据我了解,通过将“ DateGreaterThan”“ CurrentTime”指定为2019年12月(当前是2019年9月),此API不得再使用三个月。

有人可以告诉我我偏离轨道了吗?

提前谢谢!

PS:我使用AWS PublicKey / SecretKey在主体中具有正确的授权。我只是想用当前条件阻止通话。

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

按照Joey Kilpatrick的要求,这是我更新的(仍然无效)的资源政策。

{
    "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"
                }
            }
        }
    ]
}

在这种情况下,我使用147.x.x.x IP来访问该API,因此我希望该API返回403。我还测试了前面提到的“ CurrentTime”条件。

1 个答案:

答案 0 :(得分:1)

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

但这不是您最大的问题:您不能限制root用户的任何权限。这是设计使然。了解为什么使用root用户here是个坏主意。