AWS Identity and Access Management SageMaker HyperPod 用 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Identity and Access Management SageMaker HyperPod 用

AWS Identity and Access Management (IAM) は、管理者が AWS リソースへのアクセスを安全に制御するのに役立つ AWS サービスです。IAM 管理者は、誰の (サインイン) を認証し、誰による Amazon EKS リソースの使用を承認する (アクセス許可を付与する) かを制御します。IAM は、追加料金なしで使用できる AWS サービスです。

重要

Amazon SageMaker Studio または Amazon SageMaker Studio Classic に Amazon SageMaker リソースの作成を許可するカスタム IAM ポリシーでは、これらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要になります。IAM ポリシーで Studio と Studio Classic によるリソースの作成が許可されていても、タグ付けが許可されていない場合は、リソースを作成しようとしたときに「AccessDenied」エラーが発生する可能性があります。詳細については、「SageMaker AI リソースにタグ付けするためのアクセス許可を提供する」を参照してください。

SageMaker リソースを作成するためのアクセス許可を付与する AWS Amazon SageMaker AI の マネージドポリシー には、それらのリソースの作成中にタグを追加するためのアクセス許可もあらかじめ含まれています。

SageMaker HyperPod ユーザーには、クラスター管理者ユーザーとデータサイエンティストユーザーの の 2 つの主なレイヤーがあるとします。

  • クラスター管理者ユーザー – SageMaker HyperPod クラスターの作成と管理を担当します。これには、HyperPod クラスターの設定と、クラスターへのユーザーアクセスの管理が含まれます。

    • Slurm または Amazon EKS を使用して SageMaker HyperPod クラスターを作成して設定します。

    • データサイエンティストユーザーと HyperPod クラスターリソースの IAM ロールを作成して設定します。

    • Amazon EKS による SageMaker HyperPod オーケストレーションの場合、データサイエンスのユースケースを満たすために、EKS アクセスエントリロールベースのアクセスコントロール(RBAC)、および Pod Identity を作成して設定します。

  • データサイエンティストユーザー — ML モデルトレーニングに焦点を当てます。オープンソースのオーケストレーターまたは SageMaker HyperPod CLI を使用して、トレーニングジョブを送信および管理します。

    • クラスター管理者ユーザーによって提供される IAM ロールを引き受けて、それを使用します。

    • SageMaker HyperPod (Slurm または Kubernetes) または SageMaker HyperPod CLI によりサポートされているオープンソースのオーケストレーター CLI を操作して、クラスターのキャパシティをチェックし、クラスターに接続して、ワークロードを送信します。

SageMaker HyperPod クラスターを操作するための適切なアクセス許可またはポリシーをアタッチして、クラスター管理者の IAM ロールを設定します。クラスター管理者は、Amazon S3、Amazon CloudWatch、(SSM) などの必要なリソースを実行および通信するために引き受ける SageMaker HyperPod リソースに提供する IAM ロールも作成する必要があります。 AWS Amazon S3 Amazon CloudWatch AWS Systems Manager 最後に、 AWS アカウント管理者またはクラスター管理者は、SageMaker HyperPod クラスターにアクセスして ML ワークロードを実行するアクセス許可をサイエンティストに付与する必要があります。

選択したオーケストレーターによっては、クラスター管理者とサイエンティストに必要なアクセス許可が異なる場合があります。サービスごとの条件キーを使用して、ロール内のさまざまなアクションのアクセス許可の範囲を制御することもできます。SageMaker HyperPod に関連するサービスの詳細な範囲を追加するには、次のサービス認証リファレンスを使用します。

クラスター管理者の IAM ユーザー

クラスター管理者 (管理者) は SageMaker HyperPod クラスターを操作および設定し、SageMaker HyperPod Slurm クラスターオペレーション でタスクを実行します。次のポリシー例には、クラスター管理者が SageMaker HyperPod コア API、 AWS アカウント内で SageMaker HyperPod クラスターを管理するための最小限のアクセス許可のセットが含まれています。

注記

クラスター管理者ロールを持つ IAM ユーザーは、 および CreateClusterUpdateClusterアクション専用の SageMaker HyperPod クラスターリソースを管理する際に、条件キーを使用してきめ細かなアクセスコントロールを提供できます。これらのアクションでサポートされている条件キーを見つけるには、SageMaker AI で定義されたアクションUpdateClusterCreateClusterまたは を検索します。 SageMaker

