View a markdown version of this page

Requisitos de permiso para el cifrado SSE-KMS de tablas de S3 - Amazon Simple Storage Service

Requisitos de permiso para el cifrado SSE-KMS de tablas de S3

Cuando utiliza el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) para tablas en buckets de tablas de S3, necesita conceder permisos para diferentes identidades en la cuenta. Como mínimo, la identidad de acceso y la entidad principal de mantenimiento de tablas de S3 necesitan acceso a la clave; los demás permisos necesarios dependen del caso de uso.

Permisos necesarios

Para acceder a una tabla cifrada con una clave de KMS, necesita estos permisos en esa clave:

  • kms:GenerateDataKey

  • kms:Decrypt

importante

Para usar SSE-KMS en las tablas, la entidad principal del servicio de mantenimiento de tablas de Amazon S3 (maintenance.s3tables.amazonaws.com) necesita los permisos kms:GenerateDataKey y kms:Decrypt en la clave.

Permisos adicionales

Se requieren estos permisos adicionales en función del caso de uso:

  • Permisos para servicios de análisis de AWS y acceso directo: si trabaja con tablas cifradas con SSE-KMS mediante servicios de análisis de AWS o motores de terceros que acceden directamente a las tablas de S3, el rol de IAM que utilice necesita permiso para usar la clave de KMS.

  • Permisos con Lake Formation habilitado: si ha optado por AWS Lake Formation para el control de acceso, el rol de servicio de Lake Formation necesita permiso para usar la clave de KMS.

  • Permisos para las tablas de metadatos de S3: si utiliza el cifrado SSE-KMS para las tablas de metadatos de S3, debe proporcionar a la entidad principal del servicio de metadatos de S3 (metadata.s3.amazonaws.com) acceso a la clave de KMS. Esto permite a los metadatos de S3 actualizar las tablas cifradas para que reflejen los cambios de datos más recientes.

nota

En el caso de las claves de KMS entre cuentas, el rol de IAM necesita un permiso de acceso de claves y una autorización explícita en la política de claves. Para obtener más información sobre los permisos entre cuentas para las claves de KMS, consulte Permitir a las cuentas de AWS externas usar una clave de KMS en la Guía para desarrolladores de servicio de AWS Key Management Service.

Concesión de permisos de la entidad principal del servicio de mantenimiento de tablas de S3 a la clave de KMS

Este permiso es necesario para crear tablas cifradas con SSE-KMS y permitir el mantenimiento automático de las tablas, como la compactación, la administración de instantáneas y la eliminación de archivos no referenciados en las tablas cifradas.

nota

Siempre que solicita la creación de una tabla cifrada con SSE-KMS, las tablas de S3 comprueban que la entidad principal maintenance.s3tables.amazonaws.com tiene acceso a la clave de KMS. Para realizar esta comprobación, se crea temporalmente un objeto de cero bytes en el bucket de la tabla, que se eliminará automáticamente mediante las operaciones de mantenimiento de eliminación de archivos no referenciados. Si la clave de KMS que especificó para el cifrado no tiene acceso de mantenimiento, la operación createTable producirá un error.

Para conceder acceso de mantenimiento en las tablas cifradas con SSE-KMS, puede utilizar la siguiente política de claves de ejemplo. En esta política, a la entidad principal del servicio de maintenance.s3tables.amazonaws.com se le concede permiso para usar una clave de KMS específica para cifrar y descifrar las tablas de un bucket de tablas específico. Para utilizar la política, sustituya los marcadores de posición de entrada de usuario por información propia:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }

Concesión de permisos a las entidades principales de IAM para trabajar con tablas cifradas en servicios de análisis integrados de AWS

Para trabajar con tablas de S3 en los servicios de análisis de AWS, integre los buckets de tablas con AWS Glue Data Catalog. Esta integración permite que los servicios de análisis de AWS detecten automáticamente los datos de las tablas y accedan a ellos. Para obtener más información sobre la integración, consulte Integración de tablas de Amazon S3 con servicios de análisis de AWS.

Cuando trabaja con tablas cifradas de SSE-KMS mediante servicios de análisis de AWS o motores de terceros y de código abierto que acceden directamente a las tablas de S3, el rol de IAM que utilice necesita permiso para usar la clave de AWS KMS para las operaciones de cifrado.

Puede conceder acceso a la clave de KMS mediante una política de IAM asociada al rol o mediante una política de claves de KMS.

IAM policy

Asocie esta política insertada al rol de IAM que use para realizar consultas que permitan el acceso a la clave de KMS. Reemplace el ARN de la clave de KMS por el suyo propio.

{ "Version":"2012-10-17",, "Statement": [ { "Sid": "AllowKMSKeyUsage", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
KMS key policy

Como opción alternativa, adjunte esta instrucción a la política de claves de KMS para permitir que el rol de IAM especificado utilice la clave. Sustituya el ARN del rol por el rol de IAM que utilice para las consultas.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<catalog-account-id>:role/<role-name>" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", ], "Resource": "*" }

Concesión de permisos de entidades principales de IAM para trabajar con tablas cifradas cuando Lake Formation esté habilitado

Si ha optado por AWS Lake Formation para el control de acceso en la integración de tablas de S3, el rol de servicio de Lake Formation necesita permiso para usar la clave de AWS KMS en las operaciones de cifrado. Lake Formation usa este rol para vender credenciales en nombre de las entidades principales que acceden a las tablas.

El ejemplo de política de claves de KMS siguiente concede el permiso de rol de servicio de Lake Formation para usar una clave de KMS específica en la cuenta para las operaciones de cifrado. Sustituya los valores de los marcadores de posición por los suyos propios.

{ "Sid": "AllowTableRoleAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/S3TablesRoleForLakeFormation" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "<kms-key-arn>" }

Concesión de permisos a la entidad principal del servicio de metadatos de S3 para usar la clave de KMS

Para permitir que Amazon S3 actualice las tablas de metadatos cifradas con SSE-KMS y realice el mantenimiento de esas tablas de metadatos, puede utilizar el siguiente ejemplo de política de claves. En esta política, permita a las entidades principales de servicio metadata.s3.amazonaws.com y maintenance.s3tables.amazonaws.com cifrar y descifrar las tablas en un bucket de tablas específico mediante una clave específica. Para utilizar la política, sustituya los marcadores de posición de entrada de usuario por información propia:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": [ "maintenance.s3tables.amazonaws.com", "metadata.s3.amazonaws.com" ] }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }