

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.

# Référence des rôles et autorisations IAM
<a name="next-gen-iam-reference"></a>

**Rôle de l'IAM en matière d'évaluation**

Pour exécuter une évaluation, la prochaine génération de Resilience Hub doit être en mesure d'assumer un rôle IAM avec un certain nombre d'autorisations en lecture seule pour découvrir et comprendre la configuration de vos ressources. AWS 

Vous pouvez créer un rôle IAM dans la console AWS IAM. Choisissez une **politique de confiance personnalisée** et utilisez une politique de confiance comme celle-ci :

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

Pour les autorisations, choisissez la stratégie `AWSResilienceHubAsssessmentExecutionPolicy` gérée et la stratégie `ReadOnlyAccess` gérée. La `ReadOnlyAccess` politique est requise pour optimiser les performances de l'évaluation du mode de défaillance.

**Rôle IAM Service-Linked **

Le Resilience Hub de nouvelle génération crée automatiquement un Service-Linked rôle avec la politique `AWSResilienceHubServiceRolePolicy` gérée. Ce rôle n'est requis que pour le support AWS des Organisations.

**Autorisations d'accès aux fichiers d'état de Terraform**

Si vous incluez des fichiers d'état Terraform dans votre service Resilience Hub de nouvelle génération, accordez les autorisations nécessaires pour lire les fichiers Terraform depuis votre compartiment Amazon S3 avec une politique comme celle-ci :

```
{
  "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}}"
    }
  ]
}
```

**Autorisations Amazon EKS**

Si vous incluez des clusters Amazon EKS dans votre service Resilience Hub de nouvelle génération, suivez le processus en 3 étapes suivant pour autoriser le Resilience Hub de nouvelle génération à lire les données de configuration de vos clusters Amazon EKS à l'aide du contrôle d'accès basé sur les rôles (RBAC) Kubernetes.

**Étape 1 : appliquez ce qui suit à votre cluster Amazon EKS**

Cela donne à Next Generation Resilience Hub un accès en lecture seule aux ressources Kubernetes dont il a besoin dans tous les espaces de noms :

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

**Étape 2 : associer le rôle IAM au groupe Kubernetes**

Mappez le rôle IAM que vous avez créé au groupe `resilience-hub-eks-access-group` Kubernetes. Vous pouvez utiliser les entrées d'accès Amazon EKS (recommandées) ou le `aws-auth` ConfigMap.

**Option A : utilisation des entrées d'accès EKS (recommandé)**

Les entrées d'accès EKS constituent la méthode préférée pour gérer l'authentification du cluster. Votre cluster doit utiliser le mode `API` d'`API_AND_CONFIG_MAP`authentification.

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

**Option B : utilisation de aws-auth ConfigMap**

Si votre cluster utilise le mode `API_AND_CONFIG_MAP` d'authentification `CONFIG_MAP` ou, vous pouvez modifier l' ConfigMap aws-auth à la place :

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

Ou modifiez manuellement le ConfigMap :

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

Ajoutez ceci `mapRoles` dans la section des données :

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

**Étape 3 : vérifier**

Vérifiez que les ressources RBAC existent et que le mappage des rôles est en place :

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

Si vous utilisez des entrées d'accès (option A) :

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

Si vous utilisez aws-auth ConfigMap (option B) :

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