使用安全组控制访问权限 - Amazon Relational Database Service

使用安全组控制访问权限

VPC 安全组控制着流量在数据库实例内外拥有的访问权限。原定设置情况下,将为您的数据库实例关闭网络访问。您可以在安全组中指定规则,允许从 IP 地址范围、端口或安全组进行访问。配置传入规则后,会向与该安全组关联的所有数据库实例应用相同的规则。您最多可以在一个安全组中指定 20 个规则。

VPC 安全组概述

每个 VPC 安全组规则都使特定的源可能能够访问 VPC 中与该 VPC 安全组关联的数据库实例。源可以是一个地址范围 (例如,203.0.113.0/24) 或另一个 VPC 安全组。指定作为源的 VPC 安全组后,就可以允许从使用此源 VPC 安全组的所有实例 (通常为应用程序服务器) 中传入流量。VPC 安全组可能具有管理入站和出站流量的规则。但是,出站流量规则通常不适用于数据库实例。仅在数据库实例充当客户端时,出站流量规则才适用。例如,出站流量规则适用于具有出站数据库链接的 Oracle 数据库实例。您必须使用 VPC 控制台中的 Amazon EC2 API安全组选项创建 VPC 安全组。

当您为 VPC 安全组创建允许访问 VPC 中的实例的规则时,必须为规则允许访问的每个地址范围指定一个端口。例如,如果您要对 VPC 中的实例开启 Secure Shell(SSH)访问,则为指定的地址范围创建一条允许访问 TCP 端口 22 的规则。

您可以为 VPC 中不同的实例配置允许访问不同端口的多个 VPC 安全组。例如,您可以创建一个允许访问您的 VPC 中的 Web 服务器的 TCP 端口 80 的 VPC 安全组。之后,您可以创建另一个允许访问您的 VPC 中的 RDS for MySQL 数据库实例的 TCP 端口 3306 的 VPC 安全组。

有关 VPC 安全组的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南 中的安全组

注意

如果您的数据库实例位于 VPC 中但不可公开访问,则您还可以使用AWS Site-to-Site VPN 连接或 AWS Direct Connect 连接从专用网络访问该实例。有关更多信息,请参阅互联网络流量隐私

安全组情况

VPC 中的数据库实例通常用于与相同 VPC 中运行于 Amazon EC2 实例中的应用程序服务器共享数据,这些数据可通过 VPC 外的客户端应用程序进行访问。对于此情况,使用 AWS Management Console上的 RDS 和 VPC 页面或 RDS 和 EC2 API 操作来创建必要的实例和安全组:

  1. 创建一个 VPC 安全组 (例如,sg-0123ec2example),然后定义使用客户端应用程序 IP 地址作为源的入站规则。通过此安全组,客户端应用程序可连接到使用此安全组的 VPC 中的 EC2 实例。

  2. 创建一个适用于该应用程序的 EC2 实例,然后将该 EC2 实例添加到上一步中创建的 VPC 安全组 (sg-0123ec2example)。

  3. 创建第二个 VPC 安全组 (例如,sg-6789rdsexample),然后通过将步骤 1 中创建的 VPC 安全组(sg-0123ec2example) 指定为源来创建一个新规则。

  4. 创建一个新的数据库实例,然后将该数据库实例添加到在上一步骤中创建的 VPC 安全组(sg-6789rdsexample)。在创建数据库实例时,使用的端口号应与为您在步骤 3 中创建的 VPC 安全组(sg-6789rdsexample)规则指定的端口号相同。

下图说明了此情形。


                    VPC 中的数据库实例和 EC2 实例

有关针对此场景配置 VPC 的详细说明,请参阅教程:创建 VPC 以用于数据库实例(仅限 IPv4)。有关使用 VPC 的更多信息,请参阅 Amazon VPC 和 Amazon RDS

创建 VPC 安全组

您可以使用 VPC 控制台为数据库实例创建 VPC 安全组。有关创建安全组的信息,请参阅 Amazon Virtual Private Cloud 用户指南 中的通过创建安全组提供对 VPC 中的数据库实例的访问安全组

将安全组与数据库实例关联

您可以使用 RDS 控制台的 Modify (修改) 选项、ModifyDBInstance Amazon RDS API 或 modify-db-instance AWS CLI 命令将安全组与数据库实例关联。

有关修改数据库实例的信息,请参阅修改 Amazon RDS 数据库实例。有关从数据库快照还原数据库实例时的安全组注意事项,请参阅安全组注意事项