使用 Amazon 虚拟私有云保护工作 - Amazon Comprehend

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

使用 Amazon 虚拟私有云保护工作

Amazon Comprehend 使用多种安全措施来确保您的数据在 Amazon Comprehend 使用期间存储在我们的作业容器中的安全。但是,作业容器会通过互联网访问 AWS 资源,例如用于存储数据和模型构件的 Amazon S3 存储桶。

要控制对您的模型容器和数据的访问,我们建议您创建一个虚拟私有云 VPC,并配置该 VPC 以便无法通过互联网进行访问。有关创建和配置 VPC 的信息,请参阅《Amazon VPC 用户指南》中的 Amazon VPC 入门。使用 VPC 有助于保护您的数据,因为您可以配置 VPC 以使其不连接到互联网。使用 VPC,您还可以通过 VPC 流日志来监控进出作业容器的所有网络流量。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 流日志

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

注意

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

为 Amazon VPC 访问配置作业

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

以下 API 包含 VpcConfig 请求参数:

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

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

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


    创建分析作业中的可选 VPC 部分

为 Amazon Comprehend 作业配置您的 VPC

为 Amazon Comprehend 作业配置 VPC 时,请使用以下指南。有关设置 VPC 的信息,请参阅《Amazon VPC 用户指南》中的使用 VPC 和子网

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

对于作业中的每个实例,您的 VPC 子网应至少具有两个私有 IP 地址。有关更多信息,请参阅《Amazon VPC 用户指南》中的针对 IPv4 的 VPC 和子网大小调整

创建 Amazon S3 VPC 终端节点

如果您将 VPC 配置为使作业容器不具有互联网访问权限,则这些容器无法连接到包含数据的 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 用户指南》中的网关终端节点路由

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

{ "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 用户指南》中的安全组规则

连接到 VPC 之外的资源

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

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

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