No puedo usar Amazon EC2 Auto Scaling para lanzar instancias de EC2 con AMI cifradas o volúmenes cifrados

4 minutos de lectura
0

Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling no ha podido lanzar instancias con volúmenes cifrados o imágenes de máquina de Amazon (AMI) cifradas. La identidad de AWS Identity and Access Management (IAM) que creó Amazon EC2 Auto Scaling tiene permisos de administrador.

Breve descripción

Amazon EC2 Auto Scaling utiliza roles vinculados a servicios para obtener los permisos necesarios para llamar a otros servicios de AWS. Los permisos de SLR tienen una codificación estricta y no se pueden modificar. Los permisos predeterminados que se transfieren a SLR de Amazon EC2 Auto Scaling no incluyen permisos para acceder a las claves de AWS Key Management Service (AWS KMS).

Puede utilizar claves administradas de AWS o claves administradas por el cliente para cifrar los volúmenes o AMI de Amazon Elastic Block Store (Amazon EBS) con Amazon EC2 Auto Scaling. Amazon EC2 Auto Scaling no necesita permisos adicionales para usar las claves administradas de AWS. Sin embargo, el SRL de Amazon EC2 Auto Scaling debe tener permisos adicionales con claves administradas por el cliente.

Solución

En los siguientes ejemplos se utiliza el SLR AWSServiceRoleForAutoScaling predeterminado de Amazon EC2 Auto Scaling, pero puede crear un nombre de rol único.

Debe crear las concesiones de AWS KMS desde la cuenta propietaria del grupo de Amazon EC2 Auto Scaling, no desde la cuenta de AWS KMS. Para obtener más información, consulte Grants in AWS KMS.

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), compruebe si está utilizando la versión más reciente de AWS CLI.

Amazon EC2 Auto Scaling utiliza una clave administrada por el cliente que se encuentra en la misma cuenta de AWS

Siga las instrucciones para cambiar una política de claves y añada la siguiente instrucción de ejemplo:

Nota: Sustituya 123456789012 por el ID de la cuenta en la que se haya desplegado el grupo de Amazon EC2 Auto Scaling.

{    "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
        }
    }
}

Amazon EC2 Auto Scaling utiliza una clave administrada por el cliente que se encuentra en una cuenta de AWS externa

  1. Siga las instrucciones para cambiar una política de claves. Modifique la política de claves para que la entidad de IAM en la cuenta de AWS externa pueda realizar la acción de 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. Utilice el comando de AWS CLI create-grant con las credenciales de una entidad de IAM en la cuenta de AWS propietaria del grupo de Amazon EC2 Auto Scaling:
    Nota: Sustituya 444455556666 por el ID de la cuenta donde se encuentre la clave de KMS.

    $ 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

    Asegúrese de que la entidad de IAM tenga permisos para realizar la acción de la API CreateGrant. Si faltan los permisos de CreateGrant, añada la siguiente instrucción a la política asociada a la entidad de IAM:

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

Información relacionada

Service-linked roles for Amazon EC2 Auto Scaling

Required KMS key policy for use with encrypted volumes

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 7 meses