

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用安全组控制 VPC Lattice 中的流量
<a name="security-groups"></a>

AWS 安全组充当虚拟防火墙，控制与其关联的实体的进出网络流量。借助 VPC Lattice，您可以创建安全组并将其分配给将 VPC 连接到服务网络的 VPC 关联，从而为您的服务网络实施额外的网络级安全保护。如果您使用 VPC 终端节点将 VPC 连接到服务网络，则也可以为 VPC 终端节点分配安全组。同样，您可以将安全组分配给您创建的资源网关，以允许访问您的 VPC 中的资源。

**Topics**
+ [托管前缀列表](#managed-prefix-list)
+ [安全组规则](#security-groups-rules)
+ [管理 VPC 关联的安全组](#service-network-security-group)

## 托管前缀列表
<a name="managed-prefix-list"></a>

VPC Lattice 提供托管前缀列表，其中包括当您使用服务网络关联通过 VPC 关联将您的 VPC 连接到服务网络时，用于通过 VPC 莱迪思网络路由流量的 IP 地址。它们要么 IPs 是本地私有链路，要么是不可路由的 IPs 公共链路。 IPs

 您可以在安全组规则中引用 VPC Lattice 托管前缀列表。此操作允许流量从客户端流出，经过 VPC Lattice 服务网络，流向 VPC Lattice 服务目标。

例如，假设您有一个 EC2 实例注册为美国西部（俄勒冈州）区域（`us-west-2`）中的目标。您可以向实例安全组添加一条规则，允许来自 VPC Lattice 托管前缀列表的入站 HTTPS 访问，以便该区域中的 VPC Lattice 流量可以到达该实例。如果您从安全组中删除所有其他入站规则，则可以阻止 VPC Lattice 流量以外的任何流量到达实例。

VPC Lattice 的托管前缀列表名称如下：
+ com.amazonaws。 *region*.vpc-lattice
+ com.amazonaws。 *region*.ipv6.vpc-lattice

有关更多信息，请参阅《*Amazon VPC 用户指南*》中的 [AWS托管的前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#available-aws-managed-prefix-lists)。

**Windows 和 macOS 客户端**  
VPC Lattice 前缀列表中的地址是链路本地地址和不可路由的公有地址。如果您从这些客户端连接到 VPC Lattice，则必须更新其配置，以便将托管前缀列表中的 IP 地址转发到客户端的主要 IP 地址。以下是更新 Windows 客户端配置的命令示例，其中169.254.171.0是托管前缀列表中的地址之一。

```
C:\> route add 169.254.171.0 mask 255.255.255.0 primary-ip-address
```

以下是更新 macOS 客户端配置的命令示例，其中 macOS 客户端169.254.171.0是托管前缀列表中的地址之一。

```
sudo route -n add -net 169.254.171.0 primary-ip-address 255.255.255.0
```

为避免创建静态路由，我们建议您使用 VPC 中的服务网络终端节点来建立连接。有关更多信息，请参阅 [管理服务网络 VPC 终端节点关联](service-network-associations.md#service-network-vpc-endpoint-associations)。

## 安全组规则
<a name="security-groups-rules"></a>

无论有没有安全组，使用 VPC Lattice 都不会影响现有的 VPC 安全组配置。但您可以随时添加自己的安全组。

**重要注意事项**
+ 客户端的安全组规则控制VPC Lattice的出站流量。
+ 目标的安全组规则控制从 VPC Lattice 到目标的入站流量，包括运行状况检查流量。
+ 服务网络和 VPC 之间关联的安全组规则，控制哪些客户端可以访问 VPC Lattice 服务网络。
+ 资源网关的安全组规则控制从资源网关到资源的出站流量。

**从资源网关流向数据库资源的流量推荐的出站规则**  
要使流量从资源网关流向资源，必须为开放端口创建出站规则，为资源创建接受的侦听器协议。


| 目标位置 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
| CIDR range for resource | TCP | 3306 | 允许从资源网关到数据库的流量 | 

**针对服务网络和 VPC 关联的推荐入站规则**  
要使流量从客户端流 VPCs 向与服务网络关联的服务，必须为侦听器端口创建入站规则，为服务创建侦听器协议。


| 来源 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
| VPC CIDR | listener | listener | 允许来自客户端的流量到莱迪思VPC | 

**推荐出站规则，针对从客户端实例流向 VPC Lattice 的流量**  
默认情况下，安全组允许所有出站流量。但是，如果您有自定义出站规则，则必须允许出站流量到VPC Lattice前缀作为监听器端口和协议，以便客户端实例可以连接到与VPC Lattice服务网络关联的所有服务。您可以通过引用 VPC Lattice 的前缀列表的 ID 来允许此流量。


| 目标位置 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
| ID of the VPC Lattice prefix list | listener | listener | 允许来自客户端的流量到莱迪思VPC | 

**推荐入站规则，针对从 VPC Lattice 流向目标实例的流量**  
由于流量来自 VPC Lattice，因此您不能将客户端安全组用作目标安全组的源。您可以引用 VPC 莱迪思的前缀列表的 ID。


| 来源 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
| ID of the VPC Lattice prefix list | target | target | 允许从 VPC 莱迪思到目标的流量 | 
| ID of the VPC Lattice prefix list | health check | health check | 允许从 VPC 莱迪思到目标的运行状况检查流量 | 

## 管理 VPC 关联的安全组
<a name="service-network-security-group"></a>

您可以使用查看、添加或更新 VPC 上的安全组与服务网络关联。 AWS CLI 使用时 AWS CLI，请记住您的命令在 AWS 区域 配置文件中运行。如果您想要在不同的区域中运行命令，可以为配置文件更改默认区域，或者与命令一起使用 `--region` 参数。

开始之前，确认您已在与要添加到服务网络的 VPC 相同的 VPC 中创建安全组。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[使用安全组控制资源流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)

**要使用控制台在创建 VPC 关联时添加安全组**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务网络**。

1. 选择服务网络名称以打开其详细信息页面。

1. 在 **VPC 关联**选项卡上，选择**创建 VPC 关联**，然后选择**添加 VPC 关联**。

1. 选择一个 VPC 和最多 5 个安全组。

1. 选择**保存更改**。

**要使用控制台为现有 VPC 关联添加或更新安全组**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务网络**。

1. 选择服务网络名称以打开其详细信息页面。

1. 在 **VPC 关联**选项卡上，选中关联的复选框，然后依次选择**操作**和**编辑安全组**。

1. 根据需要添加和删除安全组。

1. 选择**保存更改**。

**在创建 VPC 关联时使用添加安全组 AWS CLI**  
使用 [create-service-network-vpc-assoc](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-service-network-vpc-association.html) iation 命令，指定 VPC 关联的 VPC 的 ID 和要添加的安全组的 ID。

```
aws vpc-lattice create-service-network-vpc-association \
    --service-network-identifier sn-0123456789abcdef0 \
    --vpc-identifier vpc-1a2b3c4d \
    --security-group-ids sg-7c2270198example
```

如果成功，该命令将返回类似于以下内容的输出。

```
{
  "arn": "arn",
  "createdBy": "464296918874",
  "id": "snva-0123456789abcdef0",
  "status": "CREATE_IN_PROGRESS",
  "securityGroupIds": ["sg-7c2270198example"]
}
```

**要为现有 VPC 关联添加或更新安全组，请使用 AWS CLI**  
使用 [update-service-network-vpc-assoc](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/update-service-network-vpc-association.html) iation命令，指定服务网络和安全 IDs 组的 ID。这些安全组会覆盖先前关联的任何安全组。更新列表时，至少定义一个安全组。

```
aws vpc-lattice update-service-network-vpc-association 
    --service-network-vpc-association-identifier sn-903004f88example \
    --security-group-ids sg-7c2270198example sg-903004f88example
```

**警告**  
您无法删除所有安全组。您必须先删除 VPC 关联，然后在没有任何安全组的情况下重新创建 VPC 关联。删除 VPC 关联时要小心。此操作将阻止流量到达该服务网络中的服务。