Cifrado en reposo - Amazon ECR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cifrado en reposo

Amazon ECR almacena imágenes en depósitos de Amazon S3 que administra Amazon ECR. De forma predeterminada, Amazon ECR utiliza el cifrado del lado del servidor con claves de cifrado administradas por Amazon S3 que cifran los datos en reposo mediante un algoritmo de cifrado AES-256. Esto no requiere ninguna acción por su parte y no conlleva ningún cargo adicional. Para obtener más información, consulte Protecting Data Using Server-Side Encryption with Amazon S3-Managed Encryption Keys (SSE-S3) (Protección de datos mediante el cifrado que se ejecuta en el servidor con las claves de cifrado administradas por Amazon S3 [SSE-S3]) en la Guía del usuario de Amazon Simple Storage Service.

Para tener más control sobre el cifrado de sus repositorios de Amazon ECR, puede utilizar el cifrado del lado del servidor con claves de KMS almacenadas en (). AWS Key Management Service AWS KMS Al cifrar AWS KMS los datos, puede utilizar la predeterminada, que gestiona Amazon ECR Clave administrada de AWS, o especificar su propia clave de KMS (denominada clave gestionada por el cliente). Para obtener más información, consulte Protección de datos mediante el cifrado del lado del servidor con claves de KMS almacenadas en AWS KMS (SSE-KMS) en la Guía del usuario de Amazon Simple Storage Service.

Cada repositorio de Amazon ECR tiene una configuración de cifrado, que se establece cuando este se crea. En cada repositorio se pueden utilizar diferentes configuraciones de cifrado. Para obtener más información, consulte Creación de un repositorio privado.

Cuando se crea un repositorio con el AWS KMS cifrado activado, se utiliza una clave KMS para cifrar el contenido del repositorio. Además, Amazon ECR añade una AWS KMS concesión a la clave de KMS con el repositorio Amazon ECR como principal beneficiario.

A continuación se proporciona una descripción de alto nivel sobre cómo Amazon ECR se integra con AWS KMS para cifrar y descifrar sus repositorios:

  1. Al crear un repositorio, Amazon ECR envía una DescribeKeyllamada AWS KMS a para validar y recuperar el nombre de recurso de Amazon (ARN) de la clave de KMS especificada en la configuración de cifrado.

  2. Amazon ECR envía dos CreateGrantsolicitudes AWS KMS para crear concesiones en la clave de KMS para que Amazon ECR pueda cifrar y descifrar datos mediante la clave de datos.

  3. Al insertar una imagen, se envía una GenerateDataKeysolicitud en la que se especifica la clave KMS AWS KMS que se utilizará para cifrar la capa de imágenes y el manifiesto.

  4. AWS KMS genera una nueva clave de datos, la cifra con la clave KMS especificada y envía la clave de datos cifrada para guardarla junto con los metadatos de la capa de imágenes y el manifiesto de la imagen.

  5. Al extraer una imagen, se envía una solicitud de descifrado AWS KMS, especificando la clave de datos cifrados.

  6. AWS KMS descifra la clave de datos cifrada y envía la clave de datos descifrados a Amazon S3.

  7. La clave de datos se utiliza para descifrar la capa de imagen antes de que esta se extraiga.

  8. Cuando se elimina un repositorio, Amazon ECR envía dos RetireGrantsolicitudes AWS KMS para retirar las concesiones creadas para el repositorio.

Consideraciones

Se deben tener en cuenta los siguientes puntos al utilizar el AWS KMS cifrado con Amazon ECR.

  • Si crea su repositorio de Amazon ECR con cifrado de KMS y no especifica una clave de KMS, Amazon ECR utiliza una Clave administrada de AWS con el alias de forma aws/ecr predeterminada. Esta clave KMS se crea en su cuenta la primera vez que crea un repositorio con cifrado KMS habilitado.

  • Cuando utiliza el cifrado KMS con su propia clave KMS, la clave debe existir en la misma región que el repositorio.

  • No se deben revocar las concesiones que Amazon ECR crea en su nombre. Si revoca la autorización que autoriza a Amazon ECR a utilizar las AWS KMS claves de su cuenta, Amazon ECR no podrá acceder a estos datos, cifrar las nuevas imágenes introducidas en el repositorio ni descifrarlas cuando se extraigan. Al revocar una concesión para Amazon ECR, el cambio se produce inmediatamente. Para revocar derechos de acceso, debe eliminar el repositorio en lugar de revocar la concesión. Cuando se elimina un repositorio, Amazon ECR retira las concesiones en su nombre.

  • El uso de las claves conlleva un coste. AWS KMS Para más información, consulte Precios de AWS Key Management Service.

