View a markdown version of this page

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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Gestion des identités et des accès AWS (IAM) est un AWS service qui aide un administrateur à contrôler en toute sécurité l'accès aux AWS ressources. 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 AWS service que vous pouvez utiliser sans frais supplémentaires.

Important

Les politiques IAM personnalisées qui permettent à Amazon SageMaker Studio ou Amazon SageMaker Studio Classic de créer SageMaker des ressources Amazon doivent également autoriser l'ajout de 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 peuvent se produire lors de la tentative de création de ressources. AccessDenied Pour de plus amples informations, veuillez consulter Fournir des autorisations pour le balisage des ressources d' SageMaker IA.

AWS politiques gérées pour Amazon SageMaker AIqui accordent des autorisations pour créer des SageMaker ressources incluent déjà des autorisations pour ajouter des balises lors de la création de ces ressources.

Supposons qu'il existe deux couches principales d' SageMaker HyperPod utilisateurs : les administrateurs du cluster et les utilisateurs des data scientists.

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

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

    • Créez et configurez des rôles IAM pour les utilisateurs des data scientists et les ressources HyperPod du cluster.

    • Pour l' SageMaker HyperPod orchestration 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 Pod Identity pour répondre aux cas d'utilisation de la 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 SageMaker HyperPod CLI pour soumettre et gérer les tâches de formation.

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

    • Interagissez avec les interfaces de ligne de commande open source prises en charge par SageMaker HyperPod (Slurm ou Kubernetes) ou avec la SageMaker HyperPod CLI pour vérifier la capacité des clusters, vous connecter au cluster et soumettre des charges de travail.

Configurez des rôles IAM pour les administrateurs de clusters en leur attribuant les autorisations ou les politiques appropriées pour faire fonctionner SageMaker HyperPod les clusters. Les administrateurs de cluster doivent également créer des rôles IAM à fournir aux SageMaker HyperPod ressources nécessaires à l'exécution et à la communication avec les AWS ressources nécessaires, telles qu'Amazon S3 CloudWatch, Amazon et AWS Systems Manager (SSM). Enfin, l'administrateur du AWS compte ou les administrateurs du cluster doivent autoriser les scientifiques à accéder aux SageMaker HyperPod clusters et à exécuter des charges de travail de machine learning.

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 ajouter une étendue détaillée aux services associés à SageMaker HyperPod.

Autorisations IAM pour la création de clusters

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

JSON
{ "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/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "sagemaker.amazonaws.com", "eks.amazonaws.com", "lambda.amazonaws.com", "cloudformation.amazonaws.com" ] } } }, { "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 les SageMaker HyperPod clusters, en effectuant les tâches dansSageMaker HyperPod Opérations du cluster Slurm. L'exemple de politique suivant inclut l'ensemble minimum d'autorisations permettant aux administrateurs de clusters d'exécuter les API SageMaker HyperPod principales et de gérer les SageMaker HyperPod clusters au sein de votre AWS compte.

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 granulaire lors de la gestion des ressources du SageMaker HyperPod cluster spécifiquement pour les actions CreateCluster etUpdateCluster. Pour trouver les clés de condition prises en charge pour ces actions, recherchez CreateCluster ou UpdateCluster dans les Actions définies par l' SageMaker IA.

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:us-east-1:111122223333:cluster/*" } ] }
Amazon EKS
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/execution-role-name" }, { "Effect": "Allow", "Action": [ "sagemaker:CreateCluster", "sagemaker:DeleteCluster", "sagemaker:DescribeCluster", "sagemaker:DescribeClusterNode", "sagemaker:ListClusterNodes", "sagemaker:ListClusters", "sagemaker:UpdateCluster", "sagemaker:UpdateClusterSoftware", "sagemaker:BatchAddClusterNodes", "sagemaker:BatchDeleteClusterNodes", "sagemaker:ListComputeQuotas", "sagemaker:ListClusterSchedulerConfigs", "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 la section Utilisation de la AWS Systems Manager console du Guide de l' AWS Systems Manager utilisateur.

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

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 de machine learning sur des nœuds de SageMaker HyperPod cluster provisionnés par les administrateurs du cluster. Pour les scientifiques de votre AWS compte, vous devez autoriser l'exécution "ssm:StartSession" de la start-session commande SSM. 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 à HyperPod des clusters.

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 data scientists pour exécuter des hyperpod connect-cluster commandes hyperpod list-clusters et des commandes parmi les commandes de l' HyperPod interface de ligne de commande. Pour en savoir plus sur la HyperPod CLI, consultezExécution de tâches sur SageMaker HyperPod des clusters 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 à HyperPod des clusters.

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DescribeHyerpodClusterPermissions", "Effect": "Allow", "Action": [ "sagemaker:DescribeCluster" ], "Resource": "arn:aws:sagemaker:us-east-2:111122223333:cluster/hyperpod-cluster-name" }, { "Sid": "UseEksClusterPermissions", "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:sagemaker:us-east-2:111122223333:cluster/eks-cluster-name" }, { "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 SageMaker HyperPod clusters puissent s'exécuter et communiquer avec AWS les ressources nécessaires, vous devez créer un rôle IAM à assumer par le HyperPod cluster.

Commencez par attacher le rôle géré AWS stratégie gérée : AmazonSageMakerHyperPodServiceRolePolicy. Dans le cadre de cette politique AWS gérée, les groupes d'instances de SageMaker HyperPod cluster ont pour rôle de communiquer avec Amazon CloudWatch, Amazon S3 et AWS Systems Manager l'agent (agent SSM). Cette stratégie gérée constitue la configuration minimale requise pour que les SageMaker HyperPod ressources fonctionnent correctement. Vous devez donc attribuer 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 utilisateur de votre cluster à des nœuds de SageMaker HyperPod cluster 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 AWS Systems Manager et Exécuter en tant que pour le contrôle d'accès des utilisateurs au 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 SageMaker HyperPod cluster, en accordant les autorisations appropriées requises pour que chaque groupe d'instances communique avec les AWS ressources nécessaires.

Slurm

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

(Facultatif) Autorisations supplémentaires pour l'utilisation SageMaker HyperPod avec Amazon Virtual Private Cloud

Si vous souhaitez utiliser votre propre 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 indique les autorisations nécessaires pour activer les fonctionnalités SageMaker HyperPod du cluster lorsque vous configurez le cluster avec votre propre Amazon VPC.

  • Les ec2 autorisations suivantes sont requises pour activer la configuration d'un SageMaker HyperPod cluster 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'ec2autorisation suivante est requise pour activer la fonctionnalité de SageMaker HyperPod reprise automatique.

    { "Effect": "Allow", "Action": [ "ec2:DetachNetworkInterface" ], "Resource": "*" }
  • L'ec2autorisation 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 orchestrer avec Amazon EKS, vous devez associer les politiques gérées suivantes au rôle SageMaker HyperPod IAM.

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.

SageMaker HyperPod rôle lié à un service

Pour le support Amazon EKS en SageMaker HyperPod, HyperPod crée un rôle lié AWS stratégie gérée : AmazonSageMakerHyperPodServiceRolePolicy à un service chargé de surveiller et de soutenir la résilience de 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.

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }