Por que meu usuário ou função do IAM com permissões completas do Amazon EC2 não consegue iniciar uma instância do EC2?
Minha entidade do AWS Identity and Access Management (IAM) (usuários, grupos, funções) tem permissões completas para uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Tentei iniciar a instância do Amazon EC2, mas ela mudou do estado Pendente para Interrompido.
Breve descrição
Verifique se a instância tem um Amazon Elastic Block Store (Amazon EBS) anexado. Se o volume do Amazon EBS for criptografado usando uma chave do AWS Key Management Service (AWS KMS), pode haver um problema de permissão. A entidade do IAM que chama a ação da API StartInstances deve ter permissões para criar uma concessão para o serviço do Amazon EC2. A concessão permite que o Amazon EC2 descriptografe a chave do AWS KMS (chave KMS).
Os volumes do Amazon EBS enviam uma solicitação de chamada de API GenerateDataKeyWithoutPlaintext para o AWS KMS, que cria uma nova chave de dados e a criptografa na chave do KMS. A chave de dados criptografada é enviada de volta ao volume do Amazon EBS e, em seguida, anexada à instância do Amazon EC2. Para esse cenário, a chave do KMS está presente na mesma conta da AWS para a instância do EC2 e a chave do KMS.
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.
- Para confirmar por que a instância do Amazon EC2 está em um estado interrompido, execute o comando da AWS CLI semelhante ao seguinte:
aws ec2 describe-instances --instance-id your-instance_ID --query "Reservations[*].Instances[*].StateReason"
Exemplo de saída:
[ [ { "Message": "Client.InternalError: Client error on launch", "Code": "Client.InternalError" } ] ]
Esse erro significa que o volume raiz ou os volumes anexados adicionais estão criptografados. Você não tem permissão para acessar a chave do AWS KMS para retirar a criptografia.
- (Opcional) Siga as instruções para filtrar eventos do AWS CloudTrail para o nome do evento CreateGrant.
Exemplo de saída:
"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"
Esse erro significa que a entidade IAM não tem a permissão CreateGrant para que o Amazon EC2 descriptografe a chave de dados, então a instância não consegue ser iniciada.
Resolução
Para encontrar o tipo de chave, siga estas etapas:
1. Abra o console do Amazon EC2 e escolha Instances (Instâncias).
2. Em Instance ID (ID da instância), escolha o ID da instância do Amazon EC2 e, em seguida, escolha a guia Storage (Armazenamento).
3. Em Volume ID (ID do volume), escolha o ID do volume para o volume criptografado.
4. Em KMS key ID (ID da chave do KMS), copie o ID da chave.
5. Abra o console do AWS KMS na mesma região AWS.
6. Em AWS managed keys(Chaves gerenciadas pela AWS) e Customer managed keys (Chaves gerenciadas pelo cliente), cole o ID da chave do KMS da etapa 4.
7. Escolha o ID da chave.
8. Em General configuration (Configuração geral), em Description (Descrição), observe o tipo de chave KMS.
Anexe uma política do IAM à entidade do IAM semelhante à seguinte:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:eu-west-1:123456789012:key/8e3426b8-87b4-434c-ae74-8e63dadf354a" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }
A chave de condição kms:GrantIsForAWSResource garante que a entidade do IAM só possa criar concessões para a chave do KMS com recursos da AWS, como instâncias do EC2. Essa política não permite que a entidade do IAM crie concessões para outra entidade do IAM.
(Opcional) Permita que a conta do usuário raiz da conta da AWS tenha acesso total à chave do KMS semelhante ao seguinte:
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": "kms:*", "Resource": "*" }
Você também pode adicionar a entidade do IAM na política de chaves do KMS para permitir a ação da API CreateGrant.
Observação:
- É uma prática recomendada conceder o privilégio mínimo somente para as permissões necessárias para executar uma tarefa. Para obter mais informações, consulte Conceder o privilégio mínimo.
- Se as instâncias do EC2 forem criadas usando grupos do Amazon EC2 Auto Scaling, consulte Política de chaves do AWS KMS necessária para uso com volumes criptografados.
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 3 anos