

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

Les administrateurs de clusters doivent également configurer le [contrôle d'accès basé sur les rôles (RBAC) Kubernetes](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) pour que les utilisateurs de data scientists puissent utiliser la [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli) pour exécuter des charges de travail sur HyperPod des clusters orchestrés avec Amazon EKS.

## Option 1 : Configuration de RBAC à l’aide des Charts de Helm
<a name="sagemaker-hyperpod-eks-setup-rbac-helm"></a>

L'équipe SageMaker HyperPod de service fournit un sous-graphique Helm pour configurer le RBAC. Pour en savoir plus, veuillez consulter la section [Installation de packages sur le cluster Amazon EKS à l’aide de Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

## Option 2 : Configuration manuelle de RBAC
<a name="sagemaker-hyperpod-eks-setup-rbac-manual"></a>

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 rôle IAM de scientifique des données**

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

```
kubectl apply -f cluster_level_config.yaml
```

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

Il s’agit des opérateurs d’entraînement de l’espace de noms qui exécutent les tâches d’entraînement et Resiliency surveillera par défaut. La reprise automatique des tâches peut être prise en charge uniquement dans l’espace de noms `kubeflow` ou dans l’espace de noms préfixé par `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 noms `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
```

Appliquez la configuration au cluster EKS.

```
kubectl apply -f namespace_level_role.yaml
```

## Création d’une entrée d’accès pour les groupes Kubernetes
<a name="sagemaker-hyperpod-eks-setup-rbac-access-entry"></a>

Après avoir configuré 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 paramètre `principal-arn`, vous devez utiliser les [Utilisateurs IAM pour les scientifiques](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user).