

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configuración del control de acceso basado en roles de Kubernetes
<a name="sagemaker-hyperpod-eks-setup-rbac"></a>

Los usuarios administradores de clústeres también deben configurar el [control de acceso basado en roles (RBAC) de Kubernetes](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) para que los usuarios de científicos de datos usen la [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli) para ejecutar cargas de trabajo en clústeres organizados con Amazon EKS. HyperPod 

## Opción 1: configuración de RBAC mediante el gráfico de Helm
<a name="sagemaker-hyperpod-eks-setup-rbac-helm"></a>

El equipo de SageMaker HyperPod servicio proporciona un subgráfico de Helm para configurar el RBAC. Para obtener más información, consulte [Instalación de paquetes en el clúster de Amazon EKS mediante Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

## Opción 2: configuración manual de RBAC
<a name="sagemaker-hyperpod-eks-setup-rbac-manual"></a>

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
```

**Para crear un rol y un espacio de nombres RoleBinding **

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

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