Einrichten der rollenbasierten Zugriffskontrolle für Kubernetes - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Einrichten der rollenbasierten Zugriffskontrolle für Kubernetes

Cluster-Administratoren müssen außerdem die rollenbasierte Zugriffskontrolle (RBAC) von Kubernetes einrichten, damit Data-Scientist-Benutzer die SageMaker HyperPod CLI verwenden können, um Workloads auf Clustern auszuführen, die mit Amazon EKS orchestriert wurden. HyperPod

Option 1: RBAC mithilfe von Helm-Chart einrichten

Das SageMaker HyperPod Serviceteam stellt ein Helm-Subdiagramm für die Einrichtung von RBAC zur Verfügung. Weitere Informationen hierzu finden Sie unter Installation von Paketen auf dem Amazon-EKS-Cluster mit Helm.

Option 2: RBAC manuell einrichten

Erstellen Sie ClusterRole und ClusterRoleBinding mit den Mindestberechtigungen und erstellen Sie Role und RoleBinding mit Mutationsberechtigungen.

So erstellen Sie ClusterRole & ClusterRoleBinding für die IAM-Rolle für Datenwissenschaftler

Erstellen Sie eine Konfigurationsdatei cluster_level_config.yaml auf Clusterebene wie folgt.

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

Wenden Sie die Konfiguration auf den EKS-Cluster an.

kubectl apply -f cluster_level_config.yaml

Um eine Rolle und einen Namespace zu erstellen RoleBinding

Dies ist der Namespace-Trainingsoperator, der Trainingsjobs ausführt und von Resiliency standardmäßig überwacht wird. Die automatische Wiederaufnahme von Aufträgen kann nur im kubeflow-Namespace oder im Namespace mit dem Präfix aws-hyperpod unterstützt werden.

Erstellen Sie eine Rollenkonfigurationsdatei namespace_level_role.yaml wie folgt. In diesem Beispiel wird eine Rolle mit dem Namespace kubeflow erstellt.

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

Wenden Sie die Konfiguration auf den EKS-Cluster an.

kubectl apply -f namespace_level_role.yaml

Erstellen eines Zugriffseintrags mit Kubernetes-Gruppen

Nachdem Sie RBAC mithilfe einer der beiden oben genannten Optionen eingerichtet haben, verwenden Sie bitte den folgenden Beispielbefehl und ersetzen Sie die erforderlichen Informationen.

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

Für den principal-arn-Parameter müssen Sie IAM-Benutzer für Wissenschaftler verwenden.