AWS RDS MySQL如何限制对单个EC2实例的数据库访问

时间:2015-02-04 10:13:01

标签: mysql amazon-web-services amazon-ec2 rds

我最近继承了AWS账户的维护,并注意到db访问对任何网络都是开放的!因此,我认为它必须简单,就像我们使用自己的VM一样。除亚马逊外,AWS EC2实例具有内部IP和公共IP,有时还具有弹性IP。所以我认为我会搜索谷歌并找到一个简单的快速写,但似乎没有。那么有人可以提供一个简单的写作,在这里,如何做到这一点。据我所知,RDS安全性有三种方法,等等。如果您没有时间或愿意覆盖所有三个,请选择您喜欢的并用于示例。如果我在一天左右的时间内没有得到很好的回复,我会点击文档并将其拼凑在一起,提前谢谢!

我稍微修改了一下。文档不太具有启发性。我发现在分配了弹性IP的EC2实例上,我必须使用我应用于RDS MySQL数据库的安全组中允许的私有IP。分配的弹性IP或未分配的弹性IP不影响连接。在没有分配弹性IP的EC2实例上,我必须使用安全组中允许的公共IP。私人知识产权并不重要。这对我来说有点奇怪。

1 个答案:

答案 0 :(得分:3)

Amazon Relational Database Service(RDS)实例通常应保密,以防止从Internet访问。只有在极少数情况下才能在Internet上访问RDS实例。

可以通过多种方式保护RDS实例:

<强> 1。在私有子网中启动它 可以使用公共和私有子网配置虚拟私有云(VPC)。在私有子网中启动RDS实例将阻止从Internet访问。如果仍需要通过Internet访问(例如,访问公司网络),请在VPC和公司网络之间创建安全的VPN连接。

<强> 2。使用安全组 安全组像每个EC2实例周围的防火墙一样运行。它们定义允许入站和出站访问的端口和IP地址范围。默认情况下,允许出站访问,但不允许入站访问。

第3。没有公共IP地址 如果RDS实例没有公共IP地址,则无法从Internet直接访问它。

<强> 4。网络访问控制列表 这些类似于安全组,但它们在子网级别运行。适用于控制哪些应用层可以相互通信,但不适合保护特定的EC2或RDS实例。

因此,要使RDS实例可公开访问,它必须具备以下所有内容:

  • 公共IP地址
  • 允许入站访问的安全组
  • 位于公有子网
  • 打开网络ACL规则

根据您的情况,我建议:

  • 修改RDS实例并将PubliclyAccessible设置为False。这将删除公共IP地址。
  • 创建一个新的安全组(我将其称为&#34; SG1和#34;)并将其分配给您希望允许与RDS实例通信的单个EC2实例
  • 修改与RDS实例关联的安全组,并允许来自SG1的入站通信(允许来自EC2实例的通信)。请注意,这是指SG1安全组本身,而不是指任何特定的IP地址。