

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.

# Referencia de roles y permisos de IAM
<a name="next-gen-iam-reference"></a>

**El papel de la IAM en la evaluación**

Para poder realizar una evaluación, la próxima generación de Resilience Hub debe poder asumir una función de IAM con una serie de permisos de solo lectura para descubrir y comprender la configuración de sus recursos. AWS 

Puede crear un rol de IAM en la consola de IAM. AWS Elija una **política de confianza personalizada** y utilice una política de confianza como esta:

```
{
  "Version": "2012-10-17"		 	 	 ,
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "resiliencehub.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}
```

Para los permisos, elige la política `AWSResilienceHubAsssessmentExecutionPolicy` gestionada y la política `ReadOnlyAccess` gestionada. La `ReadOnlyAccess` política es necesaria para obtener el mejor rendimiento de la evaluación del modo de fallo.

**Función de IAM Service-Linked **

Resilience Hub, de última generación, crea automáticamente un Service-Linked rol con la política `AWSResilienceHubServiceRolePolicy` gestionada. Esta función solo es necesaria para el soporte de AWS Organizations.

**Permisos estatales de acceso a los archivos de Terraform**

Si va a incluir archivos de estado de Terraform en su servicio Resilience Hub de próxima generación, otorgue permisos para leer los archivos de Terraform de su bucket de Amazon S3 con una política como la siguiente:

```
{
  "Version": "2012-10-17"		 	 	 ,
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::{{s3-bucket-name}}/{{path-to-state-file}}"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::{{s3-bucket-name}}"
    }
  ]
}
```

**Permisos de Amazon EKS**

Si va a incluir clústeres de Amazon EKS en su servicio Resilience Hub de próxima generación, siga el siguiente proceso de 3 pasos para proporcionar permisos a Resilience Hub de próxima generación para leer los datos de configuración de sus clústeres de Amazon EKS mediante el control de acceso basado en roles (RBAC) de Kubernetes.

**Paso 1: aplique lo siguiente a su clúster de Amazon EKS**

Esto otorga a la próxima generación de Resilience Hub acceso de solo lectura a los recursos de Kubernetes que necesita en todos los espacios de nombres:

```
cat << EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: resilience-hub-eks-access-cluster-role
rules:
- apiGroups:
    - ""
  resources:
    - pods
    - replicationcontrollers
    - nodes
    - services
  verbs:
    - get
    - list
- apiGroups:
    - apps
  resources:
    - deployments
    - replicasets
  verbs:
    - get
    - list
- apiGroups:
    - policy
  resources:
    - poddisruptionbudgets
  verbs:
    - get
    - list
- apiGroups:
    - autoscaling.k8s.io
  resources:
    - verticalpodautoscalers
  verbs:
    - get
    - list
- apiGroups:
    - autoscaling
  resources:
    - horizontalpodautoscalers
  verbs:
    - get
    - list
- apiGroups:
    - karpenter.sh
  resources:
    - provisioners
    - nodepools
  verbs:
    - get
    - list
- apiGroups:
    - karpenter.k8s.aws
  resources:
    - awsnodetemplates
    - ec2nodeclasses
  verbs:
    - get
    - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: resilience-hub-eks-access-cluster-role-binding
subjects:
  - kind: Group
    name: resilience-hub-eks-access-group
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: resilience-hub-eks-access-cluster-role
  apiGroup: rbac.authorization.k8s.io
---
EOF
```

**Paso 2: Asignar la función de IAM al grupo Kubernetes**

Asigne la función de IAM que creó al grupo de Kubernetes. `resilience-hub-eks-access-group` Puede utilizar las entradas de acceso de Amazon EKS (recomendadas) o las `aws-auth` ConfigMap.

**Opción A: usar entradas de acceso EKS (recomendado)**

Las entradas de acceso EKS son el método preferido para gestionar la autenticación de clústeres. El clúster debe usar nuestro `API` modo `API_AND_CONFIG_MAP` de autenticación.

```
aws eks create-access-entry \
  --cluster-name {{cluster-name}} \
  --principal-arn arn:aws:iam::{{ACCOUNT-ID}}:role/ResilienceHubRole \
  --type STANDARD \
  --kubernetes-groups '["resilience-hub-eks-access-group"]'
```

**Opción B: usar aws-auth ConfigMap**

Si su clúster usa `CONFIG_MAP` nuestro modo de `API_AND_CONFIG_MAP` autenticación, puede editar aws-auth en su lugar: ConfigMap 

Usando eksctl:

```
eksctl create iamidentitymapping \
  --cluster {{cluster-name}} \
  --region {{region}} \
  --arn arn:aws:iam::{{ACCOUNT-ID}}:role/ResilienceHubRole \
  --group resilience-hub-eks-access-group \
  --username AwsResilienceHubAssessmentEKSAccessRole
```

O edite manualmente: ConfigMap

```
kubectl edit -n kube-system configmap/aws-auth
```

Añada lo siguiente `mapRoles` en la sección de datos:

```
- groups:
    - resilience-hub-eks-access-group
  rolearn: arn:aws:iam::{{ACCOUNT-ID}}:role/ResilienceHubRole
  username: AwsResilienceHubAssessmentEKSAccessRole
```

**Paso 3: Verificar**

Confirme que los recursos del RBAC existen y que la asignación de funciones está implementada:

```
kubectl get clusterrole resilience-hub-eks-access-cluster-role
kubectl describe clusterrolebinding resilience-hub-eks-access-cluster-role-binding
```

Si utiliza entradas de acceso (opción A):

```
aws eks describe-access-entry \
  --cluster-name {{cluster-name}} \
  --principal-arn arn:aws:iam::{{ACCOUNT-ID}}:role/ResilienceHubRole
```

Si utiliza aws-auth ConfigMap (opción B):

```
kubectl get configmap aws-auth -n kube-system -o yaml | grep -A 3 "ResilienceHubRole"
```