SageMaker HyperPod 用 AWS Identity and Access Management - Amazon SageMaker

SageMaker HyperPod 用 AWS Identity and Access Management

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 リソースにタグ付けのアクセス許可を付与する」を参照してください。

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

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、AWS Systems Manager (SSM) などの必要な AWS リソースの実行と通信を引き受けるため、SageMaker HyperPod リソースに提供する IAM ロールも作成する必要があります。最後に、AWS アカウント管理者またはクラスター管理者は、SageMaker HyperPod クラスターにアクセスして ML ワークロードを実行するアクセス許可をサイエンティストに付与する必要があります。

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

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

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

Slurm
{ "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" ], "Resource": "arn:aws:sagemaker: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:DeleteClusterNodes", "eks:DescribeCluster", "eks:CreateAccessEntry", "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:AssociateAccessPolicy", "iam:CreateServiceLinkedRole" ], "Resource": "*" } ] }

SageMaker コンソールへのアクセス許可を付与するには、「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 クラスターにアクセス可能になります。

{ "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 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 ロールに次の管理ポリシーをアタッチする必要があります。

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignPrivateIpAddresses", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DetachNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute", "ec2:UnassignPrivateIpAddresses", "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 クラスターの回復性をモニタリングしてサポートします。

Amazon EKS の IAM ポリシー