Création de tables basées sur des jeux de données chiffrés dans Amazon S3 - Amazon Athena

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.

Création de tables basées sur des jeux de données chiffrés dans Amazon S3

Athena peut lire et écrire dans des tables dont les ensembles de données sous-jacents sont chiffrés par SSE-S3, SSE-KMS ou CSE-KMS. En fonction de l'option de chiffrement utilisée pour les données de la table et du type de requêtes exécutées, il est possible que vous deviez spécifier des propriétés de table supplémentaires afin de lire et d'écrire des données chiffrées.

Lecture de tables chiffrées SSE-S3/SSE-KMS

Aucune propriété de table supplémentaire n'a besoin d'être spécifiée lors de la création de la table pour lire les ensembles de données chiffrés SSE-S3/SSE-KMS. Amazon S3 gère le déchiffrement automatique des objets SSE.

Lecture de tables chiffrées CSE-KMS

Il existe deux ensembles différents de propriétés de table qui peuvent être spécifiés afin qu'Athena puisse lire les ensembles de données chiffrés CSE-KMS,

  • Utilisation des propriétés du kms_key tableau encryption_option et (recommandé)

  • Utilisation de la propriété has_encrypted_data table

Important

Si vous utilisez Amazon EMR avec EMRFS pour télécharger des fichiers Parquet chiffrés au format CSE-KMS, vous devez désactiver les téléchargements partitionnés en réglant sur. fs.s3n.multipart.uploads.enabled false Sinon, Athena n'est pas en mesure de déterminer la longueur des fichiers Parquet et une erreur HIVE_CANNOT_OPEN_SPLIT se produit. Pour plus d'informations, consultez Configuration d'un chargement partitionné pour Simple Storage Service (Amazon S3) dans le Guide de gestion Amazon EMR.

Utilisation des propriétés des tables encryption_option et kms_key

Dans une instruction CREATE TABLE, utilisez une TBLPROPERTIES clause qui spécifie encryption_option='CSE_KMS' etkms_key='aws_kms_key_arn', comme dans l'exemple suivant.

CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'encryption_option' = 'CSE_KMS', 'kms_key' = 'arn:aws:kms:us-east-1:012345678901:key/my_kms_key')

Lorsque ces propriétés sont configurées,

  • Athena peut lire les objets chiffrés CSE-KMS créés par les clients de chiffrement Amazon S3 V1, V2 ou V3.

  • Athena utilisera la AWS KMS clé pour déchiffrer les données kms_key CSE-KMS. Si des objets ont été chiffrés avec une AWS KMS clé différente, la requête échouera.

  • Athena peut toujours lire les objets chiffrés SSE-S3 et SSE-KMS, mais il n'est pas recommandé de mélanger des objets chiffrés côté serveur et côté client.

Utilisation de la propriété de table has_encrypted_data

Dans une instruction CREATE TABLE (CRÉER UNE TABLE), utilisez une clause TBLPROPERTIES qui spécifie has_encrypted_data='true', comme dans l'exemple ci-dessous.

CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'has_encrypted_data' = 'true')

Lorsque la propriété de table has_encrypted_data est spécifiée,

  • Athena ne peut lire que les objets chiffrés CSE-KMS créés par le client de chiffrement Amazon S3 V1.

  • Athena déduira la AWS KMS clé utilisée pour chiffrer l'objet CSE-KMS à partir des métadonnées de l'objet, puis utilisera cette clé pour déchiffrer l'objet.

  • Athena peut toujours lire les objets chiffrés SSE-S3 et SSE-KMS, mais il n'est pas recommandé de mélanger des objets chiffrés côté serveur et côté client.

Note

Lorsque encryption_option et kms_key sont spécifiés à côtéhas_encrypted_data, les propriétés de la kms_key table encryption_option et sont prioritaires et has_encrypted_data sont ignorées.

Lorsque vous utilisez la console Athena pour créer une table à l'aide d'un formulaire et que vous spécifiez l'emplacement de la table, sélectionnez l'option Ensemble de données chiffrées pour ajouter la has_encrypted_data='true' propriété à la table.

Sélectionnez Encrypted data set (Jeu de données chiffrées) dans le formulaire d'ajout de table.

Dans la liste des tables de la console Athena, les tables chiffrées par CSE-KMS has_encrypted_data='true' affichent une icône en forme de clé.

Icône de table chiffrée

Écrire des données chiffrées SSE-S3/SSE-KMS/CSE-KMS

Par défaut, les fichiers de données nouvellement insérés seront chiffrés selon la configuration de chiffrement des résultats de requête spécifiée dans le groupe de travail Athena. Pour écrire des données de table avec une configuration de chiffrement différente de celle des résultats de la requête, vous devez ajouter des propriétés de table supplémentaires.

Dans une instruction CREATE TABLE, utilisez une TBLPROPERTIES clause qui spécifie encryption_option='SSE_S3 | SSE_KMS | CSE_KMS' etkms_key='aws_kms_key_arn', comme dans l'exemple suivant.

CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'encryption_option' = 'SSE_KMS', 'kms_key' = 'arn:aws:kms:us-east-1:012345678901:key/my_kms_key')

Toutes les données nouvellement insérées seront chiffrées à l'aide de la configuration de chiffrement spécifiée par les propriétés de la table plutôt qu'à l'aide de la configuration de chiffrement des résultats de la requête dans le groupe de travail.

Considérations et restrictions

Lorsque vous écrivez et lisez des ensembles de données chiffrés, tenez compte des points suivants.

  • Les propriétéshas_encrypted_data,encryption_option, et de kms_key table ne peuvent être utilisées qu'avec les tables Hive.

  • Lorsque vous créez une table contenant des données chiffrées CSE-KMS, nous vous recommandons de vous assurer que toutes les données sont chiffrées avec la même AWS KMS clé.

  • Lorsque vous créez une table contenant des données chiffrées au format CSE-KMS, nous vous recommandons de vous assurer que toutes les données sont chiffrées au format CSE-KMS et qu'il n'existe pas de combinaison d' non-CSE-KMSobjets chiffrés au format CSE-KMS.