

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

# AWS Encryption SDK antarmuka baris perintah
<a name="crypto-cli"></a>

 AWS Encryption SDK Command Line Interface (AWS Encryption CLI) memungkinkan Anda untuk menggunakan AWS Encryption SDK untuk mengenkripsi dan mendekripsi data secara interaktif di baris perintah dan skrip. Anda tidak perlu keahlian kriptografi atau pemrograman.

**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

Seperti semua implementasi AWS Encryption SDK, CLI AWS Enkripsi menawarkan fitur perlindungan data tingkat lanjut. [Ini termasuk [enkripsi amplop](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption), data otentikasi tambahan (AAD), dan [rangkaian algoritma](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/supported-algorithms.html) kunci simetris yang aman, diautentikasi, seperti AES-GCM 256-bit dengan derivasi kunci, komitmen kunci, dan penandatanganan.](concepts.md#key-commitment) 

CLI AWS Enkripsi dibangun di atas [AWS Encryption SDK for Python](python.md)dan didukung di Linux, macOS, dan Windows. Anda dapat menjalankan perintah dan skrip untuk mengenkripsi dan mendekripsi data Anda di shell pilihan Anda di Linux atau macOS, di jendela Command Prompt (cmd.exe) di Windows, dan di konsol di sistem apa pun. PowerShell 

Semua implementasi khusus bahasa, termasuk AWS CLI Enkripsi AWS Encryption SDK, dapat dioperasikan secara interoperable. Misalnya, Anda dapat mengenkripsi data dengan [AWS Encryption SDK for Java](java.md)dan mendekripsi dengan CLI Enkripsi AWS . 

Topik ini memperkenalkan CLI AWS Enkripsi, menjelaskan cara menginstal dan menggunakannya, dan memberikan beberapa contoh untuk membantu Anda memulai. Untuk memulai dengan cepat, lihat [Cara Mengenkripsi dan Mendekripsi Data Anda dengan AWS CLI Enkripsi](https://aws.amazon.com/blogs/security/how-to-encrypt-and-decrypt-your-data-with-the-aws-encryption-cli/) di Blog Keamanan. AWS Untuk informasi lebih rinci, lihat [Baca Dokumen](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/), dan bergabunglah dengan kami dalam mengembangkan CLI AWS Enkripsi di [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)repositori. GitHub

**Performa**  
CLI AWS Enkripsi dibangun di atas file. AWS Encryption SDK for Python Setiap kali Anda menjalankan CLI, Anda memulai instance baru runtime Python. Untuk meningkatkan kinerja, bila memungkinkan, gunakan satu perintah alih-alih serangkaian perintah independen. Misalnya, jalankan satu perintah yang memproses file dalam direktori secara rekursif alih-alih menjalankan perintah terpisah untuk setiap file.

**Topics**
+ [Menginstal CLI](crypto-cli-install.md)
+ [Cara menggunakan CLI](crypto-cli-how-to.md)
+ [Contoh](crypto-cli-examples.md)
+ [Referensi sintaks dan parameter](crypto-cli-reference.md)
+ [Versi](crypto-cli-versions.md)

# Menginstal antarmuka baris AWS Encryption SDK perintah
<a name="crypto-cli-install"></a>

Topik ini menjelaskan cara menginstal CLI AWS Enkripsi. Untuk informasi lebih lanjut, lihat [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)repositori GitHub dan [Baca Dokumen.](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/)

**Topics**
+ [Memasang prasyarat](#crypto-cli-prerequisites)
+ [Menginstal CLI](#install-sdk-cli)

## Memasang prasyarat
<a name="crypto-cli-prerequisites"></a>

CLI AWS Enkripsi dibangun di atas file. AWS Encryption SDK for Python Untuk menginstal CLI AWS Enkripsi, Anda memerlukan Python dan, alat manajemen paket `pip` Python. Python dan `pip` tersedia di semua platform yang didukung.

Instal prasyarat berikut sebelum Anda menginstal CLI Enkripsi, AWS 

**Python**  
Python 3.8 atau yang lebih baru diperlukan oleh Encryption AWS CLI versi 4.2.0 dan yang lebih baru.  
Versi sebelumnya dari AWS Encryption CLI mendukung Python 2.7 dan 3.4 dan yang lebih baru, tetapi kami menyarankan Anda menggunakan versi terbaru dari Encryption CLI. AWS   
Python termasuk dalam sebagian besar instalasi Linux dan macOS, tetapi Anda perlu meningkatkan ke Python 3.6 atau yang lebih baru. Kami menyarankan Anda menggunakan versi terbaru Python. Pada Windows, Anda harus menginstal Python; itu tidak diinstal secara default. [Untuk mengunduh dan menginstal Python, lihat unduhan Python.](https://www.python.org/downloads/)  
Untuk menentukan apakah Python diinstal, pada baris perintah, ketik berikut ini.  

```
python
```
Untuk memeriksa versi Python, gunakan parameter `-V` (huruf besar V).  

```
python -V
```
Di Windows, setelah Anda menginstal Python, tambahkan path ke `Python.exe` file ke nilai variabel lingkungan **Path**.   
Secara default, Python dipasang di direktori semua pengguna atau di direktori profil pengguna (`$home`atau`%userprofile%`) di subdirektori. `AppData\Local\Programs\Python` Untuk menemukan lokasi `Python.exe` file di sistem Anda, periksa salah satu kunci registri berikut. Anda dapat menggunakan PowerShell untuk mencari registri.   

```
PS C:\> dir HKLM:\Software\Python\PythonCore\version\InstallPath
# -or-
PS C:\> dir HKCU:\Software\Python\PythonCore\version\InstallPath
```

**pip**  
`pip`adalah manajer paket Python. Untuk menginstal CLI AWS Enkripsi dan dependensinya, Anda memerlukan `pip` 8.1 atau lebih baru. Untuk bantuan menginstal atau meningkatkan`pip`, lihat [Instalasi](https://pip.pypa.io/en/latest/installing/) dalam `pip` dokumentasi.  
Pada instalasi Linux, versi `pip` lebih awal dari 8.1 tidak dapat membangun pustaka **kriptografi** yang dibutuhkan AWS CLI Enkripsi. Jika Anda memilih untuk tidak memperbarui `pip` versi, Anda dapat menginstal alat build secara terpisah. Untuk informasi selengkapnya, lihat [Membangun kriptografi di Linux](https://cryptography.io/en/latest/installation.html#building-cryptography-on-linux).

**AWS Command Line Interface**  
 AWS Command Line Interface (AWS CLI) diperlukan hanya jika Anda menggunakan AWS KMS keys in AWS Key Management Service (AWS KMS) dengan CLI AWS Enkripsi. Jika Anda menggunakan [penyedia kunci master](concepts.md#master-key-provider) yang berbeda, tidak AWS CLI diperlukan.  
Untuk menggunakan AWS KMS keys CLI AWS Enkripsi, Anda perlu [menginstal](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dan [mengkonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) file. AWS CLI Konfigurasi membuat kredensional yang Anda gunakan untuk mengautentikasi agar AWS KMS tersedia untuk CLI Enkripsi AWS . 

## Menginstal dan memperbarui CLI AWS Enkripsi
<a name="install-sdk-cli"></a>

Instal CLI AWS Enkripsi versi terbaru. [Ketika Anda menggunakan `pip` untuk menginstal CLI AWS Enkripsi, secara otomatis menginstal pustaka yang dibutuhkan CLI, termasuk, pustaka kriptografi Python, [AWS Encryption SDK for Python](python.md)dan file. [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)](https://cryptography.io/en/latest/)

**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 menginstal versi terbaru dari AWS Encryption CLI**  

```
pip install aws-encryption-sdk-cli
```

**Untuk meng-upgrade ke versi terbaru dari AWS Encryption CLI**  

```
pip install --upgrade aws-encryption-sdk-cli
```

**Untuk menemukan nomor versi CLI AWS Enkripsi Anda dan AWS Encryption SDK**  

```
aws-encryption-cli --version
```
Output mencantumkan nomor versi kedua pustaka.  

```
aws-encryption-sdk-cli/2.1.0 aws-encryption-sdk/2.0.0
```

**Untuk meng-upgrade ke versi terbaru dari AWS Encryption CLI**  

```
pip install --upgrade aws-encryption-sdk-cli
```

Menginstal CLI AWS Enkripsi juga menginstal versi terbaru dari AWS SDK untuk Python (Boto3), jika belum diinstal. Jika Boto3 diinstal, penginstal memverifikasi versi Boto3 dan memperbaruinya jika diperlukan.

**Untuk menemukan versi Boto3 yang Anda instal**  

```
pip show boto3
```

**Untuk memperbarui ke versi terbaru Boto3**  

```
pip install --upgrade boto3
```

Untuk menginstal versi CLI AWS Enkripsi yang saat ini sedang dalam pengembangan, lihat [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)repositori aktif. GitHub

Untuk detail selengkapnya tentang penggunaan `pip` untuk menginstal dan memutakhirkan paket Python, lihat dokumentasi [pip](https://pip.pypa.io/en/stable/quickstart/).

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

# Contoh CLI AWS Enkripsi
<a name="crypto-cli-examples"></a>

Gunakan contoh berikut untuk mencoba CLI AWS Enkripsi pada platform yang Anda inginkan. Untuk bantuan dengan kunci master dan parameter lainnya, lihat[Cara menggunakan CLI AWS Enkripsi](crypto-cli-how-to.md). Untuk referensi cepat, lihat[AWS Encryption SDK Sintaks CLI dan referensi parameter](crypto-cli-reference.md).

**catatan**  
Contoh berikut menggunakan sintaks untuk AWS Enkripsi CLI versi 2.1. *x*.   
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**
+ [Mengenkripsi file](#cli-example-encrypt-file)
+ [Mendekripsi file](#cli-example-decrypt-file)
+ [Mengenkripsi semua file dalam direktori](#cli-example-encrypt-directory)
+ [Mendekripsi semua file dalam direktori](#cli-example-decrypt-directory)
+ [Mengenkripsi dan mendekripsi pada baris perintah](#cli-example-stdin)
+ [Menggunakan beberapa kunci master](#cli-example-multimaster)
+ [Mengenkripsi dan mendekripsi dalam skrip](#cli-example-script)
+ [Menggunakan caching kunci data](#cli-example-caching)

## Mengenkripsi file
<a name="cli-example-encrypt-file"></a>

Contoh ini menggunakan CLI AWS Enkripsi untuk mengenkripsi isi `hello.txt` file, yang berisi string “Hello World”. 

Ketika Anda menjalankan perintah enkripsi pada file, CLI AWS Enkripsi mendapatkan konten file, menghasilkan kunci [data unik](concepts.md#DEK), mengenkripsi konten file di bawah kunci data, dan kemudian menulis pesan [terenkripsi ke](concepts.md#message) file baru. 

Perintah pertama menyimpan ARN kunci dari AWS KMS key variabel. `$keyArn` Saat mengenkripsi dengan AWS KMS key, Anda dapat mengidentifikasinya dengan menggunakan ID kunci, ARN kunci, nama alias, atau alias ARN. 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*.

Perintah kedua mengenkripsi isi file. Perintah menggunakan `--encrypt` parameter untuk menentukan operasi dan `--input` parameter untuk menunjukkan file yang akan dienkripsi. [`--wrapping-keys`Parameter](crypto-cli-how-to.md#crypto-cli-master-key), dan atribut **kunci** yang diperlukan, beri tahu perintah untuk menggunakan yang AWS KMS key diwakili oleh kunci ARN. 

Perintah menggunakan `--metadata-output` parameter untuk menentukan file teks untuk metadata tentang operasi enkripsi. Sebagai praktik terbaik, perintah menggunakan `--encryption-context` parameter untuk menentukan [konteks enkripsi](crypto-cli-how-to.md#crypto-cli-encryption-context). 

Perintah ini juga menggunakan [`--commitment-policy`parameter](crypto-cli-reference.md#syntax-commitment-policy) untuk menetapkan kebijakan komitmen secara eksplisit. Dalam versi 1.8. *x*, parameter ini diperlukan saat Anda menggunakan `--wrapping-keys` parameter. Dimulai pada versi 2.1. *x*, `--commitment-policy` parameternya opsional, tetapi disarankan.

Nilai `--output` parameter, titik (.), memberi tahu perintah untuk menulis file output ke direktori saat ini. 

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

```
\\ To run this example, replace the fictitious key ARN with a valid value.
$ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

$ aws-encryption-cli --encrypt \
                     --input hello.txt \
                     --wrapping-keys key=$keyArn \
                     --metadata-output ~/metadata \
                     --encryption-context purpose=test \
                     --commitment-policy require-encrypt-require-decrypt \
                     --output .
```

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

```
# To run this example, replace the fictitious key ARN with a valid value.
PS C:\> $keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

PS C:\> aws-encryption-cli --encrypt `
                           --input Hello.txt `
                           --wrapping-keys key=$keyArn `
                           --metadata-output $home\Metadata.txt `
                           --commitment-policy require-encrypt-require-decrypt `
                           --encryption-context purpose=test `
                           --output .
```

------

Ketika perintah enkripsi berhasil, itu tidak mengembalikan output apa pun. Untuk menentukan apakah perintah berhasil, periksa nilai Boolean dalam variabel. `$?` Ketika perintah berhasil, nilai dari `$?` adalah `0` (Bash) atau `True` (PowerShell). Ketika perintah gagal, nilai `$?` adalah bukan nol (Bash) atau `False` (PowerShell).

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

```
$ echo $?
0
```

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

```
PS C:\> $?
True
```

------

Anda juga dapat menggunakan perintah daftar direktori untuk melihat bahwa perintah enkripsi membuat file baru,`hello.txt.encrypted`. Karena perintah enkripsi tidak menentukan nama file untuk output, CLI AWS Enkripsi menulis output ke file dengan nama yang sama dengan file input ditambah `.encrypted` akhiran. Untuk menggunakan akhiran yang berbeda, atau menekan sufiks, gunakan parameter. `--suffix`

`hello.txt.encrypted`File berisi [pesan terenkripsi](concepts.md#message) yang mencakup ciphertext `hello.txt` file, salinan kunci data terenkripsi, dan metadata tambahan, termasuk konteks enkripsi.

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

```
$  ls
hello.txt  hello.txt.encrypted
```

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

```
PS C:\> dir

    Directory: C:\TestCLI

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/15/2017   5:57 PM             11 Hello.txt
-a----        9/17/2017   1:06 PM            585 Hello.txt.encrypted
```

------

## Mendekripsi file
<a name="cli-example-decrypt-file"></a>

Contoh ini menggunakan CLI AWS Enkripsi untuk mendekripsi isi `Hello.txt.encrypted` file yang dienkripsi pada contoh sebelumnya.

Perintah dekripsi menggunakan `--decrypt` parameter untuk menunjukkan operasi dan `--input` parameter untuk mengidentifikasi file yang akan didekripsi. Nilai `--output` parameter adalah titik yang mewakili direktori saat ini. 

`--wrapping-keys`Parameter dengan atribut **kunci menentukan kunci** pembungkus yang digunakan untuk mendekripsi pesan terenkripsi. Dalam dekripsi perintah dengan AWS KMS keys, nilai atribut kunci harus berupa [ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) kunci. `--wrapping-keys`Parameter diperlukan dalam perintah dekripsi. Jika Anda menggunakan AWS KMS keys, Anda dapat menggunakan atribut **kunci** untuk menentukan AWS KMS keys untuk mendekripsi atau atribut **penemuan** dengan nilai `true` (tetapi tidak keduanya). Jika Anda menggunakan penyedia kunci master kustom, atribut **kunci** dan **penyedia** diperlukan. 

[`--commitment-policy`Parameternya](crypto-cli-reference.md#syntax-commitment-policy) opsional dimulai pada versi 2.1. *x*, tetapi disarankan. Menggunakannya secara eksplisit membuat maksud Anda jelas, bahkan jika Anda menentukan nilai default,. `require-encrypt-require-decrypt`

`--encryption-context`Parameter ini opsional dalam perintah dekripsi, bahkan ketika [konteks enkripsi](crypto-cli-how-to.md#crypto-cli-encryption-context) disediakan dalam perintah enkripsi. Dalam hal ini, perintah dekripsi menggunakan konteks enkripsi yang sama yang disediakan dalam perintah enkripsi. Sebelum mendekripsi, AWS CLI Enkripsi memverifikasi bahwa konteks enkripsi dalam pesan terenkripsi menyertakan pasangan. `purpose=test` Jika tidak, perintah dekripsi gagal.

`--metadata-output`Parameter menentukan file untuk metadata tentang operasi dekripsi. Nilai `--output` parameter, titik (.), menulis file output ke direktori saat ini. 

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

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

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

```
\\ To run this example, replace the fictitious key ARN with a valid value.
$ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

$ aws-encryption-cli --decrypt \
                     --input hello.txt.encrypted \
                     --wrapping-keys key=$keyArn \
                     --commitment-policy require-encrypt-require-decrypt \
                     --encryption-context purpose=test \
                     --metadata-output ~/metadata \
                     --max-encrypted-data-keys 1 \
                     --buffer \
                     --output .
```

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

```
\\ To run this example, replace the fictitious key ARN with a valid value.
PS C:\> $keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

PS C:\> aws-encryption-cli --decrypt `
                           --input Hello.txt.encrypted `
                           --wrapping-keys key=$keyArn `
                           --commitment-policy require-encrypt-require-decrypt `
                           --encryption-context purpose=test `
                           --metadata-output $home\Metadata.txt `
                           --max-encrypted-data-keys 1 `
                           --buffer `
                           --output .
```

------

Ketika perintah dekripsi berhasil, itu tidak mengembalikan output apa pun. Untuk menentukan apakah perintah berhasil, dapatkan nilai `$?` variabel. Anda juga dapat menggunakan perintah daftar direktori untuk melihat bahwa perintah tersebut membuat file baru dengan `.decrypted` akhiran. [Untuk melihat konten plaintext, gunakan perintah untuk mendapatkan konten file, seperti `cat` atau Get-Content.](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content)

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

```
$  ls
hello.txt  hello.txt.encrypted  hello.txt.encrypted.decrypted

$  cat hello.txt.encrypted.decrypted
Hello World
```

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

```
PS C:\> dir

    Directory: C:\TestCLI

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/17/2017   1:01 PM             11 Hello.txt
-a----        9/17/2017   1:06 PM            585 Hello.txt.encrypted
-a----        9/17/2017   1:08 PM             11 Hello.txt.encrypted.decrypted


PS C:\> Get-Content Hello.txt.encrypted.decrypted
Hello World
```

------

## Mengenkripsi semua file dalam direktori
<a name="cli-example-encrypt-directory"></a>

Contoh ini menggunakan CLI Enkripsi untuk mengenkripsi isi semua file dalam direktori. AWS 

Ketika sebuah perintah mempengaruhi beberapa file, CLI AWS Enkripsi memproses setiap file satu per satu. Ini mendapatkan isi file, mendapatkan [kunci data](concepts.md#DEK) unik untuk file dari kunci master, mengenkripsi konten file di bawah kunci data, dan menulis hasilnya ke file baru di direktori output. Akibatnya, Anda dapat mendekripsi file output secara independen. 

Daftar `TestDir` direktori ini menunjukkan file plaintext yang ingin kita enkripsi. 

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

```
$  ls testdir
cool-new-thing.py  hello.txt  employees.csv
```

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

```
PS C:\> dir C:\TestDir

    Directory: C:\TestDir

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/12/2017   3:11 PM           2139 cool-new-thing.py
-a----        9/15/2017   5:57 PM             11 Hello.txt
-a----        9/17/2017   1:44 PM             46 Employees.csv
```

------

Perintah pertama menyimpan [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) dari AWS KMS key variabel. `$keyArn`

Perintah kedua mengenkripsi konten file dalam `TestDir` direktori dan menulis file konten terenkripsi ke direktori. `TestEnc` Jika `TestEnc` direktori tidak ada, perintah gagal. Karena lokasi input adalah direktori, `--recursive` parameter diperlukan. 

[`--wrapping-keys`Parameter](crypto-cli-how-to.md#crypto-cli-master-key), dan atribut **kunci** yang diperlukan, tentukan kunci pembungkus yang akan digunakan. Perintah enkripsi mencakup [konteks enkripsi](crypto-cli-how-to.md#crypto-cli-encryption-context),`dept=IT`. Saat Anda menentukan konteks enkripsi dalam perintah yang mengenkripsi beberapa file, konteks enkripsi yang sama digunakan untuk semua file. 

Perintah ini juga memiliki `--metadata-output` parameter untuk memberi tahu CLI AWS Enkripsi tempat menulis metadata tentang operasi enkripsi. CLI AWS Enkripsi menulis satu catatan metadata untuk setiap file yang dienkripsi.

[`--commitment-policy parameter`](crypto-cli-how-to.md#crypto-cli-commitment-policy)Ini opsional dimulai pada versi 2.1. *x*, tetapi disarankan. Jika perintah atau skrip gagal karena tidak dapat mendekripsi ciphertext, pengaturan kebijakan komitmen eksplisit dapat membantu Anda mendeteksi masalah dengan cepat.

Ketika perintah selesai, CLI AWS Enkripsi menulis file terenkripsi ke `TestEnc` direktori, tetapi tidak mengembalikan output apa pun. 

Perintah terakhir mencantumkan file dalam `TestEnc` direktori. Ada satu file output dari konten terenkripsi untuk setiap file input konten plaintext. Karena perintah tidak menentukan akhiran alternatif, perintah enkripsi ditambahkan `.encrypted` ke masing-masing nama file input.

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

```
# To run this example, replace the fictitious key ARN with a valid master key identifier.
$  keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

$ aws-encryption-cli --encrypt \
                     --input testdir --recursive\
                     --wrapping-keys key=$keyArn \
                     --encryption-context dept=IT \
                     --commitment-policy require-encrypt-require-decrypt \
                     --metadata-output ~/metadata \
                     --output testenc

$ ls testenc
cool-new-thing.py.encrypted  employees.csv.encrypted  hello.txt.encrypted
```

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

```
# To run this example, replace the fictitious key ARN with a valid master key identifier.
PS C:\> $keyArn = arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

PS C:\> aws-encryption-cli --encrypt `
                           --input .\TestDir --recursive `
                           --wrapping-keys key=$keyArn `
                           --encryption-context dept=IT `
                           --commitment-policy require-encrypt-require-decrypt `
                           --metadata-output .\Metadata\Metadata.txt `
                           --output .\TestEnc

PS C:\> dir .\TestEnc

    Directory: C:\TestEnc

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/17/2017   2:32 PM           2713 cool-new-thing.py.encrypted
-a----        9/17/2017   2:32 PM            620 Hello.txt.encrypted
-a----        9/17/2017   2:32 PM            585 Employees.csv.encrypted
```

------

## Mendekripsi semua file dalam direktori
<a name="cli-example-decrypt-directory"></a>

Contoh ini mendekripsi semua file dalam direktori. Dimulai dengan file di `TestEnc` direktori yang dienkripsi dalam contoh sebelumnya.

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

```
$  ls testenc
cool-new-thing.py.encrypted  hello.txt.encrypted  employees.csv.encrypted
```

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

```
PS C:\> dir C:\TestEnc

    Directory: C:\TestEnc

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/17/2017   2:32 PM           2713 cool-new-thing.py.encrypted
-a----        9/17/2017   2:32 PM            620 Hello.txt.encrypted
-a----        9/17/2017   2:32 PM            585 Employees.csv.encrypted
```

------

Perintah dekripsi ini mendekripsi semua file dalam TestEnc direktori dan menulis file plaintext ke direktori. TestDec `--wrapping-keys`Parameter dengan atribut **kunci** dan nilai [ARN kunci](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) memberi tahu AWS CLI Enkripsi yang akan digunakan AWS KMS keys untuk mendekripsi file. Perintah menggunakan `--interactive` parameter untuk memberi tahu CLI AWS Enkripsi untuk meminta Anda sebelum menimpa file dengan nama yang sama.

Perintah ini juga menggunakan konteks enkripsi yang disediakan saat file dienkripsi. Saat mendekripsi beberapa file, AWS CLI Enkripsi memeriksa konteks enkripsi setiap file. Jika pemeriksaan konteks enkripsi pada file apa pun gagal, CLI AWS Enkripsi menolak file, menulis peringatan, mencatat kegagalan dalam metadata, dan kemudian terus memeriksa file yang tersisa. Jika CLI AWS Enkripsi gagal mendekripsi file karena alasan lain, seluruh perintah dekripsi segera gagal. 

Dalam contoh ini, pesan terenkripsi di semua file input berisi elemen konteks `dept=IT` enkripsi. Namun, jika Anda mendekripsi pesan dengan konteks enkripsi yang berbeda, Anda mungkin masih dapat memverifikasi bagian dari konteks enkripsi. Misalnya, jika beberapa pesan memiliki konteks enkripsi `dept=finance` dan yang lainnya memiliki`dept=IT`, Anda dapat memverifikasi bahwa konteks enkripsi selalu berisi `dept` nama tanpa menentukan nilainya. Jika Anda ingin lebih spesifik, Anda dapat mendekripsi file dalam perintah terpisah. 

Perintah dekripsi tidak mengembalikan output apa pun, tetapi Anda dapat menggunakan perintah daftar direktori untuk melihat bahwa itu membuat file baru dengan akhiran. `.decrypted` Untuk melihat konten plaintext, gunakan perintah untuk mendapatkan konten file.

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

```
# To run this example, replace the fictitious key ARN with a valid master key identifier.
$ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

$ aws-encryption-cli --decrypt \
                     --input testenc --recursive \
                     --wrapping-keys key=$keyArn \
                     --encryption-context dept=IT \
                     --commitment-policy require-encrypt-require-decrypt \
                     --metadata-output ~/metadata \
                     --max-encrypted-data-keys 1 \
                     --buffer \
                     --output testdec --interactive

$ ls testdec
cool-new-thing.py.encrypted.decrypted  hello.txt.encrypted.decrypted  employees.csv.encrypted.decrypted
```

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

```
# To run this example, replace the fictitious key ARN with a valid master key identifier.
PS C:\> $keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

PS C:\> aws-encryption-cli --decrypt `
                           --input C:\TestEnc --recursive `
                           --wrapping-keys key=$keyArn `
                           --encryption-context dept=IT `
                           --commitment-policy require-encrypt-require-decrypt `
                           --metadata-output $home\Metadata.txt `
                           --max-encrypted-data-keys 1 `
                           --buffer `
                           --output C:\TestDec --interactive

PS C:\> dir .\TestDec


    Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        10/8/2017   4:57 PM           2139 cool-new-thing.py.encrypted.decrypted
-a----        10/8/2017   4:57 PM             46 Employees.csv.encrypted.decrypted
-a----        10/8/2017   4:57 PM             11 Hello.txt.encrypted.decrypted
```

------

## Mengenkripsi dan mendekripsi pada baris perintah
<a name="cli-example-stdin"></a>

Contoh-contoh ini menunjukkan cara menyalurkan input ke perintah (stdin) dan menulis output ke baris perintah (stdout). Mereka menjelaskan cara merepresentasikan stdin dan stdout dalam sebuah perintah dan cara menggunakan alat pengkodean Base64 bawaan untuk mencegah shell salah menafsirkan karakter non-ASCII.

Contoh ini menyalurkan string teks biasa ke perintah enkripsi dan menyimpan pesan terenkripsi dalam variabel. Kemudian, ia menyalurkan pesan terenkripsi dalam variabel ke perintah dekripsi, yang menulis outputnya ke pipeline (stdout). 

Contohnya terdiri dari tiga perintah:
+ Perintah pertama menyimpan [ARN kunci](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) dari AWS KMS key variabel. `$keyArn`

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

  ```
  $  keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
  ```

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

  ```
  PS C:\> $keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
  ```

------

   
+ Perintah kedua `Hello World` menyalurkan string ke perintah enkripsi dan menyimpan hasilnya dalam `$encrypted` variabel. 

  `--output`Parameter `--input` dan diperlukan di semua perintah AWS Enkripsi CLI. Untuk menunjukkan bahwa input sedang disalurkan ke perintah (stdin), gunakan tanda hubung (`-`) untuk nilai parameter. `--input` Untuk mengirim output ke baris perintah (stdout), gunakan tanda hubung untuk nilai parameter. `--output` 

  `--encode`Parameter Base64-mengkodekan output sebelum mengembalikannya. Ini mencegah shell salah menafsirkan karakter non-ASCII dalam pesan terenkripsi. 

  Karena perintah ini hanyalah bukti konsep, kami menghilangkan konteks enkripsi dan menekan metadata (). `-S` 

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

  ```
  $ encrypted=$(echo 'Hello World' | aws-encryption-cli --encrypt -S \
                                                        --input - --output - --encode \
                                                        --wrapping-keys key=$keyArn )
  ```

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

  ```
  PS C:\> $encrypted = 'Hello World' | aws-encryption-cli --encrypt -S `
                                                          --input - --output - --encode `
                                                          --wrapping-keys key=$keyArn
  ```

------

   
+ Perintah ketiga menyalurkan pesan terenkripsi dalam `$encrypted` variabel ke perintah dekripsi. 

  Perintah dekripsi ini digunakan `--input -` untuk menunjukkan bahwa input berasal dari pipeline (stdin) dan `--output -` untuk mengirim output ke pipeline (stdout). (Parameter input mengambil lokasi input, bukan byte input yang sebenarnya, sehingga Anda tidak dapat menggunakan `$encrypted` variabel sebagai nilai `--input` parameter.) 

  Contoh ini menggunakan atribut **penemuan** `--wrapping-keys` parameter untuk memungkinkan CLI AWS Enkripsi menggunakan apapun AWS KMS key untuk mendekripsi data. Itu tidak menentukan [kebijakan komitmen](concepts.md#commitment-policy), sehingga menggunakan nilai default untuk versi 2.1. *x* dan kemudian, `require-encrypt-require-decrypt`

  Karena output dienkripsi dan kemudian dikodekan, perintah dekripsi menggunakan `--decode` parameter untuk memecahkan kode input yang dikodekan Base64 sebelum mendekripsi. Anda juga dapat menggunakan `--decode` parameter untuk memecahkan kode input yang dikodekan Base64 sebelum mengenkripsinya.

  Sekali lagi, perintah menghilangkan konteks enkripsi dan menekan metadata (-). `S` 

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

  ```
  $  echo $encrypted | aws-encryption-cli --decrypt --wrapping-keys discovery=true --input - --output - --decode --buffer -S
  Hello World
  ```

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

  ```
  PS C:\> $encrypted | aws-encryption-cli --decrypt --wrapping-keys discovery=$true --input - --output - --decode --buffer -S
  Hello World
  ```

------

Anda juga dapat melakukan operasi enkripsi dan dekripsi dalam satu perintah tanpa variabel intervensi. 

Seperti pada contoh sebelumnya, `--output` parameter `--input` dan memiliki `-` nilai dan perintah menggunakan `--encode` parameter untuk menyandikan output dan `--decode` parameter untuk memecahkan kode input.

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

```
$  keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

$  echo 'Hello World' |
          aws-encryption-cli --encrypt --wrapping-keys key=$keyArn --input - --output - --encode -S |
          aws-encryption-cli --decrypt --wrapping-keys discovery=true --input - --output - --decode -S
Hello World
```

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

```
PS C:\> $keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

PS C:\> 'Hello World' |
               aws-encryption-cli --encrypt --wrapping-keys key=$keyArn --input - --output - --encode -S |
               aws-encryption-cli --decrypt --wrapping-keys discovery=$true --input - --output - --decode -S
Hello World
```

------

## Menggunakan beberapa kunci master
<a name="cli-example-multimaster"></a>

Contoh ini menunjukkan cara menggunakan beberapa kunci master saat mengenkripsi dan mendekripsi data di CLI Enkripsi. AWS 

Bila Anda menggunakan beberapa kunci master untuk mengenkripsi data, salah satu kunci master dapat digunakan untuk mendekripsi data. Strategi ini memastikan bahwa Anda dapat mendekripsi data bahkan jika salah satu kunci master tidak tersedia. Jika Anda menyimpan data terenkripsi dalam beberapa Wilayah AWS, strategi ini memungkinkan Anda menggunakan kunci master di Wilayah yang sama untuk mendekripsi data. 

Saat Anda mengenkripsi dengan beberapa kunci master, kunci master pertama memainkan peran khusus. Ini menghasilkan kunci data yang digunakan untuk mengenkripsi data. Kunci master yang tersisa mengenkripsi kunci data teks biasa. [Pesan terenkripsi yang](concepts.md#message) dihasilkan mencakup data terenkripsi dan kumpulan kunci data terenkripsi, satu untuk setiap kunci master. Meskipun kunci master pertama menghasilkan kunci data, salah satu kunci master dapat mendekripsi salah satu kunci data, yang dapat digunakan untuk mendekripsi data. 

**Mengenkripsi dengan tiga kunci utama**

Perintah contoh ini menggunakan tiga kunci pembungkus untuk mengenkripsi `Finance.log` file, satu di masing-masing tiga. Wilayah AWS

Ini menulis pesan terenkripsi ke direktori. `Archive` Perintah menggunakan `--suffix` parameter tanpa nilai untuk menekan akhiran, sehingga nama file input dan output akan sama. 

Perintah menggunakan `--wrapping-keys` parameter dengan tiga atribut **kunci**. Anda juga dapat menggunakan beberapa `--wrapping-keys` parameter dalam perintah yang sama. 

Untuk mengenkripsi file log, CLI AWS Enkripsi meminta kunci pembungkus pertama dalam daftar`$key1`,, untuk menghasilkan kunci data yang digunakannya untuk mengenkripsi data. Kemudian, ia menggunakan masing-masing kunci pembungkus lainnya untuk mengenkripsi salinan teks biasa dari kunci data yang sama. Pesan terenkripsi dalam file output mencakup ketiga kunci data terenkripsi. 

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

```
$ key1=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
$ key2=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef
$ key3=arn:aws:kms:ap-southeast-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

$ aws-encryption-cli --encrypt --input /logs/finance.log \
                               --output /archive --suffix \
                               --encryption-context class=log \
                               --metadata-output ~/metadata \
                               --wrapping-keys key=$key1 key=$key2 key=$key3
```

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

```
PS C:\> $key1 = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
PS C:\> $key2 = 'arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef'
PS C:\> $key3 = 'arn:aws:kms:ap-southeast-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d'

PS C:\> aws-encryption-cli --encrypt --input D:\Logs\Finance.log `
                           --output D:\Archive --suffix `
                           --encryption-context class=log `
                           --metadata-output $home\Metadata.txt `
                           --wrapping-keys key=$key1 key=$key2 key=$key3
```

------

Perintah ini mendekripsi salinan `Finance.log` file yang dienkripsi dan menulisnya ke `Finance.log.clear` file di direktori. `Finance` Untuk mendekripsi data yang dienkripsi di bawah tiga AWS KMS keys, Anda dapat menentukan tiga AWS KMS keys atau subset yang sama. Contoh ini hanya menentukan salah satu dari. AWS KMS keys

Untuk memberi tahu CLI AWS Enkripsi yang AWS KMS keys akan digunakan untuk mendekripsi data Anda, gunakan atribut **kunci parameter**. `--wrapping-keys` Saat mendekripsi dengan AWS KMS keys, nilai atribut **kunci** harus berupa [ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) kunci.

Anda harus memiliki izin untuk memanggil [Decrypt API](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) pada yang AWS KMS keys Anda tentukan. Untuk informasi selengkapnya, lihat [Otentikasi dan Kontrol Akses untuk AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html). 

Sebagai praktik terbaik, contoh ini menggunakan `--max-encrypted-data-keys` parameter untuk menghindari dekripsi pesan yang salah dengan jumlah kunci data terenkripsi yang berlebihan. Meskipun contoh ini hanya menggunakan satu kunci pembungkus untuk dekripsi, pesan terenkripsi memiliki tiga (3) kunci data terenkripsi; satu untuk masing-masing dari tiga kunci pembungkus yang digunakan saat mengenkripsi. Tentukan jumlah yang diharapkan dari kunci data terenkripsi atau nilai maksimum yang wajar, seperti 5. Jika Anda menentukan nilai maksimum kurang dari 3, perintah gagal. Lihat perinciannya di [Membatasi kunci data terenkripsi](configure.md#config-limit-keys).

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

```
$ aws-encryption-cli --decrypt --input /archive/finance.log \
                     --wrapping-keys key=$key1 \
                     --output /finance --suffix '.clear' \
                     --metadata-output ~/metadata \
                     --max-encrypted-data-keys 3 \
                     --buffer \
                     --encryption-context class=log
```

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

```
PS C:\> aws-encryption-cli --decrypt `
                           --input D:\Archive\Finance.log `
                           --wrapping-keys key=$key1 `
                           --output D:\Finance --suffix '.clear' `
                           --metadata-output .\Metadata\Metadata.txt `
                           --max-encrypted-data-keys 3 `
                           --buffer `
                           --encryption-context class=log
```

------

## Mengenkripsi dan mendekripsi dalam skrip
<a name="cli-example-script"></a>

Contoh ini menunjukkan cara menggunakan CLI AWS Enkripsi dalam skrip. Anda dapat menulis skrip yang hanya mengenkripsi dan mendekripsi data, atau skrip yang mengenkripsi atau mendekripsi sebagai bagian dari proses manajemen data.

Dalam contoh ini, skrip mendapatkan koleksi file log, mengompresnya, mengenkripsi mereka, dan kemudian menyalin file terenkripsi ke bucket Amazon S3. Skrip ini memproses setiap file secara terpisah, sehingga Anda dapat mendekripsi dan mengembangkannya secara independen.

Saat Anda mengompres dan mengenkripsi file, pastikan untuk mengompres sebelum Anda mengenkripsi. Data yang dienkripsi dengan benar tidak dapat dikompresi.

**Awas**  
Hati-hati saat mengompresi data yang mencakup rahasia dan data yang mungkin dikendalikan oleh aktor jahat. Ukuran akhir dari data terkompresi mungkin secara tidak sengaja mengungkapkan informasi sensitif tentang isinya.

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

```
# Continue running even if an operation fails.
set +e

dir=$1
encryptionContext=$2
s3bucket=$3
s3folder=$4
masterKeyProvider="aws-kms"
metadataOutput="/tmp/metadata-$(date +%s)"

compress(){
    gzip -qf $1
}

encrypt(){
    # -e encrypt
    # -i input
    # -o output
    # --metadata-output unique file for metadata
    # -m masterKey read from environment variable
    # -c encryption context read from the second argument.
    # -v be verbose
    aws-encryption-cli -e -i ${1} -o $(dirname ${1}) --metadata-output ${metadataOutput} -m key="${masterKey}" provider="${masterKeyProvider}" -c "${encryptionContext}" -v
}


s3put (){
    # copy file argument 1 to s3 location passed into the script.
    aws s3 cp ${1} ${s3bucket}/${s3folder}
}

# Validate all required arguments are present.
if [ "${dir}" ] && [ "${encryptionContext}" ] && [ "${s3bucket}" ] && [ "${s3folder}" ] && [ "${masterKey}" ]; then

# Is $dir a valid directory?
test -d "${dir}"
if [ $? -ne 0 ]; then
    echo "Input is not a directory; exiting"
    exit 1
fi

# Iterate over all the files in the directory, except *gz and *encrypted (in case of a re-run).
for f in $(find ${dir} -type f \( -name "*" ! -name \*.gz ! -name \*encrypted \) ); do
    echo "Working on $f"
    compress ${f}
    encrypt ${f}.gz
    rm -f ${f}.gz
    s3put ${f}.gz.encrypted
done;
else
    echo "Arguments: <Directory> <encryption context> <s3://bucketname> <s3 folder>"
    echo " and ENV var \$masterKey must be set"
    exit 255
fi
```

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

```
#Requires -Modules AWSPowerShell, Microsoft.PowerShell.Archive
Param
(
    [Parameter(Mandatory)]
    [ValidateScript({Test-Path $_})]
    [String[]]
    $FilePath,

    [Parameter()]
    [Switch]
    $Recurse,

    [Parameter(Mandatory=$true)]
    [String]
    $wrappingKeyID,

    [Parameter()]
    [String]
    $masterKeyProvider = 'aws-kms',

    [Parameter(Mandatory)]
    [ValidateScript({Test-Path $_})]
    [String]
    $ZipDirectory,

    [Parameter(Mandatory)]
    [ValidateScript({Test-Path $_})]
    [String]
    $EncryptDirectory,

    [Parameter()]
    [String]
    $EncryptionContext,

    [Parameter(Mandatory)]
    [ValidateScript({Test-Path $_})]
    [String]
    $MetadataDirectory,

    [Parameter(Mandatory)]
    [ValidateScript({Test-S3Bucket -BucketName $_})]
    [String]
    $S3Bucket,

    [Parameter()]
    [String]
    $S3BucketFolder
)

BEGIN {}
PROCESS {
    if ($files = dir $FilePath -Recurse:$Recurse)
    {

        # Step 1: Compress
        foreach ($file in $files)
        {
            $fileName = $file.Name
            try
            {
                Microsoft.PowerShell.Archive\Compress-Archive -Path $file.FullName -DestinationPath $ZipDirectory\$filename.zip
            }
            catch
            {
                Write-Error "Zip failed on $file.FullName"
            }

            # Step 2: Encrypt
            if (-not (Test-Path "$ZipDirectory\$filename.zip"))
            {
                Write-Error "Cannot find zipped file: $ZipDirectory\$filename.zip"
            }
            else
            {
                # 2>&1 captures command output
                $err = (aws-encryption-cli -e -i "$ZipDirectory\$filename.zip" `
                                           -o $EncryptDirectory `
                                           -m key=$wrappingKeyID provider=$masterKeyProvider `
                                           -c $EncryptionContext `
                                           --metadata-output $MetadataDirectory `
                                           -v) 2>&1

                # Check error status
                if ($? -eq $false)
                {
                    # Write the error
                    $err
                }
                elseif (Test-Path "$EncryptDirectory\$fileName.zip.encrypted")
                {
                    # Step 3: Write to S3 bucket
                    if ($S3BucketFolder)
                    {
                        Write-S3Object -BucketName $S3Bucket -File "$EncryptDirectory\$fileName.zip.encrypted" -Key "$S3BucketFolder/$fileName.zip.encrypted"

                    }
                    else
                    {
                        Write-S3Object -BucketName $S3Bucket -File "$EncryptDirectory\$fileName.zip.encrypted"
                    }
                }
            }
        }
    }
}
```

------

## Menggunakan caching kunci data
<a name="cli-example-caching"></a>

Contoh ini menggunakan [caching kunci data](data-key-caching.md) dalam perintah yang mengenkripsi sejumlah besar file. 

Secara default, CLI AWS Enkripsi (dan versi lain dari AWS Encryption SDK) menghasilkan kunci data unik untuk setiap file yang dienkripsi. Meskipun menggunakan kunci data unik untuk setiap operasi adalah praktik terbaik kriptografi, penggunaan kembali kunci data yang terbatas dapat diterima untuk beberapa situasi. Jika Anda mempertimbangkan caching kunci data, konsultasikan dengan insinyur keamanan untuk memahami persyaratan keamanan aplikasi Anda dan tentukan ambang keamanan yang tepat untuk Anda. 

Dalam contoh ini, caching kunci data mempercepat operasi enkripsi dengan mengurangi frekuensi permintaan ke penyedia kunci master.

Perintah dalam contoh ini mengenkripsi direktori besar dengan beberapa subdirektori yang berisi total sekitar 800 file log kecil. Perintah pertama menyimpan ARN dari AWS KMS key dalam variabel. `keyARN` Perintah kedua mengenkripsi semua file dalam direktori input (rekursif) dan menulisnya ke direktori arsip. Perintah menggunakan `--suffix` parameter untuk menentukan `.archive` sufiks. 

`--caching`Parameter memungkinkan caching kunci data. Atribut **kapasitas**, yang membatasi jumlah kunci data dalam cache, diatur ke 1, karena pemrosesan file serial tidak pernah menggunakan lebih dari satu kunci data pada satu waktu. Atribut **max\$1age**, yang menentukan berapa lama kunci data cache dapat digunakan, diatur ke 10 detik. 

Atribut **max\$1messages\$1encrypted** opsional disetel ke 10 pesan, sehingga satu kunci data tidak pernah digunakan untuk mengenkripsi lebih dari 10 file. Membatasi jumlah file yang dienkripsi oleh setiap kunci data mengurangi jumlah file yang akan terpengaruh jika kunci data dikompromikan.

Untuk menjalankan perintah ini pada file log yang dihasilkan sistem operasi Anda, Anda mungkin memerlukan izin administrator (`sudo`di Linux; **Jalankan sebagai Administrator** di Windows).

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

```
$  keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

$  aws-encryption-cli --encrypt \
                      --input /var/log/httpd --recursive \
                      --output ~/archive --suffix .archive \
                      --wrapping-keys key=$keyArn \
                      --encryption-context class=log \
                      --suppress-metadata \
                      --caching capacity=1 max_age=10 max_messages_encrypted=10
```

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

```
PS C:\> $keyARN = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

PS C:\> aws-encryption-cli --encrypt `
                           --input C:\Windows\Logs --recursive `
                           --output $home\Archive --suffix '.archive' `
                           --wrapping-keys key=$keyARN `
                           --encryption-context class=log `
                           --suppress-metadata `
                           --caching capacity=1 max_age=10 max_messages_encrypted=10
```

------

Untuk menguji efek caching kunci data, contoh ini menggunakan cmdlet [Measure-Command](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/measure-command) in. PowerShell Ketika Anda menjalankan contoh ini tanpa caching kunci data, dibutuhkan sekitar 25 detik untuk menyelesaikannya. Proses ini menghasilkan kunci data baru untuk setiap file dalam direktori.

```
PS C:\> Measure-Command {aws-encryption-cli --encrypt `
                                            --input C:\Windows\Logs --recursive `
                                            --output $home\Archive  --suffix '.archive' `
                                            --wrapping-keys key=$keyARN `
                                            --encryption-context class=log `
                                            --suppress-metadata }


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 25
Milliseconds      : 453
Ticks             : 254531202
TotalDays         : 0.000294596298611111
TotalHours        : 0.00707031116666667
TotalMinutes      : 0.42421867
TotalSeconds      : 25.4531202
TotalMilliseconds : 25453.1202
```

Caching kunci data membuat proses lebih cepat, bahkan ketika Anda membatasi setiap kunci data hingga maksimal 10 file. Perintah sekarang membutuhkan waktu kurang dari 12 detik untuk menyelesaikan dan mengurangi jumlah panggilan ke penyedia kunci master menjadi 1/10 dari nilai aslinya.

```
PS C:\> Measure-Command {aws-encryption-cli --encrypt `
                                            --input C:\Windows\Logs --recursive `
                                            --output $home\Archive  --suffix '.archive' `
                                            --wrapping-keys key=$keyARN `
                                            --encryption-context class=log `
                                            --suppress-metadata `
                                            --caching capacity=1 max_age=10 max_messages_encrypted=10}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 11
Milliseconds      : 813
Ticks             : 118132640
TotalDays         : 0.000136727592592593
TotalHours        : 0.00328146222222222
TotalMinutes      : 0.196887733333333
TotalSeconds      : 11.813264
TotalMilliseconds : 11813.264
```

Jika Anda menghilangkan `max_messages_encrypted` batasan, semua file dienkripsi di bawah kunci data yang sama. Perubahan ini meningkatkan risiko menggunakan kembali kunci data tanpa membuat proses lebih cepat. Namun, ini mengurangi jumlah panggilan ke penyedia kunci master menjadi 1.

```
PS C:\> Measure-Command {aws-encryption-cli --encrypt `
                                            --input C:\Windows\Logs --recursive `
                                            --output $home\Archive  --suffix '.archive' `
                                            --wrapping-keys key=$keyARN `
                                            --encryption-context class=log `
                                            --suppress-metadata `
                                            --caching capacity=1 max_age=10}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 10
Milliseconds      : 252
Ticks             : 102523367
TotalDays         : 0.000118661304398148
TotalHours        : 0.00284787130555556
TotalMinutes      : 0.170872278333333
TotalSeconds      : 10.2523367
TotalMilliseconds : 10252.3367
```

# AWS Encryption SDK Sintaks CLI dan referensi parameter
<a name="crypto-cli-reference"></a>

Topik ini menyediakan diagram sintaks dan deskripsi parameter singkat untuk membantu Anda menggunakan AWS Encryption SDK Command Line Interface (CLI). Untuk bantuan dengan kunci pembungkus dan parameter lainnya, lihat[Cara menggunakan CLI AWS Enkripsi](crypto-cli-how-to.md). 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/)

**Topics**
+ [AWS Sintaks CLI enkripsi](#crypto-cli-syntax)
+ [AWS Parameter baris perintah CLI enkripsi](#crypto-cli-parameters)
+ [Parameter lanjutan](#cli-advanced-parameters)

## AWS Sintaks CLI enkripsi
<a name="crypto-cli-syntax"></a>

Diagram sintaks AWS Enkripsi CLI ini menunjukkan sintaks untuk setiap tugas yang Anda lakukan dengan CLI Enkripsi. AWS Mereka mewakili sintaks yang direkomendasikan dalam AWS Enkripsi CLI versi 2.1. *x* dan kemudian.

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

**catatan**  
Kecuali dicatat dalam deskripsi parameter, setiap parameter atau atribut hanya dapat digunakan sekali dalam setiap perintah.  
Jika Anda menggunakan atribut yang parameter tidak mendukung, CLI AWS Enkripsi mengabaikan atribut yang tidak didukung tanpa peringatan atau kesalahan.

**Mencari bantuan**  
Untuk mendapatkan sintaks AWS Enkripsi CLI lengkap dengan deskripsi parameter, gunakan atau. `--help` `-h`  

```
aws-encryption-cli (--help | -h)
```

**Dapatkan versinya**  
Untuk mendapatkan nomor versi instalasi CLI AWS Enkripsi Anda, gunakan. `--version` Pastikan untuk menyertakan versi saat Anda mengajukan pertanyaan, melaporkan masalah, atau berbagi tips tentang menggunakan CLI AWS Enkripsi.  

```
aws-encryption-cli --version
```

**Enkripsi data**  
Diagram sintaks berikut menunjukkan parameter yang digunakan **encrypt** perintah.   

```
aws-encryption-cli --encrypt
                   --input <input> [--recursive] [--decode]
                   --output <output> [--interactive] [--no-overwrite] [--suffix [<suffix>]] [--encode]
                   --wrapping-keys  [--wrapping-keys] ...
                       key=<keyID> [key=<keyID>] ...
                       [provider=<provider-name>] [region=<aws-region>] [profile=<aws-profile>]
                   --metadata-output <location> [--overwrite-metadata] | --suppress-metadata]
                   [--commitment-policy <commitment-policy>]
                   [--encryption-context <encryption_context> [<encryption_context> ...]]
                   [--max-encrypted-data-keys <integer>]
                   [--algorithm <algorithm_suite>]
                   [--caching <attributes>] 
                   [--frame-length <length>]
                   [-v | -vv | -vvv | -vvvv]
                   [--quiet]
```

**Dekripsi data**  
Diagram sintaks berikut menunjukkan parameter yang digunakan **decrypt** perintah.   
Dalam versi 1.8. *x*, `--wrapping-keys` parameternya opsional saat mendekripsi, tetapi disarankan. Dimulai dari versi 2.1. *x*, `--wrapping-keys` parameter diperlukan saat mengenkripsi dan mendekripsi. Untuk AWS KMS keys, Anda dapat menggunakan atribut **kunci** untuk menentukan kunci pembungkus (praktik terbaik) atau menyetel atribut **penemuan**`true`, yang tidak membatasi kunci pembungkus yang dapat digunakan AWS CLI Enkripsi.  

```
aws-encryption-cli --decrypt (or [--decrypt-unsigned]) 
                   --input <input> [--recursive] [--decode]
                   --output <output> [--interactive] [--no-overwrite]  [--suffix [<suffix>]] [--encode]           
                   --wrapping-keys  [--wrapping-keys] ...
                       [key=<keyID>] [key=<keyID>] ...
                       [discovery={true|false}] [discovery-partition=<aws-partition-name> discovery-account=<aws-account-ID> [discovery-account=<aws-account-ID>] ...] 
                       [provider=<provider-name>] [region=<aws-region>] [profile=<aws-profile>]
                   --metadata-output <location> [--overwrite-metadata] | --suppress-metadata]
                   [--commitment-policy <commitment-policy>]
                   [--encryption-context <encryption_context> [<encryption_context> ...]]
                   [--buffer]
                   [--max-encrypted-data-keys <integer>]
                   [--caching <attributes>]
                   [--max-length <length>]
                   [-v | -vv | -vvv | -vvvv]
                   [--quiet]
```

**Gunakan file konfigurasi**  
Anda dapat merujuk ke file konfigurasi yang berisi parameter dan nilainya. Ini setara dengan mengetik parameter dan nilai dalam perintah. Sebagai contoh, lihat [Cara menyimpan parameter dalam file konfigurasi](crypto-cli-how-to.md#crypto-cli-config-file).  

```
aws-encryption-cli @<configuration_file>

# In a PowerShell console, use a backtick to escape the @.
aws-encryption-cli `@<configuration_file>
```

## AWS Parameter baris perintah CLI enkripsi
<a name="crypto-cli-parameters"></a>

Daftar ini memberikan deskripsi dasar parameter perintah AWS Enkripsi CLI. Untuk deskripsi lengkap, lihat [aws-encryption-sdk-clidokumentasi](http://aws-encryption-sdk-cli.readthedocs.io/en/latest/).

**--enkripsi (-e)**  
Mengenkripsi data input. Setiap perintah harus memiliki`--encrypt`, atau`--decrypt`, atau `--decrypt-unsigned` parameter.

**--dekripsi (-d)**  
Mendekripsi data input. Setiap perintah harus memiliki`--encrypt`,`--decrypt`, atau `--decrypt-unsigned` parameter.

**--decrypt-unsigned [Diperkenalkan dalam versi 1.9. *x* dan 2.2. *x*]**  
`--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.

**--wrapping-keys (-w) [Diperkenalkan dalam versi 1.8. *x*]**  <a name="wrapping-keys"></a>
Menentukan kunci [pembungkus (atau kunci](concepts.md#master-key) *master*) yang digunakan dalam operasi enkripsi dan dekripsi. Anda dapat menggunakan [beberapa `--wrapping-keys` parameter](crypto-cli-how-to.md#cli-many-cmks) di setiap perintah.   
Dimulai dari versi 2.1. *x*, `--wrapping-keys` parameter diperlukan dalam perintah enkripsi dan dekripsi. Dalam versi 1.8. *x*, perintah enkripsi memerlukan salah satu `--wrapping-keys` atau `--master-keys` parameter. Dalam versi 1.8. *x* dekripsi perintah, `--wrapping-keys` parameter adalah opsional tetapi direkomendasikan.   
**Saat menggunakan penyedia kunci master kustom, perintah enkripsi dan dekripsi memerlukan atribut **kunci** dan penyedia.** Saat menggunakan AWS KMS keys, perintah enkripsi memerlukan atribut **kunci**. Perintah dekripsi memerlukan atribut **kunci** atau atribut **penemuan** dengan nilai `true` (tetapi tidak keduanya). Menggunakan atribut **kunci** saat mendekripsi adalah praktik [AWS Encryption SDK terbaik](best-practices.md). Ini sangat penting jika Anda mendekripsi kumpulan pesan asing, seperti yang ada di bucket Amazon S3 atau antrian Amazon SQS.  
Untuk contoh yang menunjukkan cara menggunakan kunci AWS KMS Multi-region sebagai kunci pembungkus, lihat. [Menggunakan Multi-region AWS KMS keys](configure.md#config-mrks)  
**Atribut**: Nilai `--wrapping-keys` parameter terdiri dari atribut berikut. Formatnya adalah `attribute_name=value`.     
**kunci**  
Mengidentifikasi kunci pembungkus yang digunakan dalam operasi. Formatnya adalah pasangan **kunci** = ID. Anda dapat menentukan beberapa atribut **kunci** di setiap nilai `--wrapping-keys` parameter.  
+ **Enkripsi perintah**: Semua perintah enkripsi memerlukan atribut **kunci**. Bila Anda menggunakan AWS KMS key dalam perintah enkripsi, nilai atribut **kunci dapat berupa ID kunci**, ARN kunci, nama alias, atau alias ARN. *Untuk deskripsi pengidentifikasi AWS KMS kunci, lihat [Pengidentifikasi kunci](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) di Panduan Pengembang.AWS Key Management Service * 
+ **Dekripsi perintah**: Saat mendekripsi dengan AWS KMS keys, `--wrapping-keys` parameter memerlukan atribut **kunci** dengan nilai [ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) kunci atau atribut **penemuan** dengan nilai (tetapi tidak keduanya). `true` Menggunakan atribut **kunci** adalah [praktik AWS Encryption SDK terbaik](best-practices.md). Saat mendekripsi dengan penyedia kunci master kustom, atribut **kunci** diperlukan.
**catatan**  
Untuk menentukan kunci AWS KMS pembungkus dalam perintah dekripsi, nilai atribut **kunci** harus berupa ARN kunci. Jika Anda menggunakan ID kunci, nama alias, atau alias ARN, AWS CLI Enkripsi tidak mengenali kunci pembungkus.
Anda dapat menentukan beberapa atribut **kunci** di setiap nilai `--wrapping-keys` parameter. Namun, atribut **penyedia**, **wilayah**, dan **profil** apa pun dalam `--wrapping-keys` parameter berlaku untuk semua kunci pembungkus dalam nilai parameter tersebut. Untuk menentukan kunci pembungkus dengan nilai atribut yang berbeda, gunakan beberapa `--wrapping-keys` parameter dalam perintah.  
**penemuan**  
Memungkinkan CLI AWS Enkripsi menggunakan apapun AWS KMS key untuk mendekripsi pesan. Nilai **penemuan** bisa `true` atau`false`. Nilai default-nya adalah `false`. Atribut **penemuan** hanya valid dalam perintah dekripsi dan hanya jika penyedia kunci master berada. AWS KMS  
Saat mendekripsi dengan AWS KMS keys, `--wrapping-keys` parameter memerlukan atribut **kunci** atau atribut **penemuan** dengan nilai `true` (tetapi tidak keduanya). Jika Anda menggunakan atribut **kunci**, Anda dapat menggunakan atribut **penemuan** dengan nilai `false` untuk secara eksplisit menolak penemuan.   
+ `False`(default) — Ketika atribut **penemuan** tidak ditentukan atau nilainya`false`, CLI AWS Enkripsi mendekripsi pesan hanya menggunakan yang AWS KMS keys ditentukan oleh atribut **kunci parameter**. `--wrapping-keys` Jika Anda tidak menentukan atribut **kunci** saat penemuan`false`, perintah dekripsi gagal. Nilai ini mendukung praktik [terbaik](best-practices.md) CLI AWS Enkripsi.
+ `True`— Ketika nilai atribut **penemuan** adalah`true`, CLI AWS Enkripsi mendapatkan metadata AWS KMS keys dari dalam pesan terenkripsi, dan menggunakannya untuk mendekripsi pesan. AWS KMS keys Atribut **penemuan** dengan nilai `true` berperilaku seperti versi CLI AWS Enkripsi sebelum versi 1.8. *x* yang tidak mengizinkan Anda menentukan kunci pembungkus saat mendekripsi. Namun, maksud Anda untuk menggunakan apapun AWS KMS key adalah eksplisit. Jika Anda menentukan atribut **kunci** saat penemuan`true`, perintah dekripsi gagal. 

  `true`Nilai tersebut dapat menyebabkan CLI AWS Enkripsi digunakan AWS KMS keys di berbagai Wilayah Akun AWS dan yang berbeda, atau mencoba menggunakan AWS KMS keys yang tidak diizinkan untuk digunakan oleh pengguna. 
**Saat **penemuan** dilakukan`true`, sebaiknya gunakan atribut **partisi penemuan dan akun-penemuan** untuk membatasi atribut yang AWS KMS keys digunakan pada atribut yang Anda tentukan.** Akun AWS   
**penemuan-akun**  
Membatasi yang AWS KMS keys digunakan untuk mendekripsi ke yang ditentukan. Akun AWS Satu-satunya nilai yang valid untuk atribut ini adalah [Akun AWS ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html).  
Atribut ini opsional dan hanya valid dalam perintah dekripsi dengan AWS KMS keys tempat atribut **penemuan** diatur `true` dan atribut partisi **penemuan ditentukan.**  
Setiap atribut **discovery-account** hanya membutuhkan satu Akun AWS ID, tetapi Anda dapat menentukan beberapa atribut **discovery-account** dalam parameter yang sama. `--wrapping-keys` Semua akun yang ditentukan dalam `--wrapping-keys` parameter tertentu harus berada di AWS partisi yang ditentukan.  
**penemuan-partisi**  
Menentukan AWS partisi untuk account di atribut **discovery-account**. Nilainya harus berupa AWS partisi, seperti`aws`,`aws-cn`, atau`aws-gov-cloud`. Untuk selengkapnya, lihat [Nama Sumber Daya Amazon](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax) di *Referensi Umum AWS*.  
Atribut ini diperlukan saat Anda menggunakan atribut **discovery-account**. Anda hanya dapat menentukan satu atribut **partisi penemuan** di setiap parameter. `--wrapping keys` Untuk menentukan Akun AWS di beberapa partisi, gunakan `--wrapping-keys` parameter tambahan.  
**penyedia**  
Mengidentifikasi [penyedia kunci utama](concepts.md#master-key-provider). Formatnya adalah **penyedia** = pasangan ID. Nilai default, **aws-kms**, mewakili. AWS KMS Atribut ini diperlukan hanya jika penyedia kunci master tidak AWS KMS.  
**region**  
Mengidentifikasi Wilayah AWS dari sebuah AWS KMS key. Atribut ini hanya berlaku untuk AWS KMS keys. Ini hanya digunakan ketika pengidentifikasi **kunci** tidak menentukan Wilayah; jika tidak, itu diabaikan. Ketika digunakan, itu mengganti Wilayah default di profil bernama AWS CLI.   
**profile**  
Mengidentifikasi [profil AWS CLI bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html). Atribut ini hanya berlaku untuk AWS KMS keys. Wilayah di profil hanya digunakan ketika pengidentifikasi kunci tidak menentukan Wilayah dan tidak ada atribut **wilayah** dalam perintah. 

**--masukan (-i)**  
Menentukan lokasi data untuk mengenkripsi atau mendekripsi. Parameter ini diperlukan. Nilai dapat berupa jalur ke file atau direktori, atau pola nama file. Jika Anda menyalurkan input ke perintah (stdin), gunakan. `-`  
Jika input tidak ada, perintah selesai dengan sukses tanpa kesalahan atau peringatan.    
**--rekursif (-r, -R)**  
Melakukan operasi pada file di direktori input dan subdirektorinya. Parameter ini diperlukan ketika nilai `--input` adalah direktori.  
**--decode**  
Mendekode masukan yang dikodekan Base64.   
Jika Anda mendekripsi pesan yang dienkripsi dan kemudian dikodekan, Anda harus memecahkan kode pesan sebelum mendekripsi. Parameter ini melakukan itu untuk Anda.   
Misalnya, jika Anda menggunakan `--encode` parameter dalam perintah enkripsi, gunakan `--decode` parameter dalam perintah dekripsi yang sesuai. Anda juga dapat menggunakan parameter ini untuk memecahkan kode input yang dikodekan Base64 sebelum Anda mengenkripsinya.

**--keluaran (-o)**  
Menentukan tujuan untuk output. Parameter ini diperlukan. Nilai dapat berupa nama file, direktori yang ada, atau`-`, yang menulis output ke baris perintah (stdout).   
Jika direktori output yang ditentukan tidak ada, perintah gagal. Jika input berisi subdirektori, AWS CLI Enkripsi mereproduksi subdirektori di bawah direktori output yang Anda tentukan.   
Secara default, CLI AWS Enkripsi menimpa file dengan nama yang sama. Untuk mengubah perilaku itu, gunakan `--no-overwrite` parameter `--interactive` atau. Untuk menekan peringatan penimpaan, gunakan parameter. `--quiet`  
Jika perintah yang akan menimpa file output gagal, file output dihapus.  
**--interaktif**  
Meminta sebelum menimpa file.  
**--tidak menimpa**  
Tidak menimpa file. Sebaliknya, jika file output ada, CLI AWS Enkripsi melewatkan input yang sesuai.  
**--akhiran**  
Menentukan akhiran nama file kustom untuk file yang dibuat AWS CLI Enkripsi. Untuk menunjukkan tidak ada akhiran, gunakan parameter tanpa nilai (`--suffix`).  
Secara default, ketika `--output` parameter tidak menentukan nama file, nama file output memiliki nama yang sama dengan nama file input ditambah akhiran. Sufiks untuk perintah enkripsi adalah. `.encrypted` Sufiks untuk perintah dekripsi adalah. `.decrypted`   
**--enkode**  
Menerapkan pengkodean Base64 (biner ke teks) ke output. Pengkodean mencegah program host shell salah menafsirkan karakter non-ASCII dalam teks keluaran.  
Gunakan parameter ini saat menulis output terenkripsi ke stdout (`--output -`), terutama di PowerShell konsol, bahkan saat Anda menyalurkan output ke perintah lain atau menyimpannya dalam variabel.

**--metadata-keluaran**  
Menentukan lokasi untuk metadata tentang operasi kriptografi. Masukkan jalur dan nama file. Jika direktori tidak ada, perintah gagal. Untuk menulis metadata ke baris perintah (stdout), gunakan. `-`   
Anda tidak dapat menulis perintah output (`--output`) dan metadata output (`--metadata-output`) ke stdout dalam perintah yang sama. Juga, ketika nilai `--input` atau `--output` adalah direktori (tanpa nama file), Anda tidak dapat menulis keluaran metadata ke direktori yang sama atau ke subdirektori mana pun dari direktori itu.  
Jika Anda menentukan file yang ada, secara default, CLI AWS Enkripsi menambahkan catatan metadata baru ke konten apa pun dalam file. Fitur ini memungkinkan Anda membuat satu file yang berisi metadata untuk semua operasi kriptografi Anda. Untuk menimpa konten dalam file yang ada, gunakan `--overwrite-metadata` parameter.  
CLI AWS Enkripsi mengembalikan catatan metadata berformat JSON untuk setiap operasi enkripsi atau dekripsi yang dilakukan perintah. Setiap catatan metadata mencakup jalur lengkap ke file input dan output, konteks enkripsi, rangkaian algoritme, dan informasi berharga lainnya yang dapat Anda gunakan untuk meninjau operasi dan memverifikasi bahwa itu memenuhi standar keamanan Anda.    
**--timpa metadata**  
Menimpa konten dalam file keluaran metadata. Secara default, `--metadata-output` parameter menambahkan metadata ke konten yang ada dalam file.

**--menekan-metadata (-S)**  
Menekan metadata tentang operasi enkripsi atau dekripsi. 

**--komitmen-kebijakan**  <a name="syntax-commitment-policy"></a>
Menentukan [kebijakan komitmen](concepts.md#commitment-policy) untuk mengenkripsi dan mendekripsi perintah. Kebijakan komitmen menentukan apakah pesan Anda dienkripsi dan didekripsi dengan fitur keamanan komitmen [utama](concepts.md#key-commitment).  
`--commitment-policy`Parameter diperkenalkan dalam versi 1.8. *x*. Ini berlaku dalam perintah enkripsi dan dekripsi.  
**Dalam versi 1.8. ***x*, CLI AWS Enkripsi menggunakan kebijakan `forbid-encrypt-allow-decrypt` komitmen untuk semua operasi enkripsi dan dekripsi. Bila Anda menggunakan `--wrapping-keys` parameter dalam perintah enkripsi atau dekripsi, `--commitment-policy` parameter dengan `forbid-encrypt-allow-decrypt` nilai diperlukan. Jika Anda tidak menggunakan `--wrapping-keys` parameter, `--commitment-policy` parameter tidak valid. Menetapkan kebijakan komitmen secara eksplisit mencegah kebijakan komitmen Anda berubah secara otomatis menjadi `require-encrypt-require-decrypt` saat Anda meningkatkan ke versi 2.1. *x*  
Dimulai pada **versi 2.1. ***x*, semua nilai kebijakan komitmen didukung. `--commitment-policy`Parameternya opsional dan nilai defaultnya adalah`require-encrypt-require-decrypt`.   
Parameter ini memiliki nilai-nilai berikut:  
+ `forbid-encrypt-allow-decrypt`— Tidak dapat mengenkripsi dengan komitmen utama. Ini dapat mendekripsi ciphertext yang dienkripsi dengan atau tanpa komitmen utama. 

  Dalam versi 1.8. *x*, ini adalah satu-satunya nilai yang valid. CLI AWS Enkripsi menggunakan kebijakan `forbid-encrypt-allow-decrypt` komitmen untuk semua operasi enkripsi dan dekripsi. 
+ `require-encrypt-allow-decrypt`— Enkripsi hanya dengan komitmen utama. Mendekripsi dengan dan tanpa komitmen utama. Nilai ini diperkenalkan dalam versi 2.1. *x*.
+ `require-encrypt-require-decrypt`(default) — Mengenkripsi dan mendekripsi hanya dengan komitmen utama. Nilai ini diperkenalkan dalam versi 2.1. *x*. Ini adalah nilai default dalam versi 2.1. *x* dan kemudian. Dengan nilai ini, CLI AWS Enkripsi tidak akan mendekripsi ciphertext apa pun yang dienkripsi dengan versi sebelumnya. AWS Encryption SDK
Untuk informasi terperinci tentang menetapkan kebijakan komitmen Anda, lihat[Migrasi Anda AWS Encryption SDK](migration.md).

**--enkripsi-konteks (-c)**  
Menentukan [konteks enkripsi](crypto-cli-how-to.md#crypto-cli-encryption-context) untuk operasi. Parameter ini tidak diperlukan, tetapi disarankan.   
+ Dalam sebuah `--encrypt` perintah, masukkan satu atau lebih `name=value` pasangan. Gunakan spasi untuk memisahkan pasangan.
+ Dalam sebuah `--decrypt` perintah, masukkan `name=value` pasangan, `name` elemen tanpa nilai, atau keduanya.
Jika `name` atau `value` dalam `name=value` pasangan menyertakan spasi atau karakter khusus, lampirkan seluruh pasangan dalam tanda kutip. Misalnya, `--encryption-context "department=software development"`.

**--buffer (-b) [Diperkenalkan dalam versi 1.9. *x* dan 2.2. *x*]**  
Mengembalikan plaintext hanya setelah semua input diproses, termasuk memverifikasi tanda tangan digital jika ada.

**-- max-encrypted-data-keys [Diperkenalkan dalam versi 1.9. *x* dan 2.2. *x*]**  
Menentukan jumlah maksimum kunci data terenkripsi dalam pesan terenkripsi. Parameter ini bersifat opsional.   
Nilai yang valid adalah 1 - 65.535. Jika Anda menghilangkan parameter ini, CLI AWS Enkripsi tidak memberlakukan maksimum apa pun. Pesan terenkripsi dapat menampung hingga 65.535 (2^16 - 1) kunci data terenkripsi.  
Anda dapat menggunakan parameter ini dalam perintah enkripsi untuk mencegah pesan yang salah. Anda dapat menggunakannya dalam perintah dekripsi untuk mendeteksi pesan berbahaya dan menghindari mendekripsi pesan dengan banyak kunci data terenkripsi yang tidak dapat Anda dekripsi. Untuk detail dan contoh, lihat [Membatasi kunci data terenkripsi](configure.md#config-limit-keys).

**--bantuan (-h)**  
Mencetak penggunaan dan sintaks pada baris perintah.

**--versi**  
Mendapat versi CLI AWS Enkripsi.

**-v \$1 -vv \$1 -vvv \$1 -vvv**  
Menampilkan informasi verbose, peringatan, dan pesan debugging. Detail dalam output meningkat dengan jumlah `v` s dalam parameter. Setelan (`-vvvv`) yang paling rinci mengembalikan data tingkat debugging dari AWS CLI Enkripsi dan semua komponen yang digunakannya.

**--tenang (-q)**  
Menekan pesan peringatan, seperti pesan yang muncul saat Anda menimpa file keluaran.

**--master-keys (-m) [Usang]**  
Parameter --master-keys tidak digunakan lagi di 1.8. *x* dan dihapus dalam versi 2.1. *x*. Sebagai gantinya, gunakan parameter [--wrapping-keys](#wrapping-keys).
Menentukan [kunci master](concepts.md#master-key) yang digunakan dalam operasi enkripsi dan dekripsi. Anda dapat menggunakan beberapa parameter kunci master di setiap perintah.  
`--master-keys`Parameter diperlukan dalam perintah enkripsi. Ini diperlukan dalam perintah dekripsi hanya ketika Anda menggunakan penyedia kunci master kustom (non-⸺-AWS KMS).  
**Atribut**: Nilai `--master-keys` parameter terdiri dari atribut berikut. Formatnya adalah `attribute_name=value`.     
**kunci**  
Mengidentifikasi [kunci pembungkus](concepts.md#master-key) yang digunakan dalam operasi. Formatnya adalah pasangan **kunci** = ID. Atribut **kunci** diperlukan di semua perintah enkripsi.   
Bila Anda menggunakan AWS KMS key dalam perintah enkripsi, nilai atribut **kunci dapat berupa ID kunci**, ARN kunci, nama alias, atau alias ARN. Untuk detail tentang pengidentifikasi AWS KMS kunci, lihat [Pengidentifikasi kunci di Panduan AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) *Pengembang*.  
Atribut **kunci** diperlukan dalam perintah dekripsi ketika penyedia kunci master tidak. AWS KMS Atribut **kunci** tidak diizinkan dalam perintah yang mendekripsi data yang dienkripsi di bawah file. AWS KMS key  
Anda dapat menentukan beberapa atribut **kunci** di setiap nilai `--master-keys` parameter. Namun, atribut **penyedia**, **wilayah**, dan **profil** apa pun berlaku untuk semua kunci master dalam nilai parameter. Untuk menentukan kunci master dengan nilai atribut yang berbeda, gunakan beberapa `--master-keys` parameter dalam perintah.   
**penyedia**  
Mengidentifikasi [penyedia kunci utama](concepts.md#master-key-provider). Formatnya adalah **penyedia** = pasangan ID. Nilai default, **aws-kms**, mewakili. AWS KMS Atribut ini diperlukan hanya jika penyedia kunci master tidak AWS KMS.  
**region**  
Mengidentifikasi Wilayah AWS dari sebuah AWS KMS key. Atribut ini hanya berlaku untuk AWS KMS keys. Ini hanya digunakan ketika pengidentifikasi **kunci** tidak menentukan Wilayah; jika tidak, itu diabaikan. Ketika digunakan, itu mengganti Wilayah default di profil bernama AWS CLI.   
**profile**  
Mengidentifikasi [profil AWS CLI bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html). Atribut ini hanya berlaku untuk AWS KMS keys. Wilayah di profil hanya digunakan ketika pengidentifikasi kunci tidak menentukan Wilayah dan tidak ada atribut **wilayah** dalam perintah. 

## Parameter lanjutan
<a name="cli-advanced-parameters"></a>

**--algoritma**  
Menentukan [suite algoritma](concepts.md#crypto-algorithm) alternatif. Parameter ini opsional dan hanya valid dalam perintah enkripsi.   
Jika Anda menghilangkan parameter ini, CLI AWS Enkripsi menggunakan salah satu rangkaian algoritme default untuk yang diperkenalkan AWS Encryption SDK di versi 1.8. *x*. Kedua algoritma default menggunakan AES-GCM dengan [HKDF, tanda tangan ECDSA](https://en.wikipedia.org/wiki/HKDF), dan kunci enkripsi 256-bit. Seseorang menggunakan komitmen utama; yang satu tidak. Pilihan rangkaian algoritma default ditentukan oleh [kebijakan komitmen](concepts.md#commitment-policy) untuk perintah.  
Suite algoritma default direkomendasikan untuk sebagian besar operasi enkripsi. Untuk daftar nilai yang valid, lihat nilai untuk `algorithm` parameter [di Baca Dokumen.](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/index.html#execution)

**--bingkai-panjang**  
Menciptakan output dengan panjang bingkai yang ditentukan. Parameter ini opsional dan hanya valid dalam perintah enkripsi.   
Masukkan nilai dalam byte. Nilai yang valid adalah 0 dan 1 - 2^31 - 1. Nilai 0 menunjukkan data yang tidak dibingkai. Defaultnya adalah 4096 (byte).   
Bila memungkinkan, gunakan data berbingkai. AWS Encryption SDK Mendukung data nonframed hanya untuk penggunaan lama. Beberapa implementasi bahasa masih AWS Encryption SDK dapat menghasilkan ciphertext nonframed. Semua implementasi bahasa yang didukung dapat mendekripsi ciphertext berbingkai dan nonframed.

**--max-panjang**  
Menunjukkan ukuran bingkai maksimum (atau panjang konten maksimum untuk pesan yang tidak dibingkai) dalam byte untuk dibaca dari pesan terenkripsi. Parameter ini opsional dan hanya valid dalam perintah dekripsi. Ini dirancang untuk melindungi Anda dari mendekripsi ciphertext berbahaya yang sangat besar.   
Masukkan nilai dalam byte. Jika Anda menghilangkan parameter ini, AWS Encryption SDK tidak membatasi ukuran bingkai saat mendekripsi.

**--caching**  
Mengaktifkan fitur [caching kunci data](data-key-caching.md), yang menggunakan kembali kunci data, alih-alih menghasilkan kunci data baru untuk setiap file input. Parameter ini mendukung skenario lanjutan. Pastikan untuk membaca dokumentasi [Data Key Caching](data-key-caching.md) sebelum menggunakan fitur ini.   
`--caching`Parameter memiliki atribut berikut.    
**kapasitas (diperlukan)**  
Menentukan jumlah maksimum entri dalam cache.   
Nilai minimum adalah 1. Tidak ada nilai maksimum.  
**max\$1age (wajib)**  
Tentukan berapa lama entri cache digunakan, dalam hitungan detik, dimulai saat ditambahkan ke cache.  
Masukkan nilai yang lebih besar dari 0. Tidak ada nilai maksimum.  
**max\$1messages\$1encrypted (opsional)**  
Menentukan jumlah maksimum pesan yang dapat dienkripsi oleh entri cache.   
Nilai yang valid adalah 1 - 2 ^ 32. Nilai default adalah 2 ^ 32 (pesan).  
**max\$1bytes\$1encrypted (opsional)**  
Menentukan jumlah maksimum byte yang dapat dienkripsi oleh entri yang di-cache.  
Nilai yang valid adalah 0 dan 1 - 2^63 - 1. Nilai default adalah 2 ^ 63 - 1 (pesan). Nilai 0 memungkinkan Anda menggunakan caching kunci data hanya ketika Anda mengenkripsi string pesan kosong.

# Versi CLI AWS Enkripsi
<a name="crypto-cli-versions"></a>

Kami menyarankan Anda menggunakan CLI AWS Enkripsi versi terbaru.

**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 informasi tentang versi signifikan dari AWS Encryption SDK, lihat[Versi dari AWS Encryption SDK](about-versions.md).

**Versi mana yang saya gunakan?**

Jika Anda baru mengenal CLI AWS Enkripsi, gunakan versi terbaru.

Untuk mendekripsi data yang dienkripsi oleh versi AWS Encryption SDK sebelumnya dari versi 1.7. *x*, migrasi terlebih dahulu ke versi terbaru dari CLI AWS Enkripsi. Buat [semua perubahan yang disarankan](migration-guide.md) sebelum memperbarui ke versi 2.1. *x* atau yang lebih baru. Lihat perinciannya di [Migrasi Anda AWS Encryption SDK](migration.md).

**Pelajari selengkapnya**
+ Untuk informasi terperinci tentang perubahan dan panduan untuk bermigrasi ke versi baru ini, lihat[Migrasi Anda AWS Encryption SDK](migration.md).
+ Untuk deskripsi parameter dan atribut CLI AWS Enkripsi baru, lihat. [AWS Encryption SDK Sintaks CLI dan referensi parameter](crypto-cli-reference.md)

Daftar berikut menjelaskan perubahan CLI AWS Enkripsi di versi 1.8. *x* dan 2.1. *x*.

## Versi 1.8. *x* perubahan pada CLI AWS Enkripsi
<a name="cli-changes-1.7"></a>
+ Menghentikan parameter. `--master-keys` Sebagai gantinya, gunakan `--wrapping-keys` parameternya.
+ Menambahkan parameter `--wrapping-keys` (`-w`). Ini mendukung semua atribut `--master-keys` parameter. Ini juga menambahkan atribut opsional berikut, yang hanya valid saat mendekripsi dengan. AWS KMS keys
  + **penemuan**
  + **penemuan-partisi**
  + **penemuan-akun**

  Untuk penyedia kunci master kustom, `--encrypt` dan - `-decrypt` perintah memerlukan `--wrapping-keys` parameter atau `--master-keys` parameter (tetapi tidak keduanya). Juga, `--encrypt` perintah dengan AWS KMS keys membutuhkan `--wrapping-keys` parameter atau `--master-keys` parameter (tetapi tidak keduanya). 

  Dalam `--decrypt` perintah dengan AWS KMS keys, `--wrapping-keys` parameternya opsional, tetapi disarankan, karena diperlukan dalam versi 2.1. *x*. Jika Anda menggunakannya, Anda harus menentukan atribut **kunci** atau atribut **penemuan** dengan nilai `true` (tetapi tidak keduanya).
+ Menambahkan `--commitment-policy` parameter. Satu-satunya nilai yang valid adalah `forbid-encrypt-allow-decrypt`. Kebijakan `forbid-encrypt-allow-decrypt` komitmen digunakan dalam semua perintah enkripsi dan dekripsi.

  Dalam versi 1.8. *x*, ketika Anda menggunakan `--wrapping-keys` parameter, `--commitment-policy` parameter dengan `forbid-encrypt-allow-decrypt` nilai diperlukan. Menyetel nilai secara eksplisit mencegah [kebijakan komitmen](concepts.md#commitment-policy) Anda berubah secara otomatis menjadi `require-encrypt-require-decrypt` saat Anda meningkatkan ke versi 2.1. *x*.

## Versi 2.1. *x* perubahan pada CLI AWS Enkripsi
<a name="cli-changes-2.x"></a>
+ Menghapus `--master-keys` parameter. Sebagai gantinya, gunakan `--wrapping-keys` parameternya.
+ `--wrapping-keys`Parameter diperlukan di semua perintah enkripsi dan dekripsi. Anda harus menentukan atribut **kunci** atau atribut **penemuan** dengan nilai `true` (tetapi tidak keduanya).
+ `--commitment-policy`Parameter mendukung nilai-nilai berikut. Lihat perinciannya di [Menetapkan kebijakan komitmen Anda](migrate-commitment-policy.md).
  + `forbid-encrypt-allow-decrypt`
  + `require-encrypt-allow-decrypt`
  + `require-encrypt-require decrypt`(Default)
+ `--commitment-policy`Parameternya opsional di versi 2.1. *x*. Nilai default-nya adalah `require-encrypt-require-decrypt`.

## Versi 1.9. *x* dan 2.2. *x* perubahan pada CLI AWS Enkripsi
<a name="cli-changes-2.2"></a>
+ Menambahkan `--decrypt-unsigned` parameter. Lihat perinciannya di [Versi 2.2. *x*](about-versions.md#version2.2.x).
+ Menambahkan `--buffer` parameter. Lihat perinciannya di [Versi 2.2. *x*](about-versions.md#version2.2.x).
+ Menambahkan `--max-encrypted-data-keys` parameter. Lihat perinciannya di [Membatasi kunci data terenkripsi](configure.md#config-limit-keys).

## Versi 3.0. *x* perubahan pada CLI AWS Enkripsi
<a name="cli-changes-v3"></a>
+ Menambahkan dukungan untuk kunci AWS KMS Multi-wilayah. Lihat perinciannya di [Menggunakan Multi-region AWS KMS keys](configure.md#config-mrks).