

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

# 使用 Amazon 虚拟私有云保护工作
<a name="usingVPC"></a>

Amazon Comprehend 使用多种安全措施来确保您的数据在 Amazon Comprehend 使用期间存储在我们的任务容器中的安全。但是，任务容器会通过 Interne AWS t 访问资源，例如用于存储数据和模型工件的 Amazon S3 存储桶。

要控制对您的模型容器和数据的访问，我们建议您创建一个*虚拟私有云* VPC，并配置该 VPC 以便无法通过互联网进行访问。有关创建和配置 VPC 的信息，请参阅《*Amazon VPC 用户指南*》中的 [Amazon VPC 入门](https://docs.aws.amazon.com/vpc/latest/userguide/getting-started-ipv4.html)。使用 VPC 有助于保护您的数据，因为您可以配置 VPC 以使其不连接到互联网。使用 VPC，您还可以通过 VPC 流日志来监控进出任务容器的所有网络流量。有关更多信息，请参阅《*Amazon VPC 用户指南*》中的 [VPC 流日志](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)。

创建任务时，您通过指定子网和安全组来指定 VPC 配置。当您指定子网和安全组时，Amazon *Comprehend 会在其中一个子网中创建与您的安全组关联的弹性*网络ENIs接口 ()。 ENIs 允许我们的任务容器连接到您的 VPC 中的资源。有关信息 ENIs，请参阅 *Amazon VPC 用户指南*中的[弹性网络接口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)。

**注意**  
对于任务，只能使用默认的租赁 VPC 配置子网，其中实例在共享硬件上运行。有关租期属性的更多信息 VPCs，请参阅 *Amazon EC2 用户指南*中的[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)。

## 为 Amazon VPC 访问配置任务
<a name="VPCaccess"></a>

要在 VPC 中指定子网和安全组，请使用适用 API 的 `VpcConfig` 请求参数，或者在 Amazon Comprehend 控制台中创建任务时提供此信息。Amazon Comprehend 使用这些信息来创建它们并将其附加 ENIs 到我们的任务容器中。 ENIs 为我们的任务容器提供您的 VPC 内未连接到互联网的网络连接。

以下内容 APIs 包含`VpcConfig`请求参数：
+ `Create*` APIs: ` [CreateDocumentClassifier](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_CreateDocumentClassifier.html)`, ` [CreateEntityRecognizer](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_CreateEntityRecognizer.html) `
+ `Start*` APIs: ` [StartDocumentClassificationJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartDocumentClassificationJob.html)`, ` [StartDominantLanguageDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartDominantLanguageDetectionJob.html)`, ` [StartEntitiesDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartEntitiesDetectionJob.html)`, ` [StartKeyPhrasesDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartKeyPhrasesDetectionJob.html)`, ` [StartSentimentDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartSentimentDetectionJob.html)`, ` [StartTargetedSentimentDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartTargetedSentimentDetectionJob.html)`, ` [StartTopicsDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartTopicsDetectionJob.html)`

以下是您在 API 调用中包含的 VpcConfig 参数的示例：

```
"VpcConfig": { 
      "SecurityGroupIds": [
          " sg-0123456789abcdef0"
          ],
      "Subnets": [
          "subnet-0123456789abcdef0",
          "subnet-0123456789abcdef1",
          "subnet-0123456789abcdef2"
          ]
      }
```

要从 Amazon Comprehend 控制台配置 VPC，请在创建任务时从可选的 **VPC 设置**部分中选择配置详细信息。

![\[创建分析任务中的可选 VPC 部分\]](http://docs.aws.amazon.com/zh_cn/comprehend/latest/dg/images/vpc-image-10.png)


## 为 Amazon Comprehend 任务配置您的 VPC
<a name="configureVPC"></a>

为 Amazon Comprehend 任务配置 VPC 时，请使用以下指南。有关设置 VPC 的信息，请参阅 *Amazon VPC 用户指南*中的[使用 VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)。

**确保子网拥有足够的 IP 地址**

对于任务中的每个实例，您的 VPC 子网应至少具有两个私有 IP 地址。有关更多信息，请参阅 *Amazon VPC 用户指南 IPv4中的 VPC* [和子网大小](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#vpc-sizing-ipv4)。

**创建 Amazon S3 VPC 终端节点**

如果您将 VPC 配置为使任务容器不具有互联网访问权限，则这些容器无法连接到包含数据的 Amazon S3 存储桶，除非您创建一个允许访问的 VPC 终端节点。通过创建 VPC 终端节点，您可以允许任务容器在训练和分析任务期间访问您的数据。

创建 VPC 终端节点时，请配置以下值：
+ 选择服务类别作为**AWS 服务**
+ 将服务指定为 `com.amazonaws.region.s3`
+ 选择 “**网关**” 作为 VPC 终端节点类型 

如果您使用 CloudFormation 创建 VPC 终端节点，请按照[CloudFormation VPCEndpoint](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html)文档进行操作。以下示例显示了 CloudFormation 模板中的**VPCEndpoint**配置。

```
  VpcEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      PolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
          - Action:
              - s3:GetObject
              - s3:PutObject
              - s3:ListBucket
              - s3:GetBucketLocation
              - s3:DeleteObject
              - s3:ListMultipartUploadParts
              - s3:AbortMultipartUpload
            Effect: Allow
            Resource:
              - "*"
            Principal: "*"
      RouteTableIds:
        - Ref: RouteTable
      ServiceName:
        Fn::Join:
          - ''
          - - com.amazonaws.
            - Ref: AWS::Region
            - ".s3"
      VpcId:
        Ref: VPC
```

我们还建议您创建自定义策略，只允许来自您的 VPC 的请求访问您的 S3 存储桶。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [Amazon S3 终端节点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)。

以下策略允许访问 S3 存储桶。编辑此策略，以便仅允许访问任务所需的资源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "*"
        }
    ]
}
```

------

使用终端节点路由表的默认 DNS 设置，以便标准的 Amazon S3 URLs （例如`http://s3-aws-region.amazonaws.com/amzn-s3-demo-bucket`）可以解析。如果您不使用默认 DNS 设置，请确保通过配置终端节点路由表来解析用于指定任务中数据位置的。 URLs 有关 VPC 终端节点路由表的信息，请参阅《*Amazon VPC 用户指南*》中的[网关终端节点路由](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html#vpc-endpoints-routing)。

