

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Riferimento ai ruoli e alle autorizzazioni IAM
<a name="next-gen-iam-reference"></a>

**Ruolo IAM per la valutazione**

Per eseguire una valutazione, la nuova generazione di Resilience Hub deve essere in grado di assumere un ruolo IAM con una serie di autorizzazioni di sola lettura per scoprire e comprendere la configurazione delle risorse. AWS 

Puoi creare un ruolo IAM nella console IAM. AWS Scegli una **politica di fiducia personalizzata** e utilizza una politica di fiducia come questa:

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

Per le autorizzazioni, scegli la politica `AWSResilienceHubAsssessmentExecutionPolicy` gestita e la politica `ReadOnlyAccess` gestita. La `ReadOnlyAccess` policy è necessaria per garantire le migliori prestazioni della valutazione della modalità di errore.

** Service-Linked Ruolo IAM**

Resilience Hub di nuova generazione crea automaticamente un Service-Linked ruolo con la policy `AWSResilienceHubServiceRolePolicy` gestita. Questo ruolo è richiesto solo per il supporto di AWS Organizations.

**Autorizzazioni di accesso ai file dello stato di Terraform**

Se includi file di stato Terraform nel tuo servizio Resilience Hub di nuova generazione, fornisci le autorizzazioni per leggere i file Terraform dal tuo bucket Amazon S3 con una policy come questa:

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

**Autorizzazioni Amazon EKS**

Se includi cluster Amazon EKS nel tuo servizio Resilience Hub di nuova generazione, segui la seguente procedura in tre fasi per fornire le autorizzazioni di Resilience Hub di nuova generazione per leggere i dati di configurazione per i tuoi cluster Amazon EKS utilizzando il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes.

**Fase 1: applica quanto segue al tuo cluster Amazon EKS**

Ciò garantisce a Resilience Hub di nuova generazione l'accesso in sola lettura alle risorse Kubernetes di cui ha bisogno su tutti i namespace:

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

**Fase 2: mappare il ruolo IAM al gruppo Kubernetes**

Mappa il ruolo IAM che hai creato sul gruppo Kubernetes. `resilience-hub-eks-access-group` Puoi utilizzare le voci di accesso di Amazon EKS (consigliato) o il `aws-auth` ConfigMap.

**Opzione A: utilizzo delle voci di accesso EKS (consigliato)**

Le voci di accesso EKS sono il metodo preferito per gestire l'autenticazione del cluster. Il cluster deve utilizzare la modalità di `API_AND_CONFIG_MAP` autenticazione `API` o.

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

**Opzione B: utilizzo di aws-auth ConfigMap**

Se il tuo cluster utilizza la modalità di `API_AND_CONFIG_MAP` autenticazione `CONFIG_MAP` o, puoi invece modificare aws-auth: 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
```

Oppure modifica manualmente: ConfigMap

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

Aggiungilo `mapRoles` nella sezione dati:

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

**Fase 3: Verifica**

Verifica che le risorse RBAC esistano e che la mappatura dei ruoli sia attiva:

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

Se si utilizzano le voci di accesso (opzione A):

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

Se usi aws-auth ConfigMap (Opzione B):

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