

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
<a name="creating-tables-based-on-encrypted-datasets-in-s3"></a>

Athena dapat membaca dan menulis ke tabel yang dataset dasarnya, SSE-S3, SSE-KMS atau dienkripsi. CSE-KMS 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 SSE-S3/SSE-KMS tabel terenkripsi
<a name="reading-sse-s3-sse-kms-encrypted-tables"></a>

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

## Membaca CSE-KMS tabel terenkripsi
<a name="reading-cse-kms-encrypted-tables"></a>

Ada dua set properti tabel yang berbeda yang dapat ditentukan agar Athena membaca kumpulan data CSE-KMS terenkripsi,
+ 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 CSE-KMS terenkripsi, 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 dan**HIVE\_CANNOT\_OPEN\_SPLIT**Terjadi kesalahan. Untuk informasi lebih lanjut, lihat [Konfigurasi unggahan multipart untuk Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-upload-s3.html#Config_Multipart) di *Amazon EMR*.

### Menggunakan properti tabel encryption\_option dan kms\_key
<a name="using-encryption-option-and-kms-key-table-properties"></a>

Dalam pernyataan [CREATE TABLE](create-table.md), gunakan `TBLPROPERTIES` klausa yang menentukan `encryption_option='CSE_KMS'` dan`kms_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 CSE-KMS terenkripsi 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 SSE-S3 dan SSE-KMS mengenkripsi objek, meskipun mencampur objek terenkripsi sisi server dan sisi klien tidak disarankan.

### Menggunakan properti tabel has\_encrypted\_data
<a name="using-has-encrypted-data-table-property"></a>

Dalam[BUAT TABEL](create-table.md)pernyataan, gunakan`TBLPROPERTIES`Klausul yang menentukan`has_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 CSE-KMS terenkripsi yang dibuat oleh klien enkripsi Amazon S3 V1.
+ Athena akan menyimpulkan AWS KMS kunci yang digunakan untuk mengenkripsi CSE-KMS objek dari metadata objek dan kemudian menggunakan kunci itu untuk mendekripsi objek.
+ Athena masih dapat membaca SSE-S3 dan SSE-KMS mengenkripsi objek, meskipun mencampur objek terenkripsi sisi server dan sisi klien tidak disarankan.

**catatan**  
Kapan `encryption_option` dan `kms_key` ditentukan di samping`has_encrypted_data`, properti `encryption_option` dan `kms_key` tabel diutamakan, dan diabaikan`has_encrypted_data`.

Saat Anda menggunakan konsol Athena untuk [membuat tabel menggunakan formulir](data-sources-glue-manual-table.md) 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](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/add-table-form-encrypted-option.png)


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

![Ikon tabel terenkripsi](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/tables-list-encrypted-table-icon.png)


## Menulis SSE-S3/SSE-KMS/CSE-KMS data terenkripsi
<a name="writing-sse-s3-sse-kms-cse-kms-encrypted-data"></a>

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](create-table.md), gunakan `TBLPROPERTIES` klausa yang menentukan `encryption_option='SSE_S3 | SSE_KMS | CSE_KMS'` dan`kms_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
<a name="considerations-and-limitations"></a>

Saat menulis dan membaca kumpulan data terenkripsi, pertimbangkan poin-poin berikut.
+ Properti`has_encrypted_data`,`encryption_option`, dan `kms_key` tabel hanya dapat digunakan dengan tabel Hive.
+ Saat membuat tabel dengan data CSE-KMS terenkripsi, kami sarankan Anda memastikan bahwa semua data dienkripsi dengan kunci yang sama. AWS KMS 
+ Saat membuat tabel dengan data CSE-KMS terenkripsi, kami sarankan Anda memastikan bahwa semua data CSE-KMS dienkripsi dan tidak ada campuran objek CSE-KMS non-dan terenkripsi. CSE-KMS 