如何配置AWS Lambda仅允许CloudFront调用以保障安全?
两种更安全的CloudFront+Lambda集成方案
方案1:通过AWS IAM实现CloudFront对Lambda的认证
这种方案从身份层面彻底替代静态密钥头,确保只有CloudFront能合法调用Lambda:
- 创建Lambda Function URL时,选择AWS_IAM作为认证类型(而非NONE),限制仅授权IAM实体可发起调用。
- 给CloudFront的服务角色添加
lambda:InvokeFunctionUrl权限,资源指定为目标Lambda Function URL的ARN。 - 在CloudFront分发的源站配置中,启用源站访问控制(OAC),配置OAC使用上述IAM角色签名请求。CloudFront会自动以该角色身份向Lambda发起请求,Lambda的IAM认证会验证请求合法性。
- 在Lambda的资源策略中,添加允许CloudFront服务角色调用
lambda:InvokeFunctionUrl的语句,完成权限链配置。
方案2:将Lambda放入VPC并限制仅CloudFront调用
通过VPC网络隔离切断Lambda的公网访问路径,仅允许CloudFront通过受控通道调用:
- 将Lambda部署到VPC的私有子网,取消其公网访问权限,确保仅能与VPC内部资源通信。
- 选择以下两种中转方式之一:
- Network Load Balancer(NLB)中转:创建内部NLB,配置目标组关联你的Lambda;将CloudFront的源站设置为NLB的DNS名称,同时启用OAC确保只有CloudFront能访问NLB;在NLB的安全组中,仅允许CloudFront的IP段或VPC端点访问。
- Lambda VPC端点访问:创建Lambda的Interface VPC端点,在端点的资源策略中仅允许CloudFront的服务角色访问;配置CloudFront通过该VPC端点调用Lambda,同时确保VPC安全组只允许CloudFront相关流量进入端点。
内容的提问来源于stack exchange,提问作者everett1992
相关产品推荐
相关产品推荐

