AWS EC2-从特定域到数据库的安全连接?

问题描述 投票:1回答:1

我正在使用AWS EC2运行支持搜索功能的数据库-与Elasticsearch类似。由于预算限制,该数据库仅在单个AWS区域中运行。

该数据库也在VPC的专用子网内部运行。当前没有可以建立的入站或出站连接。

我需要允许访问数据库,以便只有我的无服务器功能才能通过HTTP连接到它。不应允许用户直接从客户端访问它。可以使用Lambda,但由于冷启动时间长,因此不理想。用户将期望搜索结果很快出现,尤其是在页面首次加载时。因此,还需要其他内容。

该计划是用Cloudflare Workers代替Lambda。随着启动时间的缩短和与世界各地最终用户的距离越来越近,以这种方式连接到数据库可能会为我提供所需的速度,同时仍然提供无服务器方法的所有优势。但是,我不确定如何配置VPC安全组以仅允许来自特定工作程序的连接。

[我知道我的工人都具有唯一的域,例如https://unique-example.myworkerdomain.com,并且随着时间的推移它们保持不变。因此,有什么方法可以安全地允许我阻止该域的入站连接,同时阻止其他所有内容?是否可以/应该通过配置安全组,Internet网关,IAM角色或完全其他方式来完成?

谢谢您的帮助和建议

database amazon-web-services security networking amazon-ec2
1个回答
1
投票

有两个选择。

ECS

您可以在与数据库相同的VPC中运行ECS集群,并运行Fargate任务,这些任务的启动时间不到一秒(也许是100毫秒或更短?)。您可以在热群集实例上运行ECS任务(但是您始终需要为它们付费),但是也许使用ECS从零扩展到零方法可以在不影响大多数用户请求(第一个请求)的情况下管理成本从零到零的事件后,将获得100ms +的延迟,但随后的请求将变得类似)。 Lambda实际上在后台执行了类似的操作,但是具有更积极的按比例缩小时间表。这不受特定域的限制,但可以解决您的问题。

自管代理

取决于访问数据库的方式,您可能能够在公共子网中使用反向代理(例如Nginx)来进行请求验证以限制对数据库的访问。这可以控制任何请求标头的访问,但是我建议进行TLS客户端验证,以确保只有您的功能可以通过代理访问数据库,并且可以通过这种方式验证域(通过将受信任的CA限制为一个仅为该域签名的中间CA,或者,我认为Nginx可以根据客户端证书与正则表达式(例如域名)匹配的特征允许连接。

通过公司网络路由

使用VPN,您可以从网络内部发起功能或以某种方式过滤请求,然后数据库仍可以位于私有子网中,并且公司网络可以通过VPN进行连接。

使用AWS WAF

您使公共ALB指向数据库,并设置AWS WAF以阻止不包含特定标头(例如API密钥)的所有请求。注意:您可能还需要设置Cloudfront,无论您是否可以将WAF直接应用于ELB,我都忘了脑袋。另请注意:我没有特别建议,因为我认为WAF并非在规则中使用敏感字符串设计的,因此您可能必须考虑谁对WAF拥有describerule / describewebacl权限,这些规则也可能最终以记录日志,因为AWS认为规则不敏感。但是WAF可能会过滤您认为可行的内容。我很确定您可以过滤HTTP标头,但是除非这些标头是秘密的,否则任何人都可以通过使用这些标头提交请求来进行连接。我不认为WAF可以进行客户端域验证。

© www.soinside.com 2019 - 2024. All rights reserved.