

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

# 如何使用 SageMaker AI 执行角色
<a name="sagemaker-roles"></a>

Amazon SageMaker AI 使用其他 AWS 服务代表您执行操作。您必须授予 SageMaker AI 权限才能使用这些服务及其操作的资源。您可以使用 AWS Identity and Access Management (IAM) 执行角色向 A SageMaker I 授予这些权限。有关 IAM 角色的更多信息，请参阅 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

要创建和使用执行角色，可以使用以下过程。

## 创建执行角色
<a name="sagemaker-roles-create-execution-role"></a>

使用以下过程创建一个执行角色，并附加 IAM 托管策略 `AmazonSageMakerFullAccess`。如果您的使用案例需要更精细的权限，请使用本页上的其他部分来创建满足业务需求的执行角色。您可以使用 SageMaker AI 控制台或创建执行角色 AWS CLI。

**重要**  
以下过程中使用的 IAM 管理策略 `AmazonSageMakerFullAccess` 只授予执行角色对名称中包含 `SageMaker`、`Sagemaker`、`sagemaker` 或 `aws-glue` 的存储桶或对象执行特定 Amazon S3 操作的权限。要了解如何为执行角色添加附加策略，以授予其访问其他 Amazon S3 存储桶和对象的权限，请参阅[向 A SageMaker I 执行角色添加其他 Amazon S3 权限](#sagemaker-roles-get-execution-role-s3)。

**注意**  
创建 A SageMaker I 域或笔记本实例时，您可以直接创建执行角色。  
有关如何创建 A SageMaker I 域的信息，请参阅[Amazon A SageMaker I 入门指南](gs.md)。
有关如何创建笔记本实例的信息，请参阅[为本教程创建 Amazon SageMaker 笔记本实例](gs-setup-working-env.md)。

**从 SageMaker AI 控制台创建新的执行角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 选择 **Role (角色)**，然后选择 **Create role (创建角色)**。

1. 将**AWS 服务**保留为**可信实体类型**，然后使用向下箭头在**其他 AWS 服务的用例**中查找 **SageMaker AI**。

1. 选择 **SageMaker AI-执行**，然后选择**下一步**。

1. IAM 托管策略 `AmazonSageMakerFullAccess` 会自动附加到角色。要查看此策略中包含的权限，请选择策略名称旁边的加号 (**\$1**)。选择**下一步**。

1. 输入**角色名称**和**描述**。

1. （可选）向角色添加其他权限和标签。

1. 选择**创建角色**。

1. 在 IAM 控制台的**角色**部分中，找到刚刚创建的角色。如果需要，请通过文本框使用角色名称搜索角色。

1. 在角色摘要页面上，记下 ARN。

**从 AWS CLI创建新的执行角色**

在使用创建执行角色之前 AWS CLI，请务必按照中的说明对其进行更新和配置[（可选）配置 AWS CLI](gs-set-up.md#gs-cli-prereq)，然后继续按照中的说明进行操作[使用自定义设置 AWS CLI](onboard-custom.md#onboard-custom-instructions-cli)。

创建执行角色后，可以将其与 SageMaker AI 域、用户配置文件或 Jupyter 笔记本实例相关联。
+ 要了解如何将执行角色与现有 SageMaker AI 域相关联，请参阅[编辑域设置](domain-edit.md)。
+ 要了解如何将执行角色与现有用户配置文件进行关联，请参阅[添加用户配置文件](domain-user-profile-add.md)。
+ 要了解如何将执行角色与现有笔记本实例进行关联，请参阅[更新笔记本实例](nbi-update.md)。

您也可以将执行角色的 ARN 传递给 API 调用。例如，使用 [Amaz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)，您可以将执行角色的 ARN 传递给估算器。在下面的代码示例中，我们使用 XGBoost算法容器创建了一个估计器，并将执行角色的 ARN 作为参数传递。有关完整示例 GitHub，请参阅[客户流失预测](https://github.com/aws/amazon-sagemaker-examples/blob/89c54681b7e0f83ce137b34b879388cf5960af93/introduction_to_applying_machine_learning/xgboost_customer_churn/xgboost_customer_churn.ipynb)。 XGBoost

```
import sagemaker, boto3
from sagemaker import image_uris

sess = sagemaker.Session()
region = sess.boto_region_name
bucket = sess.default_bucket()
prefix = "sagemaker/DEMO-xgboost-churn"
container = sagemaker.image_uris.retrieve("xgboost", region, "1.7-1")

xgb = sagemaker.estimator.Estimator(
    container,
    execution-role-ARN,
    instance_count=1,
    instance_type="ml.m4.xlarge",
    output_path="s3://{}/{}/output".format(bucket, prefix),
    sagemaker_session=sess,
)

...
```

### 向 A SageMaker I 执行角色添加其他 Amazon S3 权限
<a name="sagemaker-roles-get-execution-role-s3"></a>

当您对 Amazon S3 中的资源（例如输入数据）使用 A SageMaker I 功能时，将使用您在请求中指定的执行角色（例如`CreateTrainingJob`）来访问这些资源。

如果您将 IAM 托管策略 `AmazonSageMakerFullAccess` 附加到一个执行角色，则该角色有权对名称中包含 `SageMaker`、`Sagemaker`、`sagemaker` 或 `aws-glue` 的存储桶或对象执行某些 Amazon S3 操作。它还有权对任何 Amazon S3 资源执行以下操作：

```
"s3:CreateBucket", 
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListAllMyBuckets",
"s3:GetBucketCors",
"s3:PutBucketCors"
```

要向执行角色授予访问 Amazon S3 中一个或多个特定存储桶的权限，您可以为该角色附加类似于以下内容的策略。此策略授予 IAM 角色执行 `AmazonSageMakerFullAccess` 允许的所有操作的权限，但限制其只能访问 amzn-s3-demo-bucket1 和 amzn-s3-demo-bucket2 这两个存储桶。请参阅您正在使用的特定 SageMaker AI 功能的安全文档，详细了解该功能所需的 Amazon S3 权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2/*"
            ]
        }, 
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListAllMyBuckets",
                "s3:GetBucketCors",
                "s3:PutBucketCors"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

## 获取执行角色
<a name="sagemaker-roles-get-execution-role"></a>

您可以使用 [SageMaker AI 控制台](https://console.aws.amazon.com/sagemaker)、A [maz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)或[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)来检索附加到 SageMaker AI 域、空间或用户资料的执行角色的 ARN 和名称。

**Topics**
+ [获取域执行角色](#sagemaker-roles-get-execution-role-domain)
+ [获取空间执行角色](#sagemaker-roles-get-execution-role-space)
+ [获取用户执行角色](#sagemaker-roles-get-execution-role-user)

### 获取域执行角色
<a name="sagemaker-roles-get-execution-role-domain"></a>

下面提供了查找域执行角色的说明。

#### 获取域执行角色（管理控制台）
<a name="sagemaker-roles-get-execution-role-domain-console"></a>

**查找域中的执行角色**

1. 打开 A SageMaker I 控制台，[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)

1. 在左侧导航窗格中，选择**管理员配置**下的**域**。

1. 选择与您的域相对应的链接。

1. 选择**域设置**选项卡。

1. 在**常规设置**部分，执行角色 ARN 列在**执行角色**下。

   执行角色名称位于执行角色 ARN 中最后一个 `/` 之后。

### 获取空间执行角色
<a name="sagemaker-roles-get-execution-role-space"></a>

下面提供了查找空间执行角色的说明。

#### 获取空间执行角色
<a name="sagemaker-roles-get-execution-role-space-console"></a>

**查找与您的空间相关的执行角色**

1. 打开 A SageMaker I 控制台，[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)

1. 在左侧导航窗格中，选择**管理员配置**下的**域**。

1. 选择与您的域相对应的链接。

1. 选择**空间管理**选项卡。

1. 在**详情**部分，执行角色 ARN 列在**执行角色**下。

   执行角色名称位于执行角色 ARN 中最后一个 `/` 之后。

#### 获取空间执行角色 (Python SDK)
<a name="sagemaker-roles-get-execution-role-space-sdk"></a>

**注意**  
以下代码旨在在 SageMaker AI 环境中运行，就像 Amazon SageMaker Studio IDEs 中的任何代码一样。如果您在 SageMaker AI 环境`get_execution_role`之外运行，则会收到错误消息。

以下 [https://sagemaker.readthedocs.io/en/stable/api/utility/session.html#sagemaker.session.get_execution_role](https://sagemaker.readthedocs.io/en/stable/api/utility/session.html#sagemaker.session.get_execution_role)[Amaz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)命令检索附加到空间的执行角色的 ARN。

```
from sagemaker import get_execution_role
role = get_execution_role()
print(role)
```

执行角色名称位于执行角色 ARN 中最后一个 `/` 之后。

### 获取用户执行角色
<a name="sagemaker-roles-get-execution-role-user"></a>

下面提供了查找用户执行角色的说明。

#### 获取用户执行角色（管理控制台）
<a name="sagemaker-roles-get-execution-role-user-console"></a>

**查找用户的执行角色**

1. 打开 A SageMaker I 控制台，[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)

1. 在左侧导航窗格中，选择**管理员配置**下的**域**。

1. 选择与您的域相对应的链接。

1. 选择**用户配置文件**选项卡。

1. 选择与用户对应的链接。

1. 在**详情**部分，执行角色 ARN 列在**执行角色**下。

   执行角色名称位于执行角色 ARN 中最后一个 `/` 之后。

#### 获取空间执行角色 (AWS CLI)
<a name="sagemaker-roles-get-execution-role-user-cli"></a>

**注意**  
要使用以下示例，必须安装并配置 AWS Command Line Interface (AWS CLI)。有关信息，请参阅*版本 2 AWS Command Line Interface 用户指南*中的[AWS CLI入门](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

以下 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-caller-identity.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-caller-identity.html) AWS CLI 命令将显示有关用于验证请求的 IAM 身份的信息。调用者是 IAM 用户。

```
aws sts get-caller-identity
```

执行角色名称位于执行角色 ARN 中最后一个 `/` 之后。

## 更改您的执行角色
<a name="sagemaker-roles-change-execution-role"></a>

执行角色是 A SageMaker I 身份（例如 A SageMaker I 用户、空间或域）担任的 IAM 角色。更改 IAM 角色会更改承担该角色的所有身份的权限。

更改执行角色后，相应空间的执行角色也会随之更改。变化的影响可能需要一些时间来传播。
+ 更改*用户的执行角色*后，由该用户创建的*专用空间*将承担更改后的执行角色。
+ 更改*空间的默认执行角色*后，域中的*共享空间*将承担更改后的执行角色。

有关执行角色和空间的更多信息，请参阅 [了解域空间权限和执行角色](execution-roles-and-spaces.md)。

您可以使用以下指令之一将身份的执行角色更改为不同的 IAM 角色。

如果您想*修改*某个身份所承担的角色，请参阅 [修改执行角色（管理控制台）的权限](#sagemaker-roles-modify-to-execution-role)。

**Topics**
+ [更改域默认执行角色](#sagemaker-roles-change-execution-role-domain)
+ [更改空间默认执行角色](#sagemaker-roles-change-execution-role-space)
+ [更改用户配置文件执行角色](#sagemaker-roles-change-execution-role-user)

### 更改域默认执行角色
<a name="sagemaker-roles-change-execution-role-domain"></a>

下面提供了更改域默认执行角色的说明。

#### 更改域默认执行角色（管理控制台）
<a name="sagemaker-roles-change-execution-role-domain-console"></a>

**更改域的默认执行角色**

1. 打开 A SageMaker I 控制台，[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)

1. 在左侧导航窗格中，选择**管理员配置**下的**域**。

1. 选择与您的域相对应的链接。

1. 选择**域设置**选项卡。

1. 在**常规设置**部分，选择**编辑**。

1. 在**权限**部分，在**默认执行角色**下展开下拉列表。

1. 在下拉列表中，您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。

   如果要创建新角色，可以选择**创建角色向导**选项。

1. 在以下步骤中选择下一步，并在最后一步选择提交。

### 更改空间默认执行角色
<a name="sagemaker-roles-change-execution-role-space"></a>

下面提供了更改空间默认执行角色的说明。更改此执行角色将改变域中所有共享空间所承担的角色。

#### 更改空间默认执行角色（管理控制台）
<a name="sagemaker-roles-change-execution-role-space-console"></a>

**创建新空间时更改空间默认执行角色**

1. 打开 A SageMaker I 控制台，[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)

1. 在左侧导航窗格中，选择**管理员配置**下的**域**。

1. 选择与您的域相对应的链接。

1. 选择**域设置**选项卡。

1. 在**常规设置**部分，选择**编辑**。

1. 在**权限**部分，在**空间默认执行角色**下展开下拉列表。

1. 在下拉列表中，您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。

   如果要创建新角色，可以选择**创建角色向导**选项。

1. 在以下步骤中选择**下一步**，并在最后一步选择**提交**。

### 更改用户配置文件执行角色
<a name="sagemaker-roles-change-execution-role-user"></a>

下面提供了更改用户执行角色的说明。更改此执行角色将改变该用户创建的所有专用空间所承担的角色。

#### 更改用户配置文件执行角色（管理控制台）
<a name="sagemaker-roles-change-execution-role-user-console"></a>

**更改用户的执行角色**

1. 打开 A SageMaker I 控制台，[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)

1. 在左侧导航窗格中，选择**管理员配置**下的**域**。

1. 选择与您的域相对应的链接。

1. 选择**用户配置文件**选项卡。

1. 选择与用户配置文件名称相对应的链接。

1. 选择**编辑**。

1. 在下拉列表中，您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。

   如果要创建新角色，可以选择**创建角色向导**选项。

1. 在以下步骤中选择**下一步**，并在最后一步选择**提交**。

## 修改执行角色（管理控制台）的权限
<a name="sagemaker-roles-modify-to-execution-role"></a>

您可以修改身份（例如 SageMaker AI 用户、空间或域）执行角色的现有权限。具体做法是找到身份所承担的适当 IAM 角色，然后修改该 IAM 角色。下面将说明如何通过管理控制台实现这一功能。

修改执行角色后，相应空间的执行角色也会随之改变。变化的影响可能不会立竿见影。
+ 修改*用户的执行角色*后，由该用户创建的*专用空间*将承担修改后的执行角色。
+ 修改*空间的默认执行角色*后，域中的*共享空间*将承担修改后的执行角色。

有关执行角色和空间的更多信息，请参阅 [了解域空间权限和执行角色](execution-roles-and-spaces.md)。

如果您想*更改*某个身份所承担的角色，请参阅 [更改您的执行角色](#sagemaker-roles-change-execution-role)。

### 修改执行角色（管理控制台）的权限
<a name="sagemaker-roles-modify-to-execution-role-console"></a>

**修改执行角色的权限**

1. 首先获取要修改的身份名称。
   + [获取域执行角色](#sagemaker-roles-get-execution-role-domain)
   + [获取空间执行角色](#sagemaker-roles-get-execution-role-space)
   + [获取用户执行角色](#sagemaker-roles-get-execution-role-user)

1. 要修改身份所承担的角色，请参阅*《AWS Identity and Access Management 用户指南》*中的 [修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)。

   有关向 IAM 身份添加权限的更多信息和说明，请参阅*《AWS Identity and Access Management 用户指南》*中的[添加或删除身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## 传递角色
<a name="sagemaker-roles-pass-role"></a>

诸如在服务之间传递角色之类的操作是 A SageMaker I 中的常见功能。您可以在《*服务授权参考*》中找到有关 [ SageMaker AI 的操作、资源和条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-actions-as-permissions)的更多详细信息。

在调用这些 API 时，您需要传递角色 (`iam:PassRole`)：[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateDomain.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateDomain.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFeatureGroup.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFeatureGroup.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateImage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateImage.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateNotebookInstance.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateNotebookInstance.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateUserProfile.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateUserProfile.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html)、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateImage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateImage.html) 以及 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateNotebookInstance.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateNotebookInstance.html)。

您将以下信任策略附加到 IAM 角色，该策略授予 A SageMaker I 委托人担任该角色的权限，所有执行角色的信任策略都相同：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

您需要授予该角色的权限有所不同，具体取决于您所调用的 API。以下几节解释了这些权限。

**注意**  
您可以使用 AWS-managed 权限策略，而不是通过制定权限策略来管理`AmazonSageMakerFullAccess`权限。此策略中的权限相当广泛，允许您在 SageMaker AI 中执行任何可能要执行的操作。有关此策略的列表，包括有关添加许多权限的原因的信息，请参阅 [AWS 托管策略： AmazonSageMakerFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess)。如果您更愿意创建自定义策略和管理权限以将权限限定于您需要使用执行角色执行的操作，请参阅以下主题。

**重要**  
如果您遇到问题，请参阅 [对 Amazon SageMaker AI 身份和访问进行故障排除](security_iam_troubleshoot.md)。

有关 IAM 角色的更多信息，请参阅*服务授权参考*中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

**Topics**
+ [创建执行角色](#sagemaker-roles-create-execution-role)
+ [获取执行角色](#sagemaker-roles-get-execution-role)
+ [更改您的执行角色](#sagemaker-roles-change-execution-role)
+ [修改执行角色（管理控制台）的权限](#sagemaker-roles-modify-to-execution-role)
+ [传递角色](#sagemaker-roles-pass-role)
+ [CreateAutoMLJob 和 CreateAuto MLJob V2 API：执行角色权限](#sagemaker-roles-autopilot-perms)
+ [CreateDomain API：执行角色权限](#sagemaker-roles-createdomain-perms)
+ [CreateImage 和 UpdateImage APIs：执行角色权限](#sagemaker-roles-createimage-perms)
+ [CreateNotebookInstance API：执行角色权限](#sagemaker-roles-createnotebookinstance-perms)
+ [CreateHyperParameterTuningJob API：执行角色权限](#sagemaker-roles-createhyperparametertiningjob-perms)
+ [CreateProcessingJob API：执行角色权限](#sagemaker-roles-createprocessingjob-perms)
+ [CreateTrainingJob API：执行角色权限](#sagemaker-roles-createtrainingjob-perms)
+ [CreateModel API：执行角色权限](#sagemaker-roles-createmodel-perms)
+ [SageMaker 地理空间功能角色](sagemaker-geospatial-roles.md)

## CreateAutoMLJob 和 CreateAuto MLJob V2 API：执行角色权限
<a name="sagemaker-roles-autopilot-perms"></a>

对于可以在 `CreateAutoMLJob` 或 `CreateAutoMLJobV2` API 请求中传递的执行角色，可以为该角色附加以下最低权限策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "sagemaker.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:DescribeEndpointConfig",
                "sagemaker:DescribeModel",
                "sagemaker:InvokeEndpoint",
                "sagemaker:ListTags",
                "sagemaker:DescribeEndpoint",
                "sagemaker:CreateModel",
                "sagemaker:CreateEndpointConfig",
                "sagemaker:CreateEndpoint",
                "sagemaker:DeleteModel",
                "sagemaker:DeleteEndpointConfig",
                "sagemaker:DeleteEndpoint",
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如果您为 AutoML 作业指定一个私有 VPC，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
    ]
}
```

如果您的输入使用服务器端加密和 KMS AWS 托管密钥 (SSE-KMS) 进行加密，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt"
    ]
}
```

如果在 AutoML 作业的输出配置中指定一个 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:Encrypt"
    ]
}
```

如果在 AutoML 作业的资源配置中指定一个批量 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:CreateGrant"
    ]
}
```

## CreateDomain API：执行角色权限
<a name="sagemaker-roles-createdomain-perms"></a>

当您在 `CreateDomain` API 请求中传递 AWS KMS 客户托管密钥时，具有 IAM Identity Center 的域的执行 user/execution 角色和 IAM 域`KmsKeyId`的角色需要以下权限。将在 `CreateApp` API 调用期间强制执行这些权限。

对于可在 `CreateDomain` API 请求中传递的执行角色，您可以将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/kms-key-id"
        }
    ]
}
```

------

或者，如果在 KMS 策略中指定了权限，则可以将以下策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/ExecutionRole"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## CreateImage 和 UpdateImage APIs：执行角色权限
<a name="sagemaker-roles-createimage-perms"></a>

对于可在 `CreateImage` 或 `UpdateImage` API 请求中传递的执行角色，您可以将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## CreateNotebookInstance API：执行角色权限
<a name="sagemaker-roles-createnotebookinstance-perms"></a>

您向执行角色授予调用 `CreateNotebookInstance` API 的权限取决于您计划对笔记本实例执行的操作。如果您计划在调用 APIs 和时使用它来调用 SageMaker AI `CreateTrainingJob` 并传递相同的角色 `CreateModel` APIs，请将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:*",
                "ecr:GetAuthorizationToken",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:SetRepositoryPolicy",
                "ecr:CompleteLayerUpload",
                "ecr:BatchDeleteImage",
                "ecr:UploadLayerPart",
                "ecr:DeleteRepositoryPolicy",
                "ecr:InitiateLayerUpload",
                "ecr:DeleteRepository",
                "ecr:PutImage",
                "ecr:CreateRepository",
                "cloudwatch:PutMetricData",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:GetLogEvents",
                "s3:CreateBucket",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "robomaker:CreateSimulationApplication",
                "robomaker:DescribeSimulationApplication",
                "robomaker:DeleteSimulationApplication",
                "robomaker:CreateSimulationJob",
                "robomaker:DescribeSimulationJob",
                "robomaker:CancelSimulationJob",
                "ec2:CreateVpcEndpoint",
                "ec2:DescribeRouteTables",
                "elasticfilesystem:DescribeMountTargets"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:GitPull",
                "codecommit:GitPush"
            ],
            "Resource": [
                "arn:aws:codecommit:*:*:*sagemaker*",
                "arn:aws:codecommit:*:*:*SageMaker*",
                "arn:aws:codecommit:*:*:*Sagemaker*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "sagemaker.amazonaws.com"
                }
            }
        }
    ]
}
```

------

要收紧权限，请限制 `"Resource": "*"` 以使权限仅限于特定的 Amazon S3 和 Amazon ECR 资源，如下所示：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:*",
                "ecr:GetAuthorizationToken",
                "cloudwatch:PutMetricData",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:GetLogEvents"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "sagemaker.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket/object1",
                "arn:aws:s3:::outputbucket/path",
                "arn:aws:s3:::inputbucket/object2",
                "arn:aws:s3:::inputbucket/object3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": [
                "arn:aws:ecr:us-east-1:111122223333:repository/my-repo1",
                "arn:aws:ecr:us-east-1:111122223333:repository/my-repo2",
                "arn:aws:ecr:us-east-1:111122223333:repository/my-repo3"
            ]
        }
    ]
}
```

------

如果您计划访问其他资源（如 Amazon DynamoDB 或 Amazon Relational Database Service），则向此策略添加相关权限。

在上一个策略中，您按如下方式确定策略范围：
+ 仅向您在 `s3:ListBucket` 请求中指定作为 `InputDataConfig.DataSource.S3DataSource.S3Uri` 的特定存储桶授予 `CreateTrainingJob` 权限。
+ 按如下方式确定 `s3:GetObject `、`s3:PutObject` 和 `s3:DeleteObject` 的权限范围：
  + 将范围限定为您在 `CreateTrainingJob` 请求中指定的以下值：

    `InputDataConfig.DataSource.S3DataSource.S3Uri`

    `OutputDataConfig.S3OutputPath`
  + 将范围限定为您在 `CreateModel` 请求中指定的以下值：

    `PrimaryContainer.ModelDataUrl`

    `SuplementalContainers.ModelDataUrl`
+ 按如下方式确定 `ecr` 权限的范围：
  + 将范围限定为您在 `AlgorithmSpecification.TrainingImage` 请求中指定的 `CreateTrainingJob` 值。
  + 将范围限定为您在 `PrimaryContainer.Image` 请求中指定的 `CreateModel` 值：

`cloudwatch` 和 `logs` 操作适用于“\$1”资源。有关更多信息，请参阅 Amazon CloudWatch 用户指南中的[CloudWatch 资源和操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html#CloudWatch_ARN_Format)。



## CreateHyperParameterTuningJob API：执行角色权限
<a name="sagemaker-roles-createhyperparametertiningjob-perms"></a>

对于可在 `CreateHyperParameterTuningJob` API 请求中传递的执行角色，您可以将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您可以将这些权限的范围限定为特定的 Amazon S3、Amazon ECR 和 Amazon L CloudWatch ogs 资源，而不必指定`"Resource": "*"`：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket/object",
                "arn:aws:s3:::outputbucket/path"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-repo"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams"
            ],
            "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/TrainingJobs*"
        }
    ]
}
```

------

如果与超参数优化作业关联的训练容器需要访问其他数据源（如 DynamoDB 或 Amazon RDS 资源），则向此策略添加相关权限。

在上一个策略中，您按如下方式确定策略范围：
+ 仅向您在 `s3:ListBucket` 请求中指定作为 `InputDataConfig.DataSource.S3DataSource.S3Uri` 的特定存储桶授予 `CreateTrainingJob` 权限。
+ 仅向您在 `s3:GetObject ` 请求的输入和输出数据配置中指定的以下对象授予 `s3:PutObject`和 `CreateHyperParameterTuningJob` 权限：

  `InputDataConfig.DataSource.S3DataSource.S3Uri`

  `OutputDataConfig.S3OutputPath`
+ 仅向您在 `CreateHyperParameterTuningJob` 请求中指定的注册表路径 (`AlgorithmSpecification.TrainingImage`) 授予 Amazon ECR 权限。
+ 将 Amazon Lo CloudWatch gs 权限范围限定为记录一组 SageMaker 训练作业。

`cloudwatch` 操作适用于“\$1”资源。有关更多信息，请参阅 Amazon CloudWatch 用户指南中的[ CloudWatch 资源和操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format)。

如果您为超参数优化作业指定一个私有 VPC，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
    ]
}
```

如果您的输入使用服务器端加密和 KMS AWS 托管密钥 (SSE-KMS) 进行加密，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt"
    ]
}
```

如果在超参数优化作业的输出配置中指定一个 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:Encrypt"
    ]
}
```

如果在超参数优化作业的资源配置中指定一个批量 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:CreateGrant"
    ]
}
```

## CreateProcessingJob API：执行角色权限
<a name="sagemaker-roles-createprocessingjob-perms"></a>

对于可在 `CreateProcessingJob` API 请求中传递的执行角色，您可以将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您无需指定 `"Resource": "*"`，而是可以将这些权限限制为特定的 Amazon S3 和 Amazon ECR 资源：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket/object",
                "arn:aws:s3:::outputbucket/path"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-repo"
        }
    ]
}
```

------

如果 `CreateProcessingJob.AppSpecification.ImageUri` 需要访问其他数据源 (如 DynamoDB 或 Amazon RDS 资源)，则向此策略添加相关权限。

在上一个策略中，您按如下方式确定策略范围：
+ 仅向您在 `s3:ListBucket` 请求中指定作为 `ProcessingInputs` 的特定存储桶授予 `CreateProcessingJob` 权限。
+ 将 `s3:GetObject `和 `s3:PutObject` 权限的范围限定在 `CreateProcessingJob` 请求中要在 `ProcessingInputs` 和 `ProcessingOutputConfig` 中下载或上传的对象。
+ 仅向您在 `CreateProcessingJob` 请求中指定的注册表路径 (`AppSpecification.ImageUri`) 授予 Amazon ECR 权限。

`cloudwatch` 和 `logs` 操作适用于“\$1”资源。有关更多信息，请参阅 Amazon CloudWatch 用户指南中的[CloudWatch 资源和操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html#CloudWatch_ARN_Format)。

如果您为处理作业指定一个私有 VPC，请添加以下权限。不要在策略中使用任何条件或资源筛选器。否则，在创建处理作业期间进行的验证检查将失败。

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
    ]
}
```

如果您的输入使用服务器端加密和 KMS AWS 托管密钥 (SSE-KMS) 进行加密，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt"
    ]
}
```

如果在处理作业的输出配置中指定一个 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:Encrypt"
    ]
}
```

如果在处理作业的资源配置中指定一个批量 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:CreateGrant"
    ]
}
```

## CreateTrainingJob API：执行角色权限
<a name="sagemaker-roles-createtrainingjob-perms"></a>

对于可在 `CreateTrainingJob` API 请求中传递的执行角色，您可以将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您无需指定 `"Resource": "*"`，而是可以将这些权限限制为特定的 Amazon S3 和 Amazon ECR 资源：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket/object",
                "arn:aws:s3:::outputbucket/path"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-repo"
        }
    ]
}
```

------

如果 `CreateTrainingJob.AlgorithSpecifications.TrainingImage` 需要访问其他数据源 (如 DynamoDB 或 Amazon RDS 资源)，则向此策略添加相关权限。

如果您使用`AlgorithmSpecification.AlgorithmArn`参数指定算法资源，则执行角色还必须具有以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "sagemaker:DescribeAlgorithm"
    ],
    "Resource": "arn:aws:sagemaker:*:*:algorithm/*"
}
```

在上一个策略中，您按如下方式确定策略范围：
+ 仅向您在 `s3:ListBucket` 请求中指定作为 `InputDataConfig.DataSource.S3DataSource.S3Uri` 的特定存储桶授予 `CreateTrainingJob` 权限。
+ 仅向您在 `s3:GetObject ` 请求的输入和输出数据配置中指定的以下对象授予 `s3:PutObject`和 `CreateTrainingJob` 权限：

  `InputDataConfig.DataSource.S3DataSource.S3Uri`

  `OutputDataConfig.S3OutputPath`
+ 仅向您在 `CreateTrainingJob` 请求中指定的注册表路径 (`AlgorithmSpecification.TrainingImage`) 授予 Amazon ECR 权限。

`cloudwatch` 和 `logs` 操作适用于“\$1”资源。有关更多信息，请参阅 Amazon CloudWatch 用户指南中的[CloudWatch 资源和操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html#CloudWatch_ARN_Format)。

如果您为训练作业指定一个私有 VPC，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
      "ec2:CreateNetworkInterface",
      "ec2:CreateNetworkInterfacePermission",
      "ec2:DeleteNetworkInterface",
      "ec2:DeleteNetworkInterfacePermission",
      "ec2:DescribeNetworkInterfaces",
      "ec2:DescribeVpcs",
      "ec2:DescribeDhcpOptions",
      "ec2:DescribeSubnets",
      "ec2:DescribeSecurityGroups"
    ]
}
```

如果您的输入使用服务器端加密和 KMS AWS 托管密钥 (SSE-KMS) 进行加密，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt"
    ]
}
```

如果在训练作业的输出配置中指定一个 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:Encrypt"
    ]
}
```

如果在训练作业的资源配置中指定一个批量 KMS 密钥，则添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
    "kms:CreateGrant"
    ]
}
```

## CreateModel API：执行角色权限
<a name="sagemaker-roles-createmodel-perms"></a>

对于可在 `CreateModel` API 请求中传递的执行角色，您可以将以下权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "s3:GetObject",
                "s3:ListBucket",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您无需指定 `"Resource": "*"`，而是可以将这些权限限制为特定的 Amazon S3 和 Amazon ECR 资源：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::inputbucket/object"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": [
                "arn:aws:ecr:us-east-1:111122223333:repository/my-repo",
                "arn:aws:ecr:us-east-1:111122223333:repository/my-repo"
            ]
        }
    ]
}
```

------

如果 `CreateModel.PrimaryContainer.Image` 需要访问其他数据源 (如 Amazon DynamoDB 或 Amazon RDS 资源)，则向此策略添加相关权限。

在上一个策略中，您按如下方式确定策略范围：
+ 仅向您在 `PrimaryContainer.ModelDataUrl` 请求的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) 中指定的对象授予 S3 权限。
+ 仅向您在 `CreateModel` 请求中指定作为 `PrimaryContainer.Image` 和 `SecondaryContainer.Image` 的特定注册表路径授予 Amazon ECR 权限。

`cloudwatch` 和 `logs` 操作适用于“\$1”资源。有关更多信息，请参阅 Amazon CloudWatch 用户指南中的[CloudWatch 资源和操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html#CloudWatch_ARN_Format)。

**注意**  
如果您计划使用 [SageMaker AI 部署护栏功能](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails.html)在生产环境中部署模型，请确保您的执行角色有权对自动回滚警`cloudwatch:DescribeAlarms`报执行操作。

如果您为模型指定一个私有 VPC，请添加以下权限：

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
    ]
}
```

# SageMaker 地理空间功能角色
<a name="sagemaker-geospatial-roles"></a>

作为一项托管服务，Amazon SageMaker 地理空间功能代表您在 SageMaker AI 管理的 AWS 硬件上执行操作。用于 AWS Identity and Access Management 向用户、群组和角色授予对 SageMaker 地理空间的访问权限。

IAM 管理员可以使用、或其中之一向用户、群组或角色授予这些权限 AWS SDKs。 AWS 管理控制台 AWS CLI

**要使用 SageMaker 地理空间，您需要以下 IAM 权限。**

1. **A SageMaker I 执行角色。**

   要使用特定于 SageMaker 地理空间的 API 操作，您的 SageMaker AI 执行角色必须在执行角色的信任策略`sagemaker-geospatial.amazonaws.com`中包含 SageMaker 地理空间服务主体。这允许 SageMaker AI 执行角色 AWS 账户 代表您执行操作。

1. **有权访问 Amazon SageMaker Studio Classic 和 SageMaker 地理空间的用户、群组或角色**

   要开始使用 SageMaker 地理空间，您可以使用 AWS 托管策略:`AmazonSageMakerGeospatialFullAccess`. 此授权将授予用户、群组或角色对 SageMaker 地理空间的完全访问权限。要查看该策略并详细了解哪些操作、资源和条件可用，请参阅 [AWS 托管策略： AmazonSageMakerFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess)。

   要开始使用 Studio Classic 并创建亚马逊 SageMaker AI 域名，请参阅[亚马逊 SageMaker AI 域名概述](gs-studio-onboard.md)。

使用以下主题创建新的 SageMaker AI 执行角色，更新现有的 SageMaker AI 执行角色，并学习如何使用特定于 SageMaker 地理空间的 IAM 操作、资源和条件来管理权限。

**Topics**
+ [创建新的 SageMaker AI 执行角色](sagemaker-geospatial-roles-create-execution-role.md)
+ [将 SageMaker 地理空间服务主体添加到现有 SageMaker AI 执行角色中](sagemaker-geospatial-roles-pass-role.md)
+ [`StartEarthObservationJob` API：执行角色权限](sagemaker-roles-start-eoj-perms.md)
+ [`StartVectorEnrichmentJob` API：执行角色权限](sagemaker-roles-start-vej-perms.md)
+ [`ExportEarthObservationJob` API：执行角色权限](sagemaker-roles-export-eoj-perms.md)
+ [`ExportVectorEnrichmentJob` API：执行角色权限](sagemaker-roles-export-vej-perms.md)

# 创建新的 SageMaker AI 执行角色
<a name="sagemaker-geospatial-roles-create-execution-role"></a>

要使用 SageMaker 地理空间功能，必须设置用户、群组或角色以及执行角色。用户角色是一种具有权限策略的 AWS 身份，该策略决定了用户在其中可以做什么和不能做什么 AWS。执行角色是一个 IAM 角色，用于授予访问 AWS 资源的服务权限。执行角色由权限和信任策略组成。信任策略指定哪些主体有权代入该角色。

SageMaker 地理空间还需要不同的服务主体，`sagemaker-geospatial.amazonaws.com`。如果您是现有的 SageMaker AI 客户，则必须将此额外服务委托人添加到您的信任策略中。

使用以下过程创建一个新的执行角色，并附加 IAM 托管策略 `AmazonSageMakerGeospatialFullAccess`。如果您的使用案例需要更精细的权限，请使用本指南的其他部分来创建满足业务需求的执行角色。

**重要**  
以下过程中使用的 IAM 管理策略 `AmazonSageMakerGeospatialFullAccess` 只授予执行角色对名称中包含 `SageMaker`、`Sagemaker`、`sagemaker` 或 `aws-glue` 的存储桶或对象执行特定 Amazon S3 操作的权限。要了解如何更新执行角色的策略以授予其访问其他 Amazon S3 存储桶和对象的权限，请参阅[向 A SageMaker I 执行角色添加其他 Amazon S3 权限](sagemaker-roles.md#sagemaker-roles-get-execution-role-s3)。

**创建新角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 选择**角色**，然后选择**创建角色**。

1. 选择 **SageMaker**。

1. 选择**下一步：权限**。

1. IAM 托管策略 `AmazonSageMakerGeospatialFullAccess` 会自动附加到此角色。要查看此策略中包含的权限，请选择策略名称旁边的横向箭头。选择**下一步：标签**。

1. （可选）添加标签并选择**下一步：查看**。

1. 在**角色名称**下的文本字段中为角色命名，然后选择**创建角色**。

1. 在 IAM 控制台的**角色**部分中，选择刚刚在步骤 7 中创建的角色。如果需要，请通过文本框使用您在步骤 7 中输入的角色名称搜索角色。

1. 在角色摘要页面上，记下 ARN。

# 将 SageMaker 地理空间服务主体添加到现有 SageMaker AI 执行角色中
<a name="sagemaker-geospatial-roles-pass-role"></a>

要使用特定于 SageMaker 地理空间的 API 操作，您的 SageMaker AI 执行角色必须在执行角色的信任策略`sagemaker-geospatial.amazonaws.com`中包含 SageMaker 地理空间服务主体。这允许 SageMaker AI 执行角色 AWS 账户 代表您执行操作。

诸如在服务之间传递角色之类的操作在 SageMaker AI 中很常见。有关更多详细信息，

要将 SageMaker 地理空间服务主体添加到现有 SageMaker AI 执行角色中，请更新现有策略以包含 SageMaker 地理空间服务主体，如以下信任策略所示。通过将服务主体附加到信任策略，A SageMaker I 执行角色现在可以代表您运行特定 APIs 于 SageMaker 地理空间的权限。

要详细了解特定于 SageMaker 地理空间的 IAM 操作、资源和条件，请参阅 IA *M 用户指南*中的 A [ SageMaker I 操作、资源和条件密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsagemaker.html#amazonsagemaker-actions-as-permissions)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "sagemaker-geospatial.amazonaws.com",
                    "sagemaker.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

# `StartEarthObservationJob` API：执行角色权限
<a name="sagemaker-roles-start-eoj-perms"></a>

对于可在 `StartEarthObservationJob` API 请求中传递的执行角色，您可以将以下最低权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
        "Effect": "Allow",
        "Action": "sagemaker-geospatial:GetEarthObservationJob",
        "Resource":  "arn:aws:sagemaker-geospatial:*:*:earth-observation-job/*"
        },
        {
        "Effect": "Allow",
        "Action": "sagemaker-geospatial:GetRasterDataCollection",
        "Resource": "arn:aws:sagemaker-geospatial:*:*:raster-data-collection/*"
        }
    ]
    }
```

------

如果您输入的 Amazon S3 存储桶使用服务器端加密和 AWS KMS 托管密钥 (SSE-KMS) 进行加密，请参阅使用 [Amazon S3 存储桶密钥](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)了解更多信息。

# `StartVectorEnrichmentJob` API：执行角色权限
<a name="sagemaker-roles-start-vej-perms"></a>

对于可在 `StartVectorEnrichmentJob` API 请求中传递的执行角色，您可以将以下最低权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
        "Effect": "Allow",
        "Action": "sagemaker-geospatial:GetVectorEnrichmentJob",
        "Resource":  "arn:aws:sagemaker-geospatial:*:*:vector-enrichment-job/*"
        }
    ]
    }
```

------

如果您输入的 Amazon S3 存储桶使用服务器端加密和 AWS KMS 托管密钥 (SSE-KMS) 进行加密，请参阅使用 [Amazon S3 存储桶密钥](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)了解更多信息。

# `ExportEarthObservationJob` API：执行角色权限
<a name="sagemaker-roles-export-eoj-perms"></a>

对于可在 `ExportEarthObservationJob` API 请求中传递的执行角色，您可以将以下最低权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
        "Effect": "Allow",
        "Action": "sagemaker-geospatial:GetEarthObservationJob",
        "Resource":  "arn:aws:sagemaker-geospatial:*:*:earth-observation-job/*"
        }
    ]
    }
```

------

如果您输入的 Amazon S3 存储桶使用服务器端加密和 AWS KMS 托管密钥 (SSE-KMS) 进行加密，请参阅使用 [Amazon S3 存储桶密钥](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)了解更多信息。

# `ExportVectorEnrichmentJob` API：执行角色权限
<a name="sagemaker-roles-export-vej-perms"></a>

对于可在 `ExportVectorEnrichmentJob` API 请求中传递的执行角色，您可以将以下最低权限策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
        "Effect": "Allow",
        "Action": "sagemaker-geospatial:GetVectorEnrichmentJob",
        "Resource":  "arn:aws:sagemaker-geospatial:*:*:vector-enrichment-job/*"
        }
    ]
    }
```

------

如果您输入的 Amazon S3 存储桶使用服务器端加密和 AWS KMS 托管密钥 (SSE-KMS) 进行加密，请参阅使用 [Amazon S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)密钥。