使用安全组控制访问权限 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用安全组控制访问权限

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

VPC 安全组概述

每个 VPC 安全组规则都使特定的源可能能够访问 VPC 中与该 VPC 安全组关联的数据库实例。源可以是一个地址范围 (例如,203.0.113.0/24) 或另一个 VPC 安全组。指定作为源的 VPC 安全组后,就可以允许从使用此源 VPC 安全组的所有实例 (通常为应用程序服务器) 中传入流量。VPC 安全组可能具有管理入站和出站流量的规则。但是,出站流量规则通常不适用于数据库实例。仅在数据库实例充当客户端时,出站流量规则才适用。例如,出站流量规则适用于具有出站数据库链接的 Oracle 数据库实例。您必须使用 Amazon EC2 API 或 VPC 控制台中的 Security Group(安全组)选项创建 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 中但不可公开访问,则您还可以使用Amazon Site-to-Site VPN 连接或 Amazon Direct Connect 连接从专用网络访问该实例。有关更多信息,请参阅 互联网络流量隐私保护

安全组情况

VPC 中的数据库实例通常用于与相同 VPC 中运行于 Amazon EC2 实例中的应用程序服务器共享数据,这些数据可通过 VPC 外的客户端应用程序进行访问。对于此情况,使用 Amazon Web Services 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 Amazon CLI 命令将安全组与数据库实例关联。

以下 CLI 示例关联特定 VPC 安全组并从数据库实例中移除数据库安全组

aws rds modify-db-instance --db-instance-identifier dbName --vpc-security-group-ids sg-ID

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

注意

如果将端口值配置为非原定设置值,RDS 控制台会显示数据库的不同安全组规则名称。

对于 RDS for Oracle 数据库实例,可以通过填充 Oracle Enterprise Manager Database Express(OEM)、适用于 Enterprise Manager Cloud Control 的 Oracle Management Agent(OEM 代理)和 Oracle 安全套接字层选项的安全组选项设置来关联其它安全组。在这种情况下,与数据库实例关联的安全组和选项设置都适用于该数据库实例。有关这些选项组的更多信息,请参阅 Oracle Enterprise Manager适用于 Enterprise Manager Cloud Control 的 Oracle Management AgentOracle 安全套接字层