在无法访问互联网的 VPC 中配置 Amazon SageMaker Canvas - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在无法访问互联网的 VPC 中配置 Amazon SageMaker Canvas

Amazon SageMaker Canvas 应用程序可在 Amazon 托管的 Amazon Virtual Private Cloud (VPC) 的容器中运行。如果您想进一步控制对资源的访问或在没有公共互联网访问的情况下运行 SageMaker Canvas,可以配置 Amazon SageMaker 域和 VPC 设置。在您自己的 VPC 中,您可以配置安全组(控制 Amazon EC2 实例入站和出站流量的虚拟防火墙)和子网(VPC 中的 IP 地址范围)等设置。要了解有关 VPC 的更多信息,请参阅 Amazon VPC 的工作原理

当 SageMaker Canvas 应用程序在 Amazon 托管的 VPC 中运行时,它可以使用互联网连接或通过在客户管理的 VPC 中创建的 VPC 端点(无公共互联网访问)与其他 Amazon 服务交互。SageMaker Canvas 应用程序可以通过 Studio 创建的网络接口访问这些 VPC 端点,该接口提供与客户管理的 VPC 的连接。SageMaker Canvas 应用程序的默认行为是访问互联网。使用互联网连接时,前述作业的容器会通过互联网访问 Amazon 资源,例如存储训练数据和模型构件的 Amazon S3 存储桶。

但是,如果您有控制数据和作业容器访问权限的安全要求,我们建议您配置 SageMaker Canvas 和 VPC,以便无法通过互联网访问您的数据和容器。SageMaker 使用您在为 SageMaker Canvas 设置域时指定的 VPC 配置设置。

如果要在没有互联网访问的情况下配置 SageMaker Canvas 应用程序,必须在加入 Amazon SageMaker 域时配置 VPC 设置、设置 VPC 端点并授予必要的 Amazon Identity and Access Management 权限。有关在 Amazon SageMaker 中配置 VPC 的信息,请参阅 选择 Amazon VPC。以下几节将介绍如何在没有公共互联网访问的 VPC 中运行 SageMaker Canvas。

在无法访问互联网的 VPC 中配置 Amazon SageMaker Canvas

您可以通过自己的 VPC 将流量从 SageMaker Canvas 发送到其他 Amazon 服务。如果您自己的 VPC 没有公共互联网访问权限,并且您已将域设置为仅限 VPC 模式,那么 SageMaker Canvas 也不会有公共互联网访问权限。这包括所有请求,如访问 Amazon S3 中的数据集或标准构建的训练作业,这些请求通过 VPC 中的 VPC 端点而不是公共互联网进行。当您加入域和 选择 Amazon VPC 时,可以指定自己的 VPC 作为域的默认 VPC,并指定所需的安全组和子网设置。然后,SageMaker 会在 VPC 中创建一个网络接口,SageMaker Canvas 会使用该接口访问 VPC 中的 VPC 端点。请注意,安全组和子网设置是在您完成加入域后设置的。

在加入域时,如果您选择仅公共互联网作为网络访问类型,则 VPC 由 SageMaker 管理,并允许访问互联网。

您可以通过选择仅 VPC 来更改此行为,以便 SageMaker 将所有流量发送到 SageMaker 在指定的 VPC 中创建的网络接口。选择此选项时,必须提供与 SageMaker API 和 SageMaker Runtime 以及各种 Amazon 服务(如 SageMaker Canvas 使用的 Amazon S3 和 Amazon CloudWatch)通信所需的子网、安全组和 VPC 端点。请注意,您只能从与 VPC 位于同一区域的 Amazon S3 存储桶导入数据。

以下过程说明如何配置这些设置,以便在没有互联网的情况下使用 SageMaker Canvas。

步骤 1:加入 Amazon SageMaker 域

要将 SageMaker Canvas 流量发送到您自己的 VPC 中的网络接口,而不是通过互联网发送,请在加入 Amazon SageMaker 域时指定要使用的 VPC。您还必须在 VPC 中指定至少两个 SageMaker 可以使用的子网。在为域配置网络和存储部分时,选择标准设置并执行以下步骤。

  1. 选择所需的 VPC

  2. 选择两个或更多子网。如果不指定子网,SageMaker 会使用 VPC 中的所有子网。

  3. 选择一个或多个安全组

  4. 选择仅 VPC 以关闭托管 SageMaker Canvas 的 Amazon 托管 VPC 中的直接互联网访问。

禁用互联网访问后,完成信息载入过程以设置您的域。有关 Amazon SageMaker 域的 VPC 设置的更多信息,请参阅 选择 Amazon VPC

步骤 2:配置 VPC 端点和访问权限

注意

要在您自己的 VPC 中配置 Canvas,必须为 VPC 端点启用私有 DNS 主机名。有关更多信息,请参阅通过 VPC 接口端点连接到 SageMaker

SageMaker Canvas 仅访问其他 Amazon 服务来管理和存储数据,以实现其功能。例如,如果用户访问 Amazon Redshift 数据库,它就会连接到 Amazon Redshift。它可以使用互联网连接或 VPC 端点连接到 Amazon Redshift 等 Amazon 服务。如果要从 VPC 连接到不使用公共互联网的 Amazon 服务,请使用 VPC 端点。

