

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à.

# Autorizzazioni per Beanstalk Cluster
<a name="beanstalk-cluster-permissions"></a>

Un ambiente Beanstalk Cluster non utilizza il profilo di istanza Amazon Elastic Compute Cloud (Amazon EC2) di Beanstalk Standard. Fornisci i ruoli IAM richiesti da Amazon EKS per il cluster e i nodi e il ruolo utilizzato da Elastic Beanstalk per pubblicare le metriche, i log e le tracce dell'ambiente. Facoltativamente, puoi fornire un ruolo applicativo per l'applicazione in esecuzione. Elastic Beanstalk utilizza un ruolo collegato ai servizi per il proprio funzionamento dell'ambiente.

## Ruoli che fornisci
<a name="beanstalk-cluster-permissions-customer-roles"></a>

Un ambiente Beanstalk Cluster utilizza un ruolo del cluster, un ruolo di nodo e un ruolo di osservabilità. Quando crei un ambiente nella console Elastic Beanstalk e accetti le impostazioni predefinite di accesso al servizio, la console le crea tutte e tre per te, inserendo i nomi quando non sono già presenti nel [Nome, servizio affidabile e autorizzazioni per ogni ruolo](#beanstalk-cluster-permissions-role-details) tuo account:
+ **Ruolo del cluster**: Amazon EKS assume questo ruolo per il cluster creato da Elastic Beanstalk. Passa il relativo ARN nell'impostazione del `cluster-role` namespace. `aws:elasticbeanstalk:eks`
+ **Ruolo del nodo**: i nodi Amazon EC2 del cluster assumono questo ruolo, che deve consentire loro di estrarre le immagini delle applicazioni da Amazon ECR. Passa il relativo ARN nell'`node-role`impostazione del namespace. `aws:elasticbeanstalk:eks`
+ **Ruolo di osservabilità**: i componenti che pubblicano le metriche, i log e le tracce dell'ambiente assumono questo ruolo tramite Amazon EKS Pod Identity. Passa il relativo ARN nell'`observability-role`impostazione del namespace. `aws:elasticbeanstalk:eks:environment`

Se crei questi ruoli all'esterno della console Elastic Beanstalk, ti consigliamo vivamente di crearli esattamente come specificato in. [Nome, servizio affidabile e autorizzazioni per ogni ruolo](#beanstalk-cluster-permissions-role-details) Quindi, quando crei un ambiente, passa ogni ruolo ARN nella relativa opzione di configurazione. Per un esempio funzionante, vedi[Guida introduttiva a Beanstalk Cluster](beanstalk-cluster-getting-started.md).

Se fornisci una fonte per Elastic Beanstalk da inserire in un'immagine del contenitore, fornisci anche un ruolo di creazione ** dell'immagine. ** AWS CodeBuild presuppone che esegua la build nel tuo account. Questo ruolo appartiene alla build della versione dell'applicazione anziché all'ambiente in esecuzione. Consulta [Creazione di immagini di container per ambienti Beanstalk Cluster](beanstalk-cluster-app-versions.md).

È inoltre possibile fornire un ruolo ** applicativo opzionale**, che l'applicazione in esecuzione utilizza per chiamare i servizi. AWS Consulta [Autorizzazioni dell'applicazione](#beanstalk-cluster-permissions-application).

**Importante**  
Utilizzate i nomi dei ruoli nella tabella seguente. La console seleziona i ruoli esistenti per nome, quindi non seleziona un ruolo che hai creato con un nome diverso e devi scegliere quel ruolo tu stesso. I nomi sono importanti anche per il riutilizzo del cluster: Elastic Beanstalk registra i ruoli del cluster, del nodo e dell'osservabilità nel cluster che crea e un ambiente successivo sullo stesso set di sottoreti deve fornire gli stessi tre ruoli. Elastic Beanstalk rifiuta un ambiente i cui ruoli sono diversi, anziché collocarlo su un altro cluster. Consulta [Raggruppamento degli ambienti](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing).

Ogni ruolo si fida di un servizio diverso e dispone delle proprie autorizzazioni:


**Nome, servizio affidabile e autorizzazioni per ogni ruolo**  

| Ruolo | Nome ruolo | Servizio affidabile | AWS politiche gestite | 
| --- | --- | --- | --- | 
| Ruolo del cluster | aws-elasticbeanstalk-eks-cluster-role | eks.amazonaws.com | AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy, AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy, AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging | 
| ruolo del nodo | aws-elasticbeanstalk-eks-node-role | ec2.amazonaws.com | AmazonEKSWorkerNodeMinimalPolicy, AmazonEC2ContainerRegistryPullOnly, AmazonSSMManagedInstanceCore | 
| Ruolo di osservabilità | aws-elasticbeanstalk-eks-observability-role | pods.eks.amazonaws.com | CloudWatchAgentServerPolicy, AWSElasticBeanstalkEKSObservability | 
| Ruolo di creazione dell'immagine | aws-elasticbeanstalk-eks-image-build-role | codebuild.amazonaws.com | AWSElasticBeanstalkEKSImageBuild | 
| Ruolo dell'applicazione (opzionale) | Scegli il nome | pods.eks.amazonaws.com | Nessuna. Concedi solo le autorizzazioni necessarie alla tua applicazione. Consulta [Configura un ruolo dell'applicazione](#beanstalk-cluster-permissions-application-role). | 

**Per fornire i ruoli del cluster, del nodo e dell'osservabilità**

1. Se crei il tuo ambiente nella console Elastic Beanstalk, non devi preparare nulla. La console cerca i tre ruoli per nome, utilizzando i nomi nella tabella precedente, li seleziona quando sono già presenti nel tuo account e li crea quando non esistono. Corrisponde solo al nome del ruolo, non all'ARN completo e, poiché i nomi dei ruoli IAM sono univoci all'interno di un account, il percorso in cui si trova un ruolo non influisce sulla corrispondenza.

1. Se usi AWS CLI o l'API, crea prima i tre ruoli. Nessuno dei due client li crea per te. Assegna a ciascun ruolo il nome e il servizio affidabile nella tabella precedente e allega le politiche elencate. I ruoli devono essere nello stesso AWS account dell'ambiente.

1. Fornisci tutti e tre gli ARN nelle `observability-role` impostazioni `cluster-role``node-role`, e quando crei l'ambiente. Fornisci il ruolo di osservabilità in modo esplicito anziché affidarti a un valore predefinito, in modo che ogni ambiente di un set di sottoreti registri gli stessi ruoli.

1. Se l'applicazione chiama AWS servizi, configura il ruolo opzionale dell'applicazione come descritto in. [Configura un ruolo dell'applicazione](#beanstalk-cluster-permissions-application-role)

Il set di sottoreti da solo seleziona il cluster, quindi utilizza un set di sottoreti diverso quando hai bisogno di un cluster separato con ruoli di infrastruttura diversi. Non è possibile modificare le sottoreti o i ruoli di cluster, nodo e osservabilità di un ambiente Beanstalk Cluster esistente. Consulta [Raggruppamento degli ambienti](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing). Il ruolo opzionale dell'applicazione è specifico di un ambiente e può differire da un ambiente all'altro; vedere. [Configura un ruolo dell'applicazione](#beanstalk-cluster-permissions-application-role)

## Autorizzazioni per creare l'ambiente
<a name="beanstalk-cluster-permissions-caller"></a>

Poiché si affidano questi ruoli a Elastic Beanstalk, il responsabile che crea l'ambiente necessita dell'autorizzazione per trasferirli. Elastic Beanstalk lo verifica prima di fornire qualcosa, quindi concedi quanto segue a quel responsabile:
+ `iam:GetRole`e `iam:PassRole` per ogni ruolo che passi: i ruoli del cluster, del nodo e dell'osservabilità, nonché il ruolo dell'applicazione e il ruolo di creazione dell'immagine, se li usi. Ambito `iam:PassRole` con la chiave `iam:PassedToService` condizionale. I suoi valori sono i servizi che ricevono i ruoli: `eks.amazonaws.com` per il ruolo del cluster, `ec2.amazonaws.com` per il ruolo del nodo, `pods.eks.amazonaws.com` per i ruoli di osservabilità e applicazione, `codebuild.amazonaws.com` per il ruolo di creazione dell'immagine e `elasticbeanstalk.amazonaws.com` perché Elastic Beanstalk trasferisce questi ruoli per tuo conto.
+ `iam:CreateServiceLinkedRole`, di cui ha bisogno il primo ambiente Beanstalk Cluster in un account per consentire a Elastic Beanstalk e Amazon EKS di creare i propri ruoli collegati ai servizi. Definiscilo con la chiave condizionale, i cui valori sono e. `iam:AWSServiceName` `elasticbeanstalk.amazonaws.com` `eks.amazonaws.com`

La seguente politica garantisce tutto questo. Sostituisci l'ID dell'account con il tuo, usa il nome del ruolo dell'applicazione e rimuovi qualsiasi ruolo che non superi. I nomi dei ruoli mostrati sono quelli della tabella precedente, che la console crea e seleziona.

A differenza della console, che seleziona un ruolo in base al nome, una policy corrisponde a un ruolo in base al suo ARN completo, quindi ogni `Resource` voce deve includere il percorso IAM del ruolo. I ruoli creati dalla console si trovano a`/service-role/`, come mostrato qui. Se hai creato un ruolo in un altro modo, potrebbe non avere alcun percorso, nel qual caso è `arn:aws:iam::{{111122223333}}:role/{{role-name}}` il suo ARN. Per leggere l'ARN di un ruolo, esegui. `aws iam get-role --role-name {{role-name}} --query Role.Arn --output text`

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "InspectTheRoles",
      "Effect": "Allow",
      "Action": "iam:GetRole",
      "Resource": [
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-cluster-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-node-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-observability-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-image-build-role",
        "arn:aws:iam::{{111122223333}}:role/{{my-application-role}}"
      ]
    },
    {
      "Sid": "PassTheRolesToBeanstalk",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-cluster-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-node-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-observability-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-image-build-role",
        "arn:aws:iam::{{111122223333}}:role/{{my-application-role}}"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": [
            "eks.amazonaws.com",
            "ec2.amazonaws.com",
            "pods.eks.amazonaws.com",
            "codebuild.amazonaws.com",
            "elasticbeanstalk.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "CreateServiceLinkedRolesOnFirstEnvironment",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::{{111122223333}}:role/aws-service-role/*",
      "Condition": {
        "StringEquals": {
          "iam:AWSServiceName": [
            "elasticbeanstalk.amazonaws.com",
            "eks.amazonaws.com"
          ]
        }
      }
    }
  ]
}
```

`iam:GetRole`è in una propria dichiarazione perché la chiave di `iam:PassedToService` condizione esiste solo in una `PassRole` richiesta. Applicarlo `iam:GetRole` nella stessa dichiarazione impedirebbe affatto che tale autorizzazione venga concessa.

Questa politica riguarda solo il passaggio dei ruoli. Non garantisce le azioni di Elastic Beanstalk richieste dalla creazione di un'applicazione e di un ambiente.

Senza queste autorizzazioni, `CreateEnvironment` fallisce con un `AccessDenied` errore nel nominare l'azione che non è stato in grado di eseguire. Per ulteriori informazioni, consulta [ Concedere un'autorizzazione principale per passare un ruolo a un AWS servizio ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) e. [`CreateEnvironment`](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html)

## Ruoli gestiti da Elastic Beanstalk
<a name="beanstalk-cluster-permissions-service-roles"></a>

Elastic Beanstalk gestisce un ambiente Beanstalk Cluster tramite il ruolo collegato ai `AWSServiceRoleForElasticBeanstalk` servizi, che crea nel tuo account. Questo ruolo non viene creato, configurato o trasferito. Amazon EKS utilizza allo stesso modo il proprio ruolo collegato al servizio,. `AWSServiceRoleForAmazonEKS` Per sapere come Elastic Beanstalk utilizza i ruoli collegati ai servizi, consulta. [Utilizzo dei ruoli collegati ai servizi per Elastic Beanstalk](using-service-linked-roles.md)

## Conferma i ruoli utilizzati dall'ambiente
<a name="beanstalk-cluster-permissions-verify"></a>

Dopo che l'ambiente ha raggiunto lo `Ready` stato, leggi la sua configurazione risolta:

```
$ aws elasticbeanstalk describe-configuration-settings \
    --application-name my-app \
    --environment-name my-cluster-env \
    --query "ConfigurationSettings[0].OptionSettings[?OptionName=='cluster-role' || OptionName=='node-role' || OptionName=='observability-role'].[Namespace,OptionName,Value]" \
    --output table
```

Verifica che le voci del cluster, del nodo e del ruolo di osservabilità contengano gli ARN forniti durante la creazione. Se l'ambiente utilizza un ruolo applicativo, esegui il check-in dell'identità delle credenziali [Configura un ruolo dell'applicazione](#beanstalk-cluster-permissions-application-role) e conferma che l'ARN restituito identifichi il ruolo selezionato. Per una versione dell'applicazione basata sui sorgenti, attendi che la versione venga segnalata`PROCESSED`; tale stato conferma che AWS CodeBuild potrebbe utilizzare il ruolo di compilazione e completare la creazione dell'immagine. Consulta [Creazione di immagini di container per ambienti Beanstalk Cluster](beanstalk-cluster-app-versions.md).

## Autorizzazioni dell'applicazione
<a name="beanstalk-cluster-permissions-application"></a>

Utilizzate un ruolo dell'applicazione quando l'applicazione in esecuzione deve chiamare AWS i servizi. Configura il ruolo prima di creare l'ambiente e concedi solo le autorizzazioni richieste dall'applicazione. L'applicazione riceve il ruolo tramite Amazon EKS Pod Identity anziché tramite un profilo di istanza Amazon EC2.

Passa l'ARN del ruolo nell'`application-role`impostazione del `aws:elasticbeanstalk:eks:environment` namespace o seleziona il ruolo nella console Elastic Beanstalk quando crei l'ambiente.

Il ruolo dell'applicazione è anche il ruolo che legge le credenziali per un backend di osservabilità di terze parti. Se imposti un backend di osservabilità `secretsmanager:DescribeSecret` su`custom`, concedi il ruolo dell'applicazione `secretsmanager:GetSecretValue` e il segreto di Secrets Manager denominato da. `custom-credentials` Consulta [Invio di dati di osservabilità a un backend di terze parti](monitoring-cluster-environments.md#monitoring-cluster-environments-custom-backend).

### Configura un ruolo dell'applicazione
<a name="beanstalk-cluster-permissions-application-role"></a>

Crea il ruolo dell'applicazione prima di creare l'ambiente. Assegna al ruolo solo le azioni e le risorse richieste dall'applicazione. Configura la sua politica di fiducia per Amazon EKS Pod Identity, includendo `sts:AssumeRole` e `sts:TagSession` per il principale del `pods.eks.amazonaws.com` servizio:

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

1. Crea il ruolo con la precedente politica di fiducia.

1. Allega una policy basata sull'identità che conceda solo le azioni e le risorse di servizio richieste dall'applicazione.

1. Nella console Elastic Beanstalk, avvia il flusso di lavoro di creazione dell'ambiente ed espandi l'accesso al servizio. ** **

1. Scegli il ruolo in Ruolo ** dell'applicazione - opzionale. ** Completa la configurazione dell'ambiente rimanente, quindi crea l'ambiente.

   Con AWS CLI o l'API, scegli il ruolo aggiungendo invece l'`application-role`opzione alla tua `create-environment` richiesta:

   ```
   --option-settings \
       Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value={{arn:aws:iam::111122223333:role/my-application-role}}
   ```

1. Dopo aver distribuito l'applicazione, richiama il AWS servizio richiesto dall'applicazione. Per verificare l'identità delle credenziali indipendentemente dalla politica del servizio, chiama AWS STS `GetCallerIdentity` e conferma che l'ARN restituito identifichi il ruolo dell'applicazione selezionato.

Se l'applicazione riceve`AccessDenied`, verifica di aver selezionato il ruolo previsto durante la creazione dell'ambiente, che la sua politica di fiducia consenta Amazon EKS Pod Identity e che la sua politica basata sull'identità consenta l'azione e la risorsa richieste. Correggi la politica di attendibilità o autorizzazioni e ripeti sia il controllo dell'identità delle credenziali che la chiamata al servizio dell'applicazione. Se è stato selezionato il ruolo sbagliato, create un ambiente sostitutivo con il ruolo desiderato invece di aggiungere le autorizzazioni dell'applicazione al ruolo sbagliato. Utilizzate ruoli applicativi separati quando gli ambienti richiedono accessi diversi. Non concedere autorizzazioni applicative al ruolo del cluster o del nodo.

## Diagnostica gli errori dei ruoli
<a name="beanstalk-cluster-permissions-diagnosis"></a>

Inizia con gli eventi Elastic Beanstalk per l'ambiente. Imposta `operation_start` il timestamp registrato immediatamente prima della richiesta non riuscita:

```
$ operation_start='{{timestamp-recorded-before-the-request}}'
$ aws elasticbeanstalk describe-events \
    --environment-name my-cluster-env \
    --severity ERROR \
    --start-time "$operation_start" \
    --max-items 20
```

La creazione dell'ambiente rifiuta un ruolo di infrastruttura  
Verifica che il ruolo sia nell'account di ambiente, che la politica di fiducia e le politiche allegate corrispondano alle attuali linee guida di Amazon EKS Auto Mode e che il relativo ARN sia completo. Se il set di sottorete richiesto ha già un cluster registrato, utilizza i ruoli del cluster e del nodo registrati. L'errore di operazione identifica valori richiesti e registrati in conflitto. Correggi la richiesta e crea nuovamente l'ambiente. Non è possibile sostituire questi ruoli in un ambiente esistente.

L'immagine dell'applicazione non può essere recuperata  
Verifica che il ruolo del nodo disponga delle autorizzazioni di recupero e della politica di fiducia documentate di Amazon ECR. Verifica anche l'URI dell'immagine e qualsiasi politica di repository che limiti l'accesso. Correggi il ruolo o la politica del repository, quindi distribuisci nuovamente la versione dell'applicazione.

Una fonte crea report `FAILED`  
Verifica il ruolo di compilazione nella configurazione di compilazione della versione dell'applicazione e controlla la diagnostica della build. Correggi la politica di attendibilità o di autorizzazione del ruolo prima di creare una nuova versione dell'applicazione. Consulta [Creazione di immagini di container per ambienti Beanstalk Cluster](beanstalk-cluster-app-versions.md).

L'applicazione in esecuzione riceve `AccessDenied`  
Utilizza i check-in relativi al ruolo dell'applicazione. [Configura un ruolo dell'applicazione](#beanstalk-cluster-permissions-application-role) Conferma prima l'identità delle credenziali, quindi confronta l'azione e la risorsa negate nei registri e negli CloudTrail eventi dell'applicazione con la politica del ruolo.