AWS Identity and Access Management 对于 SageMaker HyperPod - 亚马逊 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 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。之所以需要为资源添加标签的权限,是因为 Studio 和 Studio Classic 会自动为创建的任何资源添加标签。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供标记 A SageMaker I 资源的权限

AWS 亚马逊 A SageMaker I 的托管策略授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

假设 SageMaker HyperPod 用户主要分为两层:集群管理员用户数据科学家用户

  • 集群管理员用户-负责创建和管理 SageMaker HyperPod 集群。这包括配置 HyperPod 集群和管理用户对集群的访问权限。

    • 使用 Slurm 或 Amazon EKS 创建和配置 SageMaker HyperPod 集群。

    • 为数据科学家用户和 HyperPod 集群资源创建和配置 IAM 角色。

    • 要使用 Amazon EKS 进行 SageMaker HyperPod 编排,请创建和配置 EKS 访问条目基于角色的访问控制 (RBAC) 和 Pod Identity 以满足数据科学用例。

  • 数据科学家用户:专注于 ML 模型训练。他们使用开源协调器或 CL SageMaker HyperPod I 来提交和管理训练作业。

    • 假设并使用集群管理员用户提供的 IAM 角色。

    • 与 SageMaker HyperPod(Slurm 或 Kubernetes) CLIs 支持的开源协调器或 SageMaker HyperPod CLI 进行交互,以检查集群容量、连接到集群并提交工作负载。

通过附加正确的权限或策略来操作 SageMaker HyperPod 集群,为集群管理员设置 IAM 角色。集群管理员还应创建 IAM 角色以提供给 SageMaker HyperPod 资源,让其假设运行并与必要的 AWS 资源(例如 Amazon S3、Amazon 和 AWS Systems Manager (SSM))进行通信。 CloudWatch最后, AWS 账户管理员或集群管理员应向科学家授予访问集 SageMaker HyperPod 群和运行机器学习工作负载的权限。

根据您选择的编排工具,集群管理员和科学家所需的权限可能会有所不同。您还可以使用每个服务的条件键来控制角色中各种操作的权限范围。使用以下服务授权参考为与之相关的服务添加详细范围 SageMaker HyperPod。

集群管理员的 IAM 用户

集群管理员(管理员)操作和配置 SageMaker HyperPod 集群,执行中的任务。SageMaker HyperPod 操作以下策略示例包括集群管理员在您的 AWS 账户中运行 SageMaker HyperPod 核心 APIs 和管理 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", "sagemaker:BatchDeleteClusterNodes" ], "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:BatchDeleteClusterNodes", "eks:DescribeCluster", "eks:CreateAccessEntry", "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:AssociateAccessPolicy", "iam:CreateServiceLinkedRole" ], "Resource": "*" } ] }

要授予访问 SageMaker AI 控制台的权限,请使用使用 A mazon A SageMaker I 控制台所需的权限中提供的示例策略。

要授予访问 Amazon S EC2 ystems Manager 控制台的权限,请使用 AWS Systems Manager 用户指南中使用 AWS Systems Manager 控制台中提供的示例策略。

您也可以考虑将AmazonSageMakerFullAccess策略附加到该角色;但是,请注意,该AmazonSageMakerFullAccess策略授予对整个 SageMaker API 调用、功能和资源的权限。

有关 IAM 用户的一般指导,请参阅《AWS Identity and Access Management 用户指南》中的 IAM 用户

科学家的 IAM 用户

科学家在集群管理员配置的 SageMaker HyperPod 集群节点上登录并运行机器学习工作负载。对于您 AWS 账户中的科学家,您应授"ssm:StartSession"予运行 SSM start-session 命令的权限。以下是 IAM 用户的策略示例。

Slurm

添加以下策略,授予 SSM 会话连接到所有资源的 SSM 目标的权限。这允许您访问 HyperPod集群。

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

授予以下 IAM 角色权限供数据科学家运行hyperpod list-clusters和 HyperPod CLI 命令之间的hyperpod connect-cluster命令。要了解有关 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 的访问权限,另请参阅 Amazon EKS 用户指南 APIs 中的授予 IAM 用户和角色访问 Kubernetes APIs 的权限。

的 IAM 角色适用于 SageMaker HyperPod

为了使 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 和运行方式)设置科学家对特定集群节点的访问权限时,集群节点会根据您手动附加的选择性权限承担角色。

创建 IAM 角色后,记下他们的名字和 ARNs。您在创建 SageMaker HyperPod 集群时使用这些角色,授予每个实例组与必要 AWS 资源通信所需的正确权限。

Slurm

要使用 Slurm 进行 HyperPod 编排,您必须将以下托管策略附加到 IAM 角色。 SageMaker HyperPod

(可选)用于亚马逊 Virtual Priv SageMaker HyperPod ate Cloud 的额外权限

如果您想使用自己的亚马逊虚拟私有云 (VPC) 而不是默认 SageMaker AI VPC,则应向 IAM 角色添加以下额外权限。 SageMaker HyperPod

{ "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 集群时需要哪些权限才能启用集群功能。

  • 需要以下ec2权限才能使用您的 VPC 配置 SageMaker HyperPod 集群。

    { "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 容器组身份,则必须使用该功能。

SageMaker HyperPod 服务相关角色

要获得中的 Amazon EKS 支持 SageMaker HyperPod,AWS 托管策略: AmazonSageMakerHyperPodServiceRolePolicy请使用 HyperPod 创建一个服务相关角色来监控和支持 EKS 集群的弹性,例如更换节点和重启作业。

适用于 Amazon EKS 的 IAM 策略