如何使用 vpc 安全组来限制对我的 Lambda 的入站访问?

How can I use a vpc security group to restrict inbound access to my Lambda?

我有一个简单的无服务器端点来检查一些令牌。假设路径是“/checktoken”。并且只想使用我的 IP 地址访问它,这就是为什么将我的 Lambda 连接到 VPC(2 个私有子网和安全组)。

但问题是即使我使用我的 IP 地址将安全组 in/outbound 规则设置为 https,我也可以向具有不同 IP 地址的端点请求。

我使用 AWS = CloudFront + Route53 作为 DNS,Lambda + Api 网关作为端点。

我在 Api 网关中创建了一个带有资源策略的白名单 IP,但它不是我想要的解决方案。

所需的解决方案是 vpc 的安全组在其规则中应该只允许来自白名单 IP 的请求。

thats why connect my Lambda with VPC(2private subnets and security group)

在 VPC 中放置 lambda 函数并为其提供安全组不会影响 API 网关是否可以调用它。

API网关不使用VPC中lambda的弹性网络接口(ENI)来调用它。它使用 Lambda 服务端点完成。

您可以使用 WAF 来控制对您的 CloudFront 分配的访问:

将 Lambda 添加到 VPC 不会通过您的 VPC 将流量定向到 Lambda

事实上,Lambda 是通过 Lambda API 服务端点调用的,因此入站评估规则对其根本没有影响。 Lambda 驻留在 VPC 中的目的是访问 VPC 资源。

技术实现是在您的 VPC 中创建一个 ENI,它连接到共享 AWS VPC 中的 Lambda 函数。 Lambda 能够路由出其共享 VPC 以连接到资源。

When you configure your Lambda function to connect to your own VPC, it creates an elastic network interface in your VPC and then does a cross-account attachment. These network interfaces allow network access from your Lambda functions to your private resources. These Lambda functions continue to run inside of the Lambda service’s VPC and can now only access resources over the network through your VPC.

您需要通过使用 AWS WAF (using an IPSet) 在 CloudFront 级别添加这些 IP 白名单,或者通过 API 网关作为 WAF 或策略(如上所述) .

尝试将 IP 地址列入黑名单/白名单:

https://www.npmjs.com/package/serverless-secure