API网关将某些IP列入白名单

时间:2019-09-25 11:52:07

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

我创建了一个AWS API Gateway终端节点,该终端节点指向我创建的API。我想使该IP可以无需任何身份验证(可以通过Internet访问它们)

来访问某些IP。

这是我所附的政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-west-2:123412341234:abcdabcdab/*/*/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "141.223.201.10/32"
                }
            }
        }
    ]
}

源IP是我的IP,可以从那里访问端点。但是我的访问被拒绝了。

对此有一个similar question,但它使用了我不想要的IAM身份验证。

我想念什么?

1 个答案:

答案 0 :(得分:1)

您见过this吗?

看起来允许也包含在默认模板中。我进行了复制,发现资源策略控制台“ IP范围黑名单”中有一个按钮。如果单击它,它将创建如下策略:


    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Deny",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}}",
                "Condition" : {
                    "IpAddress": {
                        "aws:SourceIp": [ "{{sourceIpOrCIDRBlock}}", "{{sourceIpOrCIDRBlock}}" ]
                    }
                }
            },
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}}"
            }
        ]
    }

您可以通过将条件“ IpAddress”更改为您在非工作模板中使用的相同“ NotIpAddress”条件,将其从黑名单更改为白名单。

这对我来说很好,所以如果不是,我将在您的API GW API上启用Access Logging并验证在您发出请求时AWS看到的源IP(请确保还要记录请求ID)。

为确保您在查看正确的访问日志,发出请求时,应使用curl示例捕获响应标头“ x-amzn-requestid”,

  

x-amzn-requestid:85e403e8-210a-49e4-909e-b3fb66d6467e

FTR,我在按钮在默认策略中创建的占位符中输入了*,AWS控制台将其转换为适当的值,因此控制台转换后最终看起来像这样。我所指的转换是我下面的占位符(REGION,ACCID,APIID):


    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Deny",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:REGION:ACCID:APIID/*/*/*",
                "Condition": {
                    "NotIpAddress": {
                        "aws:SourceIp": "34.213.29.81/32"
                    }
                }
            },
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:REGION:ACCID:APIID/*/*/*"
            }
        ]
    }

相关问题