VPC 端点使用与公共互联网隔离的网络路径创建与 Amazon 服务的私有连接。例如,如果您使用自己 VPC 中的 VPC 端点设置了对 Amazon S3 的访问,那么 SageMaker Canvas 应用程序就可以通过 VPC 中的网络接口访问 Amazon S3,然后再通过 VPC 端点连接到 Amazon S3。SageMaker Canvas 和 Amazon S3 之间的通信是私有的。

有关为 VPC 配置 VPC 端点的更多信息,请参阅 Amazon PrivateLink。如果您正在使用带有 VPC 的 Canvas 中的 Amazon Bedrock 模型,则有关控制数据访问权限的更多信息,请参阅《Amazon Bedrock 用户指南》中的使用 VPC 保护作业

以下是您可以在 SageMaker Canvas 中使用的每种服务的 VPC 端点:

服务 端点 端点类型

Amazon Athena

com.amazonaws.Region.athena

接口

Amazon SageMaker

com.amazonaws.Region.sagemaker.api

com.amazonaws.Region.sagemaker.runtime

com.amazonaws.Region.notebook

接口

Amazon Security Token Service

com.amazonaws.Region.sts

接口

Amazon Elastic Container Registry (Amazon ECR)

com.amazonaws.Region.ecr.api

com.amazonaws.Region.ecr.dkr

接口

Amazon Elastic Compute Cloud (Amazon EC2)

com.amazonaws.Region.ec2

接口

Amazon Simple Storage Service (Amazon S3)

com.amazonaws.Region.s3

网关

Amazon Redshift

com.amazonaws.Region.redshift-data

接口

Amazon Secrets Manager

com.amazonaws.Region.secretsmanager

接口

Amazon Systems Manager

com.amazonaws.Region.ssm

接口

Amazon CloudWatch

com.amazonaws.Region.monitoring

接口

Amazon CloudWatch Logs

com.amazonaws.Region.logs

接口

Amazon Forecast

com.amazonaws.Region.forecast

com.amazonaws.Region.forecastquery

接口

Amazon Textract

com.amazonaws.Region.textract

接口

Amazon Comprehend

com.amazonaws.Region.comprehend

接口

Amazon Rekognition

com.amazonaws.Region.rekognition

接口

Amazon Glue

com.amazonaws.Region.glue

接口

Amazon Application Auto Scaling

com.amazonaws.Region.application-autoscaling

接口

Amazon Relational Database Service (Amazon RDS)

com.amazonaws.Region.rds

接口

Amazon Bedrock

com.amazonaws.Region.bedrock-runtime

接口

Amazon Kendra

com.amazonaws.Region.kendra

接口

注意

对于 Amazon Bedrock,接口端点服务名称 com.amazonaws.Region.bedrock 已被弃用。使用上表中列出的服务名称创建新的 VPC 端点。

您还必须为 Amazon S3 添加以下端点策略,以控制 Amazon 主体对 VPC 端点的访问。有关如何更新 VPC 端点策略的信息,请参阅使用端点策略控制对 VPC 端点的访问

{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:CreateBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*SageMaker*", "arn:aws:s3:::*Sagemaker*", "arn:aws:s3:::*sagemaker*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListAllMyBuckets" ], "Resource": "*" }

步骤 3:授予 IAM 权限

SageMaker Canvas 用户必须拥有允许连接到 VPC 端点的必要 Amazon Identity and Access Management 权限。您授予权限的 IAM 角色必须与您加入 Amazon SageMaker 域时使用的角色相同。您可以将 SageMaker 管理的 AmazonSageMakerFullAccess 策略附加到用户的 IAM 角色,以授予用户所需的权限。如果您需要更严格的 IAM 权限并改用自定义策略,请向用户的角色授予 ec2:DescribeVpcEndpointServices 权限。SageMaker Canvas 需要这些权限来验证标准构建作业所需的 VPC 端点是否存在。如果检测到这些 VPC 端点,那么标准构建作业就会默认在 VPC 中运行。否则,这些作业将在默认的 Amazon 托管 VPC 中运行。

有关如何将 AmazonSageMakerFullAccess IAM 策略附加到用户的 IAM 角色的说明,请参阅添加和删除 IAM 身份权限

要向用户的 IAM 角色授予精细的 ec2:DescribeVpcEndpointServices 权限,请按以下步骤操作。

  1. 登录到Amazon Web Services Management Console并打开 IAM 控制台

  2. 在导航窗格中,选择角色

  3. 在列表中,选择要授予其权限的角色的名称。

  4. 选择权限选项卡。

  5. 选择添加权限,然后选择创建内联策略

  6. 选择 JSON 选项卡并输入以下授予 ec2:DescribeVpcEndpointServices 权限的策略:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:DescribeVpcEndpointServices", "Resource": "*" } ] }
  7. 选择查看策略,然后输入策略的名称(例如 VPCEndpointPermissions)。

  8. 选择创建策略

用户的 IAM 角色现在应该有权访问在 VPC 中配置的 VPC 端点。

(可选)步骤 4:覆盖特定用户的安全组设置

如果您是管理员,则可能希望不同的用户拥有不同的 VPC 设置,或特定于用户的 VPC 设置。当您覆盖特定用户的默认 VPC 安全组设置时,这些设置将传递给该用户的 SageMaker Canvas 应用程序。

在 Studio 中设置新用户配置文件时,可以覆盖特定用户在 VPC 中可以访问的安全组。您可以使用 CreateUserProfile SageMaker API 调用(或使用 Amazon CLIcreate_user_profile),然后在 UserSettings 中为用户指定 SecurityGroups