如何将AWS Lambda函数URL设为私有,仅允许AWS VPN访问?
实现Lambda函数URL仅AWS VPN连接可访问(已部署在VPC内)
前提说明
你的Lambda函数已部署在VPC子网中并关联了安全组,目标是限制其函数URL仅允许通过AWS VPN访问,禁止公网直接访问。
具体配置步骤
修改Lambda函数URL的身份验证方式
- 进入Lambda控制台,找到目标函数的「配置」>「函数URL」页面。
- 将身份验证类型从「NONE」改为「AWS_IAM」并保存。这一步会直接拒绝所有匿名公网请求,仅允许携带有效IAM签名的请求触发函数。
收紧VPC安全组的入站规则
- 打开Lambda关联的VPC安全组配置页面,移除所有允许公网(0.0.0.0/0)访问443端口的入站规则。
- 添加新的入站规则:
- 类型:HTTPS(TCP/443)
- 源:填写你的AWS VPN客户端CIDR范围,或VPN隧道的CIDR块(可在VPN连接控制台查看)
- 确保安全组仅放行来自VPN网段的流量访问Lambda所在的网络资源。
配置IAM权限控制访问主体
- 创建一个IAM策略,允许指定实体调用目标Lambda函数URL,示例策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:<你的区域>:<你的账号ID>:function:<函数名称>" } ] } - 将该策略附加到VPN用户使用的IAM角色或IAM用户上,确保只有通过VPN连接的授权用户才能发起合法请求。
- 创建一个IAM策略,允许指定实体调用目标Lambda函数URL,示例策略如下:
验证配置效果
- 断开AWS VPN,直接访问Lambda函数URL,应收到
403 Forbidden响应。 - 连接AWS VPN后,使用带有授权IAM凭证的工具(如curl、Postman)调用函数URL,应能正常触发Lambda执行。
- 断开AWS VPN,直接访问Lambda函数URL,应收到
内容的提问来源于stack exchange,提问作者Navya krishna Gottimukkala
相关产品推荐
相关产品推荐

