当我像这样配置 ACL 时,我的 lambda 无法向 Cognito 发送 Admin SDK 调用。
但是当我添加“所有流量”和“0.0.0.0/0”而不是 80 和 443 时。呼叫通过。 开发工具包是否使用超过 80 和 443 来对 AWS Cognito 进行开发工具包调用?
我真的想只允许需要的端口。
作为一般规则,您应该将网络 ACL 配置保留为默认的“允许全部”访问。
NACL 反映了物理世界路由器的功能。它们控制子网之间移动的流量,就像现实世界的路由器一样。 NACL 规则是“无状态”的,这意味着规则需要在两个方向上定义。
如今,AWS 等云服务提供了安全组。安全组比 NACL 功能更强大,因为它们允许“有状态连接”,记住原始请求并允许响应,即使规则中没有明确定义也是如此。例如,如果端口 80 对传入请求开放,则即使没有明确的规则允许返回流量,安全组也将允许发送响应(这很方便,因为此类请求来自各种源端口) ). 应该很少需要使用 NACL。通常仅在需要特殊安全性时才需要它们,例如创建“网络 DMZ”时。它们的正确使用非常复杂,因为所有端口都必须在两个方向上得到明确许可。
底线: 将 NACL 保留为默认的“全部允许”设置。使用安全组来控制流量。
额外信息: 无需在 Lambda 函数的安全组上分配入站规则。没有外部来源的流量“进入”Lambda 函数。安全组将允许响应进入 Lambda 环境,由于安全组的有状态性质,请求从 Lambda 函数向外发送,因此不需要且不使用入站规则。