View a markdown version of this page

Exigences d’autorisation pour le chiffrement SSE-KMS de S3 Tables - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exigences d’autorisation pour le chiffrement SSE-KMS de S3 Tables

Lorsque vous utilisez le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) pour les tables des compartiments de tables S3, vous devez accorder des autorisations pour les différentes identités de votre compte. Au minimum, votre identité d’accès et le principal de maintenance de S3 Tables doivent avoir accès à votre clé, les autres autorisations requises dépendent de votre cas d’utilisation.

Autorisations nécessaires

Pour accéder à une table chiffrée avec une clé KMS, vous devez disposer des autorisations suivantes sur cette clé :

  • kms:GenerateDataKey

  • kms:Decrypt

Important

Pour utiliser SSE-KMS sur des tables, le principal du service de maintenance d’Amazon S3 Tables (maintenance.s3tables.amazonaws.com) a besoin de kms:GenerateDataKey et d’autorisations kms:Decrypt sur la clé.

Autorisations supplémentaires

Ces autorisations supplémentaires sont requises en fonction de votre cas d’utilisation :

  • Autorisations pour les services AWS d'analyse et accès direct : si vous utilisez des tables chiffrées SSE-KMS par le biais de services AWS d'analyse ou de moteurs tiers accédant directement aux tables S3, le rôle IAM que vous utilisez doit être autorisé à utiliser votre clé KMS.

  • Autorisations lorsque Lake Formation est activée : si vous avez opté AWS Lake Formation pour le contrôle d'accès, le rôle de service Lake Formation doit être autorisé à utiliser votre clé KMS.

  • Autorisations pour les tables de métadonnées S3 : si vous utilisez le chiffrement SSE-KMS pour les tables de métadonnées S3, vous devez fournir au principal de service de métadonnées S3 (metadata.s3.amazonaws.com) l’accès à votre clé KMS. Cela permet aux métadonnées S3 de mettre à jour les tables chiffrées afin qu’elles reflètent vos dernières modifications de données.

Note

Pour les clés KMS entre comptes, votre rôle IAM nécessite à la fois une autorisation d’accès par clé et une autorisation explicite dans la stratégie de clé. Pour plus d'informations sur les autorisations entre comptes pour les clés KMS, voir Autoriser les AWS comptes externes à utiliser une clé KMS dans le Guide du développeur AWS Key Management Service de services.

Octroi des autorisations de principal de service de maintenance de S3 Tables sur votre clé KMS

Cette autorisation est requise pour créer des tables chiffrées SSE-KMS et pour permettre la maintenance automatique des tables, comme le compactage, la gestion des instantanés et la suppression de fichiers non référencés sur les tables chiffrées.

Note

Chaque fois que vous demandez la création d’une table chiffrée SSE-KMS, S3 Tables vérifie que le principal maintenance.s3tables.amazonaws.com a accès à votre clé KMS. Pour effectuer cette vérification, un objet de zéro octet est temporairement créé dans votre compartiment de table. Cet objet sera automatiquement supprimé par les opérations de maintenance de suppression de fichiers non référencés. Si la clé KMS que vous avez spécifiée pour le chiffrement ne dispose pas d’un accès de maintenance, l’opération createTable échoue.

Pour accorder un accès de maintenance aux tables chiffrées SSE-KMS, vous pouvez utiliser l’exemple de stratégie de clé suivant. Dans cette politique, le principal du service maintenance.s3tables.amazonaws.com est autorisé à utiliser une clé KMS spécifique pour chiffrer et déchiffrer les tables d’un compartiment de table spécifique. Pour utiliser cette politique, remplacez-la user input placeholders par vos propres informations :

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>/*" } } } ] }

Octroi aux principaux IAM des autorisations leur permettant de travailler avec des tables chiffrées dans les services d'analyse intégrés AWS

Pour utiliser les tables S3 dans les services AWS d'analyse, vous devez intégrer vos compartiments de tables à AWS Glue Data Catalog. Cette intégration permet aux services AWS d'analyse de découvrir et d'accéder automatiquement aux données des tables. Pour plus d’informations sur l’intégration, consultez Intégration des tables Amazon S3 aux services AWS d'analyse.

Lorsque vous travaillez avec des tables chiffrées SSE-KMS via des services AWS d'analyse ou des moteurs tiers et open source accédant directement aux tables S3, le rôle IAM que vous utilisez doit être autorisé à utiliser votre AWS KMS clé pour les opérations de chiffrement.

Vous pouvez accorder l'accès aux clés KMS par le biais d'une politique IAM associée à votre rôle ou via une politique de clé KMS.

IAM policy

Associez cette politique intégrée au rôle IAM que vous utilisez pour effectuer des requêtes afin d'autoriser l'accès aux clés KMS. Remplacez l'ARN de la clé KMS par le vôtre.

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

Vous pouvez également joindre cette déclaration à votre politique de clé KMS pour autoriser le rôle IAM spécifié à utiliser la clé. Remplacez l'ARN du rôle par le rôle IAM que vous utilisez pour les requêtes.

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

Octroi aux principaux IAM des autorisations leur permettant de travailler avec des tables chiffrées lorsque Lake Formation est activé

Si vous avez opté AWS Lake Formation pour le contrôle d'accès à votre intégration S3 Tables, le rôle de service Lake Formation doit être autorisé à utiliser votre AWS KMS clé pour les opérations de chiffrement. Lake Formation utilise ce rôle pour vendre des informations d'identification au nom des principaux accédant à vos tables.

L'exemple de politique de clé KMS suivant accorde au rôle de service Lake Formation l'autorisation d'utiliser une clé KMS spécifique dans votre compte pour les opérations de chiffrement. Remplacez les valeurs de l'espace réservé par les vôtres.

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

Octroi des autorisations de principal de service de métadonnées S3 pour utiliser votre clé KMS

Pour permettre à Amazon S3 de mettre à jour les tables de métadonnées chiffrées SSE-KMS et d’effectuer la maintenance de ces tables de métadonnées, vous pouvez utiliser l’exemple de stratégie de clé suivant. Dans cette stratégie, vous autorisez les principaux de service metadata.s3.amazonaws.com et maintenance.s3tables.amazonaws.com à chiffrer et déchiffrer les tables d’un compartiment de table spécifique à l’aide d’une clé spécifique. Pour utiliser cette politique, remplacez-la user input placeholders par vos propres informations :

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>/*" } } } ] }