允许特定IP地址访问API Gateway | IP白名单配置

作者:API传播员 · 2025-12-29 · 阅读时间:4分钟

如何允许特定的IP或IP地址范围访问我们的REST API端点?在本文中,我们将详细介绍如何通过配置IP白名单来实现这一目标,从而允许特定IP访问REST API端点,同时拒绝或阻止来自其他IP的所有请求。本文专注于API网关中使用REST协议的API,并将通过资源策略来实现IP白名单的配置。


开始

首先,我们需要创建一个 Lambda 函数(命名为 requestService),该函数将作为REST API网关的后端集成。每当调用端点(GET方法)时,Lambda 函数将返回一个硬编码的响应,而无需任何复杂的业务逻辑。

以下是 Lambda 函数的代码示例:

创建 Lambda 函数后,进入 API 管理控制台,创建一个新的REST API,或者选择一个已有的REST API。接下来,创建资源路径(如 /processrequest)并为其添加 GET 方法。最后,将 Lambda 函数(requestService)与 GET 方法集成。以下是集成配置的参考截图:


通过资源策略将IP地址列入白名单

通过资源策略,我们可以限制API端点的访问,仅允许来自特定IP地址的请求,同时拒绝其他来源的请求。

配置资源策略

  1. 在完成API网关和 Lambda 函数的设置后,打开API网关管理控制台。
  2. 在左侧面板中选择“资源策略”。
  3. 在编辑器中粘贴以下策略模板,并点击“保存”:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": "YOUR IP ADDRESS"
        }
      }
    }
  ]
}

修改策略

  • YOUR IP ADDRESS 替换为需要允许访问API端点的IP地址(可以通过搜索引擎查询“我的IP地址”获取)。
  • 如果需要允许一个IP地址范围,可以使用CIDR格式定义,例如 192.168.0.0/24
  • 保存修改后的策略。

部署API

完成资源策略的配置后,重新部署API以使更改生效,并获取调用URL。


测试

验证访问权限

  1. 部署完成后,复制调用URL并在浏览器中打开,确保在URL末尾添加 /processrequest,然后按下回车键。
  2. 如果配置正确,您将看到来自 Lambda 函数的响应。

以下是成功调用的示例截图:

验证拒绝访问

为了验证资源策略的工作情况,可以将允许的IP地址替换为 localhost IP(如 127.0.0.1),保存更改并重新部署API。

再次尝试访问API端点时,您将收到一条错误消息,表示访问被拒绝。以下是错误消息的示例截图:


总结

通过配置资源策略,我们成功地实现了对API资源。

原文链接: https://www.srcecde.me/posts/2022/05/allow-access-to-api-gateway-from-specific-ip-addresses-whitelist-ips/