Configuration du contrôle d’accès basé sur les rôles Kubernetes - Amazon SageMaker AI

Configuration du contrôle d’accès basé sur les rôles Kubernetes

Les utilisateurs administrateurs de clusters doivent également configurer le contrôle d’accès basé sur les rôles (RBAC) Kubernetes pour que les utilisateurs scientifiques des données puissent utiliser l’interface CLI SageMaker HyperPod pour exécuter des charges de travail sur les clusters HyperPod orchestrés avec Amazon EKS.

Option 1 : Configuration de RBAC à l’aide des Charts de Helm

L’équipe de service SageMaker HyperPod fournit un sous-graphique Helm pour configurer RBAC. Pour en savoir plus, consultez Installation de packages sur le cluster Amazon EKS à l’aide de Helm.

Option 2 : Configuration manuelle de RBAC

Créez ClusterRole et ClusterRoleBinding avec le privilège minimum, et créez Role et RoleBinding avec des autorisations de mutation.

Pour créer ClusterRole et ClusterRoleBinding pour le rôle IAM de scientifique des données

Créez un fichier de configuration cluster_level_config.yaml au niveau du cluster comme suit.

kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: hyperpod-scientist-user-cluster-role rules: - apiGroups: [""] resources: ["pods"] verbs: ["list"] - apiGroups: [""] resources: ["nodes"] verbs: ["list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: hyperpod-scientist-user-cluster-role-binding subjects: - kind: Group name: hyperpod-scientist-user-cluster-level apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: hyperpod-scientist-user-cluster-role # this must match the name of the Role or ClusterRole you wish to bind to apiGroup: rbac.authorization.k8s.io

Appliquez la configuration au cluster EKS.

kubectl apply -f cluster_level_config.yaml

Pour créer Role et RoleBinding dans l’espace de noms

Il s’agit des opérateurs d’entraînement de l’espace de noms qui exécutent les tâches d’entraînement et Resiliency surveillera par défaut. La reprise automatique des tâches peut être prise en charge uniquement dans l’espace de noms kubeflow ou dans l’espace de noms préfixé par aws-hyperpod.

Créez un fichier de configuration de rôle namespace_level_role.yaml comme suit. Cet exemple crée un rôle dans l’espace de noms kubeflow.

kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: kubeflow name: hyperpod-scientist-user-namespace-level-role ### # 1) add/list/describe/delete pods # 2) get/list/watch/create/patch/update/delete/describe kubeflow pytroch job # 3) get pod log ### rules: - apiGroups: [""] resources: ["pods"] verbs: ["create", "get"] - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list"] - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["get", "create"] - apiGroups: ["kubeflow.org"] resources: ["pytorchjobs", "pytorchjobs/status"] verbs: ["get", "list", "create", "delete", "update", "describe"] - apiGroups: [""] resources: ["configmaps"] verbs: ["create", "update", "get", "list", "delete"] - apiGroups: [""] resources: ["secrets"] verbs: ["create", "get", "list", "delete"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: kubeflow name: hyperpod-scientist-user-namespace-level-role-binding subjects: - kind: Group name: hyperpod-scientist-user-namespace-level apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: hyperpod-scientist-user-namespace-level-role # this must match the name of the Role or ClusterRole you wish to bind to apiGroup: rbac.authorization.k8s.io

Appliquez la configuration au cluster EKS.

kubectl apply -f namespace_level_role.yaml

Création d’une entrée d’accès pour les groupes Kubernetes

Après avoir configuré RBAC à l’aide de l’une des deux options ci-dessus, utilisez l’exemple de commande suivant pour remplacer les informations nécessaires.

aws eks create-access-entry \ --cluster-name <eks-cluster-name> \ --principal-arn arn:aws:iam::<AWS_ACCOUNT_ID_SCIENTIST_USER>:role/ScientistUserRole \ --kubernetes-groups '["hyperpod-scientist-user-namespace-level","hyperpod-scientist-user-cluster-level"]'

Pour le paramètre principal-arn, vous devez utiliser les Utilisateurs IAM pour les scientifiques.