設定許可 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定許可

附加元件及其相依性所需的角色

SageMaker HyperPod 上的 SageMaker 空間所需的 IAM 角色

SageMaker HyperPod (EKS) 叢集上啟用 SageMaker Spaces (a.k.aSageMakerSageMaker IDE/筆記本) 功能時,必須建立並指派多個 IAM 角色。 SageMaker HyperPod 這些角色支援安全存取、路由、遠端 IDE 工作階段和 EBS 儲存佈建。下表摘要說明四個角色以及何時需要它們。

角色摘要資料表

IAM 角色 是否為必要? 用途 誰使用它? SageMaker 主控台允許的自訂?

Spaces 附加元件執行角色

一律為必要

允許 Spaces 控制器管理 Spaces、產生預先簽章URLs、管理 SSM 工作階段

附加元件控制器 Pod (特殊權限)

✔ 是

叢集內路由器角色

WebUI 存取時需要

允許路由器 Pod 執行 JWT 簽署的 KMS 操作 (WebUI 身分驗證)

叢集內路由器 Pod (特殊權限)

✔ 是

SSM 受管執行個體角色

遠端 IDE 存取的必要項目

SSM 代理程式附屬用於 SSH-over-SSM 遠端 IDE 工作階段

Space IDE Pod 中的 SSM 代理程式 (非附加元件 Pod)

✔ 是

EBS CSI 驅動程式附加元件的 IAM 角色

一律為必要

允許 EBS CSI 驅動程式建立create/attach/modify Spaces 工作負載的磁碟區

EBS CSI 驅動程式附加元件

自動建立

外部 DNS 附加元件的 IAM 角色

WebUI 存取時需要

它可確保在客戶的 Route 53 託管區域中自動指派空間端點和叢集內元件的 DNS 名稱。

外部 DNS 附加元件

自動建立

1. Spaces 附加元件執行角色 (必要)

Spaces 附加元件執行角色始終是必要的,因為它由 SageMaker Spaces 附加元件控制器 Pod 使用,這是透過 EKS 附加元件安裝的管理元件。此角色可讓控制器管理 Spaces、佈建資源、與 SSM 互動,以及為遠端 IDE 和 WebUI 存取產生預先簽章URLs。它也支援用於請求簽署的 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. 叢集內路由器角色 (WebUI 身分驗證需要)

叢集內路由器角色由路由器 Pod 使用,這是驗證 Spaces WebUI 工作階段的特權元件。路由器使用 KMS 金鑰來建立和簽署 JWT 權杖,以授權使用者存取特定 Spaces。此角色允許路由器 Pod 產生資料金鑰,並將其解密。與控制器角色類似,它使用標籤型和叢集型範圍限制來強制執行安全性。透過 AWSSageMaker 主控台安裝 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 Session Manager 通道進行遠端 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 角色

EBS CSI 驅動程式的 IAM 角色是必要的,因為 EBS CSI 驅動程式會為 Spaces 工作負載佈建持久性磁碟區。雖然AWS受管 AmazonEBSCSIDriverPolicy 提供基準許可,但 SageMaker HyperPod 叢集需要其他功能,例如建立快速快照還原、標記叢集擁有的磁碟區,以及連接/刪除 HyperPod 受管節點的磁碟區。這些許可也包含 SageMaker 特定的 APIs,例如 sagemaker:AttachClusterNodeVolume。如果未安裝 EBS CSI 驅動程式,SageMaker 主控台現在會在 Spaces 附加元件安裝期間自動建立此角色,不需要客戶動作

5. 外部 DNS 附加元件的 IAM 角色

外部 DNS 附加元件會管理 HyperPod 叢集上服務和傳入資源的 DNS 記錄。它可確保在客戶的 Route 53 託管區域中自動指派空間端點和叢集內元件的 DNS 名稱。如今,客戶通常透過 EKS 主控台中的一鍵式選項手動安裝外部 DNS。作為改善 SageMaker Spaces 體驗的一部分,SageMaker 主控台現在會在 Spaces 附加元件安裝期間自動建立此角色,無需客戶動作

工具AWS組存取 SageMaker Spaces 的許可設定

若要允許 AWSVS Code Toolkit 資源總管側邊面板探索並連線至 SageMaker Spaces,需要下列 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 叢集 (SageMaker HyperPod)。

  • eks:GetToken 動作目前不支援資源層級限制,且必須使用資源:"*"。這是AWS服務限制。用戶端身分驗證是透過 EKS 存取項目執行。