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?

4 minuto de leitura
0

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.

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

  1. (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:


Informações relacionadas

Como a criptografia EBS funciona

A instância é terminada imediatamente

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos