

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

# Cara menggunakan CLI AWS Enkripsi
<a name="crypto-cli-how-to"></a>

Topik ini menjelaskan cara menggunakan parameter dalam CLI AWS Enkripsi. Sebagai contoh, lihat [Contoh CLI AWS Enkripsi](crypto-cli-examples.md). Untuk dokumentasi selengkapnya, lihat [Membaca Dokumen.](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/) Sintaks yang ditunjukkan dalam contoh ini adalah untuk AWS Enkripsi CLI versi 2.1. *x* dan kemudian.

**catatan**  
[Versi CLI AWS Enkripsi lebih awal dari 4.0.0 sedang dalam fase. end-of-support](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle)  
Anda dapat memperbarui dengan aman dari versi 2.1. *x* dan yang lebih baru ke versi terbaru CLI AWS Enkripsi tanpa perubahan kode atau data apa pun. Namun, [fitur keamanan baru](about-versions.md#version-2) diperkenalkan di versi 2.1. *x* tidak kompatibel ke belakang. Untuk memperbarui dari versi 1.7. *x* atau sebelumnya, Anda harus terlebih dahulu memperbarui ke yang terbaru 1. *x* versi CLI AWS Enkripsi. Lihat perinciannya di [Migrasi Anda AWS Encryption SDK](migration.md).  
Fitur keamanan baru awalnya dirilis dalam AWS Enkripsi CLI versi 1.7. *x* dan 2.0. *x*. Namun, AWS Enkripsi CLI versi 1.8. *x* menggantikan versi 1.7. *x* dan AWS Enkripsi CLI 2.1. *x* menggantikan 2.0. *x*. Untuk detailnya, lihat [penasihat keamanan](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) yang relevan di [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)repositori di. GitHub

Untuk contoh yang menunjukkan cara menggunakan fitur keamanan yang membatasi kunci data terenkripsi, lihat. [Membatasi kunci data terenkripsi](configure.md#config-limit-keys)

Untuk contoh yang menunjukkan cara menggunakan kunci AWS KMS Multi-region, lihat[Menggunakan Multi-region AWS KMS keys](configure.md#config-mrks).

**Topics**
+ [Cara mengenkripsi dan mendekripsi data](#crypto-cli-e-d-intro)
+ [Cara menentukan kunci pembungkus](#crypto-cli-master-key)
+ [Cara memberikan masukan](#crypto-cli-input)
+ [Cara menentukan lokasi output](#crypto-cli-output)
+ [Cara menggunakan konteks enkripsi](#crypto-cli-encryption-context)
+ [Cara menentukan kebijakan komitmen](#crypto-cli-commitment-policy)
+ [Cara menyimpan parameter dalam file konfigurasi](#crypto-cli-config-file)

## Cara mengenkripsi dan mendekripsi data
<a name="crypto-cli-e-d-intro"></a>

 AWS Enkripsi CLI menggunakan fitur AWS Encryption SDK untuk membuatnya mudah untuk mengenkripsi dan mendekripsi data dengan aman.

**catatan**  
`--master-keys`Parameter tidak digunakan lagi di versi 1.8. *x* dari CLI AWS Enkripsi dan dihapus dalam versi 2.1. *x*. Sebagai gantinya, gunakan `--wrapping-keys` parameternya. Dimulai pada versi 2.1. *x*, `--wrapping-keys` parameter diperlukan saat mengenkripsi dan mendekripsi. Lihat perinciannya di [AWS Encryption SDK Sintaks CLI dan referensi parameter](crypto-cli-reference.md).
+ Saat Anda mengenkripsi data di CLI AWS Enkripsi, Anda menentukan data teks biasa dan kunci [pembungkus](concepts.md#master-key) (*atau kunci master*), seperti in (). AWS KMS key AWS Key Management Service AWS KMS Jika Anda menggunakan penyedia kunci master kustom, Anda juga perlu menentukan penyedia. Anda juga menentukan lokasi keluaran untuk [pesan terenkripsi](concepts.md#message) dan untuk metadata tentang operasi enkripsi. [Konteks enkripsi](concepts.md#encryption-context) bersifat opsional, tetapi disarankan.

  Dalam versi 1.8. *x*, `--commitment-policy` parameter diperlukan saat Anda menggunakan `--wrapping-keys` parameter; jika tidak maka tidak valid. Dimulai pada versi 2.1. *x*, `--commitment-policy` parameternya opsional, tetapi disarankan.

  ```
  aws-encryption-cli --encrypt --input myPlaintextData \
                     --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab \
                     --output myEncryptedMessage \
                     --metadata-output ~/metadata \
                     --encryption-context purpose=test \
                     --commitment-policy require-encrypt-require-decrypt
  ```

  CLI AWS Enkripsi mengenkripsi data Anda di bawah kunci data unik. Kemudian mengenkripsi kunci data di bawah kunci pembungkus yang Anda tentukan. Ia mengembalikan [pesan terenkripsi](concepts.md#message) dan metadata tentang operasi. Pesan terenkripsi berisi data terenkripsi Anda (*ciphertext*) dan salinan kunci data terenkripsi. Anda tidak perlu khawatir tentang menyimpan, mengelola, atau kehilangan kunci data.

   
+ Ketika Anda mendekripsi data, Anda meneruskan pesan terenkripsi Anda, konteks enkripsi opsional, dan lokasi untuk output plaintext dan metadata. Anda juga menentukan kunci pembungkus yang dapat digunakan CLI AWS Enkripsi untuk mendekripsi pesan, atau memberi tahu CLI AWS Enkripsi bahwa ia dapat menggunakan kunci pembungkus apa pun yang mengenkripsi pesan.

  Dimulai pada versi 1.8. *x*, `--wrapping-keys` parameternya opsional saat mendekripsi, tetapi disarankan. Dimulai pada versi 2.1. *x*, `--wrapping-keys` parameter diperlukan saat mengenkripsi dan mendekripsi.

  Saat mendekripsi, Anda dapat menggunakan atribut **kunci** `--wrapping-keys` parameter untuk menentukan kunci pembungkus yang mendekripsi data Anda. Menentukan kunci AWS KMS pembungkus saat mendekripsi adalah opsional, tetapi ini adalah [praktik terbaik](best-practices.md) yang mencegah Anda menggunakan kunci yang tidak ingin Anda gunakan. Jika Anda menggunakan penyedia kunci master kustom, Anda harus menentukan penyedia dan kunci pembungkus.

  Jika Anda tidak menggunakan atribut **kunci**, Anda harus menyetel [atribut **penemuan**](#discovery-cli-attribute) `--wrapping-keys` parameter ke`true`, yang memungkinkan CLI AWS Enkripsi mendekripsi menggunakan kunci pembungkus apa pun yang mengenkripsi pesan. 

  Sebagai praktik terbaik, gunakan `--max-encrypted-data-keys` parameter untuk menghindari dekripsi pesan yang salah dengan jumlah kunci data terenkripsi yang berlebihan. Tentukan jumlah yang diharapkan dari kunci data terenkripsi (satu untuk setiap kunci pembungkus yang digunakan dalam enkripsi) atau maksimum yang wajar (seperti 5). Lihat perinciannya di [Membatasi kunci data terenkripsi](configure.md#config-limit-keys).

  `--buffer`Parameter mengembalikan plaintext hanya setelah semua input diproses, termasuk memverifikasi tanda tangan digital jika ada. 

  `--decrypt-unsigned`Parameter mendekripsi ciphertext dan memastikan bahwa pesan tidak ditandatangani sebelum dekripsi. Gunakan parameter ini jika Anda menggunakan `--algorithm` parameter dan memilih rangkaian algoritme tanpa penandatanganan digital untuk mengenkripsi data. Jika ciphertext ditandatangani, dekripsi gagal.

  Anda dapat menggunakan `--decrypt` atau `--decrypt-unsigned` untuk dekripsi tetapi tidak keduanya.

  ```
  aws-encryption-cli --decrypt --input myEncryptedMessage \
                     --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab \
                     --output myPlaintextData \
                     --metadata-output ~/metadata \
                     --max-encrypted-data-keys 1 \
                     --buffer \
                     --encryption-context purpose=test \ 
                     --commitment-policy require-encrypt-require-decrypt
  ```

  CLI AWS Enkripsi menggunakan kunci pembungkus untuk mendekripsi kunci data dalam pesan terenkripsi. Kemudian menggunakan kunci data untuk mendekripsi data Anda. Ini mengembalikan data plaintext dan metadata Anda tentang operasi.

## Cara menentukan kunci pembungkus
<a name="crypto-cli-master-key"></a>

Saat Anda mengenkripsi data di CLI AWS Enkripsi, Anda perlu menentukan setidaknya [satu kunci pembungkus](concepts.md#master-key) (*atau* kunci master). Anda dapat menggunakan AWS KMS keys in AWS Key Management Service (AWS KMS), kunci pembungkus dari [penyedia kunci master](concepts.md#master-key-provider) kustom, atau keduanya. Penyedia kunci master kustom dapat berupa penyedia kunci master Python yang kompatibel.

Untuk menentukan kunci pembungkus di versi 1.8. *x* dan kemudian, gunakan `--wrapping-keys` parameter (`-w`). Nilai parameter ini adalah kumpulan [atribut](#cli-master-key-attributes) dengan `attribute=value` format. Atribut yang Anda gunakan bergantung pada penyedia kunci master dan perintah.
+ **AWS KMS**. Dalam perintah enkripsi, Anda harus menentukan `--wrapping-keys` parameter dengan atribut **kunci**. Dimulai pada versi 2.1. *x*, `--wrapping-keys` parameter juga diperlukan dalam perintah dekripsi. Saat mendekripsi, `--wrapping-keys` parameter harus memiliki atribut **kunci** atau atribut **penemuan** dengan nilai `true` (tetapi tidak keduanya). Atribut lainnya adalah opsional.
+ **Penyedia kunci master kustom**. Anda harus menentukan `--wrapping-keys` parameter di setiap perintah. Nilai parameter harus memiliki atribut **kunci** dan **penyedia**.

Anda dapat menyertakan [beberapa `--wrapping-keys` parameter](#cli-many-cmks) dan beberapa atribut **kunci** dalam perintah yang sama. 

### Membungkus atribut parameter kunci
<a name="cli-master-key-attributes"></a>

Nilai `--wrapping-keys` parameter terdiri dari atribut berikut dan nilainya. `--wrapping-keys`Parameter (atau `--master-keys` parameter) diperlukan di semua perintah enkripsi. Dimulai pada versi 2.1. *x*, `--wrapping-keys` parameter juga diperlukan saat mendekripsi.

Jika nama atau nilai atribut menyertakan spasi atau karakter khusus, lampirkan nama dan nilai dalam tanda kutip. Misalnya, `--wrapping-keys key=12345 "provider=my cool provider"`.

**Kunci: Tentukan kunci pembungkus**  
Gunakan atribut **kunci** untuk mengidentifikasi kunci pembungkus. Saat mengenkripsi, nilainya dapat berupa pengidentifikasi kunci apa pun yang dikenali oleh penyedia kunci utama.   

```
--wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab
```
Dalam perintah enkripsi, Anda harus menyertakan setidaknya satu atribut **kunci** dan nilai. Untuk mengenkripsi kunci data Anda di bawah beberapa kunci pembungkus, gunakan [beberapa atribut **kunci**](#cli-many-cmks).  

```
aws-encryption-cli --encrypt --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab key=1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d
```
Dalam perintah enkripsi yang digunakan AWS KMS keys, nilai **kunci dapat berupa ID kunci**, ARN kuncinya, nama alias, atau alias ARN. **Misalnya, perintah enkripsi ini menggunakan alias ARN dalam nilai atribut kunci.** Untuk detail tentang pengidentifikasi kunci AWS KMS key, lihat [Pengidentifikasi Kunci di Panduan AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) *Pengembang*.  

```
aws-encryption-cli --encrypt --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
```
Dalam perintah dekripsi yang menggunakan penyedia kunci master kustom, atribut **kunci** dan **penyedia** diperlukan.  

```
\\ Custom master key provider
aws-encryption-cli --decrypt --wrapping-keys provider='myProvider' key='100101'
```
Dalam perintah dekripsi yang digunakan AWS KMS, Anda dapat menggunakan atribut **kunci** untuk menentukan yang akan digunakan AWS KMS keys untuk mendekripsi, atau [atribut **penemuan**](#discovery-cli-attribute) dengan nilai`true`, yang memungkinkan AWS CLI Enkripsi menggunakan apa pun AWS KMS key yang digunakan untuk mengenkripsi pesan. Jika Anda menentukan AWS KMS key, itu harus menjadi salah satu kunci pembungkus yang digunakan untuk mengenkripsi pesan.   
Menentukan kunci pembungkus adalah praktik [AWS Encryption SDK terbaik](best-practices.md). Ini memastikan bahwa Anda menggunakan yang ingin AWS KMS key Anda gunakan.   
Dalam perintah dekripsi, nilai atribut **kunci** harus berupa [ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) kunci.   

```
\\ AWS KMS key
aws-encryption-cli --decrypt --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

**Penemuan: Gunakan apa saja AWS KMS key saat mendekripsi**  <a name="discovery-cli-attribute"></a>
Jika Anda tidak perlu membatasi penggunaan saat mendekripsi, Anda dapat menggunakan atribut **penemuan** dengan nilai. AWS KMS keys `true` Nilai `true` memungkinkan CLI AWS Enkripsi untuk mendekripsi menggunakan apa pun AWS KMS key yang mengenkripsi pesan. Jika Anda tidak menentukan atribut **penemuan**, penemuan adalah `false` (default). Atribut **penemuan** hanya valid dalam perintah dekripsi dan hanya ketika pesan dienkripsi dengan. AWS KMS keys  
Atribut **penemuan** dengan nilai `true` adalah alternatif untuk menggunakan atribut **kunci** untuk menentukan AWS KMS keys. Saat mendekripsi pesan yang dienkripsi AWS KMS keys, setiap `--wrapping-keys` parameter harus memiliki atribut **kunci** atau atribut **penemuan** dengan nilai`true`, tetapi tidak keduanya.  
Ketika penemuan benar, sebaiknya gunakan atribut **partisi penemuan dan **akun** penemuan** untuk membatasi yang AWS KMS keys digunakan pada atribut yang Anda tentukan. Akun AWS Dalam contoh berikut, atribut **penemuan** memungkinkan CLI AWS Enkripsi untuk menggunakan apa pun AWS KMS key dalam yang ditentukan. Akun AWS  

```
aws-encryption-cli --decrypt --wrapping-keys \
    discovery=true \
    discovery-partition=aws \
    discovery-account=111122223333 \
    discovery-account=444455556666
```

**Penyedia: Tentukan penyedia kunci utama**  
Atribut **provider** mengidentifikasi [penyedia kunci master](concepts.md#master-key-provider). Nilai default adalah`aws-kms`, yang mewakili AWS KMS. Jika Anda menggunakan penyedia kunci master yang berbeda, atribut **penyedia** diperlukan.  

```
--wrapping-keys key=12345 provider=my_custom_provider
```
Untuk informasi selengkapnya tentang penggunaan penyedia kunci master kustom (non-⸺-AWS KMS), lihat topik **Konfigurasi Lanjutan** dalam file [README](https://github.com/aws/aws-encryption-sdk-cli/blob/master/README.rst) untuk repositori [CLI AWS Enkripsi](https://github.com/aws/aws-encryption-sdk-cli/).

**Wilayah: Tentukan Wilayah AWS**  
Gunakan atribut **region** untuk menentukan Wilayah AWS dari AWS KMS key. Atribut ini hanya valid dalam perintah enkripsi dan hanya ketika penyedia kunci master. AWS KMS  

```
--encrypt --wrapping-keys key=alias/primary-key region=us-east-2
```
AWS Enkripsi perintah CLI menggunakan Wilayah AWS yang ditentukan dalam nilai atribut **kunci** jika termasuk wilayah, seperti ARN. jika nilai **kunci** menentukan Wilayah AWS, atribut **region** diabaikan.  
Atribut **region** lebih diutamakan daripada spesifikasi wilayah lainnya. Jika Anda tidak menggunakan atribut region, perintah AWS Encryption CLI menggunakan yang Wilayah AWS ditentukan dalam [profil AWS CLI bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) Anda, jika ada, atau profil default Anda.

**Profil: Tentukan profil bernama**  
Gunakan atribut **profil** untuk menentukan [profil AWS CLI bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles). Profil bernama dapat mencakup kredensil dan file. Wilayah AWS Atribut ini hanya valid jika penyedia kunci master AWS KMS.   

```
--wrapping-keys key=alias/primary-key profile=admin-1
```
Anda dapat menggunakan atribut **profil** untuk menentukan kredensi alternatif dalam perintah enkripsi dan dekripsi. **Dalam perintah enkripsi, CLI AWS Enkripsi menggunakan Wilayah AWS dalam profil bernama hanya ketika nilai kunci tidak menyertakan wilayah dan tidak **ada** atribut wilayah.** Dalam perintah dekripsi, profil Wilayah AWS dalam nama diabaikan.

### Cara menentukan beberapa tombol pembungkus
<a name="cli-many-cmks"></a>

Anda dapat menentukan beberapa tombol pembungkus (atau *kunci master*) di setiap perintah. 

Jika Anda menentukan lebih dari satu kunci pembungkus, kunci pembungkus pertama menghasilkan dan mengenkripsi kunci data yang digunakan untuk mengenkripsi data Anda. Kunci pembungkus lainnya mengenkripsi kunci data yang sama. [Pesan terenkripsi](concepts.md#message) yang dihasilkan berisi data terenkripsi (“ciphertext”) dan kumpulan kunci data terenkripsi, satu dienkripsi oleh setiap kunci pembungkus. Setiap pembungkus dapat mendekripsi satu kunci data terenkripsi dan kemudian mendekripsi data.

Ada dua cara untuk menentukan beberapa kunci pembungkus: 
+ Sertakan beberapa atribut **kunci** dalam nilai `--wrapping-keys` parameter.

  ```
  $key_oregon=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
  $key_ohio=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef
  
  --wrapping-keys key=$key_oregon key=$key_ohio
  ```
+ Sertakan beberapa `--wrapping-keys` parameter dalam perintah yang sama. Gunakan sintaks ini ketika nilai atribut yang Anda tentukan tidak berlaku untuk semua kunci pembungkus dalam perintah.

  ```
  --wrapping-keys region=us-east-2 key=alias/test_key \
  --wrapping-keys region=us-west-1 key=alias/test_key
  ```

Atribut **penemuan** dengan nilai `true` memungkinkan CLI AWS Enkripsi menggunakan apa pun AWS KMS key yang mengenkripsi pesan. Jika Anda menggunakan beberapa `--wrapping-keys` parameter dalam perintah yang sama, menggunakan `discovery=true` `--wrapping-keys` parameter apa pun secara efektif mengesampingkan batas atribut **kunci** di parameter lain`--wrapping-keys`. 

Misalnya, dalam perintah berikut, atribut **kunci** dalam `--wrapping-keys` parameter pertama membatasi CLI AWS Enkripsi ke yang ditentukan. AWS KMS key Namun, atribut **penemuan** di `--wrapping-keys` parameter kedua memungkinkan CLI AWS Enkripsi menggunakan apa pun AWS KMS key di akun yang ditentukan untuk mendekripsi pesan.

```
aws-encryption-cli --decrypt \
    --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --wrapping-keys discovery=true \
                    discovery-partition=aws \
                    discovery-account=111122223333 \
                    discovery-account=444455556666
```

## Cara memberikan masukan
<a name="crypto-cli-input"></a>

[Operasi enkripsi di CLI AWS Enkripsi mengambil data teks biasa sebagai input dan mengembalikan pesan terenkripsi.](concepts.md#message) Operasi dekripsi mengambil pesan terenkripsi sebagai input dan mengembalikan data plaintext. 

`--input`Parameter (`-i`), yang memberi tahu AWS Encryption CLI di mana menemukan input, diperlukan di semua perintah Encryption AWS CLI. 

Anda dapat memberikan masukan dengan salah satu cara berikut:
+ Gunakan file.

  ```
  --input myData.txt
  ```
+ Gunakan pola nama file. 

  ```
  --input testdir/*.xml
  ```
+ Gunakan pola nama direktori atau direktori. Ketika input adalah direktori, `--recursive` parameter (`-r`,`-R`) diperlukan.

  ```
  --input testdir --recursive
  ```
+ Input pipa ke perintah (stdin). Gunakan nilai `-` untuk `--input` parameter. (`--input`Parameter selalu diperlukan.)

  ```
  echo 'Hello World' | aws-encryption-cli --encrypt --input -
  ```

## Cara menentukan lokasi output
<a name="crypto-cli-output"></a>

`--output`Parameter memberi tahu CLI AWS Enkripsi tempat menulis hasil operasi enkripsi atau dekripsi. Hal ini diperlukan dalam setiap perintah AWS Enkripsi CLI. CLI AWS Enkripsi membuat file output baru untuk setiap file input dalam operasi. 

Jika file keluaran sudah ada, secara default, CLI AWS Enkripsi mencetak peringatan, lalu menimpa file tersebut. Untuk mencegah penimpaan, gunakan `--interactive` parameter, yang meminta Anda untuk konfirmasi sebelum menimpa, atau`--no-overwrite`, yang melewatkan input jika output akan menyebabkan penimpaan. Untuk menekan peringatan penimpaan, gunakan. `--quiet` Untuk menangkap kesalahan dan peringatan dari CLI AWS Enkripsi, gunakan operator `2>&1` pengalihan untuk menuliskannya ke aliran output.

**catatan**  
Perintah yang menimpa file output dimulai dengan menghapus file output. Jika perintah gagal, file output mungkin sudah dihapus.

Anda dapat lokasi output dalam beberapa cara.
+ Tentukan nama file. Jika Anda menentukan jalur ke file, semua direktori di jalur harus ada sebelum perintah berjalan. 

  ```
  --output myEncryptedData.txt
  ```
+ Tentukan direktori. Direktori output harus ada sebelum perintah berjalan. 

  Jika input berisi subdirektori, perintah mereproduksi subdirektori di bawah direktori yang ditentukan.

  ```
  --output Test
  ```

  Ketika lokasi output adalah direktori (tanpa nama file), CLI AWS Enkripsi membuat nama file output berdasarkan nama file input ditambah akhiran. Enkripsi operasi append `.encrypted` ke nama file input dan operasi dekripsi ditambahkan. `.decrypted` Untuk mengubah sufiks, gunakan `--suffix` parameter.

  Misalnya, jika Anda mengenkripsi`file.txt`, perintah enkripsi dibuat. `file.txt.encrypted` Jika Anda mendekripsi`file.txt.encrypted`, perintah dekripsi akan dibuat. `file.txt.encrypted.decrypted`

   
+ Tulis ke baris perintah (stdout). Masukkan nilai `-` untuk `--output` parameter. Anda dapat menggunakan `--output -` untuk menyalurkan output ke perintah atau program lain.

  ```
  --output -
  ```

## Cara menggunakan konteks enkripsi
<a name="crypto-cli-encryption-context"></a>

 AWS Enkripsi CLI memungkinkan Anda menyediakan konteks enkripsi dalam mengenkripsi dan mendekripsi perintah. Ini tidak diperlukan, tetapi ini adalah praktik terbaik kriptografi yang kami rekomendasikan.

*Konteks enkripsi* adalah jenis data *otentikasi tambahan* yang sewenang-wenang dan non-rahasia. Dalam CLI AWS Enkripsi, konteks enkripsi terdiri dari kumpulan pasangan. `name=value` Anda dapat menggunakan konten apa pun dalam pasangan, termasuk informasi tentang file, data yang membantu Anda menemukan operasi enkripsi di log, atau data yang diperlukan oleh hibah atau kebijakan Anda. 

**Dalam perintah enkripsi**

Konteks enkripsi yang Anda tentukan dalam perintah enkripsi, bersama dengan pasangan tambahan apa pun yang ditambahkan [CMM](concepts.md#crypt-materials-manager), terikat secara kriptografis ke data terenkripsi. Ini juga termasuk (dalam teks biasa) dalam [pesan terenkripsi](concepts.md#encryption-context) yang dikembalikan oleh perintah. Jika Anda menggunakan AWS KMS key, konteks enkripsi juga mungkin muncul dalam teks biasa dalam catatan audit dan log, seperti. AWS CloudTrail

Contoh berikut menunjukkan konteks enkripsi dengan tiga `name=value` pasang.

```
--encryption-context purpose=test dept=IT class=confidential 
```

**Dalam perintah dekripsi**

Dalam perintah dekripsi, konteks enkripsi membantu Anda mengonfirmasi bahwa Anda mendekripsi pesan terenkripsi yang tepat. 

Anda tidak diharuskan untuk menyediakan konteks enkripsi dalam perintah dekripsi, bahkan jika konteks enkripsi digunakan pada enkripsi. Namun, jika Anda melakukannya, CLI AWS Enkripsi memverifikasi bahwa setiap elemen dalam konteks enkripsi perintah dekripsi cocok dengan elemen dalam konteks enkripsi pesan terenkripsi. Jika ada elemen yang tidak cocok, perintah dekripsi gagal. 

Misalnya, perintah berikut mendekripsi pesan terenkripsi hanya jika konteks enkripsi termasuk. `dept=IT`

```
aws-encryption-cli --decrypt --encryption-context dept=IT ...
```

Konteks enkripsi adalah bagian penting dari strategi keamanan Anda. Namun, ketika memilih konteks enkripsi, ingatlah bahwa nilainya bukan rahasia. Jangan sertakan data rahasia apa pun dalam konteks enkripsi.

**Untuk menentukan konteks enkripsi**
+ Dalam perintah **enkripsi**, gunakan `--encryption-context` parameter dengan satu atau lebih `name=value` pasangan. Gunakan spasi untuk memisahkan setiap pasangan. 

  ```
  --encryption-context name=value [name=value] ...
  ```
+ Dalam perintah **dekripsi**, nilai `--encryption-context` parameter dapat mencakup `name=value` pasangan, `name` elemen (tanpa nilai), atau kombinasi keduanya.

  ```
  --encryption-context name[=value] [name] [name=value] ...
  ```

Jika `name` atau `value` dalam `name=value` pasangan menyertakan spasi atau karakter khusus, lampirkan seluruh pasangan dalam tanda kutip.

```
--encryption-context "department=software engineering" "Wilayah AWS=us-west-2"
```

Misalnya, perintah enkripsi ini mencakup konteks enkripsi dengan dua pasang, `purpose=test` dan`dept=23`.

```
aws-encryption-cli --encrypt --encryption-context purpose=test dept=23 ...
```

Perintah dekripsi ini akan berhasil. Konteks enkripsi dalam setiap perintah adalah bagian dari konteks enkripsi asli.

```
\\ Any one or both of the encryption context pairs
aws-encryption-cli --decrypt --encryption-context dept=23 ...

\\ Any one or both of the encryption context names
aws-encryption-cli --decrypt --encryption-context purpose ...

\\ Any combination of names and pairs
aws-encryption-cli --decrypt --encryption-context dept purpose=test ...
```

Namun, perintah dekripsi ini akan gagal. Konteks enkripsi dalam pesan terenkripsi tidak mengandung elemen yang ditentukan.

```
aws-encryption-cli --decrypt --encryption-context dept=Finance ...
aws-encryption-cli --decrypt --encryption-context scope ...
```

## Cara menentukan kebijakan komitmen
<a name="crypto-cli-commitment-policy"></a>

Untuk menetapkan [kebijakan komitmen](concepts.md#commitment-policy) untuk perintah, gunakan [`--commitment-policy`parameter](crypto-cli-reference.md#syntax-commitment-policy). Parameter ini diperkenalkan dalam versi 1.8. *x*. Ini berlaku dalam perintah enkripsi dan dekripsi. Kebijakan komitmen yang Anda tetapkan hanya berlaku untuk perintah yang muncul. Jika Anda tidak menetapkan kebijakan komitmen untuk suatu perintah, CLI AWS Enkripsi menggunakan nilai default.

Misalnya, nilai parameter berikut menetapkan kebijakan komitmen`require-encrypt-allow-decrypt`, yang selalu mengenkripsi dengan komitmen utama, tetapi akan mendekripsi ciphertext yang dienkripsi dengan atau tanpa komitmen utama. 

```
--commitment-policy require-encrypt-allow-decrypt
```

## Cara menyimpan parameter dalam file konfigurasi
<a name="crypto-cli-config-file"></a>

Anda dapat menghemat waktu dan menghindari kesalahan pengetikan dengan menyimpan parameter dan nilai CLI AWS Enkripsi yang sering digunakan dalam file konfigurasi. 

*File konfigurasi adalah file* teks yang berisi parameter dan nilai untuk perintah CLI AWS Enkripsi. Ketika Anda merujuk ke file konfigurasi dalam perintah AWS Encryption CLI, referensi digantikan oleh parameter dan nilai dalam file konfigurasi. Efeknya sama adalah jika Anda mengetik konten file di baris perintah. File konfigurasi dapat memiliki nama apa pun dan dapat ditemukan di direktori mana pun yang dapat diakses pengguna saat ini. 

Contoh file konfigurasi berikut,`key.conf`, menentukan dua AWS KMS keys di Wilayah yang berbeda.

```
--wrapping-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
--wrapping-keys key=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef
```

Untuk menggunakan file konfigurasi dalam perintah, awali nama file dengan tanda at (`@`). Di PowerShell konsol, gunakan karakter backtick untuk keluar dari tanda at (``@`).

Perintah contoh ini menggunakan `key.conf` file dalam perintah enkripsi.

------
#### [ Bash ]

```
$ aws-encryption-cli -e @key.conf -i hello.txt -o testdir  
```

------
#### [ PowerShell ]

```
PS C:\> aws-encryption-cli -e `@key.conf -i .\Hello.txt -o .\TestDir
```

------

**Aturan file konfigurasi**

Aturan untuk menggunakan file konfigurasi adalah sebagai berikut:
+ Anda dapat menyertakan beberapa parameter di setiap file konfigurasi dan mencantumkannya dalam urutan apa pun. Buat daftar setiap parameter dengan nilainya (jika ada) pada baris terpisah. 
+ Gunakan `#` untuk menambahkan komentar ke semua atau sebagian baris.
+ Anda dapat menyertakan referensi ke file konfigurasi lainnya. Jangan gunakan backtick untuk menghindari `@` tanda, bahkan masuk PowerShell.
+ Jika Anda menggunakan tanda kutip dalam file konfigurasi, teks yang dikutip tidak dapat menjangkau beberapa baris.

Misalnya, ini adalah isi dari `encrypt.conf` file contoh.

```
# Archive Files
--encrypt
--output /archive/logs
--recursive
--interactive
--encryption-context class=unclassified dept=IT
--suffix  # No suffix
--metadata-output ~/metadata
@caching.conf  # Use limited caching
```

Anda juga dapat menyertakan beberapa file konfigurasi dalam sebuah perintah. Perintah contoh ini menggunakan file `encrypt.conf` dan `master-keys.conf` konfigurasi.

------
#### [ Bash ]

```
$  aws-encryption-cli -i /usr/logs @encrypt.conf @master-keys.conf
```

------
#### [ PowerShell ]

```
PS C:\> aws-encryption-cli -i $home\Test\*.log `@encrypt.conf `@master-keys.conf
```

------

**Berikutnya:** [Coba contoh AWS Encryption CLI](crypto-cli-examples.md)