Slurm
JSON
JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateCluster", "sagemaker:ListClusters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sagemaker:DeleteCluster", "sagemaker:DescribeCluster", "sagemaker:DescribeClusterNode", "sagemaker:ListClusterNodes", "sagemaker:UpdateCluster", "sagemaker:UpdateClusterSoftware", "sagemaker:BatchDeleteClusterNodes" ], "Resource": "arn:aws:sagemaker:aws-region:account-id:cluster/*" } ] }
Amazon EKS
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": <execution-role-arn> }, { "Effect": "Allow", "Action": [ "sagemaker:CreateCluster", "sagemaker:DeleteCluster", "sagemaker:DescribeCluster", "sagemaker:DescribeCluterNode", "sagemaker:ListClusterNodes", "sagemaker:ListClusters", "sagemaker:UpdateCluster", "sagemaker:UpdateClusterSoftware", "sagemaker:BatchDeleteClusterNodes", "sagemaker:ListComputeQuotas", "sagemaker:ListClusterSchedulerConfig", "sagemaker:DeleteClusterSchedulerConfig", "sagemaker:DeleteComputeQuota", "eks:DescribeCluster", "eks:CreateAccessEntry", "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:AssociateAccessPolicy", "iam:CreateServiceLinkedRole" ], "Resource": "*" } ] }

SageMaker AI コンソールへのアクセス許可を付与するには、Amazon SageMakerコンソールを使用するために必要なアクセス許可」に記載されているサンプルポリシーを使用します。

Amazon EC2 Systems Manager コンソールへのアクセス許可を付与するには、「 AWS Systems Manager ユーザーガイド」の「 AWS Systems Manager コンソールの使用」で提供されているサンプルポリシーを使用します。

また、AmazonSageMakerFullAccess ポリシーをロールにアタッチすることも検討できます。ただし、AmazonSageMakerFullAccess ポリシーは SageMaker API コール、機能、リソース全体にアクセス許可を付与する点に注意してください。

IAM ユーザー全般のガイダンスについては、「AWS Identity and Access Management ユーザーガイド」の「IAM ユーザー」を参照してください。

サイエンティストの IAM ユーザー

サイエンティストがログインし、クラスター管理者によってプロビジョニングされた SageMaker HyperPod クラスターノードで ML ワークロードを実行します。 AWS アカウントの科学者には、SSM start-session コマンドを実行する"ssm:StartSession"アクセス許可を付与する必要があります。IAM ユーザーのポリシーの例を次に示します。

Slurm

次のポリシーを追加して、すべてのリソースの SSM ターゲットに接続するための SSM セッションアクセス許可を付与します。これにより、HyperPod クラスターにアクセス可能になります。

JSON
JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }
Amazon EKS

データサイエンティストが HyperPod CLI コマンド間で hyperpod list-clusters および hyperpod connect-cluster コマンドを実行するため、以下の IAM ロールのアクセス許可を付与します。HyperPod CLI の詳細については、「Amazon EKS によってオーケストレーションされた SageMaker HyperPod クラスターでジョブを実行する」を参照してください。また、すべてのリソースの SSM ターゲットに接続するための SSM セッションアクセス許可も含まれています。これにより、HyperPod クラスターにアクセス可能になります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeHyerpodClusterPermissions", "Effect": "Allow", "Action": [ "sagemaker:DescribeCluster" ], "Resource": "<hyperpod-cluster-arn>" }, { "Sid": "UseEksClusterPermissions", "Effect": "Allow", "Action": [ "eks:DescribeCluster", ], "Resource": "<eks-cluster-arn>" }, { "Sid": "ListClustersPermission", "Effect": "Allow", "Action": [ "sagemaker:ListClusters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }

データサイエンティスト IAM ユーザーまたはロールにクラスター内の Kubernetes API へのアクセスを付与するには、「Amazon EKS ユーザーガイド」の「IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する」も参照してください。

SageMaker HyperPod の IAM ロール

SageMaker HyperPod クラスターを実行して必要な AWS リソースと通信するには、HyperPod クラスターが引き受ける IAM ロールを作成する必要があります。

まず、マネージドロール AWS マネージドポリシー: AmazonSageMakerHyperPodServiceRolePolicy をアタッチします。この AWS 管理ポリシーを考慮すると、SageMaker HyperPod クラスターインスタンスグループは、Amazon CloudWatch、Amazon S3、 AWS Systems Manager エージェント (SSM エージェント) と通信するロールを引き受けます。このマネージドポリシーは、SageMaker HyperPod リソースが正しく実行されるための最小要件であるため、このポリシーを持つ IAM ロールをすべてのインスタンスグループに提供する必要があります。

ヒント

複数のインスタンスグループのアクセス許可レベルの設計に関する設定によっては、複数の IAM ロールを設定し、異なるインスタンスグループにアタッチすることもできます。特定の SageMaker HyperPod クラスターノードへのクラスターユーザーアクセスを設定すると、ノードは、手動でアタッチした選択アクセス許可を持つロールを引き受けます。

AWS Systems Manager を使用して特定のクラスターノードへのサイエンティストのアクセスを設定すると (「クラスターユーザーアクセスコントロールの設定 AWS Systems Manager と Run As」も参照)、クラスターノードは手動でアタッチする選択アクセス許可を持つロールを引き受けます。

IAM ロールの作成が完了したら、そのロールの名前と ARN を書き留めます。SageMaker HyperPod クラスターを作成するときにロールを使用し、各インスタンスグループが必要な AWS リソースと通信するために必要な適切なアクセス許可を付与します。

Slurm

Slurm とオーケストレーションされた HyperPod の場合、次の管理ポリシーを SageMaker HyperPod IAM ロールにアタッチする必要があります。

(オプション) Amazon Virtual Private Cloud で SageMaker HyperPod を使用するための追加のアクセス許可

デフォルトの SageMaker AI VPC の代わりに独自の Amazon Virtual Private Cloud (VPC) を使用する場合は、SageMaker HyperPod の IAM ロールに次のアクセス許可を追加する必要があります。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DetachNetworkInterface" ], "Resource": "*" } { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] }

次のリストは、独自の Amazon VPC でクラスターを設定するときに SageMaker HyperPod クラスター機能を有効にするために必要なアクセス許可をまとめたものです。

  • VPC で SageMaker HyperPod クラスターの設定を有効にするには、次の ec2 アクセス許可が必要です。

    { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }
  • SageMaker HyperPod 自動再開機能を有効にするには、次の ec2 アクセス許可が必要です。

    { "Effect": "Allow", "Action": [ "ec2:DetachNetworkInterface" ], "Resource": "*" }
  • 次の ec2 アクセス許可により、SageMaker HyperPod はアカウント内のネットワークインターフェイスにタグを作成可能になります。

    { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] }
Amazon EKS

Amazon EKS とオーケストレーションされた HyperPod の場合、SageMaker HyperPod IAM ロールに次の管理ポリシーをアタッチする必要があります。

管理ポリシーに加えて、次のアクセス許可ポリシーをロールにアタッチします。

JSON
JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignPrivateIpAddresses", "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:DescribeNetworkInterfaces", "ec2:DescribeTags", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DetachNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute", "ec2:UnassignPrivateIpAddresses", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "eks-auth:AssumeRoleForPodIdentity" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] }
注記

"eks-auth:AssumeRoleForPodIdentity" アクセス許可はオプションです。EKS Pod Identity を使用する予定の場合は必須です。

SageMaker HyperPod サービスにリンクされたロール

SageMaker HyperPod での Amazon EKS サポートの場合、HyperPod は AWS マネージドポリシー: AmazonSageMakerHyperPodServiceRolePolicy を使用してサービスにリンクされたロールを作成し、ノードの交換やジョブの再起動など、EKS クラスターの回復性をモニタリングしてサポートします。

制限されたインスタンスグループ (RIG) を持つ Amazon EKS クラスターの追加 IAM ポリシー

制限されたインスタンスグループで実行されているワークロードは、Amazon S3 からデータをロードするために実行ロールに依存します。制限されたインスタンスグループで実行されているカスタマイズジョブが入力データを適切に取得できるように、実行ロールに Amazon S3 アクセス許可を追加する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-bucket-name" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", ], "Resource": [ "arn:aws:s3:::your-bucket-name/*" ] } ] }