Permisos de IAM necesarios

Al crear o eliminar un repositorio de Amazon ECR con cifrado del lado del servidor mediante AWS KMS, los permisos necesarios dependen de la clave KMS específica utilice.

Permisos de IAM necesarios cuando se utiliza Clave administrada de AWS para Amazon ECR

De forma predeterminada, cuando el AWS KMS cifrado está habilitado para un repositorio de Amazon ECR pero no se especifica ninguna clave de KMS, se utiliza la Clave administrada de AWS de Amazon ECR. Cuando la clave AWS de KMS administrada para Amazon ECR se usa para cifrar un repositorio, cualquier responsable que tenga permiso para crear un repositorio también puede habilitar el AWS KMS cifrado en el repositorio. No obstante, la entidad de seguridad de IAM que elimina el repositorio debe tener el permiso kms:RetireGrant. Esto permite retirar las concesiones que se agregaron a la AWS KMS clave cuando se creó el repositorio.

El siguiente ejemplo de política de IAM se puede agregar como política insertada a un usuario para asegurarse de que tiene los permisos mínimos necesarios para eliminar un repositorio que tenga habilitado el cifrado. La clave KMS utilizada para cifrar el repositorio se puede especificar mediante el parámetro de recurso.

{ "Version": "2012-10-17", "Id": "ecr-kms-permissions", "Statement": [ { "Sid": "AllowAccessToRetireTheGrantsAssociatedWithTheKey", "Effect": "Allow", "Action": [ "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/b8d9ae76-080c-4043-92EXAMPLE" } ] }

Permisos de IAM necesarios cuando se utiliza una clave administrada por el cliente

Al crear un repositorio con el AWS KMS cifrado habilitado mediante una clave administrada por el cliente, se requieren permisos tanto para la política de claves de KMS como para la política de IAM para el usuario o rol que crea el repositorio.

Al crear su propia clave KMS, puede usar la política de clave AWS KMS predeterminada o especificar la suya propia. Para garantizar que el propietario de la cuenta siga siendo administrable por el propietario de la cuenta, la política de claves de la clave de KMS debe permitir todas AWS KMS las acciones del usuario raíz de la cuenta. Es posible que se agreguen permisos de ámbito adicionales a la política de clave, pero como mínimo se le deben dar permisos al usuario raíz para administrar la clave KMS. Para permitir que la clave KMS se use solo para las solicitudes que se originan en Amazon ECR, puede usar la clave de ViaService condición kms: con el ecr.<region>.amazonaws.com valor.

El siguiente ejemplo de política de claves otorga a la AWS cuenta (usuario raíz) propietaria de la clave de KMS acceso total a la clave de KMS. Para obtener más información sobre este ejemplo de política clave, consulte Permitir el acceso a la AWS cuenta y Habilitar las políticas de IAM en la Guía para AWS Key Management Service desarrolladores.

{ "Version": "2012-10-17", "Id": "ecr-key-policy", "Statement": [ { "Sid": "EnableIAMUserPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" } ] }

El usuario de IAM, el rol de IAM o la AWS cuenta que crea los repositorios debe tener el kms:DescribeKey permiso y kms:CreateGrantkms:RetireGrant, además de los permisos de Amazon ECR necesarios.

nota

El permiso kms:RetireGrant se debe agregar a la política de IAM del usuario o rol que crea el repositorio. Los permisos kms:CreateGrant y kms:DescribeKey se pueden agregar a la política de clave para la clave KMS, o a la política de IAM del usuario o rol que crea el repositorio. Para obtener más información sobre cómo funcionan AWS KMS los permisos, consulte la referencia sobre permisos de AWS KMS API: acciones y recursos en la Guía para desarrolladores.AWS Key Management Service

El siguiente ejemplo de política de IAM se puede agregar como política insertada a un usuario, para asegurarse de que tiene los permisos mínimos necesarios para crear un repositorio que tenga habilitado el cifrado y borrarlo cuando haya terminado de utilizarlo. La AWS KMS key utilizada para cifrar el repositorio se puede especificar mediante el parámetro de recurso.

{ "Version": "2012-10-17", "Id": "ecr-kms-permissions", "Statement": [ { "Sid": "AllowAccessToCreateAndRetireTheGrantsAssociatedWithTheKeyAsWellAsDescribeTheKey", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:RetireGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/b8d9ae76-080c-4043-92EXAMPLE" } ] }

Habilitación de un usuario para mostrar una lista de claves KMS en la consola al crear un repositorio

Cuando utilice la consola de Amazon ECR para crear un repositorio, puede conceder permisos para permitir que un usuario publique las claves KMS administradas por el cliente en la región al habilitar el cifrado para el repositorio. En el siguiente ejemplo de política de IAM se muestran los permisos necesarios para mostrar una lista de las claves KMS y alias cuando se utiliza la consola.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "kms:DescribeKey" ], "Resource": "*" } }

Monitoreo de la interacción de Amazon ECR con AWS KMS

Puede utilizarlo AWS CloudTrail para realizar un seguimiento de las solicitudes que Amazon ECR envía AWS KMS en su nombre. Las entradas de registro del CloudTrail registro contienen una clave de contexto de cifrado para que sean más fáciles de identificar.

Contexto de cifrado de Amazon ECR

Un contexto de cifrado es un conjunto de pares de clave-valor que contiene datos no secretos arbitrarios. Al incluir un contexto de cifrado en una solicitud de cifrado de datos, vincula AWS KMS criptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasar el mismo contexto de cifrado.

En sus solicitudes GenerateDataKeyy en las de Decrypt AWS KMS, Amazon ECR utiliza un contexto de cifrado con dos pares de nombre-valor que identifican el repositorio y el bucket de Amazon S3 que se utilizan. Esto se muestra en el siguiente ejemplo. Los nombres no varían, pero los valores de contexto de cifrado combinado serán diferentes para cada valor.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df", "aws:ecr:arn": "arn:aws:ecr:us-west-2:111122223333:repository/repository-name" }

Puede usar el contexto de cifrado para identificar estas operaciones criptográficas en registros y registros de auditoría, como AWS CloudTrailAmazon CloudWatch Logs, y como condición para la autorización en políticas y concesiones.

El contexto de cifrado de Amazon ECR se compone de dos pares de nombre-valor.

  • aws:s3:arn: el primer par de nombre-valor identifica el bucket. La clave es aws:s3:arn. El valor es el Nombre de recurso de Amazon (ARN) del bucket de Amazon S3.

    "aws:s3:arn": "ARN of an Amazon S3 bucket"

    Por ejemplo, si el ARN del bucket fuera arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df, el contexto de cifrado incluiría el siguiente par.

    "arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df"
  • aws:ecr:arn: el segundo par de nombre-valor identifica el Nombre de recurso de Amazon (ARN) del repositorio. La clave es aws:ecr:arn. El valor representa el ARN del proyecto.

    "aws:ecr:arn": "ARN of an Amazon ECR repository"

    Por ejemplo, si el ARN del repositorio fuera arn:aws:ecr:us-west-2:111122223333:repository/repository-name, el contexto de cifrado incluiría el siguiente par.

    "aws:ecr:arn": "arn:aws:ecr:us-west-2:111122223333:repository/repository-name"

Solución de problemas

Al eliminar un repositorio de Amazon ECR con la consola, si el repositorio se elimina correctamente pero Amazon ECR no puede retirar las concesiones agregadas a la clave KMS para su repositorio, recibirá el siguiente error.

The repository [{repository-name}] has been deleted successfully but the grants created by the kmsKey [{kms_key}] failed to be retired

Cuando esto ocurra, podrá retirar usted mismo las AWS KMS subvenciones para el repositorio.

Para retirar manualmente AWS KMS las subvenciones para un repositorio
  1. Enumere las concesiones para la AWS KMS clave utilizada para el repositorio. El valor key-id se incluye en el error que recibe de la consola. También puede usar el list-keys comando para enumerar las claves de KMS Claves administradas por AWS y las administradas por el cliente en una región específica de su cuenta.

    aws kms list-grants \ --key-id b8d9ae76-080c-4043-9237-c815bfc21dfc --region us-west-2

    La salida incluye un elemento EncryptionContextSubset con el Nombre de recurso de Amazon (ARN) del repositorio. Esto se puede utilizar para determinar qué concesión agregada a la clave es la que desea retirar. En el siguiente paso se usará el valor GrantId al retirar la concesión.

  2. Retira cada concesión de la AWS KMS clave agregada al repositorio. Sustituya el valor for por GrantIdel ID de la concesión del resultado del paso anterior.

    aws kms retire-grant \ --key-id b8d9ae76-080c-4043-9237-c815bfc21dfc \ --grant-id GrantId \ --region us-west-2