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

r0t*_*ech 2 mysql amazon-ec2 rds amazon-web-services

我最近继承了一个AWS账户的维护,并注意到数据库访问对任何地方的任何网络都是开放的!因此,我认为必须像使用自己的VM一样简单。除Amazon AWS EC2实例外,其他实例具有内部IP和公共IP,有时还具有弹性IP。因此,我认为好了,我将搜索google并找到一个简单的快速文章,但似乎没有。因此,有人可以在此处提供有关如何执行此操作的简单文章。我了解RDS安全性有3种方法,依此类推。如果您没有时间或不希望涵盖所有这三个方面,请选择您喜欢的一个示例。如果我在一天之内没有收到很好的答复,那么我将自己整理文档并整理在一起,在此先感谢您!

好吧,我有点修补了。该文档不是太暗示。我在分配了弹性IP的EC2实例上发现,我必须使用应用于RDS MySQL数据库的安全组中允许的私有IP。分配或分配的弹性IP不会影响连接。在没有分配弹性IP的EC2实例上,我必须使用安全组中允许的公共IP。私有IP没关系。这对我来说有点奇怪。

Joh*_*ein 5

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地址。
  • 创建一个新的安全组(我将其称为“ SG1”)并将其分配给您希望允许与RDS实例通信的单个EC2实例
  • 修改与RDS实例关联的安全组,并允许来自SG1的入站通信(这允许来自EC2实例的通信)。请注意,这是指SG1安全组本身,而不是指任何特定的IP地址。