View a markdown version of this page

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 SSE-S3 SSE-KMS chiffrés. 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 SSE-S3/SSE-KMS chiffrées

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 SSE-S3/SSE-KMS chiffrés. Amazon S3 gère le déchiffrement automatique des objets SSE.

Lecture de tables CSE-KMS chiffrées

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 CSE-KMS chiffrés,

  • 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 CSE-KMS chiffrés, 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 CSE-KMS chiffrés créés par les clients de chiffrement Amazon S3 V1, V2 ou V3.

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

  • Athena peut toujours lire SSE-S3 et SSE-KMS chiffrer des objets, 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 CSE-KMS chiffrés créés par le client de chiffrement Amazon S3 V1.

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

  • Athena peut toujours lire SSE-S3 et SSE-KMS chiffrer des objets, 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 CSE-KMS chiffrées has_encrypted_data='true' affichent une icône en forme de clé.

Icône de table chiffrée

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

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 CSE-KMS chiffrées, 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 CSE-KMS chiffrées, nous vous recommandons de vous assurer que toutes les données CSE-KMS sont chiffrées et qu'il n'y a pas de mélange d'objets CSE-KMS chiffrés CSE-KMS et d'objets non chiffrés.