使用安全组控制访问权限 - Amazon Aurora

使用安全组控制访问权限

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

VPC 安全组概述

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

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

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

注意

在 Aurora 数据库集群中,与数据库集群关联的 VPC 安全组也会与数据库集群中的所有数据库实例关联。如果您更改数据库集群或数据库实例的 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 Aurora

创建 VPC 安全组

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

将安全组与数据库集群关联

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

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

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

有关修改数据库集群的信息,请参阅修改 Amazon Aurora 数据库集群