View a markdown version of this page

设置权限 - 亚马逊 SageMaker AI

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

设置权限

所需的角色 Add-on 及其依赖关系

上的 SageMaker 空间需要 IAM 角色 SageMaker HyperPod

(EKS) 集群上启用 SageMaker Spaces SageMaker HyperPod (又名 SageMaker IDE /笔记本)功能时,必须创建和分配多个 IAM 角色。这些角色支持安全访问、路由、远程 IDE 会话和 EBS 存储配置。下表汇总了这四个角色以及何时需要它们。

角色摘要表

IAM 角色 必填? 用途 谁在使用它? SageMaker 控制台允许自定义?

空间 Add-on 执行角色

总是必填的

允许 Spaces 控制器管理空间、生成预签名 URL、管理 SSM 会话

Add-on 控制器舱(特权)

✔ 是的

In-Cluster 路由器角色

要访问 WebUI 是必需的

允许路由器容器执行 KMS 操作进行 JWT 签名(WebUI 身份验证)

In-cluster 路由器 pod(特权)

✔ 是的

SSM 托管实例角色

需要进行远程 IDE 访问

由 SSM 代理边车用于 SSH-over-SSM 远程 IDE 会话

Space IDE 容器中的 SSM 代理(不是附加窗格)

✔ 是的

EBS CSI 驱动程序的 IAM 角色 Add-on

总是必填的

允许 EBS CSI 驱动程序 create/attach /修改空间工作负载的卷

EBS CSI 驱动程序 Add-on

自动创建

外部 DNS 的 IAM 角色 Add-on

要访问 WebUI 是必需的

它确保可以在客户的 Route 53 托管区域中自动为空间端点和集群内组件分配 DNS 名称。

外部 DNS Add-on

自动创建

1. 空间 Add-on 执行角色(必填)

Spaces Add-on 执行角色始终是必需的,因为它由 SageMaker Spaces 插件控制器 pod 使用,该容器是通过 EKS 插件安装的管理组件。此角色允许控制器管理空间、配置资源、与 SSM 交互以及生成用于远程 IDE 和 WebUI 访问的预签名 URL。它还支持用于请求签名的 KMS 访问,用于对 WebUI https 请求进行身份验证。通过 SageMaker 控制台安装 SageMaker Spaces 插件时,可以自动创建此角色。对于手动创建, AWS 提供AmazonSageMakerSpacesControllerPolicy托管策略。

参考信任政策

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}", "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}" } } } ] }

2。 In-Cluster 路由器角色(WebUI 身份验证所必需的)

In-Cluster 路由器角色由路由器 pod 使用,该容器是对 Spaces WebUI 会话进行身份验证的特权组件。路由器使用 KMS 密钥创建和签署授权用户访问特定空间的 JWT 令牌。此角色允许路由器 pod 生成数据密钥并对其进行解密。与控制器角色类似,它使用基于标签和集群的范围限制来强制执行安全性。通过 AWS SageMaker 控制台安装 Spaces 插件时,可以自动生成此角色,但客户可以手动创建。

参考信任政策

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}", "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}" } } } ] }

参考权限政策

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KMSDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}" }, { "Sid": "KMSKeyOperations", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}", "Condition": { "StringEquals": { "kms:EncryptionContext:sagemaker:component": "amazon-sagemaker-spaces", "kms:EncryptionContext:sagemaker:eks-cluster-arn": "${aws:PrincipalTag/eks-cluster-arn}" } } } ] }

3. SSM 托管实例角色(远程 IDE 访问所必需的)

注册 SSM 托管实例以启用远程 IDE 访问权限时,将传递 SSM 托管实例角色。此角色允许 SSM 代理将 pod 注册为 SSM 托管实例,并使用 SSM 会话管理器通道进行远程 IDE () SSH-over-SSM 连接。它可以在使用 AWS SageMaker 控制台时自动创建。对于手动部署,客户必须创建此角色并将其提供给 Spaces 插件。控制器 pod 本身并不扮演这个角色;它只在调用时才提供这个角色ssm:CreateActivation

参考信任政策

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "{{account}}" }, "ArnEquals": { "aws:SourceArn": "arn:aws:ssm:{{region}}:{{account}}:*" } } } ] }

参考权限政策

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeAssociation" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:association/*", "arn:aws:ssm:{{region}}:{{account}}:document/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:DescribeDocument" ], "Resource": "arn:aws:ssm:{{region}}:{{account}}:document/*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:aws:ssm:{{region}}:{{account}}:parameter/*" }, { "Effect": "Allow", "Action": [ "ssm:ListInstanceAssociations" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:PutComplianceItems" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateAssociationStatus" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:document/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceAssociationStatus" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:association/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetDeployablePatchSnapshotForInstance", "ssm:GetManifest", "ssm:ListAssociations", "ssm:PutInventory", "ssm:PutConfigurePackageResult" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:AcknowledgeMessage", "ec2messages:DeleteMessage", "ec2messages:FailMessage", "ec2messages:GetEndpoint" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:GetMessages", "ec2messages:SendReply" ], "Resource": "*", "Condition": { "ArnLike": { "ssm:SourceInstanceARN": "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" } } } ] }

4. EBS CSI 驱动程序的 IAM 角色 Add-on

EBS CSI 驱动程序的 IAM 角色是必需的,因为 EBS CSI 驱动程序会为 Spaces 工作负载配置永久卷。虽然 AWS-manage AmazonEBSCSIDriverPolicyd 提供基本权限,但 SageMaker HyperPod 集群需要其他功能,例如创建快速快照恢复、标记集群拥有的卷以及为节点添加卷。 attaching/detaching HyperPod-managed这些权限还包括 SageMaker-specific API,例如sagemaker:AttachClusterNodeVolume。如果未安装 EBS CSI 驱动程序,则 SageMaker 控制台现在将在 Spaces 插件安装期间自动创建此角色,无需客户进行任何操作

5. 外部 DNS 的 IAM 角色 Add-on

外部 DNS 插件管理 HyperPod 集群上服务和入口资源的 DNS 记录。它确保可以在客户的 Route 53 托管区域中自动为空间端点和集群内组件分配 DNS 名称。如今,客户经常通过 EKS 控制台中的一键式选项手动安装外部 DNS。作为改善 SageMaker Spaces 体验的一部分,此角色现在将由 SageMaker 控制台在 Spaces 插件安装期间自动创建,无需客户进行任何操作

的权限设置 AWS 访问 SageMaker 空间的工具包

要允许 AWS VS Code Toolkit 资源浏览器侧面板发现和连接 SageMaker 空间,需要以下 IAM 权限。这些权限允许 Toolkit 列出可用 SageMaker HyperPod 集群、检索集群详细信息以及获取关联的 Amazon EKS 集群的连接令牌。

必需的 IAM 政策

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerListClusters", "Effect": "Allow", "Action": "sagemaker:ListClusters", "Resource": "*" }, { "Sid": "SageMakerDescribeCluster", "Effect": "Allow", "Action": "sagemaker:DescribeCluster", "Resource": "arn:aws:sagemaker:{{region}}:{{account}}:cluster/cluster-name" }, { "Sid": "EksDescribeCluster", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:{{region}}:{{account}}:cluster/cluster-name" }, { "Sid": "EksGetToken", "Effect": "Allow", "Action": "eks:GetToken", "Resource": "*" } ] }

范围界定建议

  • 将 cluster-name 替换为用户需要访问的特定 SageMaker HyperPod 集群。

  • eks: GetToken 操作目前不支持资源级限制,必须使用资源:“*”。这是一项 AWS 服务限制。客户端身份验证通过 EKS 访问条目执行。