如何限制未关联VPC的AWS Lambda的互联网访问权限?
限制未关联VPC的Lambda互联网访问(基于AWS Control Tower环境)
核心方案:使用服务控制策略(SCP)
由于Control Tower构建在AWS Organizations之上,服务控制策略(SCP)是强制组织内所有账户(或指定OU)合规的最优手段,可直接限制未关联VPC的Lambda的互联网访问权限。
步骤1:创建针对性SCP
在AWS Organizations控制台(需使用Control Tower的管理账户操作),创建以下两类SCP,覆盖创建限制和访问限制场景:
拒绝创建/修改为无VPC的Lambda
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "lambda:CreateFunction", "lambda:UpdateFunctionConfiguration" ], "Resource": "*", "Condition": { "Null": { "lambda:VpcIds": "true" } } } ] }
- 这条策略会拦截两类操作:创建未指定VPC的Lambda函数,以及将已关联VPC的Lambda修改为无VPC状态。
限制已有无VPC Lambda的公网访问
如果需要对存量无VPC Lambda限制互联网访问,可添加以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "lambda:InvokeFunction", "Resource": "*", "Condition": { "Null": { "lambda:VpcIds": "true" }, "NotIpAddress": { "aws:SourceIp": [ "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "169.254.169.254/32" ] } } } ] }
- 通过
aws:SourceIp条件,仅允许无VPC Lambda访问私有IP段和AWS元数据服务,直接阻断公网访问路径。
步骤2:将SCP附加到目标OU
在Control Tower管理账户中,把创建好的SCP附加到需要限制的OU(例如所有业务账户所在的OU、Sandbox OU或Production OU),实现全局或局部的强制管控。
步骤3:验证策略生效
- 尝试在受控账户中创建无VPC Lambda,应收到权限拒绝提示。
- 测试存量无VPC Lambda的公网访问(如调用外部API),请求应失败。
注意事项
- SCP仅管控IAM用户/角色的操作权限,不影响AWS服务本身,需确保策略覆盖所有Lambda相关操作。
- 若需放行特定无VPC Lambda的公网访问,可在SCP中添加例外规则(例如通过
Resource指定目标Lambda的ARN,或使用ArnLike条件匹配)。 - 可结合Control Tower自带的安全护栏(如「禁止Lambda公共访问」),与SCP形成双重管控,但SCP的强制优先级更高。
内容的提问来源于stack exchange,提问作者sajesh pp
相关产品推荐
相关产品推荐

