配置由Cognito预令牌生成触发的私有子网Lambda安全组
关于Amazon Cognito调用私有子网Lambda的安全组配置问题
Amazon Cognito对应的CIDR是什么?
Amazon Cognito没有固定的静态CIDR范围,它作为AWS托管服务,使用的IP地址属于AWS全局IP地址池,且会随时间动态调整。虽然AWS会发布各区域的服务IP范围(包含Cognito使用的IP),但直接将这些CIDR全部添加到Lambda安全组的入站规则中并不现实——范围过大,且需要频繁手动更新IP列表,难以维护且存在安全冗余。
高安全性要求下的Lambda安全组配置推荐方案
针对私有子网中Lambda被Cognito预令牌触发器调用的场景,以下是高安全性的配置方案:
- 使用VPC接口端点实现私有网络访问:在你的VPC中创建针对Lambda服务的接口端点(
com.amazonaws.<你的区域>.lambda)。通过这个端点,Cognito可以通过AWS内部私有网络触发Lambda,无需经过公网。此时Lambda的安全组只需允许来自该VPC端点的入站流量(可通过关联端点的安全组来精准控制),彻底隔绝公网暴露风险。 - 利用AWS服务前缀列表缩小IP范围:如果必须通过公网访问(不推荐),可以使用AWS提供的服务前缀列表(Prefix List)。每个AWS区域都有对应Cognito服务的前缀列表,将其添加到Lambda安全组的入站规则中,前缀列表会由AWS自动更新IP范围,比手动维护CIDR更高效安全。
- 结合IAM策略强化访问控制:仅靠安全组不够,还需在Lambda的执行角色中添加条件限制,只允许Cognito服务(
cognito-idp.amazonaws.com)触发Lambda。示例IAM策略条件:"Condition": { "StringEquals": { "lambda:SourceAccount": "<你的AWS账号ID>", "lambda:SourceArn": "<你的Cognito用户池ARN>" } } - 禁用不必要的公网访问路径:如果Lambda不需要访问外部公网资源,不要配置NAT网关或公网网关,彻底切断Lambda与公网的连接,仅保留VPC内部和必要的AWS服务端点访问,最大化缩小攻击面。
内容的提问来源于stack exchange,提问作者Spark
相关产品推荐
相关产品推荐

