Não consigo usar o Amazon EC2 Auto Scaling para iniciar instâncias do EC2 com AMIs criptografadas ou volumes criptografados

4 minuto de leitura
0

O Auto Scaling do Amazon Elastic Compute Cloud (Amazon EC2) falhou ao iniciar instâncias com imagem de máquina da Amazon (AMI) criptografada ou volumes criptografados. A identidade do AWS Identity and Access Management (IAM) que criou o Amazon EC2 Auto Scaling tem permissões de administrador.

Breve descrição

O Amazon EC2 Auto Scaling usa perfis vinculados a serviços para obter as permissões necessárias para chamar outros serviços da AWS. As permissões para SLR são codificadas e, portanto, não podem ser alteradas. As permissões padrão que passam para o Amazon EC2 Auto Scaling SLR não incluem permissões para acessar as chaves do AWS Key Management Service (AWS KMS).

Use chaves gerenciadas pela AWS ou chaves gerenciadas pelo cliente para criptografar volumes ou AMIs do Amazon Elastic Block Store (Amazon EBS) com o Amazon EC2 Auto Scaling. O Amazon EC2 Auto Scaling não precisa de permissões adicionais para usar chaves gerenciadas pela AWS. No entanto, a SLR do Amazon EC2 Auto Scaling deve ter permissões adicionais com chaves gerenciadas pelo cliente.

Resolução

Os exemplos a seguir usam a SLR padrão do Amazon EC2 Auto Scaling AWSServiceRoleForAutoScaling, mas você pode criar um nome de perfil exclusivo.

Você deve criar concessões do AWS KMS a partir da conta que possui o grupo do Amazon EC2 Auto Scaling, não da conta do AWS KMS. Para obter mais informações, consulte Concessões no AWS 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.

O Amazon EC2 Auto Scaling usa uma chave gerenciada pelo cliente que está na mesma conta da AWS

Siga as instruções para alterar uma política de chave e adicione o seguinte exemplo de declaração:

Observação: substitua 123456789012 pelo ID da conta em que o grupo do Amazon EC2 Auto Scaling está implantado.

{    "Sid": "Allow service-linked role use of the KMS",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "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/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "Bool": {
            "kms:GrantIsForAWSResource": true
        }
    }
}

O Amazon EC2 Auto Scaling usa uma chave gerenciada pelo cliente que está em uma conta externa da AWS

  1. Siga as instruções para alterar uma política de chaves. Modifique a política de chaves para que a entidade do IAM que está na conta externa da AWS possa realizar a ação da API CreateGrant:

    {    "Sid": "Allow external account 111122223333 use of the KMS",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::111122223333:root"
            ]
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources in external account 111122223333",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::111122223333:root"
            ]
        },
        "Action": [
            "kms:CreateGrant"
        ],
        "Resource": "*"
    }
  2. Use o comando create-grant da AWS CLI com as credenciais de uma entidade do IAM presente na conta da AWS que possui o grupo do Amazon EC2 Auto Scaling:
    Observação: substitua 444455556666 pelo ID da conta em que a chave KMS está presente.

    $ aws kms create-grant --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling --operations Decrypt GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant

    Verifique se a entidade do IAM tem permissões para realizar a ação da API CreateGrant. Se as permissões CreateGrant estiverem ausentes, adicione a seguinte declaração à política anexada da entidade do IAM:

    {      "Sid": "AllowCreationOfGrantForTheKMSinExternalAccount444455556666",
          "Effect": "Allow",
          "Action": "kms:CreateGrant",
          "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d"
    }

Informações relacionadas

Perfis vinculados a serviços para o Amazon EC2 Auto Scaling

Política de chave do KMS necessária para uso com volumes criptografados

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses