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:
- Abra o console do AWS KMS.
- Clique em Customer managed keys (Chaves gerenciadas pelo cliente).
- Em Key ID (ID da chave), selecione o ID da sua chave.
- Em Key users (Usuários de chaves), clique em Add (Adicionar).
- 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