

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

# 为 Studio 设置策略和权限
<a name="scheduled-notebook-policies-studio"></a>

在安排首次运行笔记本之前，您需要安装适当的策略和权限。以下是设置以下权限的说明：
+ 作业执行角色信任关系
+ 附加到作业执行角色的其他 IAM 权限
+ （可选）使用自定义 KMS 密钥的 AWS KMS 权限策略

**重要**  
如果您的 AWS 账户属于具有服务控制策略 (SCP) 的组织，则您的有效权限是您的 IAM 角色 SCPs 和用户策略允许的内容与允许的权限之间的逻辑交叉点。例如，如果您组织的 SCP 规定您只能访问 `us-east-1` 和 `us-west-1` 中的资源，而您的策略仅允许访问 `us-west-1` 和 `us-west-2` 中的资源，那么最终您只能访问 `us-west-1` 中的资源。如果您想行使角色和用户策略中允许的所有权限，则您的组织 SCPs 应授予与您自己的 IAM 用户和角色策略相同的权限集。有关如何确定允许的请求的详细信息，请参阅[确定是允许还是拒绝账户内的请求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)。

**信任关系**

要修改信任关系，请完成以下步骤：

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

1. 在左侧面板中选择**角色**。

1. 找到笔记本作业的作业执行角色并选择角色名称。

1. 选择**信任关系**选项卡。

1. 选择**编辑信任策略**。

1. 复制并粘贴以下策略：

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

****  

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

------

1. 选择**更新策略**。

## 其他 IAM 权限
<a name="scheduled-notebook-policies-add"></a>

在以下情况下，您可能需要包括其他 IAM 权限：
+ 您的 Studio 执行角色和笔记本作业角色不同
+ 您需要通过 S3 VPC 端点访问 Amazon S3 资源
+ 您想使用自定义 KMS 密钥来加密输入和输出 Amazon S3 存储桶

以下讨论提供了每种情况所需的策略。

### 如果您的 Studio 执行角色和笔记本作业角色不同，则需要相应权限
<a name="scheduled-notebook-policies-add-diffrole"></a>

以下 JSON 代码片段是一个示例策略，如果不将 Studio 执行角色用作笔记本作业角色，则应将其添加到 Studio 执行角色和笔记本作业角色中。如果需要进一步限制权限，请查看并修改此策略。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### 通过 S3 VPC 端点访问 Amazon S3 资源所需的权限
<a name="scheduled-notebook-policies-add-vpc"></a>

如果您在私有 VPC 模式下运行 SageMaker Studio 并通过 S3 VPC 终端节点访问 S3，则可以向 VPC 终端节点策略添加权限以控制可通过 VPC 终端节点访问哪些 S3 资源。将以下权限添加到 VPC 端点策略。如果需要进一步限制权限，则可以修改策略，例如可以为 `Principal` 字段提供更严格的规范。

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

有关如何设置 S3 VPC 端点策略的详细信息，请参阅[编辑 VPC 端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3)。

### 使用自定义 KMS 密钥时所需的权限（可选）
<a name="scheduled-notebook-policies-add-kms"></a>

默认情况下，输入和输出 Amazon S3 存储桶使用服务器端加密进行加密，但您可以指定自定义 KMS 密钥来加密输出 Amazon S3 存储桶和附加到笔记本作业的存储卷中的数据。

如果您想使用自定义 KMS 密钥，请附加以下策略并提供您自己的 KMS 密钥 ARN。

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

****  

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

------