使用亚马逊Virtual Private Cloud 保护作业 - Amazon Comprehend

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

使用亚马逊Virtual Private Cloud 保护作业

Amazon Comprehend 使用各种安全措施来确保您的数据安全,我们的作业容器存储这些数据,同时被 Amazon Comprehend 使用。但是,任务容器通过互联网访问 AWS 资源,例如存储数据和模型工件的 Amazon S3 存储桶。

要控制对数据的访问,建议您创建Virtual Private Cloud(VPC),并将其配置为不可通过 Internet 访问数据和容器。有关创建和配置 VPC 的信息,请参阅。开始使用 Amazon VPC中的Amazon VPC User Guide. 使用 VPC 有助于保护您的数据,因为您可以对 VPC 进行配置,使其不连接到 Internet。使用 VPC,您还可以通过 VPC 流日志来监控进出作业容器的所有网络流量。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 流日志

创建作业时,您通过指定子网和安全组来指定 VPC 配置。当您指定子网和安全组时,Amazon Comprehend 会创建弹性网络接口(ENI),与其中一个子网中的安全组相关联。ENI 可将我们的作业容器连接到 VPC 中的资源。有关 ENI 的信息,请参阅。弹性网络接口中的Amazon VPC User Guide.

注意

对于作业,只能使用默认的租赁 VPC 配置子网,其中实例在共享硬件上运行。有关 VPC 租赁属性的更多信息,请参阅。专用实例中的适用于 Linux 实例的Amazon EC2 用户指南.

为亚马逊 VPC 访问配置任务

要在您的 VPC 中指定子网和安全组,请使用VpcConfig请求适用 API 的参数,或者当在 Amazon Comprehend 控制台中创建作业时提供此信息。Amazon Comprehend 使用此信息创建 ENI 并将其附加到我们的作业容器。ENI 在未连接到 Internet 的 VPC 中为我们的作业容器提供网络连接。

以下 API 包含VpcConfig请求参数:

以下是的示例 VpcConfig 在 API 调用时将包含的参数:

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

要从 Amazon Comprehend 控制台配置 VPC,请从可选的VPC 设置部分,当创建作业时。


    创建分析Job 中的可选 VPC 部分

为Amazon Comprehend 任务配置您的 VPC

为 Amazon Compriend 作业配置 VPC 时,请使用以下准则。有关设置 VPC 的信息,请参阅。使用 VPC 和子网中的Amazon VPC User Guide.

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

对于作业中的每个实例,您的 VPC 子网应至少拥有两个私有 IP 地址。有关更多信息,请参阅 。针对 IPv4 的 VPC 和子网大小调整中的Amazon VPC User Guide.

创建Amazon S3 VPC 终端节点

如果您将 VPC 配置为使作业容器不具有 Internet 访问权限,则这些容器无法连接到包含数据的 Amazon S3 存储桶,除非您创建一个允许访问的 VPC 终端节点。通过创建 VPC 终端节点,您允许我们的任务容器访问模型构件和数据。我们还建议您创建自定义策略,仅允许来自 VPC 的请求访问您的 S3 存储桶。有关更多信息,请参阅《Amazon VPC 用户指南》中的 Amazon S3 端点

以下策略允许访问 S3 存储桶。编辑此策略,以便仅允许访问作业所需的资源。

{ "Version": "2008-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 URL (例如http://s3-aws-region.amazonaws.com/MyBucket) 解析。如果您不使用默认 DNS 设置,则确保通过配置终端节点路由表来解析用于指定作业中数据位置的 URL。有关 VPC 终端节点路由表的信息,请参阅。网关终端节点路由中的Amazon VPC User Guide.

默认终端节点策略允许用户在作业容器中安装来自 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 的权限。

以下策略提供了对DataAccessRole用于Create*Start*operation.

{ "Version": "2008-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 User Guide.

Connect 到 VPC 外部的资源

如果您将 VPC 配置为不具有 Internet 访问权限,则使用该 VPC 的作业无权访问 VPC 之外的资源。如果您的作业需要访问您的 VPC 之外的资源,请使用以下选项之一提供访问权限:

  • 如果您的作业需要访问支持接口 VPC 终端节点的 AWS 服务,请创建连接到该服务的终端节点。有关支持接口终端节点的服务的列表,请参阅。VPC 终端节点中的Amazon VPC User Guide. 有关创建接口 VPC 终端节点的信息,请参阅。接口 VPC 终端节点 PrivateLink)中的Amazon VPC User Guide.

  • 如果您的作业需要访问不支持接口 VPC 终端节点的 AWS 服务,或需要访问之外的资源,请创建一个 NAT 网关,并将安全组配置为允许出站连接。有关为 VPC 设置 NAT 网关,请参阅。方案 2: 带有公有和私有子网的 VPC (NAT)中的Amazon VPC User Guide.