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 la integración de los servicios de análisis de AWS: si trabaja con tablas cifradas con SSE-KMS en los servicios de análisis de AWS, el rol de integración necesita permiso para usar la clave de KMS.

  • Permisos de acceso directo: si trabaja directamente con tablas cifradas con SSE-KMS, mediante métodos como el punto de conexión de Iceberg REST de tablas de Amazon S3 o el catálogo de tablas de Amazon S3 para Apache Iceberg, debe conceder al rol de IAM que utiliza el cliente acceso a la clave.

  • 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:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "<kms-key-arn>", "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 Amazon SageMaker Lakehouse. 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 Uso de Tablas de Amazon S3 con servicios de análisis de AWS.

Cuando trabaja con tablas cifradas con SSE-KMS en esos servicios, el rol que utilice debe tener permiso para usar la clave de AWS KMS en las operaciones de cifrado. Puede aplicar estos permisos al rol de S3TablesRoleForLakeFormation creado durante la integración o a su propio rol de IAM.

El siguiente ejemplo de política de IAM insertada se puede utilizar para conceder al rol de servicio de S3TablesRoleForLakeFormation permiso para usar una clave de KMS específica en la cuenta para las operaciones de cifrado. Para utilizar la política, sustituya los valores de marcador de posición de entrada por los suyos.

{ "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 de entidades principales de IAM para trabajar directamente con tablas cifradas

Cuando trabaja con tablas cifradas mediante métodos de acceso directo o de terceros, debe conceder al rol que utiliza acceso a la clave de KMS. Los siguientes ejemplos muestran cómo conceder acceso mediante una política de IAM o una política de claves de KMS.

IAM policy

Asocie esta política insertada al rol de IAM para permitir el acceso a la clave de KMS. Para utilizar esta política, sustituya los valores de marcador de posición de entrada por el ARN de la clave de KMS propia.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "<kms-key-arn>" } ] }
KMS key policy

Adjunte esta política insertada a una clave de KMS para permitir que el rol de AWS KMS especificado utilice la clave. Para utilizar esta política, sustituya los valores de marcador de posición de entrada por el rol de IAM.

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

{ "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": "<kms-key-arn>", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }