Perché il mio utente o ruolo IAM con autorizzazioni Amazon EC2 complete non può avviare un'istanza EC2?
Ho associato un ruolo AWS Identity and Access Management (AWS IAM) a un'istanza Amazon Elastic Compute Cloud (Amazon EC2). Ho provato ad avviare l'istanza, ma è passata dallo stato In sospeso allo stato Arrestata.
Risoluzione
Determina la causa dello stato Arrestata di un'istanza EC2
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Se hai collegato un volume Amazon Elastic Block Store (Amazon EBS) all'istanza EC2, controlla la crittografia del volume. Se hai crittografato il volume EBS con una chiave del Servizio AWS di gestione delle chiavi (AWS KMS), potrebbe esserci un problema di autorizzazione. Il principale IAM che chiama l'azione API StartInstances deve avere le autorizzazioni kms:CreateGrant per creare una concessione per Amazon EC2. La concessione consente ad Amazon EC2 di decrittografare la chiave dei dati del volume con la chiave AWS KMS.
I volumi EBS inviano una chiamata API GenerateDataKeyWithoutPlaintext ad AWS KMS che crea una nuova chiave dei dati e la crittografa nella chiave AWS KMS. AWS KMS invia la chiave dei dati crittografata al volume EBS. Quindi il volume collega la chiave dei dati all'istanza. La chiave dei dati è presente nello stesso account AWS dell'istanza e della chiave AWS KMS.
Per determinare il motivo per cui l'istanza è nello stato Arrestata, esegui il comando AWS CLI describe-instances:
aws ec2 describe-instances --instance-id your-instance-id --query "Reservations[*].Instances[*].StateReason"
Nota: sostituisci your-instance-id con l'ID della tua istanza.
Esempio di output:
[ [ { "Message": "Client.InternalError: Client error on launch", "Code": "Client.InternalError" } ] ]
L'errore precedente potrebbe indicare che hai crittografato il volume principale o i volumi collegati aggiuntivi. Non sei autorizzato ad accedere alla chiave AWS KMS per la decrittografia.
Puoi anche filtrare gli eventi di AWS CloudTrail in base al nome dell'evento CreateGrant.
Esempio di output:
"errorMessage": "User: arn:aws:iam::123456789012:user/test is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:eu-west-1:123456789012:key/8e3426b8-87b4-434c-ae74-8e63dadf354a"
L'errore precedente indica che il principale IAM non ha l'autorizzazione CreateGrant per decrittografare la chiave dei dati in Amazon EC2. Quindi l'istanza non può avviarsi.
Nota: se utilizzi una chiave gestita da AWS, questo errore si verifica solo se è presente un diniego esplicito nelle policy IAM o nella policy di controllo dei servizi (SCP) del principale. Le chiavi gestite da AWS non richiedono autorizzazioni IAM aggiuntive per l'uso.
Individua il tipo di chiave AWS KMS
Completa i seguenti passaggi:
- Apri la console Amazon EC2.
- Nel pannello di navigazione, scegli Istanze.
- Seleziona l'ID dell'istanza, quindi scegli Archiviazione.
- Per ID volume, seleziona l'ID del volume crittografato.
- Per ID chiave KMS, copia l'ID della chiave AWS KMS.
- Apri la console AWS KMS nella stessa Regione AWS.
- Nel pannello di navigazione, scegli Chiavi gestite dal cliente. Quindi cerca l'ID della chiave AWS KMS ottenuto nel passaggio 4.
- Seleziona l'ID della chiave AWS KMS.
- In Configurazione generale, alla voce Descrizione, prendi nota del tipo di chiave AWS KMS.
Collega una policy IAM
Collega una policy IAM al principale IAM come nel seguente esempio:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:region:123456789012:key/ExampleKey" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }
La chiave di condizione kms:GrantIsForAWSResource assicura che il principale IAM crei concessioni per la chiave AWS KMS solo con risorse AWS. Questa policy non consente al principale IAM di creare concessioni per un altro principale IAM. Per limitare l'accesso ad Amazon EC2, utilizza la chiave di condizione kms:ViaService.
Devi attivare le autorizzazioni IAM che aggiungi al principale IAM tramite la policy della chiave per l'account, come mostrato nell'esempio seguente:
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": "kms:*", "Resource": "*" }
Puoi anche aggiungere il principale IAM nella policy della chiave per consentire l'azione API CreateGrant.
Se la chiave AWS KMS e il principale IAM sono nello stesso account, puoi includere esplicitamente il principale nella policy della chiave. Non sono necessarie autorizzazioni IAM per accedere alla chiave AWS KMS.
Per concedere autorizzazioni esplicite tramite la policy della chiave, aggiungi la seguente istruzione alla policy della chiave:
{ "Principal": { "AWS": "arn:aws:iam::123456789012:role/Role_Name" }, "Effect": "Allow", "Action": [ "kms:CreateGrant" ], "Resource": [ "*" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
È consigliabile concedere il privilegio minimo per le autorizzazioni necessarie per eseguire un'attività.
Se utilizzi i gruppi Amazon EC2 Auto Scaling per creare le istanze, consulta Policy della chiave AWS KMS richiesta per l'uso con volumi crittografati.
Informazioni correlate
- Argomenti
- Security, Identity, & Compliance
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 3 anni fa