Ir para o conteúdo

Como resolvo falhas de execução ou inicialização de uma instância do Amazon EC2 com volumes criptografados do Amazon EBS?

4 minuto de leitura
0

Eu executei uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que tem volumes criptografados do Amazon Elastic Block Store (Amazon EBS) anexados. No entanto, a instância do EC2 não inicia nem é executada.

Breve descrição

Instâncias com problemas de execução podem passar do estado Pending (Pendente) para Shutting down (Encerrando) e Terminated (Encerrada) quando você as inicia.

Ou você pode receber a seguinte mensagem de erro na saída do comando describe-instances da AWS Command Line Interface (AWS CLI):

" "StateReason": { "Code": "Client.InternalError" "Message": "Client.InternalError: Client error on launch" }"

Esse problema ocorre se a chave do AWS Key Management Service (AWS KMS) que você usou para criptografia não estiver definida como Enable. Ou o usuário ou o perfil do AWS Identity and Access Management (AWS IAM) que executou a instância não tem as permissões necessárias do AWS KMS.

Observação: mesmo que seu usuário do IAM tenha permissões completas do Amazon EC2, você ainda deve conceder a ele acesso à chave do AWS KMS.

Para resolver problemas do IAM, crie uma política que permita o acesso à sua chave do AWS KMS e, em seguida, anexe a política à sua entidade do IAM. Ou adicione as entidades do IAM aos usuários da chave do AWS KMS.

Resolução

Observação: se você receber mensagens de erro ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Verifique o status da chave do AWS KMS

Certifique-se de definir sua chave do AWS KMS como Enable.

Crie uma política que permita o acesso à sua chave do AWS KMS e, em seguida, anexe a política à sua entidade do IAM

Crie a seguinte política do IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:Encrypt",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    {
      "Effect": "Allow",
      "Action": "kms:CreateGrant",
      "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "Condition": {
        "Bool": {
          "kms:GrantIsForAWSResource": true
        }
      }
    }
  ]
}

Observação: Substitua arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab pelo nome do recurso da Amazon (ARN) da sua chave do AWS KMS.

Em seguida, anexe a política à sua função ou usuário do IAM.

Adicione as entidades do IAM aos usuários da chave do AWS KMS

Conclua as etapas a seguir:

  1. Abra o console do AWS KMS.
  2. Clique em Customer managed keys (Chaves gerenciadas pelo cliente).
  3. Em Key ID (ID da chave), selecione o ID da sua chave.
  4. Em Key users (Usuários de chaves), clique em Add (Adicionar).
  5. Em Name (Nome), selecione o usuário ou o perfil do IAM e depois clique em Add (Adicionar).
    Observação: a política de chave padrão permite o acesso às suas contas da AWS. Se, em vez disso, você usar uma política de chave personalizada, a política de chave do AWS KMS deve permitir explicitamente as seguintes permissões:
    {
          "Sid": "Allow use of the key",
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::123456789012:role/MyRoleName",
              "arn:aws:iam::123456789012:user/MyUserName"
            ]
          },
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
          ],
          "Resource": "*"
        },
        {
          "Sid": "Allow attachment of persistent resources",
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::123456789012:role/MyRoleName",
              "arn:aws:iam::123456789012:user/MyUserName"
            ]
          },
          "Action": [
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:RevokeGrant"
          ],
          "Resource": "*",
          "Condition": {
            "Bool": {
              "kms:GrantIsForAWSResource": "true"
            }
          }
        }
    Observação: substitua arn:aws:iam::123456789012:role/MyRoleName pelo ARN do seu perfil do IAM e arn:aws:iam::123456789012:user/MyUserName pelo ARN do seu usuário do IAM.

Informações relacionadas

Como posso verificar se a criptografia autenticada com criptografia de dados é usada para chamadas de API do AWS KMS?

Políticas-chave em AWS KMS

Como o Amazon Elastic Block Store (Amazon EBS) usa AWS KMS

AWS OFICIALAtualizada há 6 meses