为 Studio 设置策略和权限 - Amazon SageMaker

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

为 Studio 设置策略和权限

在安排首次运行笔记本之前,您需要安装适当的策略和权限。以下内容提供了有关设置以下权限的说明:

  • 作业执行角色信任关系

  • 附加到任务执行角色的其他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用户和角色策略相同的权限集。有关如何确定允许的请求的详细信息,请参阅确定是允许还是拒绝账户内的请求

信任关系

要修改信任关系,请完成以下步骤:

  1. 打开控制IAM台

  2. 在左侧面板中选择角色

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

  4. 选择信任关系选项卡。

  5. 选择编辑信任策略

  6. 复制并粘贴以下策略:

    { "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" } ] }
  7. 选择更新策略

其他IAM权限

在以下情况下,您可能需要添加其他IAM权限:

  • 您的 Studio 执行角色和笔记本作业角色不同

  • 您需要通过 S3 VPC 终端节点访问 Amazon S3 资源

  • 您想使用自定义KMS密钥来加密您的输入和输出 Amazon S3 存储桶

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

如果您的 Studio 执行角色和笔记本作业角色不同,则需要相应权限

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

{ "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:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateVpcEndpoint", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "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 资源所需的权限

如果您在私有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终端节点策略

使用自定义KMS密钥所需的权限(可选)

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

如果要使用自定义KMS密钥,请附上以下策略并提供自己的KMS密钥ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource":"your_KMS_key_ARN" } ] }