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 创建和配置 SageMaker HyperPod 集群。EKS

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

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

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

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

    • 与CLIs支持的开源协调器 SageMaker HyperPod(Slurm 或 Kubernetes)或进行交互, 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用户的指导,请参阅《IAM用户指南》中的AWS Identity and Access Management 用户

IAM科学家的用户

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

Slurm

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

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

向数据科学家授予以下IAM角色权限以供其运行hyperpod list-clustershyperpod connect-cluster命令间的 HyperPod CLI命令。要了解更多信息 HyperPod CLI,请参阅在 Amazon 编排的 SageMaker HyperPod 集群上运行作业 EKS。它还包括连接所有资源的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 的权限,另请参阅《亚马逊用户指南》APIs中的授予IAM用户和角色访问 Kubernetes APIs 的权限。EKS

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

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

Slurm

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

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

如果您想使用自己的 Amazon Virtual Private Cloud (VPC) 而不是默认 SageMaker AIVPC,则应为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权限才能使用您的配置 SageMaker HyperPod 集群VPC。

    { "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 进行 HyperPod 编排EKS,您必须将以下托管策略附加到该角色。 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 身份,则需要这样做。

SageMaker HyperPod 服务相关角色

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

IAM针对亚马逊的政策 EKS