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

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.

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

Les administrateurs de clusters doivent également configurer le contrôle d'accès basé sur les rôles de Kubernetes (RBAC) pour que les utilisateurs de data scientists puissent l'utiliser pour exécuter des charges de travail sur des clusters SageMaker HyperPod CLIorchestrés avec Amazon. HyperPod EKS

Option 1 : Configuration à RBAC l'aide du graphique Helm

L'équipe SageMaker HyperPod de service fournit un sous-graphique Helm pour la configuration. RBAC Pour en savoir plus, consultez Installer des packages sur le EKS cluster Amazon à l'aide de Helm.

Option 2 : configurer RBAC manuellement

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 IAM rôle de data scientist

Créez un fichier cluster_level_config.yaml de configuration 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 EKS cluster.

kubectl apply -f cluster_level_config.yaml

Pour créer un rôle et RoleBinding dans un espace de noms

Il s'agit de l'opérateur de formation à l'espace de noms qui exécute les tâches de formation et Resiliency surveillera par défaut. La reprise automatique des tâches ne peut être prise en charge que dans un espace de kubeflow noms ou dans un espace de noms préfixé. 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 kubeflow noms

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 EKS cluster.

kubectl apply -f namespace_level_role.yaml

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

Après avoir effectué la configuration à 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 principal-arn paramètre, vous devez utiliser leIAMutilisateurs pour les scientifiques.