View a markdown version of this page

Buat tabel berdasarkan kumpulan data terenkripsi di Amazon S3 - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat tabel berdasarkan kumpulan data terenkripsi di Amazon S3

Athena dapat membaca dan menulis ke tabel yang dataset dasarnya adalah SSE-S3, SSE-KMS, atau CSE-KMS terenkripsi. Bergantung pada opsi enkripsi yang digunakan untuk data tabel dan jenis kueri yang dijalankan, Anda mungkin harus menentukan beberapa properti tabel tambahan untuk membaca dan menulis data terenkripsi.

Membaca tabel terenkripsi SSE-S3/SSE-KMS

Tidak ada properti tabel tambahan yang perlu ditentukan pada pembuatan tabel untuk membaca kumpulan data terenkripsi SSE-S3/SSE-KMS. Amazon S3 menangani dekripsi objek SSE secara otomatis.

Membaca tabel terenkripsi CSE-KMS

Ada dua set properti tabel yang berbeda yang dapat ditentukan agar Athena membaca kumpulan data terenkripsi CSE-KMS,

  • Menggunakan properti encryption_option dan kms_key tabel (Disarankan)

  • Menggunakan properti has_encrypted_data tabel

penting

Jika Anda menggunakan Amazon EMR bersama dengan EMRFS untuk mengunggah file Parket terenkripsi CSE-KMS, Anda harus menonaktifkan unggahan multibagian dengan menyetelnya. fs.s3n.multipart.uploads.enabled false Jika Anda tidak melakukan ini, Athena tidak dapat menentukan panjang file Parquet danHIVE_CANNOT_OPEN_SPLITTerjadi kesalahan. Untuk informasi lebih lanjut, lihat Konfigurasi unggahan multipart untuk Amazon S3 di Amazon EMR.

Menggunakan properti tabel encryption_option dan kms_key

Dalam pernyataan CREATE TABLE, gunakan TBLPROPERTIES klausa yang menentukan encryption_option='CSE_KMS' dankms_key='aws_kms_key_arn', seperti pada contoh berikut.

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')

Ketika properti ini dikonfigurasi,

  • Athena dapat membaca objek terenkripsi CSE-KMS yang dibuat oleh klien enkripsi Amazon S3 V1, V2, atau V3.

  • Athena akan menggunakan AWS KMS kunci kms_key untuk mendekripsi data CSE-KMS. Jika ada objek yang dienkripsi dengan AWS KMS kunci yang berbeda, kueri akan gagal.

  • Athena masih dapat membaca objek terenkripsi SSE-S3 dan SSE-KMS, meskipun mencampur objek terenkripsi sisi server dan sisi klien tidak disarankan.

Menggunakan properti tabel has_encrypted_data

DalamBUAT TABELpernyataan, gunakanTBLPROPERTIESKlausul yang menentukanhas_encrypted_data='true', seperti dalam contoh berikut.

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')

Ketika properti tabel has_encrypted_data ditentukan,

  • Athena hanya dapat membaca objek terenkripsi CSE-KMS yang dibuat oleh klien enkripsi Amazon S3 V1.

  • Athena akan menyimpulkan AWS KMS kunci yang digunakan untuk mengenkripsi objek CSE-KMS dari metadata objek dan kemudian menggunakan kunci itu untuk mendekripsi objek.

  • Athena masih dapat membaca objek terenkripsi SSE-S3 dan SSE-KMS, meskipun mencampur objek terenkripsi sisi server dan sisi klien tidak disarankan.

catatan

Kapan encryption_option dan kms_key ditentukan di sampinghas_encrypted_data, properti encryption_option dan kms_key tabel diutamakan, dan diabaikanhas_encrypted_data.

Saat Anda menggunakan konsol Athena untuk membuat tabel menggunakan formulir dan menentukan lokasi tabel, pilih opsi Kumpulan data terenkripsi untuk menambahkan has_encrypted_data='true' properti ke tabel.

Pilih Kumpulan data terenkripsi dalam formulir tambahkan tabel

Dalam daftar tabel konsol Athena, tabel terenkripsi CSE-KMS dengan menampilkan ikon berbentuk kunci. has_encrypted_data='true'

Ikon tabel terenkripsi

Menulis data terenkripsi SSE-S3/SSE-KMS/CSE-KMS

Secara default, file data yang baru dimasukkan akan dienkripsi menggunakan konfigurasi enkripsi hasil kueri yang ditentukan dalam workgroup Athena. Untuk menulis data tabel dengan konfigurasi enkripsi yang berbeda dari konfigurasi enkripsi hasil kueri, Anda harus menambahkan beberapa properti tabel tambahan.

Dalam pernyataan CREATE TABLE, gunakan TBLPROPERTIES klausa yang menentukan encryption_option='SSE_S3 | SSE_KMS | CSE_KMS' dankms_key='aws_kms_key_arn', seperti pada contoh berikut.

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')

Semua data yang baru dimasukkan akan dienkripsi menggunakan konfigurasi enkripsi yang ditentukan oleh properti tabel daripada menggunakan konfigurasi enkripsi hasil kueri di workgroup.

Pertimbangan dan batasan

Saat menulis dan membaca kumpulan data terenkripsi, pertimbangkan poin-poin berikut.

  • Propertihas_encrypted_data,encryption_option, dan kms_key tabel hanya dapat digunakan dengan tabel Hive.

  • Saat membuat tabel dengan data terenkripsi CSE-KMS, kami sarankan Anda memastikan bahwa semua data dienkripsi dengan kunci yang sama. AWS KMS

  • Saat membuat tabel dengan data terenkripsi CSE-KMS, kami sarankan Anda memastikan bahwa semua data dienkripsi CSE-KMS dan tidak ada campuran objek terenkripsi dan CSE-KMS. non-CSE-KMS