本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 集群,为集群管理员设置 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 角色后,记下他们的名字和 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 策略