0

我在 AWS 中有 2 个 EC2 实例(应用程序和堡垒)和一个 RDS 实例(数据库)。我希望我的 RDS 只能通过堡垒访问(当我作为管理员想要手动更改数据库中的内容时)和应用程序(用户可以在其中更改数据库但只能根据提供的功能应用)。对于 EC2 实例,我希望只能在我的笔记本电脑上访问堡垒(因此只有我可以执行管理员更改),并且我希望应用程序 EC2 实例可供 Internet 上的每个人使用(因为它是公共应用程序) . 我在 AWS 中配置了一些设置,如下所示,但我只是想确认以下假设是否正确,以及它们是否足以满足我上面概述的要求?

  • 我已将应用程序 EC2 实例放置在公共子网中 - 这足以确保 Internet 上的任何人都可以(安全/可靠地)使用该应用程序吗?
  • 我已将堡垒放置在不同的公共子网中,但它需要一个公钥/私钥对(只有我拥有)才能访问 - 这足以保证它的安全吗?
  • 根据我的 RDS 实例的可用区,它似乎在一个子网中,当我检查路由表时,目标 0.0.0.0/0 的目标设置为 iw-..... 这是否意味着它是一个公共子网,如果那么有没有办法在不丢失与应用程序和堡垒 EC2 实例的连接的情况下将其顺利移动到私有子网?我还将公共可访问性设置为否,这是否意味着即使它在公共子网中也无法公开访问?
4

1 回答 1

1

我已将应用程序 EC2 实例放置在公共子网中 - 这足以确保 Internet 上的任何人都可以(安全/可靠地)使用该应用程序吗?

假设您在 EC2 实例上设置了一个安全组,允许来自0.0.0.0/0(公共互联网)的流量在您的网络服务器端口(可能是 80 和 443)上,并且它位于公共子网中,互联网上的任何人都可以访问它。如果那是安全的取决于您的威胁模型:-) - 我肯定会确保您的应用程序为加密通信提供 HTTPS 端点。

您还应该向安全组添加一条规则,允许来自堡垒主机安全组的流量用于您需要的协议,例如 HTTP、HTTPS、SSH。

我已将堡垒放置在不同的公共子网中,但它需要一个公钥/私钥对(只有我拥有)才能访问 - 这足以保证它的安全吗?

关于堡垒主机,您似乎也将其放置在公共子网中,考虑到它的功能,这是有道理的。我建议您确保附加到它的安全组只允许端口 22 (ssh) 上的流量到您的 IP,或者至少不允许整个互联网。虽然公钥/私钥身份验证很不错,但减少攻击者的表面积只是一个好习惯。

根据我的 RDS 实例的可用区,它似乎在一个子网中,当我检查路由表时,目标 0.0.0.0/0 的目标设置为 iw-..... 这是否意味着它是一个公共子网,如果那么有没有办法在不丢失与应用程序和堡垒 EC2 实例的连接的情况下将其顺利移动到私有子网?我还将公共可访问性设置为否,这是否意味着即使它在公共子网中也无法公开访问?

该实例位于您描述的公共子网中。如果路由表具有到 Internet 网关的直接路由(igw-... 条目),则子网根据定义是公共的。原则上,这将使您的数据库可以从 Internet 访问。但是:您似乎已将公共可访问性设置为否,这导致数据库无法获得公共 IP 地址。这实际上确保无法从 Internet 访问它,因此只能在您的 VPC 内访问。

将其移至私有子网是一种很好的做法,但这会导致停机。我还认为,从纯粹的技术角度来看,这并不重要,因为 RDS 不需要/使用互联网连接,并且有一个体面的安全组你会没事的(移动它仍然是一个干净的考虑因素设置)。

我的建议是为数据库设置安全组,以仅允许来自应用程序服务器安全组和堡垒主机安全组的数据库端口上的流量。

随着我概述的对安全组的更改,此设置应满足您的要求。

于 2021-02-06T17:52:47.897 回答