Configurazione del controllo degli accessi basato su ruoli Kubernetes - Amazon SageMaker AI

Configurazione del controllo degli accessi basato su ruoli Kubernetes

Gli utenti amministratori del cluster devono configurare il controllo degli accessi basato su ruoli (RBAC) di Kubernetes anche per consentire agli utenti Data Scientist di utilizzare la CLI di SageMaker HyperPod per eseguire carichi di lavoro su cluster HyperPod orchestrati con Amazon EKS.

Opzione 1: configurazione di RBAC con un grafico Helm

Il team di assistenza SageMaker HyperPod fornisce un grafico secondario Helm per configurare RBAC. Per ulteriori informazioni, consulta Installazione di pacchetti sul cluster Amazon EKS con Helm.

Opzione 2: configurazione manuale di RBAC

Crea ClusterRole e ClusterRoleBinding con privilegi minimi e Role e RoleBinding con autorizzazioni di mutazione.

Per creare ClusterRole e ClusterRoleBinding per il ruolo IAM di Data Scientist

Crea un file di configurazione a livello di cluster cluster_level_config.yaml come segue.

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

Applica la configurazione al cluster EKS.

kubectl apply -f cluster_level_config.yaml

Per creare Role e RoleBinding nel namespace

Questo è l’operatore di addestramento del namespace monitorato per impostazione predefinita dai job di addestramento eseguiti e da Resiliency. La funzionalità di ripresa automatica del processo è supportata solo nel namespace kubeflow o nel namespace con prefisso aws-hyperpod.

Crea un file di configurazione del ruolo namespace_level_role.yaml come segue. Questo esempio crea un ruolo nel namespace 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

Applica la configurazione al cluster EKS.

kubectl apply -f namespace_level_role.yaml

Creazione di una voce di accesso per i gruppi Kubernetes

Dopo aver configurato RBAC con una delle due opzioni precedenti, utilizza il comando di esempio seguente sostituendo le informazioni necessarie.

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"]'

Per il parametro principal-arn è necessario utilizzare Utenti IAM per Data Scientist.