

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Encryption AWS CLI の使用方法
<a name="crypto-cli-how-to"></a>

このトピックでは、Encryption CLI AWS でパラメータを使用する方法について説明します。例については「[Encryption AWS CLI の例](crypto-cli-examples.md)」を参照してください。完全なドキュメントについては、「[ドキュメントを読む](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/)」を参照してください。これらの例に示す構文は、Encryption CLI AWS バージョン 2.1.*x* 以降用です。

**注記**  
4.0.0 より前のバージョンの AWS Encryption CLI は[end-of-supportフェーズ](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle)にあります。  
バージョン 2.1.x 以降から、コードやデータを変更せずに最新バージョンの AWS Encryption CLI に安全に更新できます。ただし、バージョン 2.1.x で導入された[新しいセキュリティ機能](about-versions.md#version-2)には下位互換性がありません。バージョン 1.7.*x* 以前から更新するには、まず Encryption AWS CLI の最新バージョンの 1.*x* に更新する必要があります。詳細については、「[の移行 AWS Encryption SDK](migration.md)」を参照してください。  
新しいセキュリティ機能は、もともと AWS Encryption CLI バージョン 1.7.*x* および 2.0.*x* でリリースされました。ただし、 AWS Encryption CLI バージョン 1.8.*x* はバージョン 1.7.*x* に置き換わり、Encryption AWS CLI 2.1.*x* は 2.0.*x* に置き換わります。詳細については、GitHub の [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/) リポジトリで関連する[セキュリティアドバイザリ](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r)を参照してください。

暗号化されたデータキーを制限するセキュリティ機能の使用方法の例については、「[暗号化されたデータキーの制限](configure.md#config-limit-keys)」を参照してください。

 AWS KMS マルチリージョンキーの使用方法を示す例については、「」を参照してください[マルチリージョンの使用 AWS KMS keys](configure.md#config-mrks)。

**Topics**
+ [データを暗号化および復号する方法](#crypto-cli-e-d-intro)
+ [ラッピングキーの指定方法](#crypto-cli-master-key)
+ [入力を指定する方法](#crypto-cli-input)
+ [出力の場所を指定する方法](#crypto-cli-output)
+ [暗号化コンテキストを使用する方法](#crypto-cli-encryption-context)
+ [コミットメントポリシーの指定方法](#crypto-cli-commitment-policy)
+ [設定ファイルにパラメータを保存する方法](#crypto-cli-config-file)

## データを暗号化および復号する方法
<a name="crypto-cli-e-d-intro"></a>

 AWS Encryption CLI は の機能を使用して AWS Encryption SDK 、データを安全に暗号化および復号化することを容易にします。

**注記**  
`--master-keys` パラメータは AWS Encryption CLI のバージョン 1.8.*x* で非推奨となり、バージョン 2.1.*x* で削除されます。代わりに、`--wrapping-keys` パラメータを使用します。バージョン 2.1.*x* 以降は、`--wrapping-keys` パラメータが暗号化および復号化時に必要となります。詳細については、「[AWS Encryption SDK CLI 構文とパラメータリファレンス](crypto-cli-reference.md)」を参照してください。
+ Encryption CLI AWS でデータを暗号化するときは、プレーンテキストデータと in AWS Key Management Service () などの[ラッピングキー](concepts.md#master-key) (または*マスターキー*) AWS KMS key を指定しますAWS KMS。カスタムのマスターキープロバイダーを使用する場合は、プロバイダーを指定する必要もあります。また、[暗号化されたメッセージ](concepts.md#message)および暗号化オペレーションに関するメタデータの出力場所を指定します。[暗号化コンテキスト](concepts.md#encryption-context)はオプションですが、推奨されています。

  バージョン 1.8.*x* では、`--wrapping-keys` パラメータを使用するときに `--commitment-policy` パラメータが必要です。これがない場合は無効です。バージョン 2.1.*x* 以降では、`--commitment-policy` パラメータはオプションですが推奨されます。

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

   AWS Encryption CLI は、一意のデータキーでデータを暗号化します。その後、指定したラッピングキーでデータキーを暗号化します。[暗号化されたメッセージ](concepts.md#message)とオペレーションに関するメタデータが返されます。暗号化されたメッセージには、暗号化されたデータ (*暗号化テキスト*) およびデータキーの暗号化されたコピーが含まれます。データキーの保存、管理、または紛失について心配する必要はありません。

   
+ データを復号する際、暗号化されたメッセージ、オプションの暗号化コンテキスト、プレーンテキスト出力およびメタデータの場所を渡します。また、Encryption CLI AWS がメッセージの復号に使用できるラッピングキーを指定するか、メッセージを暗号化したラッピングキーを使用できることを AWS Encryption CLI に伝えます。

  バージョン 1.8.*x* 以降では、復号時の `--wrapping-keys` パラメータはオプションですが推奨されます。バージョン 2.1.*x* 以降は、`--wrapping-keys` パラメータが暗号化および復号化時に必要となります。

  復号するときには、`--wrapping-keys` パラメータの **key** 属性を使用して、データを復号化するラッピングキーを指定します。復号時に AWS KMS ラッピングキーを指定することはオプションですが、使用する予定のないキーを使用できないようにする[ベストプラクティス](best-practices.md)です。カスタムのマスターキープロバイダーを使用する場合は、プロバイダーおよびラッピングキーを指定する必要があります。

  key **** 属性を使用しない場合は、 `--wrapping-keys`パラメータの検出[****属性](#discovery-cli-attribute)を に設定する必要があります。これにより`true`、Encryption AWS CLI はメッセージを暗号化したラッピングキーを使用して復号化できます。

  ベストプラクティスとして、`--max-encrypted-data-keys` パラメータを使用して、暗号化されたデータキーの数が多すぎる不正な形式のメッセージの復号化を回避してください。暗号化されたデータキーの予想数 (暗号化で使用されるラッピングキーごとに 1 つ)、または適切な最大値 (5 など) を指定します。詳細については、「[暗号化されたデータキーの制限](configure.md#config-limit-keys)」を参照してください。

  `--buffer` パラメータでは、デジタル署名が存在する場合の検証も含めて、すべての入力が処理された後にのみプレーンテキストが返されます。

  `--decrypt-unsigned` パラメータでは、暗号化テキストを復号し、復号化前にメッセージが署名なしであることを確認します。このパラメータは、`--algorithm` パラメータを使用し、データを暗号化するためのデジタル署名なしのアルゴリズムスイートを選択した場合に使用します。暗号化テキストが署名されている場合、復号化は失敗します。

  `--decrypt` または `--decrypt-unsigned` を復号化に使用できますが、両方とも使用することはできません。

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

   AWS Encryption CLI はラッピングキーを使用して、暗号化されたメッセージのデータキーを復号します。次に、データキーを使ってデータを復号します。プレーンテキストのデータとオペレーションに関するメタデータが返されます。

## ラッピングキーの指定方法
<a name="crypto-cli-master-key"></a>

Encryption CLI でデータを暗号化する場合は、少なくとも 1 AWS つの[ラッピングキー](concepts.md#master-key) (または*マスターキー*) を指定する必要があります。 AWS KMS keys in AWS Key Management Service (AWS KMS)、カスタム[マスターキープロバイダーからのラッピングキー](concepts.md#master-key-provider)、またはその両方を使用できます。カスタムのマスターキープロバイダは、互換性がある Python マスターキープロバイダのいずれかです。

バージョン 1.8.*x* 以降でラッピングキーを指定するには、`--wrapping-keys` パラメータ (`-w`) を使用します。このパラメータの値は、`attribute=value` 形式を使用する[属性](#cli-master-key-attributes)の集合です。使用する属性は、マスターキープロバイダやコマンドによって異なります。
+ **AWS KMS**。暗号化コマンドでは、**key** 属性を使用して `--wrapping-keys` パラメータを指定する必要があります。バージョン 2.1.*x* 以降は、`--wrapping-keys` パラメータが復号化コマンドにも必要となります。復号化するとき、`--wrapping-keys` パラメータでは、**key** 属性を指定するか、**discovery** 属性を `true` にする必要があります (両方ではない)。その他の属性はオプションです。
+ **カスタムマスターキープロバイダー**。どのコマンドでも `--wrapping-keys` パラメータを指定する必要があります。パラメータ値に **key** および **provider** 属性を含める必要があります。

同じコマンドで[複数の `--wrapping-keys` パラメータ](#cli-many-cmks)および複数の **key** 属性を含めることができます。

### ラッピングキーパラメータの属性
<a name="cli-master-key-attributes"></a>

`--wrapping-keys` パラメータの値は、次の属性と値で構成されます。`--wrapping-keys` パラメータ (または `--master-keys` パラメータ) は、すべての暗号化コマンドで必要です。バージョン 2.1.*x* 以降は、`--wrapping-keys` パラメータが復号化時にも必要となります。

属性名や値にスペースや特殊文字が含まれている場合、名前と値の両方を引用符で囲みます。例えば、`--wrapping-keys key=12345 "provider=my cool provider"`。

**Key: ラッピングキーを指定します。**  
**key** 属性を使用してラッピングキーを識別します。暗号化時に、この値は、マスターキープロバイダーが認識する任意のキー識別子を使用できます。  

```
--wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab
```
暗号化コマンドでは、少なくとも 1 つの **key** 属性と値が含まれている必要があります。複数のラッピングキーでデータキーを暗号化するには、[複数の **key** 属性](#cli-many-cmks)を使用します。  

```
aws-encryption-cli --encrypt --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab key=1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d
```
が使用する暗号化コマンドでは AWS KMS keys、**キー**の値はキー ID、キー ARN、エイリアス名、またはエイリアス ARN です。たとえば、この暗号化コマンドでは、**key** 属性の値のエイリアス ARN を使用しています。のキー識別子の詳細については AWS KMS key、「 *AWS Key Management Service デベロッパーガイド*」の[「キー識別子](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)」を参照してください。  

```
aws-encryption-cli --encrypt --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
```
カスタムのマスターキープロバイダーを使用する復号コマンドでは、**key** および **provider** 属性が必須です。  

```
\\ Custom master key provider
aws-encryption-cli --decrypt --wrapping-keys provider='myProvider' key='100101'
```
が使用する復号コマンドでは AWS KMS、**key** 属性を使用して復号 AWS KMS keys に使用する を指定するか、 の値を持つ [**discovery** 属性](#discovery-cli-attribute)を指定できます。これにより`true`、Encryption AWS CLI AWS KMS key はメッセージの暗号化に使用された任意の を使用できます。を指定する場合 AWS KMS key、メッセージの暗号化に使用されるラッピングキーの 1 つである必要があります。  
ラッピングキーの指定は、[AWS Encryption SDK のベストプラクティス](best-practices.md)です。これにより、使用する AWS KMS key 予定の を使用することが保証されます。  
復号コマンドでは、**key** 属性の値は[キー ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) にする必要があります。  

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

**検出: 復号 AWS KMS key 時に任意の を使用する**  <a name="discovery-cli-attribute"></a>
復号時に AWS KMS keys 使用する を制限する必要がない場合は、**discovery** 属性を の値で使用できます`true`。の値`true`を指定すると、Encryption AWS CLI はメッセージを暗号化 AWS KMS key した を使用して復号できます。**discovery** 属性は、指定しない場合、`false` です (デフォルト)。**discovery** 属性は、復号コマンドで、メッセージが暗号化された場合にのみ有効です AWS KMS keys。  
**discovery** 属性を `true` にするのは、**key** 属性を使用して AWS KMS keysを指定することに代わる方法です。で暗号化されたメッセージを復号する場合 AWS KMS keys、各`--wrapping-keys`パラメータには**キー**属性または の値を持つ**検出**属性が必要ですが`true`、両方を持つことはできません。  
discovery が true の場合、**discovery-partition** 属性と **discovery-account** 属性を使用して、 AWS KMS keys 使用する を AWS アカウント 指定した 内のものに制限するのがベストプラクティスです。次の例では、**検出**属性により、Encryption AWS CLI は指定された AWS KMS key で を使用できます AWS アカウント。  

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

**Provider: マスターキープロバイダーを指定します。**  
**provider** 属性は、[マスターキープロバイダー](concepts.md#master-key-provider)を識別します。デフォルト値は `aws-kms` であり、 AWS KMSを表します。別のマスターキープロバイダーを使用している場合、**provider** 属性が必要です。  

```
--wrapping-keys key=12345 provider=my_custom_provider
```
カスタム (AWS KMSではない) マスターキープロバイダーを使用する方法の詳細については、[AWS Encryption CLI](https://github.com/aws/aws-encryption-sdk-cli/) レポジトリの [README](https://github.com/aws/aws-encryption-sdk-cli/blob/master/README.rst) ファイルにあるトピック「**高度な設定**」を参照してください。

**リージョン: を指定する AWS リージョン**  
region **** 属性を使用して、 AWS リージョン の を指定します AWS KMS key。この属性は、暗号化コマンドで、マスターキープロバイダが AWS KMSのときにのみ有効です。  

```
--encrypt --wrapping-keys key=alias/primary-key region=us-east-2
```
AWS 暗号化 CLI コマンド AWS リージョン は、ARN などのリージョンが含まれている場合、**キー**属性値で指定された を使用します。**キー**値が を指定すると AWS リージョン、**リージョン**属性は無視されます。  
**region** 属性は、他のリージョンの仕様よりも優先されます。region 属性を使用しない場合、 AWS Encryption CLI コマンドは、 AWS CLI [名前付きプロファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles)で AWS リージョン 指定された 、存在する場合は 、またはデフォルトのプロファイルを使用します。

**profile: 名前付きプロファイルを指定**  
**profile** 属性を使用して AWS CLI の[名前付きプロファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles)を指定します。名前付きプロファイルには、認証情報と AWS リージョンを含めることができます。この属性は、マスターキープロバイダが AWS KMSでない場合にのみ有効です。  

```
--wrapping-keys key=alias/primary-key profile=admin-1
```
**profile** 属性を使用して、暗号化と復号コマンドで別の認証情報を指定できます。Encryption コマンドでは、 AWS Encryption CLI は、**キー**値にリージョンが含まれておらず、**リージョン**属性がない場合にのみ、名前付きプロファイル AWS リージョン で を使用します。復号コマンドでは、名前プロファイル AWS リージョン の は無視されます。

### 複数のラッピングキーを指定する方法
<a name="cli-many-cmks"></a>

複数のラッピングキー (*マスターキー*) を各コマンドで指定できます。

複数のラッピングキーを指定した場合、最初のラッピングキーはデータの暗号化に使用するデータキーを生成および暗号化します。その他のラッピングキーは、同じデータキーを暗号化します。結果として得られる[暗号化されたメッセージ](concepts.md#message)には、暗号化されたデータ (暗号化テキスト) と各ラッピングキーで 1 つずつ暗号化された一組のデータキーが含まれます。どのラッピングも、1 つの暗号化されたデータキーを復号してデータを復号することができます。

複数のラッピングキーを指定するには、2 つの方法があります。
+ `--wrapping-keys` パラメータの値に複数の **key** 属性を含めます。

  ```
  $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
  ```
+ 同じコマンドに複数の `--wrapping-keys` パラメータを含めます。この構文は、指定する属性値をコマンドのラッピングキーに一括で適用しない場合に使用します。

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

の値を持つ **discovery** 属性`true`を使用すると、Encryption AWS CLI はメッセージを暗号化 AWS KMS key した を使用できます。複数の `--wrapping-keys` パラメータを同じコマンドで使用する場合、`--wrapping-keys` パラメータで `discovery=true` を使用すると、その他の `--wrapping-keys` パラメータで **key** 属性の制限が事実上無効になります。

たとえば、次のコマンドでは、最初の`--wrapping-keys`パラメータの **key** 属性は AWS Encryption CLI を指定された に制限します AWS KMS key。ただし、2 番目の`--wrapping-keys`パラメータの **discovery** 属性を使用すると、Encryption AWS CLI AWS KMS key は指定されたアカウントの のいずれかを使用してメッセージを復号できます。

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

## 入力を指定する方法
<a name="crypto-cli-input"></a>

Encryption CLI AWS の暗号化オペレーションは、プレーンテキストデータを入力として受け取り、[暗号化されたメッセージ](concepts.md#message)を返します。復号オペレーションは、暗号化されたメッセージを入力として受け取り、プレーンテキストのデータを返します。

すべての Encryption AWS CLI コマンドでは、入力の場所を Encryption CLI AWS に指示する `--input`パラメータ (`-i`) が必要です。

次のいずれかの方法で入力を指定できます。
+ ファイルを使用します。

  ```
  --input myData.txt
  ```
+ ファイル名のパターンを使用します。

  ```
  --input testdir/*.xml
  ```
+ ディレクトリまたはディレクトリ名のパターンを使用します。入力がディレクトリの場合、`--recursive` パラメータ (`-r`、`-R`) が必要です。

  ```
  --input testdir --recursive
  ```
+ 入力をコマンド (stdin) へパイプします。`-` パラメータに `--input` の値を使用します。(`--input` パラメータは常に必須です。)

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

## 出力の場所を指定する方法
<a name="crypto-cli-output"></a>

`--output` パラメータは AWS 、暗号化または復号オペレーションの結果を書き込む場所を Encryption CLI に指示します。これは、すべての AWS Encryption CLI コマンドで必要です。 AWS Encryption CLI は、オペレーションの入力ファイルごとに新しい出力ファイルを作成します。

出力ファイルがすでに存在する場合、デフォルトで Encryption AWS CLI は警告を出力し、ファイルを上書きします。上書きされないようにするには、上書きする前に確認のメッセージが表示する `--interactive` パラメータを使用するか、または、出力が上書きしようとすると入力をスキップする `--no-overwrite` を使用します。上書きの警告を表示しないようにするには、`--quiet` を使用します。Encryption CLI AWS からエラーと警告をキャプチャするには、`2>&1`リダイレクト演算子を使用して出力ストリームに書き込みます。

**注記**  
出力ファイルを上書きするコマンドは、出力ファイルを削除することで開始します。コマンドが失敗した場合は、出力ファイルが既に削除されている場合があります。

さまざまな方法で出力場所を変更できます。
+ ファイル名を指定します。ファイルにパスを指定する場合、コマンドの実行前にパス内のすべてのディレクトリが存在している必要があります。

  ```
  --output myEncryptedData.txt
  ```
+ ディレクトリを指定します。コマンドの実行前に出力ディレクトリが存在している必要があります。

  入力にサブディレクトリが含まれている場合、コマンドは指定されたディレクトリの下にサブディレクトリを再現します。

  ```
  --output Test
  ```

  出力場所がディレクトリ (ファイル名なし) AWS の場合、Encryption CLI は入力ファイル名とサフィックスに基づいて出力ファイル名を作成します。暗号化オペレーションは、入力ファイル名に `.encrypted` を追加します。復号オペレーションは `.decrypted` を追加します。サフィックスを変更するには、`--suffix` パラメータを使用します。

  たとえば、`file.txt` を暗号化する場合、暗号化コマンドは `file.txt.encrypted` を作成します。`file.txt.encrypted` を復号する場合、復号コマンドは `file.txt.encrypted.decrypted` を作成します。

   
+ コマンドライン (stdout) に書き込みます。`-` パラメータに `--output` の値を入力します。`--output -` を使用して、出力を他のコマンドやプログラムにパイプできます。

  ```
  --output -
  ```

## 暗号化コンテキストを使用する方法
<a name="crypto-cli-encryption-context"></a>

 AWS Encryption CLI では、暗号化コマンドと復号コマンドで暗号化コンテキストを指定できます。これは必須ではありませんが、推奨される暗号化のベストプラクティスです。

*暗号化コンテキスト*は、任意の、シークレットではない*追加認証データ*です。 AWS Encryption CLI では、暗号化コンテキストは `name=value` のペアの集合で構成されます。ペアの内容はどれでも使用できます。これには、権限やポリシーに必要とされるログ、またはデータ内の暗号化オペレーションを探すのに役立つファイルやデータに関する情報が含まれます。

**暗号化コマンドの場合**

暗号化コンポーネントによって追加された追加の暗号化コンテキストと共に、[CMM](concepts.md#crypt-materials-manager) によって追加されたペアは、暗号化されたデータに暗号化されてバインドされます。これは、コマンドが返す[暗号化されたメッセージ](concepts.md#encryption-context)にも含まれています (プレーンテキスト)。を使用している場合 AWS KMS key、暗号化コンテキストは、 などの監査レコードやログにもプレーンテキストで表示されることがあります AWS CloudTrail。

次の例は、`name=value` の 3 つのペアを持つ暗号化コンテキストを示しています。

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

**復号コマンドの場合**

復号コマンドにおいて、暗号化コンテキストは、暗号化された適切なメッセージを復号しているかどうか確認するのに役立ちます。

暗号化コンテキストが暗号化で使用されていないとしても、復号コマンドで暗号化コンテキストを指定する必要はありません。ただし、その場合、Encryption AWS CLI は、復号コマンドの暗号化コンテキストのすべての要素が、暗号化されたメッセージの暗号化コンテキストの要素と一致することを確認します。いずれかの要素が一致しない場合、復号コマンドは失敗します。

たとえば、次のコマンドは、暗号化コンテキストに `dept=IT` が含まれている場合にのみ暗号化メッセージを復号します。

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

暗号化コンテキストは、セキュリティ戦略の重要な部分です。ただし、暗号化コンテキストを選択する際、その値がシークレットではないことに注意してください。暗号化コンテキストに機密データを含めないでください。

**暗号化コンテキストを指定するには**
+ **暗号化**コマンドでは、`--encryption-context` パラメータを 1 つ以上の `name=value` ペアで使用します。各ペアを区切るためにスペースを使用します。

  ```
  --encryption-context name=value [name=value] ...
  ```
+ **復号**コマンドでは、`--encryption-context` パラメータ値に `name=value` ペア、`name` 要素 (値なし)、または両方の組み合わせを含めることができます。

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

`name` ペアの `value` や `name=value` にスペースや特殊文字が含まれている場合、ペア全体を引用符で囲みます。

```
--encryption-context "department=software engineering" "AWS リージョン=us-west-2"
```

たとえば、この暗号化コマンドには、`purpose=test` と `dept=23` という 2 つのペアを持つ暗号化コンテキストが含まれています。

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

これらの復号コマンドは成功します。各コマンドの暗号化コンテキストは、元の暗号化コンテキストのサブセットです。

```
\\ 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 ...
```

ただし、これらの復号コマンドは失敗します。暗号化されたメッセージの暗号化コンテキストには、指定された要素は含まれていません。

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

## コミットメントポリシーの指定方法
<a name="crypto-cli-commitment-policy"></a>

コマンドに[コミットメントポリシー](concepts.md#commitment-policy)を設定するには、[`--commitment-policy` パラメータ](crypto-cli-reference.md#syntax-commitment-policy)を使用します。このパラメータはバージョン 1.8.*x* で導入されました。暗号化コマンドと復号コマンドで有効です。設定するコミットメントポリシーは、表示されるコマンドに対してのみ有効です。コマンドのコミットメントポリシーを設定しない場合、Encryption AWS CLI はデフォルト値を使用します。

例えば、次のパラメータ値ではコミットメントポリシーが `require-encrypt-allow-decrypt` に設定され、常にキーコミットメントで暗号化されますが、暗号化された暗号化テキストはキーコミットメントの有無にかかわらず復号化されます。

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

## 設定ファイルにパラメータを保存する方法
<a name="crypto-cli-config-file"></a>

頻繁に使用する Encryption CLI AWS パラメータと値を設定ファイルに保存することで、時間を節約し、入力エラーを回避できます。

*設定ファイルは*、Encryption AWS CLI コマンドのパラメータと値を含むテキストファイルです。 AWS Encryption CLI コマンドで設定ファイルを参照すると、リファレンスは設定ファイルのパラメータと値で置き換えられます。ファイルの内容をコマンドラインで入力した場合にも同じ効果が得られます。設定ファイルは任意の名前を使用でき、現在のユーザーがアクセス可能な任意のディレクトリに配置できます。

次の設定ファイル (`key.conf`) の例では、2 つの AWS KMS keys を異なるリージョンで指定しています。

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

コマンドで設定ファイルを使用するには、ファイル名の先頭にアットマーク (`@`) を使用します。PowerShell コンソールでは、バックティック文字を使用してアットマーク (``@`) をエスケープする必要があります。

このコマンド例では、暗号化コマンドで `key.conf` ファイルを使用します。

------
#### [ 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
```

------

**設定ファイルのルール**

設定ファイルを使用するためのルールは次のとおりです。
+ 各設定ファイルで複数のパラメータを含めることができ、任意の順序で表示できます。各パラメータとその値 (あれば) を個別の行で表示します。
+ `#` を使用して行の全体または一部にコメントを追加します。
+ 他の設定ファイルへの参照を含めることができます。PowerShell コンソールでも、バックティック文字を使用して `@` 文字をエスケープすることはしないでください。
+ 設定ファイルで引用符を使用する場合、引用されたテキストが複数の行にまたがることはできません。

たとえば、これはサンプル `encrypt.conf` ファイルの内容です。

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

コマンドには複数の設定ファイルを含めることもできます。このコマンド例では、`encrypt.conf` との両方の `master-keys.conf` 設定ファイルが使用されます。

------
#### [ 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
```

------

**Next: **[AWS Encryption CLI の例を試します。](crypto-cli-examples.md)