当仅由 Lambda 函数使用时,我应该将 AWS Elasticsearch 域放在 VPC 中吗

Should I put AWS Elasticsearch domain in VPC when it's consumed by Lambda functions only

我正在使用 AWS Elasticsearch 服务 运行 一个公开可用的 ES 域,该域由部署在任何 VPC 之外的 Lambda 函数调用。我已经配置了附加到 ES 域的资源策略,以限制仅访问我的 Lambda 函数承担的 IAM 角色。考虑到策略以及对我的域的所有请求都需要签名的事实,在我的场景中将 ES 域放在 VPC 中是否有任何额外的安全优势?

我知道在 VPC 内,我的 ES 域甚至无法从 Internet 访问,从安全角度来看,这无疑是一个好处。另一方面,这将需要将我所有的 Lambda 函数放在同一个 VPC 中,这会带来很多我希望避免的配置和性能挑战。

我的理解是:如果我们认为DynamoDB、S3、SNS、SQS或其他AWS无服务器服务是安全的,并且它们使用相同的IAM安全模型,我也应该认为我的ES配置是安全的。当然,您总是可以错误地配置域并将其公开供所有人使用,但 S3 存储桶也是如此,并且它不会阻止人们将私人文件保存在那里。

我错过了什么吗?尽管存在与 Lambda 函数配置相关的所有挑战,您是否在我的思维过程中看到任何安全漏洞,这应该说服我将 ES 域放在 VPC 中?

通过将您的 ElasticSearch 集群置于 VPC 中,您可以降低数据暴露的风险,而不仅仅是依赖域策略。

执行此操作时,您需要考虑以下事项:

  • 您需要将 NAT Gateway or NAT Instance 添加到您的 VPC 私有子网以允许 Lambda 的互联网连接。
  • 如果您想在没有 NAT 的情况下为您的 Lambda 连接到 AWS 服务,您将需要为每项服务配置 VPC endpoints

Elasticsearch 服务还支持通过 signed HTTP requests 进行身份验证。

AWS 文档中有一个关于 Security in Amazon Elasticsearch Service 的部分应该提供额外的输入。