默认终端节点策略允许用户在任务容器中安装来自 Amazon Linux 和 Amazon Linux 2 存储库的包。如果您不希望用户安装来自该存储库的包，则创建一个自定义终端节点策略，明确拒绝访问 Amazon Linux 和 Amazon Linux 2 存储库。Comprehend 本身不需要任何此类软件包，因此不会对功能产生任何影响。以下是拒绝访问这些存储库的策略示例：

```
{ 
    "Statement": [ 
      { 
        "Sid": "AmazonLinuxAMIRepositoryAccess",
        "Principal": "*",
        "Action": [ 
            "s3:GetObject" 
        ],
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::packages.*.amazonaws.com/*",
            "arn:aws:s3:::repo.*.amazonaws.com/*"
        ] 
      } 
    ] 
} 

{ 
    "Statement": [ 
        { "Sid": "AmazonLinux2AMIRepositoryAccess",
          "Principal": "*",
          "Action": [ 
              "s3:GetObject" 
              ],
          "Effect": "Deny",
          "Resource": [
              "arn:aws:s3:::amazonlinux.*.amazonaws.com/*" 
              ] 
         } 
    ] 
}
```

**`DataAccessRole` 的权限**

当您在分析任务中使用 VPC 时，`DataAccessRole` 用于 `Create*` 和 `Start*` 操作的用户必须拥有访问输入文档和输出存储桶的 VPC 的权限。

以下策略提供了用于 `Create*` 和 `Start*` 操作的 `DataAccessRole` 所需的访问权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
              "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeVpcs",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**配置 VPC 安全组**

在分布式任务中，您必须允许同一任务中的不同任务容器之间进行通信。为此，请为您的安全组配置规则，以允许同一安全组的成员之间实现入站连接。有关信息，请参阅《*Amazon VPC 用户指南*》中的[安全组规则](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules)。

**连接到 VPC 之外的资源**

如果您将 VPC 配置为不具有互联网访问权限，则使用该 VPC 的任务无权访问 VPC 之外的资源。如果您的任务需要访问您的 VPC 外部的资源，请使用以下选项之一以提供访问权限：
+ 如果您的任务需要访问支持接口 VPC 终端节点的 AWS 服务，请创建一个终端节点来连接到该服务。有关支持接口端点的服务的列表，请参阅《Amazon VPC 用户指南》**中的 [VPC 端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)。有关创建接口 VPC 终端节点的信息，请参阅 *Amazon VPC 用户指南中的接口 VPC* [终端节点 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)。
+ 如果您的任务需要访问不支持接口 VPC 终端节点的 AWS 服务或外部的资源 AWS，请创建 NAT 网关并将您的安全组配置为允许出站连接。有关为 VPC 设置 NAT 网关的信息，请参阅《*Amazon VPC 用户指南*》中的[场景 2：带有公有子网和私有子网 (NAT) 的 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html)。