使用适当的安全组设置访问 EC2 的 AWS Lambda

AWS Lambda to access EC2 with appropriate security group settings

我的 MongoDB 运行在 AWS EC2 上,我的 Lambda 函数(python 代码)正在尝试通过 IP 地址 23.23.23.23:27017 访问它。在我们公司,我们通过在 EC2 实例上设置 AWS 安全组来将我们的 EC2 实例限制为我们公司的 IP 地址。 问题是如果不向我的 EC2 实例安全组上的所有流量开放对端口 27017 的访问权限,我的 lambda 将无法访问它,因为我们不知道执行 Lambda 的 IP 地址。

有没有更好的方法可以在不违反安全策略的情况下从 Lambda 等 AWS 服务访问 EC2 实例上的端口?

今天在 AWS 上,当您需要限制 in-bound 从其他 AWS 服务对您自己的实例的 IP 访问时,您的选择有限。 AWS 网络架构的本质是服务可以来自 AWS IP Address Range

中的任何 IP 地址

除了向所有流量开放实例外,您还可以考虑三个选项:

  1. 对所有流量开放实例,在实例上使用 iptables 或 Windows 防火墙并限制对 AWS IP 中任何 IP 的访问地址范围。这仍然允许数百万个 IP 访问该实例,但它稍微更安全。至少可以说不理想。

  2. 构建内部 API,可能使用简单队列服务,以与服务交互。

  3. 让 Lambda 作业确定其 IP,并动态更新目标实例的安全组,然后在完成后重置安全组。不漂亮,但它会工作。根据贵公司的安全政策,这可能是最可行的选择。

不确定为什么每个人都说 VPC 端点可以解决这个问题。 VPC 终端节点允许源自您的 VPC 内的通信访问 VPC 外的 AWS 服务。被问到的问题是关于存在于 VPC 之外的 Lambda 函数,访问存在于 VPC 内的 EC2 实例。

根据 this announcement,即将在 VPC 中支持 运行 Lambda 函数。这将解决这个问题所解决的问题。

如果您将 lambda 函数配置为 运行 在与您的 EC2 实例相同的 VPC 和子网上 运行ning Mongo DB,您将能够访问Mongo来自您的 lambda 函数的数据库。

一个额外的配置是您在 lambda 函数中的安全组为您的 EC2 实例所在的 CIDR 块完成了正确的入站和出站设置。

您不需要特定的 IP 地址,而是需要 CIDR 范围来打开连接。