Configuración del control de acceso basado en roles de Kubernetes - Amazon SageMaker AI

Configuración del control de acceso basado en roles de Kubernetes

Los usuarios administradores de clústeres también deben configurar el control de acceso basado en roles (RBAC) de Kubernetes para que los usuarios científicos de datos usen la CLI de SageMaker HyperPod para ejecutar cargas de trabajo en clústeres de HyperPod orquestados con Amazon EKS.

Opción 1: configuración de RBAC mediante el gráfico de Helm

El equipo de servicio de SageMaker HyperPod proporciona un subgráfico de Helm para configurar RBAC. Para obtener más información, consulte Instalación de paquetes en el clúster de Amazon EKS mediante Helm.

Opción 2: configuración manual de RBAC

Cree ClusterRole y ClusterRoleBinding con el mínimo de privilegios y cree Role y RoleBinding con permisos de mutación.

Creación de ClusterRole y ClusterRoleBinding para el rol de IAM de científico de datos

Cree un archivo de configuración de clúster cluster_level_config.yaml de la siguiente manera.

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

Aplique la configuración al clúster de EKS.

kubectl apply -f cluster_level_config.yaml

Creación de Role y RoleBinding en el espacio de nombres

Este es el operador de entrenamiento del espacio de nombres que ejecuta los trabajos de entrenamiento, y Resiliencia lo supervisará de forma predeterminada. La reanudación automática de trabajos solo se admite en el espacio de nombres kubeflow o en el espacio de nombres con el prefijo aws-hyperpod.

Cree un archivo de configuración de rol namespace_level_role.yaml de la siguiente manera. En este ejemplo se crea un rol en el espacio de nombres 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

Aplique la configuración al clúster de EKS.

kubectl apply -f namespace_level_role.yaml

Creación de una entrada de acceso para los grupos de Kubernetes

Tras configurar RBAC mediante una de las dos opciones anteriores, utilice el siguiente comando de ejemplo para reemplazar la información necesaria.

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

En el parámetro principal-arn, debe utilizar el Usuarios de IAM para científicos.