

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
<a name="sagemaker-hyperpod-eks-setup-rbac"></a>

Cluster-Administratoren müssen außerdem die [rollenbasierte Zugriffskontrolle (RBAC) von Kubernetes](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) einrichten, damit Data-Scientist-Benutzer die [SageMaker HyperPod CLI](https://github.com/aws/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
<a name="sagemaker-hyperpod-eks-setup-rbac-helm"></a>

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](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

## Option 2: RBAC manuell einrichten
<a name="sagemaker-hyperpod-eks-setup-rbac-manual"></a>

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
<a name="sagemaker-hyperpod-eks-setup-rbac-access-entry"></a>

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](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user) verwenden.