Gestion des identités et des accès AWS pour SageMaker HyperPod - Amazon SageMaker AI

Gestion des identités et des accès AWS pour SageMaker HyperPod

Gestion des identités et des accès AWS (IAM) est un service AWS qui aide un administrateur à contrôler en toute sécurité l’accès aux ressources AWS. Des administrateurs IAM contrôlent les personnes qui peuvent être authentifiées (connectées) et autorisées (disposant d'autorisations) pour utiliser des ressources Amazon EKS. IAM est un service AWS que vous pouvez utiliser sans frais supplémentaires.

Important

Les politiques IAM personnalisées qui autorisent Amazon SageMaker Studio ou Amazon SageMaker Studio Classic à créer des ressources Amazon SageMaker doivent également accorder des autorisations pour ajouter des balises à ces ressources. L’autorisation d’ajouter des balises aux ressources est requise, car Studio et Studio Classic balisent automatiquement toutes les ressources qu’ils créent. Si une politique IAM autorise Studio et Studio Classic à créer des ressources mais n’autorise pas le balisage, des erreurs « AccessDenied » peuvent se produire lors de la tentative de création de ressources. Pour plus d’informations, consultez Octroi d’autorisations pour baliser les ressources SageMaker AI.

Les Politiques gérées par AWS pour Amazon SageMaker AI qui autorisent la création de ressources SageMaker incluent déjà des autorisations permettant d’ajouter des balises lors de la création de ces ressources.

Supposons qu’il existe deux couches principales d’utilisateurs de SageMaker HyperPod : les administrateurs de cluster et les scientifiques des données.

  • Utilisateurs administrateurs de cluster : ils sont responsables de la création et de la gestion des clusters SageMaker HyperPod. Cela inclut la configuration des clusters HyperPod et la gestion de l’accès des utilisateurs à ceux-ci.

    • Créez et configurez des clusters SageMaker HyperPod avec Slurm ou Amazon EKS.

    • Créez et configurez des rôles IAM pour les utilisateurs scientifiques des données et les ressources des clusters HyperPod.

    • Pour l’orchestration de SageMaker HyperPod avec Amazon EKS, créez et configurez des entrées d’accès EKS, un contrôle d’accès basé sur les rôles (RBAC) et l’identité du pod pour répondre aux cas d’utilisation de science des données.

  • Utilisateurs scientifiques des données : concentrez-vous sur l’entraînement des modèles ML. Ils utilisent l’orchestrateur open source ou la CLI de SageMaker HyperPod pour soumettre et gérer les tâches d’entraînement.

    • Assumez et utilisez le rôle IAM fourni par les utilisateurs administrateurs de cluster.

    • Interagissez avec les interfaces de ligne de commande de l’orchestrateur open source pris en charge par SageMaker HyperPod (Slurm ou Kubernetes) ou l’interface de ligne de commande de SageMaker HyperPod pour vérifier la capacité des clusters, vous connecter à un cluster et soumettre des charges de travail.

Configurez des rôles IAM pour les administrateurs de clusters en attachant les autorisations ou politiques appropriées pour exploiter les clusters SageMaker HyperPod. Les administrateurs de cluster doivent également créer des rôles IAM pour fournir à SageMaker HyperPod les ressources nécessaires pour exécuter et communiquer avec les ressources AWS nécessaires, telles qu’Amazon S3, Amazon CloudWatch et AWS Systems Manager (SSM). Enfin, l’administrateur du compte AWS ou les administrateurs du cluster doivent autoriser les scientifiques à accéder aux clusters SageMaker HyperPod et à exécuter des charges de travail ML.

En fonction de l’orchestrateur que vous choisissez, les autorisations requises pour l’administrateur de cluster et les scientifiques peuvent varier. Vous pouvez également contrôler l’étendue des autorisations pour différentes actions dans les rôles à l’aide des clés de condition par service. Utilisez les références d’autorisation de service suivantes pour étendre la portée détaillée des services liés à SageMaker HyperPod.

Autorisations IAM pour la création de clusters

La création de clusters HyperPod nécessite les autorisations IAM décrites dans l’exemple de politique suivant. Si votre Compte AWS dispose des autorisations AdministratorAccess, celles-ci sont accordées par défaut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateCluster", "sagemaker:DeleteCluster", "sagemaker:UpdateCluster" ], "Resource": "arn:aws:sagemaker:*:*:cluster/*" }, { "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "arn:aws:sagemaker:*:*:cluster/*" }, { "Effect": "Allow", "Action": [ "sagemaker:ListTags", "sagemaker:ListClusters", "sagemaker:ListClusterNodes", "sagemaker:ListComputeQuotas", "sagemaker:ListTrainingPlans", "sagemaker:DescribeCluster", "sagemaker:DescribeClusterNode" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:UpdateStack", "cloudformation:DeleteStack", "cloudformation:ContinueUpdateRollback", "cloudformation:SetStackPolicy", "cloudformation:ValidateTemplate", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:Get*", "cloudformation:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/sagemaker-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "sagemaker.amazonaws.com", "eks.amazonaws.com", "lambda.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "iam:PassRole", "iam:GetRole" ], "Resource": "arn:aws:iam::*:role/*" }, { "Sid": "AmazonVPCFullAccess", "Effect": "Allow", "Action": [ "ec2:AcceptVpcPeeringConnection", "ec2:AcceptVpcEndpointConnections", "ec2:AllocateAddress", "ec2:AssignIpv6Addresses", "ec2:AssignPrivateIpAddresses", "ec2:AssociateAddress", "ec2:AssociateDhcpOptions", "ec2:AssociateRouteTable", "ec2:AssociateSecurityGroupVpc", "ec2:AssociateSubnetCidrBlock", "ec2:AssociateVpcCidrBlock", "ec2:AttachClassicLinkVpc", "ec2:AttachInternetGateway", "ec2:AttachNetworkInterface", "ec2:AttachVpnGateway", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateCarrierGateway", "ec2:CreateCustomerGateway", "ec2:CreateDefaultSubnet", "ec2:CreateDefaultVpc", "ec2:CreateDhcpOptions", "ec2:CreateEgressOnlyInternetGateway", "ec2:CreateFlowLogs", "ec2:CreateInternetGateway", "ec2:CreateLocalGatewayRouteTableVpcAssociation", "ec2:CreateNatGateway", "ec2:CreateNetworkAcl", "ec2:CreateNetworkAclEntry", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateTags", "ec2:CreateVpc", "ec2:CreateVpcEndpoint", "ec2:CreateVpcEndpointConnectionNotification", "ec2:CreateVpcEndpointServiceConfiguration", "ec2:CreateVpcPeeringConnection", "ec2:CreateVpnConnection", "ec2:CreateVpnConnectionRoute", "ec2:CreateVpnGateway", "ec2:DeleteCarrierGateway", "ec2:DeleteCustomerGateway", "ec2:DeleteDhcpOptions", "ec2:DeleteEgressOnlyInternetGateway", "ec2:DeleteFlowLogs", "ec2:DeleteInternetGateway", "ec2:DeleteLocalGatewayRouteTableVpcAssociation", "ec2:DeleteNatGateway", "ec2:DeleteNetworkAcl", "ec2:DeleteNetworkAclEntry", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DeleteSecurityGroup", "ec2:DeleteSubnet", "ec2:DeleteTags", "ec2:DeleteVpc", "ec2:DeleteVpcEndpoints", "ec2:DeleteVpcEndpointConnectionNotifications", "ec2:DeleteVpcEndpointServiceConfigurations", "ec2:DeleteVpcPeeringConnection", "ec2:DeleteVpnConnection", "ec2:DeleteVpnConnectionRoute", "ec2:DeleteVpnGateway", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeCarrierGateways", "ec2:DescribeClassicLinkInstances", "ec2:DescribeCustomerGateways", "ec2:DescribeDhcpOptions", "ec2:DescribeEgressOnlyInternetGateways", "ec2:DescribeFlowLogs", "ec2:DescribeInstances", "ec2:DescribeInternetGateways", "ec2:DescribeIpv6Pools", "ec2:DescribeLocalGatewayRouteTables", "ec2:DescribeLocalGatewayRouteTableVpcAssociations", "ec2:DescribeKeyPairs", "ec2:DescribeMovingAddresses", "ec2:DescribeNatGateways", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DescribeNetworkInterfacePermissions", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroupReferences", "ec2:DescribeSecurityGroupRules", "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupVpcAssociations", "ec2:DescribeStaleSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcClassicLinkDnsSupport", "ec2:DescribeVpcEndpointConnectionNotifications", "ec2:DescribeVpcEndpointConnections", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServiceConfigurations", "ec2:DescribeVpcEndpointServicePermissions", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeVpcs", "ec2:DescribeVpnConnections", "ec2:DescribeVpnGateways", "ec2:DetachClassicLinkVpc", "ec2:DetachInternetGateway", "ec2:DetachNetworkInterface", "ec2:DetachVpnGateway", "ec2:DisableVgwRoutePropagation", "ec2:DisableVpcClassicLink", "ec2:DisableVpcClassicLinkDnsSupport", "ec2:DisassociateAddress", "ec2:DisassociateRouteTable", "ec2:DisassociateSecurityGroupVpc", "ec2:DisassociateSubnetCidrBlock", "ec2:DisassociateVpcCidrBlock", "ec2:EnableVgwRoutePropagation", "ec2:EnableVpcClassicLink", "ec2:EnableVpcClassicLinkDnsSupport", "ec2:GetSecurityGroupsForVpc", "ec2:ModifyNetworkInterfaceAttribute", "ec2:ModifySecurityGroupRules", "ec2:ModifySubnetAttribute", "ec2:ModifyVpcAttribute", "ec2:ModifyVpcEndpoint", "ec2:ModifyVpcEndpointConnectionNotification", "ec2:ModifyVpcEndpointServiceConfiguration", "ec2:ModifyVpcEndpointServicePermissions", "ec2:ModifyVpcPeeringConnectionOptions", "ec2:ModifyVpcTenancy", "ec2:MoveAddressToVpc", "ec2:RejectVpcEndpointConnections", "ec2:RejectVpcPeeringConnection", "ec2:ReleaseAddress", "ec2:ReplaceNetworkAclAssociation", "ec2:ReplaceNetworkAclEntry", "ec2:ReplaceRoute", "ec2:ReplaceRouteTableAssociation", "ec2:ResetNetworkInterfaceAttribute", "ec2:RestoreAddressToClassic", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:UnassignIpv6Addresses", "ec2:UnassignPrivateIpAddresses", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress" ], "Resource": "*" }, { "Sid": "CloudWatchPermissions", "Effect": "Allow", "Action": [ "cloudwatch:*", "logs:*", "sns:CreateTopic", "sns:ListSubscriptions", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "sns:Subscribe", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "oam:ListSinks", "rum:*", "synthetics:*", "xray:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:PutBucketPolicy", "s3:PutBucketTagging", "s3:PutBucketPublicAccessBlock", "s3:PutBucketLogging", "s3:DeleteBucketPolicy", "s3:PutObject", "s3:DeleteObject", "s3:PutEncryptionConfiguration", "s3:AbortMultipartUpload", "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::*", "arn:aws:s3:::*/*" ] }, { "Effect": "Allow", "Action": [ "eks:CreateCluster", "eks:DeleteCluster", "eks:CreateNodegroup", "eks:DeleteNodegroup", "eks:UpdateNodegroupConfig", "eks:UpdateNodegroupVersion", "eks:UpdateClusterConfig", "eks:UpdateClusterVersion", "eks:CreateFargateProfile", "eks:DeleteFargateProfile", "eks:CreateAddon", "eks:DeleteAddon", "eks:UpdateAddon", "eks:CreateAccessEntry", "eks:DeleteAccessEntry", "eks:UpdateAccessEntry", "eks:AssociateAccessPolicy", "eks:AssociateIdentityProviderConfig", "eks:DisassociateIdentityProviderConfig", "eks:TagResource", "eks:UntagResource", "eks:AccessKubernetesApi", "eks:Describe*", "eks:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "sagemaker.*.amazonaws.com", "ec2.*.amazonaws.com", "s3.*.amazonaws.com", "eks.*.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration", "lambda:AddPermission", "lambda:RemovePermission", "lambda:PublishLayerVersion", "lambda:DeleteLayerVersion", "lambda:InvokeFunction", "lambda:Get*", "lambda:List*", "lambda:TagResource" ], "Resource": [ "arn:aws:lambda:*:*:function:*", "arn:aws:lambda:*:*:layer:*" ] }, { "Effect": "Allow", "Action": [ "iam:DeleteRole", "iam:DeleteRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/*sagemaker*", "arn:aws:iam::*:role/*eks*", "arn:aws:iam::*:role/*hyperpod*", "arn:aws:iam::*:policy/*sagemaker*", "arn:aws:iam::*:policy/*hyperpod*", "arn:aws:iam::*:role/*LifeCycleScriptStack*", "arn:aws:iam::*:role/*LifeCycleScript*" ] }, { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:TagRole", "iam:PutRolePolicy", "iam:Get*", "iam:List*", "iam:AttachRolePolicy", "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/*", "arn:aws:iam::*:policy/*" ] }, { "Sid": "FullAccessToFSx", "Effect": "Allow", "Action": [ "fsx:AssociateFileGateway", "fsx:AssociateFileSystemAliases", "fsx:CancelDataRepositoryTask", "fsx:CopyBackup", "fsx:CopySnapshotAndUpdateVolume", "fsx:CreateAndAttachS3AccessPoint", "fsx:CreateBackup", "fsx:CreateDataRepositoryAssociation", "fsx:CreateDataRepositoryTask", "fsx:CreateFileCache", "fsx:CreateFileSystem", "fsx:CreateFileSystemFromBackup", "fsx:CreateSnapshot", "fsx:CreateStorageVirtualMachine", "fsx:CreateVolume", "fsx:CreateVolumeFromBackup", "fsx:DetachAndDeleteS3AccessPoint", "fsx:DeleteBackup", "fsx:DeleteDataRepositoryAssociation", "fsx:DeleteFileCache", "fsx:DeleteFileSystem", "fsx:DeleteSnapshot", "fsx:DeleteStorageVirtualMachine", "fsx:DeleteVolume", "fsx:DescribeAssociatedFileGateways", "fsx:DescribeBackups", "fsx:DescribeDataRepositoryAssociations", "fsx:DescribeDataRepositoryTasks", "fsx:DescribeFileCaches", "fsx:DescribeFileSystemAliases", "fsx:DescribeFileSystems", "fsx:DescribeS3AccessPointAttachments", "fsx:DescribeSharedVpcConfiguration", "fsx:DescribeSnapshots", "fsx:DescribeStorageVirtualMachines", "fsx:DescribeVolumes", "fsx:DisassociateFileGateway", "fsx:DisassociateFileSystemAliases", "fsx:ListTagsForResource", "fsx:ManageBackupPrincipalAssociations", "fsx:ReleaseFileSystemNfsV3Locks", "fsx:RestoreVolumeFromSnapshot", "fsx:TagResource", "fsx:UntagResource", "fsx:UpdateDataRepositoryAssociation", "fsx:UpdateFileCache", "fsx:UpdateFileSystem", "fsx:UpdateSharedVpcConfiguration", "fsx:UpdateSnapshot", "fsx:UpdateStorageVirtualMachine", "fsx:UpdateVolume" ], "Resource": "*" } ] }

Utilisateurs IAM pour l’administrateur de cluster

Les administrateurs de clusters (administrateurs) exploitent et configurent des clusters SageMaker HyperPod, en effectuant les tâches dans Opérations du cluster SageMaker HyperPod Slurm. L’exemple de politique suivant inclut l’ensemble minimal d’autorisations permettant aux administrateurs de clusters d’exécuter les API principales de SageMaker HyperPod et de gérer les clusters SageMaker HyperPod au sein de votre compte AWS.

Note

Les utilisateurs IAM dotés de rôles d’administrateur de cluster peuvent utiliser des clés de condition pour fournir un contrôle d’accès précis lors de la gestion des ressources de cluster SageMaker HyperPod spécifiquement pour les actions CreateCluster et UpdateCluster. Pour trouver les clés de condition prises en charge pour ces actions, recherchez CreateCluster ou UpdateCluster dans les actions définies par SageMaker AI.

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:us-east-1:111122223333: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:BatchAddClusterNodes", "sagemaker:BatchDeleteClusterNodes", "sagemaker:ListComputeQuotas", "sagemaker:ListClusterSchedulerConfig", "sagemaker:DeleteClusterSchedulerConfig", "sagemaker:DeleteComputeQuota", "eks:DescribeCluster", "eks:CreateAccessEntry", "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:AssociateAccessPolicy", "iam:CreateServiceLinkedRole" ], "Resource": "*" } ] }

Pour accorder des autorisations d’accès à la console SageMaker AI, utilisez l’exemple de politique fourni dans Autorisations requises pour utiliser la console Amazon SageMaker AI.

Pour accorder des autorisations d’accès à la console Amazon EC2 Systems Manager, utilisez l’exemple de politique fourni dans Utilisation de la console AWS Systems Manager dans le Guide de l’utilisateur AWS Systems Manager.

Vous pouvez également envisager d’attacher la politique AmazonSageMakerFullAccess au rôle ; toutefois, notez que la politique AmazonSageMakerFullAccess accorde des autorisations à l’ensemble des appels d’API, des fonctionnalités et des ressources SageMaker.

Pour obtenir des conseils sur les utilisateurs IAM en général, consultez Utilisateurs IAM dans le Guide de l’utilisateur Gestion des identités et des accès AWS.

Utilisateurs IAM pour les scientifiques

Les scientifiques se connectent et exécutent des charges de travail ML sur les nœuds des clusters SageMaker HyperPod provisionnés par les administrateurs des clusters. Pour les scientifiques de votre compte AWS, vous devez accorder l’autorisation "ssm:StartSession" d’exécuter la commande SSM start-session. Vous trouverez ci-dessous un exemple de politique pour les utilisateurs IAM.

Slurm

Ajoutez la politique suivante pour accorder des autorisations de session SSM pour se connecter à une cible SSM pour toutes les ressources. Cela vous permet d’accéder aux clusters HyperPod.

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

Accordez les autorisations de rôle IAM suivantes aux scientifiques des données pour qu’ils puissent exécuter les commandes hyperpod list-clusters et hyperpod connect-cluster parmi les commandes de la CLI HyperPod. Pour plus d’informations sur l’interface de ligne de commande HyperPod, consultez Exécution de tâches sur des clusters SageMaker HyperPod orchestrés par Amazon EKS. Elle inclut également les autorisations de session SSM pour se connecter à une cible SSM pour toutes les ressources. Cela vous permet d’accéder aux clusters 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": "*" } ] }

Pour accorder aux utilisateurs ou aux rôles IAM des scientifiques de données l’accès aux API Kubernetes dans le cluster, consultez également Autorisation des utilisateurs et des rôles IAM à accéder aux API Kubernetes dans le Guide de l’utilisateur Amazon EKS.

Rôle IAM pour SageMaker HyperPod

Pour que les clusters SageMaker HyperPod puissent s’exécuter et communiquer avec les ressources AWS nécessaires, vous devez créer un rôle IAM que le cluster HyperPod doit assumer.

Commencez par attacher le rôle géré Politique gérée par AWS : AmazonSageMakerHyperPodServiceRolePolicy. Dans le cadre de cette politique gérée par AWS, les groupes d’instances de cluster SageMaker HyperPod assument le rôle de communiquer avec Amazon CloudWatch, Amazon S3 et l’agent AWS Systems Manager (agent SSM). Cette politique gérée est l’exigence minimale requise pour que les ressources SageMaker HyperPod fonctionnent correctement. Vous devez donc fournir un rôle IAM avec cette politique à tous les groupes d’instances.

Astuce

En fonction de vos préférences en matière de conception du niveau d’autorisations pour plusieurs groupes d’instances, vous pouvez également configurer plusieurs rôles IAM et les attacher à différents groupes d’instances. Lorsque vous configurez l’accès des utilisateurs de votre cluster à des nœuds de cluster SageMaker HyperPod spécifiques, les nœuds assument le rôle avec les autorisations sélectives que vous avez attachées manuellement.

Lorsque vous configurez l’accès des scientifiques à des nœuds de cluster spécifiques via AWS Systems Manager (voir également Configuration d’AWS Systems Manager et de l’option Exécuter en tant que pour le contrôle d’accès des utilisateurs du cluster), les nœuds de cluster assument le rôle avec les autorisations sélectives que vous attachez manuellement.

Une fois que vous avez terminé de créer des rôles IAM, notez leurs noms et leurs ARN. Vous utilisez les rôles lors de la création d’un cluster SageMaker HyperPod, en accordant les autorisations appropriées requises pour que chaque groupe d’instances communique avec les ressources AWS nécessaires.

Slurm

Pour HyperPod orchestré avec Slurm, vous devez attacher la politique gérée suivante au rôle IAM de SageMaker HyperPod.

(Facultatif) Autorisations supplémentaires pour utiliser SageMaker HyperPod avec Amazon Virtual Private Cloud

Si vous souhaitez utiliser votre propre cloud privé Amazon Virtual Private Cloud (VPC) au lieu du VPC SageMaker AI par défaut, vous devez ajouter les autorisations supplémentaires suivantes au rôle IAM pour 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/*" ] }

La liste suivante énumère les autorisations nécessaires pour activer les fonctionnalités de cluster SageMaker HyperPod lorsque vous configurez le cluster avec votre propre réseau Amazon VPC.

  • Les autorisations ec2 suivantes sont requises pour configurer un cluster SageMaker HyperPod avec votre VPC.

    { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }
  • L’autorisation ec2 suivante est requise pour activer la fonctionnalité de reprise automatique de SageMaker HyperPod.

    { "Effect": "Allow", "Action": [ "ec2:DetachNetworkInterface" ], "Resource": "*" }
  • L’autorisation ec2 suivante permet à SageMaker HyperPod de créer des balises sur les interfaces réseau de votre compte.

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

Pour HyperPod orchestré avec Amazon EKS, vous devez attacher les politiques gérées suivantes au rôle IAM de SageMaker HyperPod.

Outre les politiques gérées, attachez la politique d’autorisations suivante au rôle.

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/*" ] } ] }
Note

L’autorisation "eks-auth:AssumeRoleForPodIdentity" est facultative. Elle est requise si vous prévoyez d’utiliser l’identité du pod EKS.

Rôle lié au service SageMaker HyperPod

Pour la prise en charge d’Amazon EKS dans SageMaker HyperPod, HyperPod crée un rôle lié au service avec Politique gérée par AWS : AmazonSageMakerHyperPodServiceRolePolicy afin de surveiller et de prendre en charge la résilience sur votre cluster EKS, par exemple en remplaçant des nœuds et en redémarrant des tâches.

Politiques IAM supplémentaires pour le cluster Amazon EKS avec groupe d’instances restreint (RIG)

Les charges de travail exécutées dans des groupes d’instances restreints s’appuient sur le rôle d’exécution pour charger les données à partir d’Amazon S3. Vous devez ajouter les autorisations Amazon S3 supplémentaires au rôle d’exécution afin que les tâches de personnalisation exécutées dans les groupes d’instances restreints puissent récupérer correctement les données d’entrée.

{ "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/*" ] } ] }