在 AWS 中配置对 EC2 和 RDS 实例的访问的要求
Requirements for configuring access to EC2 and RDS instances in AWS
我在 AWS 中有 2 个 EC2 实例(应用程序和堡垒)和一个 RDS 实例(数据库)。我希望我的 RDS 只能通过堡垒访问(因为当我作为管理员想要手动更改数据库中的内容时)和应用程序(用户可以在其中对数据库进行更改,但只能根据应用)。对于 EC2 实例,我希望堡垒只能由我在我的笔记本电脑上访问(因此只有我可以执行管理员更改),并且我希望应用程序 EC2 实例可供互联网上的每个人使用(因为它是 public 应用程序)。我在 AWS 中配置了如下几个设置,但我只是想确认下面的假设是否正确,以及它们是否足以满足我上面概述的要求?
- 我已将应用程序 EC2 实例放在 public 子网中 - 这足以确保互联网上的任何人都可以(safely/securely)使用该应用程序吗?
- 我已将 bastion 放置在不同的 public 子网中,但它需要 public/private 密钥对(只有我有)才能访问 - 这足以保证它的安全吗?
- 根据我的 RDS 实例的可用区,它似乎在一个子网中,当我检查路由 table 时,目标 0.0.0.0/0 的目标设置为 iw-.....这意味着它是一个 public 子网,如果是的话,有没有一种方法可以将它平稳地移动到私有子网,而不会失去与应用程序和堡垒 EC2 实例的连接?我还将 public 可访问性设置为否,这是否意味着即使它位于 public 子网中也无法 publicly 访问?
I've placed the application EC2 instance in a public subnet - is this enough for making sure that anyone on the internet can (safely/securely) use the app?
假设您已经在您的 EC2 实例上设置了一个安全组,允许来自您的网络服务器端口(可能是 80 和 443)上的 0.0.0.0/0
(public 互联网)的流量并且它是放置在 public 子网中,互联网上的任何人都可以访问它。这是否安全取决于您的威胁模型:-) - 我肯定会确保您的应用程序提供用于加密通信的 HTTPS 端点。
您还应该向安全组添加一条规则,允许来自堡垒主机安全组的流量用于您需要的协议,例如HTTP、HTTPS、SSH。
I've placed the bastion in a different public subnet, but it requires a public/private key pair (which only I have) to access - is this enough to keep it secure?
关于堡垒主机,您似乎也将其置于 public 子网中,鉴于其功能,这是有道理的。我建议您确保附加到它的安全组只允许端口 22 (ssh) 上的流量到您的 IP,或者至少不允许整个互联网。虽然 public/private key auth 很不错,但减少攻击者的表面积只是一种很好的做法。
Based on my RDS instance's availability zone, it seems to be in a subnet that when I check the route table, destination 0.0.0.0/0 has target set to iw-..... does this mean it's a public subnet, and if so is there a way to smoothly move it to a private subnet without losing connectivity to the application and bastion EC2 instances? I've also set public accessibility to no, so does that mean it can't be accessed publicly even if it's in a public subnet?
该实例位于您所描述的 public 子网中。如果路由 table 具有到 Internet 网关的直接路由(igw-... 条目),则子网定义为 public。这将使您的数据库从 Internet 原则上 可访问。 但是:您似乎已将 public 可访问性设置为否,这导致数据库无法获得 public IP 地址。这实际上确保了它无法从 Internet 访问,因此只能在您的 VPC 内访问。
将其移至私有子网是一种很好的做法,但这会导致停机。我还认为,从纯技术角度 ,这并不重要,因为 RDS 没有 need/use 互联网连接,并且有一个像样的安全组,你会没事的(移动它仍然是一个干净的设置需要考虑的事情)。
我的建议是为数据库设置安全组,只允许来自应用程序服务器安全组和堡垒主机安全组的数据库端口上的流量。
根据我概述的对安全组的更改,此设置应该可以满足您的要求。
我在 AWS 中有 2 个 EC2 实例(应用程序和堡垒)和一个 RDS 实例(数据库)。我希望我的 RDS 只能通过堡垒访问(因为当我作为管理员想要手动更改数据库中的内容时)和应用程序(用户可以在其中对数据库进行更改,但只能根据应用)。对于 EC2 实例,我希望堡垒只能由我在我的笔记本电脑上访问(因此只有我可以执行管理员更改),并且我希望应用程序 EC2 实例可供互联网上的每个人使用(因为它是 public 应用程序)。我在 AWS 中配置了如下几个设置,但我只是想确认下面的假设是否正确,以及它们是否足以满足我上面概述的要求?
- 我已将应用程序 EC2 实例放在 public 子网中 - 这足以确保互联网上的任何人都可以(safely/securely)使用该应用程序吗?
- 我已将 bastion 放置在不同的 public 子网中,但它需要 public/private 密钥对(只有我有)才能访问 - 这足以保证它的安全吗?
- 根据我的 RDS 实例的可用区,它似乎在一个子网中,当我检查路由 table 时,目标 0.0.0.0/0 的目标设置为 iw-.....这意味着它是一个 public 子网,如果是的话,有没有一种方法可以将它平稳地移动到私有子网,而不会失去与应用程序和堡垒 EC2 实例的连接?我还将 public 可访问性设置为否,这是否意味着即使它位于 public 子网中也无法 publicly 访问?
I've placed the application EC2 instance in a public subnet - is this enough for making sure that anyone on the internet can (safely/securely) use the app?
假设您已经在您的 EC2 实例上设置了一个安全组,允许来自您的网络服务器端口(可能是 80 和 443)上的 0.0.0.0/0
(public 互联网)的流量并且它是放置在 public 子网中,互联网上的任何人都可以访问它。这是否安全取决于您的威胁模型:-) - 我肯定会确保您的应用程序提供用于加密通信的 HTTPS 端点。
您还应该向安全组添加一条规则,允许来自堡垒主机安全组的流量用于您需要的协议,例如HTTP、HTTPS、SSH。
I've placed the bastion in a different public subnet, but it requires a public/private key pair (which only I have) to access - is this enough to keep it secure?
关于堡垒主机,您似乎也将其置于 public 子网中,鉴于其功能,这是有道理的。我建议您确保附加到它的安全组只允许端口 22 (ssh) 上的流量到您的 IP,或者至少不允许整个互联网。虽然 public/private key auth 很不错,但减少攻击者的表面积只是一种很好的做法。
Based on my RDS instance's availability zone, it seems to be in a subnet that when I check the route table, destination 0.0.0.0/0 has target set to iw-..... does this mean it's a public subnet, and if so is there a way to smoothly move it to a private subnet without losing connectivity to the application and bastion EC2 instances? I've also set public accessibility to no, so does that mean it can't be accessed publicly even if it's in a public subnet?
该实例位于您所描述的 public 子网中。如果路由 table 具有到 Internet 网关的直接路由(igw-... 条目),则子网定义为 public。这将使您的数据库从 Internet 原则上 可访问。 但是:您似乎已将 public 可访问性设置为否,这导致数据库无法获得 public IP 地址。这实际上确保了它无法从 Internet 访问,因此只能在您的 VPC 内访问。
将其移至私有子网是一种很好的做法,但这会导致停机。我还认为,从纯技术角度 ,这并不重要,因为 RDS 没有 need/use 互联网连接,并且有一个像样的安全组,你会没事的(移动它仍然是一个干净的设置需要考虑的事情)。
我的建议是为数据库设置安全组,只允许来自应用程序服务器安全组和堡垒主机安全组的数据库端口上的流量。
根据我概述的对安全组的更改,此设置应该可以满足您的要求。