

# 使用安全组控制访问权限
<a name="Overview.RDSSecurityGroups"></a>

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

## VPC 安全组概述
<a name="Overview.RDSSecurityGroups.VPCSec"></a>

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

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

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

**注意**  
在 Aurora 数据库集群中，与数据库集群关联的 VPC 安全组也会与数据库集群中的所有数据库实例关联。如果您更改数据库集群或数据库实例的 VPC 安全组，更改将自动应用于数据库集群中的所有数据库实例。

有关 VPC 安全组的更多信息，请参阅 *Amazon Virtual Private Cloud 用户指南* 中的[安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

**注意**  
如果您的数据库集群位于 VPC 中但不可公开访问，则您还可以使用 AWS Site-to-Site VPN 连接或 Direct Connect 连接从专用网络访问它。有关更多信息，请参阅 [互联网络流量隐私](inter-network-traffic-privacy.md)。

## 安全组情况
<a name="Overview.RDSSecurityGroups.Scenarios"></a>

VPC 中的数据库集群的一种常见用法是，与运行在相同 VPC 中 Amazon EC2 实例上的应用程序服务器分享数据，这些数据可通过 VPC 外的客户端应用程序进行访问。对于此情况，使用 AWS 管理控制台上的 RDS 和 VPC 页面或 RDS 和 EC2 API 操作来创建必要的实例和安全组：

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

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

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

1. 创建一个新的数据库集群，然后将该数据库集群添加到在上一步骤中创建的 VPC 安全组（`sg-6789rdsexample`）。在创建数据库集群时，使用的端口号应与为您在步骤 3 中创建的 VPC 安全组（`sg-6789rdsexample`）规则指定的端口号相同。

下图说明了此情形。

![\[VPC 中的数据库集群和 EC2 实例\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/con-VPC-sec-grp-aurora.png)


有关针对此场景配置 VPC 的详细说明，请参阅[教程：创建 VPC 以用于数据库集群（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md)。有关使用 VPC 的更多信息，请参阅 [Amazon VPC 和 Amazon Aurora](USER_VPC.md)。

## 创建 VPC 安全组
<a name="Overview.RDSSecurityGroups.Create"></a>

您可以使用 VPC 控制台为数据库实例创建 VPC 安全组。有关创建安全组的信息，请参阅 *Amazon Virtual Private Cloud 用户指南* 中的[通过创建安全组提供对 VPC 中数据库集群的访问](CHAP_SettingUp_Aurora.md#CHAP_SettingUp_Aurora.SecurityGroup)和[安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

## 将安全组与数据库集群关联
<a name="Overview.RDSSecurityGroups.AssociateWithCluster"></a>

您可以使用 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 数据库集群](Aurora.Modifying.md)。