

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

# 通过接口 VPC 终端节点连接至亚马逊 SageMaker Studio 和 Studio Classic
<a name="studio-interface-endpoint"></a>

您可以通过 VPC 中的[接口终端节点](https://docs.amazonaws.cn/vpc/latest/userguide/vpce-interface.html)从您的亚马逊 SageMaker [虚拟私有云（亚马逊](https://docs.amazonaws.cn/vpc/latest/userguide/what-is-amazon-vpc.html) VPC）连接到您的亚马逊 SageMaker Studio 和 Amazon Studio Classic，而不必通过互联网进行连接。当您使用接口 VPC 终端节点（接口终端节点）时，您的 VPC 与 Studio 或 Studio Classic 之间的通信将在 Amazon 网络内完全安全地进行。

Studio 和 Studio Classic 支持由 [Amazon PrivateLink](https://docs.amazonaws.cn/vpc/latest/userguide/endpoint-services-overview.html) 支持的接口端点。每个接口端点都由您的 VPC 子网中一个或多个使用私有 IP 地址的[弹性网络接口](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-eni.html)代表。

Studio 和 Studio Classic 支持同时提供 [Amazon A SageMaker I 和 Amazon](https://www.amazonaws.cn/sagemaker/pricing/) [VPC](https://www.amazonaws.cn/vpc/pricing/) 的所有 Amazon 区域的接口终端节点。

**Topics**
+ [创建 VPC 终端节点](#studio-interface-endpoint-create)
+ [为 Studio 或 Studio Classic 创建 VPC 端点策略](#studio-private-link-policy)
+ [仅允许从您的 VPC 内部进行访问](#studio-private-link-restrict)

## 创建 VPC 终端节点
<a name="studio-interface-endpoint-create"></a>

您可以创建接口终端节点，使用 Amazon 控制台或 Amazon Command Line Interface (Amazon CLI) 连接到 Studio 或 Studio Classic。有关说明，请参阅[创建接口端点](https://docs.amazonaws.cn/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)。确保为 VPC 中要连接到 Studio 和 Studio Classic 的所有子网创建接口端点。

创建接口端点时，确保端点上的安全组允许从与 Studio 和 Studio Classic 相关联的安全组对 HTTPS 流量进行入站访问。有关更多信息，请参阅[使用 VPC 端点控制对服务的访问](https://docs.amazonaws.cn/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoints-security-groups)。

**注意**  
除了创建连接到 Studio 和 Studio Classic 的接口终端节点外，还要创建用于连接亚马逊 SageMaker API 的接口终端节点。当用户调用[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreatePresignedDomainUrl.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreatePresignedDomainUrl.html)获取连接 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。有关设置私有托管区的说明，请参阅[使用私有托管区](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/hosted-zones-private.html)。

## 为 Studio 或 Studio Classic 创建 VPC 端点策略
<a name="studio-private-link-policy"></a>

您可以将 Amazon VPC 端点策略附加到用于连接 Studio 或 Studio Classic 的接口 VPC 端点。端点策略控制对 Studio 或 Studio Classic 的访问。您可以指定以下内容：
+ 可执行操作的主体。
+ 可执行的操作。
+ 可对其执行操作的资源。

要将 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 端点控制对服务的访问](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-endpoints-access.html)。

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

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

## 仅允许从您的 VPC 内部进行访问
<a name="studio-private-link-restrict"></a>

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

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

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

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

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

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

****  

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

------

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

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

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

****  

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

------

此策略包括 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_DescribeUserProfile.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_DescribeUserProfile.html) 操作。通常，在尝试连接到域之前，您会调用 `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 地址进行连接。

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

****  

```
{
    "Id": "sagemaker-studio-example-3",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableSageMakerStudioAccess",
            "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 地址范围的连接，如下策略所示：

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

****  

```
{
    "Id": "sagemaker-studio-example-4",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableSageMakerStudioAccess",
            "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"
                }
            }
        }
    ]
}
```

------