通过接口 VPC 终端节点连接至亚马逊 SageMaker Studio 和 Studio Classic - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

通过接口 VPC 终端节点连接至亚马逊 SageMaker Studio 和 Studio Classic

您可以通过 VPC 中的接口终端节点从您的亚马逊 SageMaker 虚拟私有云(亚马逊 VPC)连接到您的亚马逊 SageMaker Studio 和 Amazon Studio Classic,而不必通过互联网进行连接。当您使用接口 VPC 终端节点(接口终端节点)时,您的 VPC 与 Studio 或 Studio Classic 之间的通信将在 Amazon 网络内完全安全地进行。

Studio 和 Studio Classic 支持由提供支持的接口端点Amazon PrivateLink。每个接口端点都由您的 VPC 子网中一个或多个使用私有 IP 地址的弹性网络接口代表。

Studio 和 Studio Classic 支持同时提供亚马逊 SageMaker和亚马逊 VPC 的所有 Amazon 区域的接口终端节点。

创建 VPC 终端节点

您可以创建接口终端节点,使用 Amazon 控制台或 Amazon Command Line Interface (Amazon CLI) 连接到 Studio 或 Studio Classic。有关说明,请参阅创建接口端点。请务必为您的 VPC 中要连接到 Studio 和 Studio Classic 的所有子网创建接口终端节点。

创建接口终端节点时,请确保终端节点上的安全组允许来自与 Studio 和 Studio Classic 关联的安全组的 HTTPS 流量进行入站访问。有关更多信息,请参阅使用 VPC 端点控制对服务的访问

注意

除了创建连接到 Studio 和 Studio Classic 的接口终端节点外,还要创建用于连接亚马逊 SageMaker API 的接口终端节点。当用户调用CreatePresignedDomainUrl获取连接 Studio 和 Studio Classic 的网址时,该调用将通过用于连接到 SageMaker API 的接口端点。

创建接口终端节点时,请指定aws.sagemaker.Region.studio为 Studio 或 Studio Classic 的服务名称。创建接口端点后,请为端点启用私有 DNS。当您使用 SageMaker API、或控制台从 VPC 内连接到 Studio 或 Studio Classic 时,您将通过接口终端节点而不是公共互联网进行连接。 Amazon CLI您还需要为亚马逊 VPC 终端节点设置带有私有托管区域的自定义 DNS,这样 Studio 或 Studio Classic 就可以使用api.sagemaker.$region.amazonaws.com终端节点而不是使用 VPC 终端节点 URL 来访问 SageMaker API。有关设置私有托管区的说明,请参阅使用私有托管区

您可以将 Amazon VPC 终端节点策略附加到用于连接 Studio 或 Studio Classic 的接口 VPC 终端节点。端点策略控制对 Studio 或 Studio 经典版的访问权限。您可以指定:

  • 可执行操作的主体。

  • 可执行的操作。

  • 可对其执行操作的资源。

要将 VPC 终端节点与 Studio 或 Studio Classic 配合使用,您的终端节点策略必须允许对 KernelGateway 应用程序类型进行CreateApp操作。这样,通过 VPC 端点路由的流量就可以调用 CreateApp API。以下 VPC 端点策略示例演示了如何允许 CreateApp 操作。

{ "Statement": [ { "Action": "sagemaker:CreateApp", "Effect": "Allow", "Resource": "arn:aws:sagemaker:us-west-2:acct-id:app/domain-id/*", "Principal": "*" } ] }

有关更多信息,请参阅使用 VPC 端点控制对服务的访问

以下 VPC 终端节点策略示例规定,所有有权访问该终端节点的用户都可以使用指定的域 ID 访问 SageMaker 域中的用户个人资料。对其他域的访问将被拒绝。

{ "Statement": [ { "Action": "sagemaker:CreatePresignedDomainUrl", "Effect": "Allow", "Resource": "arn:aws:sagemaker:us-west-2:acct-id:user-profile/domain-id/*", "Principal": "*" } ] }

即使您在 VPC 中设置了接口终端节点,VPC 之外的用户也可以通过互联网连接到 Studio 或 Studio Classic。

要仅允许访问从您的 VPC 内部建立的连接,请为此创建一个 Amazon Identity and Access Management (IAM) 策略。将该策略添加到用于访问 Studio 或 Studio Classic 的每个用户、群组或角色。只有在使用 IAM 模式进行身份验证时才支持此功能,在 IAM 身份中心模式下不支持此功能。以下示例演示了如何创建此类策略。

重要

如果您应用类似于以下示例之一的 IAM 策略,则用户无法通过 SageMaker控制台访问 Studio 或 Studio Classic 或指定 SageMaker 的 API。要访问 Studio 或 Studio Classic,用户必须使用预签名 URL 或直接调用 SageMaker API。

示例 1:只允许接口端点子网内的连接

以下策略只允许连接到创建接口端点的子网中的调用方。

{ "Id": "sagemaker-studio-example-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable SageMaker Studio Access", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-111bbaaa" } } } ] }

示例 2:只允许通过使用 aws:sourceVpce 的接口端点进行连接

以下策略只允许通过 aws:sourceVpce 条件键指定的接口端点进行连接。例如,第一个接口端点可能允许通过 SageMaker 控制台进行访问。第二个接口端点可能允许通过 SageMaker API 进行访问。

{ "Id": "sagemaker-studio-example-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable SageMaker Studio Access", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:sourceVpce": [ "vpce-111bbccc", "vpce-111bbddd" ] } } } ] }

此策略包括 DescribeUserProfile 操作。通常,在尝试连接到域之前,您会调用 DescribeUserProfile 以确保用户配置文件的状态为 InService。例如:

aws sagemaker describe-user-profile \ --domain-id domain-id \ --user-profile-name profile-name

响应:

{ "DomainId": "domain-id", "UserProfileArn": "arn:aws:sagemaker:us-west-2:acct-id:user-profile/domain-id/profile-name", "UserProfileName": "profile-name", "HomeEfsFileSystemUid": "200001", "Status": "InService", "LastModifiedTime": 1605418785.555, "CreationTime": 1605418477.297 }
aws sagemaker create-presigned-domain-url --domain-id domain-id \ --user-profile-name profile-name

响应:

{ "AuthorizedUrl": "https://domain-id.studio.us-west-2.sagemaker.aws/auth?token=AuthToken" }

对于这两个调用,如果您使用的是在 2018 年 8 月 13 日之前发布的 Amazon SDK 版本,则必须在调用中指定终端节点 URL。例如,以下示例显示了对 create-presigned-domain-url 的调用:

aws sagemaker create-presigned-domain-url --domain-id domain-id \ --user-profile-name profile-name \ --endpoint-url vpc-endpoint-id.api.sagemaker.Region.vpce.amazonaws.com

示例 3:允许使用 aws:SourceIp 从 IP 地址进行连接

以下策略只允许使用 aws:SourceIp 条件键从指定范围的 IP 地址进行连接。

{ "Id": "sagemaker-studio-example-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable SageMaker Studio Access", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

示例 4:允许使用 aws:VpcSourceIp 通过接口端点从 IP 地址进行连接

如果您通过接口终端节点访问 Studio 或 Studio Classic,则可以使用aws:VpcSourceIp条件键仅允许来自创建接口终端节点的子网中指定 IP 地址范围的连接,如以下策略所示:

{ "Id": "sagemaker-studio-example-4", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable SageMaker Studio Access", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "IpAddress": { "aws:VpcSourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] }, "StringEquals": { "aws:SourceVpc": "vpc-111bbaaa" } } } ] }