翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アクセス許可の設定
アドオンとその依存関係に必要なロール
SageMaker HyperPod の SageMaker スペースに必要な IAM ロール
SageMaker HyperPod (EKS) クラスターで SageMaker Spaces (a.k.aSageMaker IDE / Notebooks SageMaker) 機能を有効にする場合は、複数の IAM ロールを作成して割り当てる必要があります。 SageMaker HyperPod これらのロールは、安全なアクセス、ルーティング、リモート IDE セッション、EBS ストレージのプロビジョニングをサポートします。次の表は、4 つのロールと必要なタイミングをまとめたものです。
ロールの概要テーブル
| IAM ロール | 必須? | 目的 | 誰がそれを使用しますか? | SageMaker コンソールでカスタマイズが許可されますか? |
|---|---|---|---|---|
|
Spaces アドオン実行ロール |
常に必須 |
Spaces コントローラーによるスペースの管理、署名付き URLsの生成、SSM セッションの管理を許可する |
アドオンコントローラーポッド (特権) |
✔ はい |
|
クラスター内ルーターロール |
WebUI アクセスに必要です |
ルーターポッドに JWT 署名の KMS オペレーションの実行を許可する (WebUI 認証) |
クラスター内ルーターポッド (特権) |
✔ はい |
|
SSM マネージドインスタンスロール |
リモート IDE アクセスに必要です |
SSM エージェントのサイドカーが SSH-over-SSM リモート IDE セッションに使用する |
スペース IDE ポッドの SSM エージェント (アドオンポッドではない) |
✔ はい |
|
EBS CSI ドライバーアドオンの IAM ロール |
常に必須 |
EBS CSI ドライバーが Spaces ワークロードのボリュームcreate/attach/modifyすることを許可する |
EBS CSI ドライバーアドオン |
自動作成 |
|
外部 DNS アドオンの IAM ロール |
WebUI アクセスに必要です |
これにより、スペースエンドポイントとクラスター内のコンポーネントに、顧客の Route 53 ホストゾーンで DNS 名を自動的に割り当てることができます。 |
外部 DNS アドオン |
自動作成 |
1. Spaces アドオン実行ロール (必須)
Spaces アドオン実行ロールは、EKS アドオンを介してインストールされる管理コンポーネントである SageMaker Spaces アドオンコントローラーポッドで使用されるため、常に必要です。このロールにより、コントローラーはスペースの管理、リソースのプロビジョニング、SSM とのやり取り、リモート IDE と WebUI アクセスの両方の署名付き URLs の生成を行うことができます。また、WebUI https リクエストを認証するためのリクエスト署名に使用される KMS アクセスもサポートしています。このロールは、SageMaker コンソールを介して SageMaker Spaces アドオンがインストールされているときに自動的に作成できます。手動作成の場合、 は AmazonSageMakerSpacesControllerPolicy管理ポリシーAWSを提供します。
参照信頼ポリシー
{ "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 認証に必須)
クラスター内ルーターロールは、Spaces WebUI セッションを認証する特権コンポーネントであるルーターポッドによって使用されます。ルーターは KMS キーを使用して、特定の Spaces へのユーザーアクセスを許可する JWT トークンを作成して署名します。このロールにより、ルーターポッドはデータキーを生成して復号できます。コントローラーロールと同様に、タグおよびクラスターベースのスコープ制限を使用してセキュリティを適用します。このロールは、Spaces アドオンが AWSSageMaker コンソールを介してインストールされたときに自動的に生成できますが、お客様は手動で作成できます。
参照信頼ポリシー
{ "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 エージェントはポッドを SSM マネージドインスタンスとして登録し、リモート IDE (SSH-over-SSM) 接続に SSM セッションマネージャーチャネルを使用できます。SageMaker コンソールを使用する場合AWSに自動的に作成できます。手動デプロイの場合、お客様はこのロールを作成し、Spaces アドオンに提供する必要があります。コントローラーポッド自体は、このロールを引き受けません。 を呼び出すときにのみ提供されます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 ドライバーは Spaces ワークロードの永続ボリュームをプロビジョニングするため、EBS CSI ドライバーの IAM ロールが必要です。AWSマネージド AmazonEBSCSIDriverPolicy はベースラインアクセス許可を提供しますが、SageMaker HyperPod クラスターには、高速スナップショット復元の作成、クラスター所有ボリュームのタグ付け、HyperPod マネージドノードのボリュームのアタッチ/デタッチなどの追加機能が必要です。これらのアクセス許可には、 などの SageMaker 固有の APIs も含まれますsagemaker:AttachClusterNodeVolume。EBS CSI ドライバーがインストールされていない場合、Spaces アドオンのインストール中に SageMaker コンソールによってこのロールが自動的に作成されるようになり、お客様のアクションは必要ありません。
5. 外部 DNS アドオンの IAM ロール
外部 DNS アドオンは、HyperPod クラスター上のサービスとイングレスリソースの DNS レコードを管理します。これにより、スペースエンドポイントとクラスター内のコンポーネントに、顧客の Route 53 ホストゾーンで DNS 名を自動的に割り当てることができます。現在、お客様は EKS コンソールのワンクリックオプションを使用して外部 DNS を手動でインストールすることがよくあります。SageMaker Spaces エクスペリエンスの向上の一環として、Spaces アドオンのインストール中に SageMaker コンソールによってこのロールが自動的に作成されるようになり、お客様のアクションは必要ありません。
AWSToolkit が SageMaker スペースにアクセスするためのアクセス許可の設定
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 クラスター (複数可) に置き換えます。
-
eks:GetToken アクションは現在リソースレベルの制限をサポートしていないため、リソース: "*" を使用する必要があります。これはAWSサービスの制限です。クライアント側の認証は、EKS アクセスエントリを介して実行されます。