

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AWS Encryption SDK Befehlszeilenschnittstelle
<a name="crypto-cli"></a>

Die AWS Encryption SDK Befehlszeilenschnittstelle (AWS Encryption CLI) ermöglicht es Ihnen, Daten interaktiv AWS Encryption SDK an der Befehlszeile und in Skripten zu verschlüsseln und zu entschlüsseln. Sie benötigen keine Kryptographie- oder Programmierkenntnisse.

**Anmerkung**  
Versionen der AWS Encryption CLI vor 4.0.0 befinden sich in der [end-of-supportPhase](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle).  
Sie können problemlos von Version 2.1 aus aktualisieren. *x* und höher auf die neueste Version der AWS Encryption CLI ohne Code- oder Datenänderungen. In Version 2.1 wurden jedoch [neue Sicherheitsfunktionen](about-versions.md#version-2) eingeführt. *x* sind nicht abwärtskompatibel. Um von Version 1.7 zu aktualisieren. *x* oder früher, Sie müssen zuerst auf die neueste Version 1 aktualisieren. *x-Version* der AWS Encryption CLI. Details hierzu finden Sie unter [Migrieren Sie Ihre AWS Encryption SDK](migration.md).  
Neue Sicherheitsfunktionen wurden ursprünglich in den AWS Encryption CLI Versionen 1.7 veröffentlicht. *x* und 2.0. *x.* Allerdings AWS Encryption CLI Version 1.8. *x* ersetzt Version 1.7. *x* und AWS Encryption CLI 2.1. *x* ersetzt 2.0. *x.* Einzelheiten finden Sie in der entsprechenden [Sicherheitsempfehlung](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

Wie alle Implementierungen von bietet die AWS Encryption SDK AWS Encryption CLI erweiterte Datenschutzfunktionen. [Dazu gehören [Umschlagverschlüsselung](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption), zusätzliche authentifizierte Daten (AAD) und sichere, authentifizierte, symmetrische [Schlüsselalgorithmen](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/supported-algorithms.html) wie 256-Bit-AES-GCM mit Schlüsselableitung, Schlüsselzusage und Signierung.](concepts.md#key-commitment) 

Die AWS Verschlüsselungs-CLI basiert auf der [AWS-Verschlüsselungs-SDK for Python](python.md)und wird unter Linux, macOS und Windows unterstützt. Sie können Befehle und Skripts zum Verschlüsseln und Entschlüsseln Ihrer Daten in Ihrer bevorzugten Shell unter Linux oder macOS, in einem Befehlszeilenfenster (cmd.exe) unter Windows und in einer PowerShell Konsole auf jedem System ausführen. 

Alle sprachspezifischen Implementierungen von AWS Encryption SDK, einschließlich der AWS Encryption CLI, sind interoperabel. Sie können beispielsweise Daten mit der verschlüsseln [AWS-Verschlüsselungs-SDK for Java](java.md)und mit der AWS Encryption CLI entschlüsseln. 

Dieses Thema stellt die AWS Encryption CLI vor, erklärt, wie sie installiert und verwendet wird, und enthält mehrere Beispiele, die Ihnen den Einstieg erleichtern. Einen schnellen Start finden Sie unter [So verschlüsseln und entschlüsseln Sie Ihre Daten mit der AWS Encryption CLI](https://aws.amazon.com/blogs/security/how-to-encrypt-and-decrypt-your-data-with-the-aws-encryption-cli/) im AWS Sicherheitsblog. Ausführlichere Informationen finden [Sie unter Read The Docs](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/) und entwickeln Sie gemeinsam mit uns die AWS Encryption CLI im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository am GitHub.

**Leistung**  
Die AWS Encryption CLI basiert auf dem AWS-Verschlüsselungs-SDK for Python. Jedes Mal, wenn Sie die CLI ausführen, starten Sie eine neue Instance der Python-Laufzeitumgebung. Um die Leistung zu verbessern, verwenden Sie nach Möglichkeit einen einzigen Befehl anstelle einer Reihe unabhängiger Befehle. Führen Sie beispielsweise einen Befehl aus, der die Dateien in einem Verzeichnis rekursiv verarbeitet, anstatt separate Befehle für jede Datei auszuführen.

**Topics**
+ [Installieren der -CLI](crypto-cli-install.md)
+ [Die CLI verwenden](crypto-cli-how-to.md)
+ [Beispiele](crypto-cli-examples.md)
+ [Syntax und Parameterreferenz](crypto-cli-reference.md)
+ [Versionen](crypto-cli-versions.md)

# Installation der AWS Encryption SDK Befehlszeilenschnittstelle
<a name="crypto-cli-install"></a>

In diesem Thema wird erklärt, wie die AWS Encryption CLI installiert wird. Ausführliche Informationen finden Sie im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub und in [der Dokumentation](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/).

**Topics**
+ [

## Installieren der Voraussetzungen
](#crypto-cli-prerequisites)
+ [Installieren der -CLI](#install-sdk-cli)

## Installieren der Voraussetzungen
<a name="crypto-cli-prerequisites"></a>

Die AWS Encryption CLI basiert auf dem AWS-Verschlüsselungs-SDK for Python. Um die AWS Encryption CLI zu installieren, benötigen Sie Python und `pip` das Python-Paketverwaltungstool. Python und `pip` stehen auf allen unterstützten Plattformen zur Verfügung.

Installieren Sie die folgenden Voraussetzungen, bevor Sie die AWS Encryption CLI installieren: 

**Python**  
Python 3.8 oder höher ist für die AWS Encryption CLI Versionen 4.2.0 und höher erforderlich.  
Frühere Versionen der AWS Encryption CLI unterstützen Python 2.7 und 3.4 und höher, wir empfehlen jedoch, die neueste Version der AWS Encryption CLI zu verwenden.  
Python ist in den meisten Linux- und macOS-Installationen enthalten, Sie müssen jedoch auf Python 3.6 oder höher aktualisieren. Wir empfehlen Ihnen, die neueste Version von Python zu verwenden. Unter Windows müssen Sie Python installieren; es ist standardmäßig nicht installiert. Informationen zum Herunterladen und Installieren von Python finden Sie unter [Python-Downloads](https://www.python.org/downloads/).  
Um festzustellen, ob Python installiert ist, geben Sie in der Befehlszeile Folgendes ein.  

```
python
```
Um die Python-Version zu überprüfen, verwenden Sie den Parameter `-V` (Großbuchstabe V).  

```
python -V
```
Unter Windows fügen Sie nach der Installation von Python den Pfad zur `Python.exe` Datei zum Wert der Umgebungsvariablen **Path** hinzu.   
Standardmäßig ist Python im Verzeichnis All Users oder in einem Benutzerprofilverzeichnis (`$home` oder `%userprofile%`) im Unterverzeichnis `AppData\Local\Programs\Python` installiert. Um den Speicherort der Datei `Python.exe` auf Ihrem System zu finden, überprüfen Sie einen der folgenden Registrierungsschlüssel. Sie können es verwenden PowerShell , um die Registrierung zu durchsuchen.   

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

**pip**  
`pip` ist der Python-Paketmanager. Um die AWS Encryption CLI und ihre Abhängigkeiten zu installieren, benötigen Sie `pip` 8.1 oder höher. Informationen zum Installieren und Aktualisieren von `pip` finden Sie unter [Installation](https://pip.pypa.io/en/latest/installing/) in der `pip`-Dokumentation.  
Auf Linux-Installationen können `pip` Versionen vor 8.1 die **Kryptografiebibliothek**, die die AWS Encryption CLI benötigt, nicht erstellen. Wenn Sie Ihre `pip` Version nicht aktualisieren möchten, können Sie die Build-Tools separat installieren. Weitere Informationen finden Sie unter [Kryptographie unter Linux](https://cryptography.io/en/latest/installation.html#building-cryptography-on-linux).

**AWS Command Line Interface**  
Das AWS Command Line Interface (AWS CLI) ist nur erforderlich, wenn Sie AWS KMS keys in AWS Key Management Service (AWS KMS) mit der AWS Encryption CLI verwenden. Wenn Sie einen anderen [Hauptschlüsselanbieter](concepts.md#master-key-provider) verwenden, AWS CLI ist der nicht erforderlich.  
Für die Verwendung AWS KMS keys mit der AWS Encryption CLI müssen Sie den [installieren](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) und [konfigurieren](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) AWS CLI. Die Konfiguration stellt die Anmeldeinformationen, die Sie zur Authentifizierung verwenden, für die AWS Encryption CLI zur AWS KMS Verfügung. 

## Installation und Aktualisierung der AWS Encryption CLI
<a name="install-sdk-cli"></a>

Installieren Sie die neueste Version der AWS Encryption CLI. Wenn Sie die AWS Encryption CLI `pip` zur Installation verwenden, werden automatisch die Bibliotheken installiert, die die CLI benötigt, einschließlich der [AWS-Verschlüsselungs-SDK for Python](python.md)[Python-Kryptografiebibliothek](https://cryptography.io/en/latest/) und der [AWS SDK für Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html).

**Anmerkung**  
Versionen der AWS Encryption CLI vor 4.0.0 befinden sich in der [end-of-supportPhase](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle).  
Sie können problemlos von Version 2.1 aus aktualisieren. *x* und höher auf die neueste Version der AWS Encryption CLI ohne Code- oder Datenänderungen. In Version 2.1 wurden jedoch [neue Sicherheitsfunktionen](about-versions.md#version-2) eingeführt. *x* sind nicht abwärtskompatibel. Um von Version 1.7 zu aktualisieren. *x* oder früher, Sie müssen zuerst auf die neueste Version 1 aktualisieren. *x-Version* der AWS Encryption CLI. Details hierzu finden Sie unter [Migrieren Sie Ihre AWS Encryption SDK](migration.md).  
Neue Sicherheitsfunktionen wurden ursprünglich in den AWS Encryption CLI Versionen 1.7 veröffentlicht. *x* und 2.0. *x.* Allerdings AWS Encryption CLI Version 1.8. *x* ersetzt Version 1.7. *x* und AWS Encryption CLI 2.1. *x* ersetzt 2.0. *x.* Einzelheiten finden Sie in der entsprechenden [Sicherheitsempfehlung](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

**Um die neueste Version der AWS Encryption CLI zu installieren**  

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

**Um auf die neueste Version der AWS Encryption CLI zu aktualisieren**  

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

**Um die Versionsnummern Ihrer AWS Encryption CLI zu finden und AWS Encryption SDK**  

```
aws-encryption-cli --version
```
In der Ausgabe werden die Versionsnummern beider Bibliotheken aufgeführt.  

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

**Um auf die neueste Version der AWS Encryption CLI zu aktualisieren**  

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

Durch die Installation der AWS Encryption CLI wird auch die neueste Version von installiert AWS SDK für Python (Boto3), sofern sie nicht bereits installiert ist. Wenn Boto3 installiert ist, überprüft das Installationsprogramm die Boto3-Version und aktualisiert sie bei Bedarf.

**Um Ihre installierte Version von Boto3 zu finden**  

```
pip show boto3
```

**Um auf die neueste Version von Boto3 zu aktualisieren**  

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

Informationen zur Installation der Version der AWS Encryption CLI, die sich derzeit in der Entwicklung befindet, finden Sie im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

Weitere Informationen zur Verwendung von `pip` für die Installation und die Aktualisierung von Python-Paketen finden Sie in der [pip-Dokumentation](https://pip.pypa.io/en/stable/quickstart/).

# So verwenden Sie die AWS Encryption CLI
<a name="crypto-cli-how-to"></a>

In diesem Thema wird erklärt, wie die Parameter in der AWS Encryption CLI verwendet werden. Beispiele finden Sie unter [Beispiele für die AWS Encryption CLI](crypto-cli-examples.md). Eine vollständige Dokumentation finden Sie in [Read the Docs](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/). Die in diesen Beispielen gezeigte Syntax bezieht sich auf AWS Encryption CLI Version 2.1. *x* und höher.

**Anmerkung**  
Versionen der AWS Encryption CLI vor 4.0.0 befinden sich in der [end-of-supportPhase](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle).  
Sie können problemlos von Version 2.1 aus aktualisieren. *x* und höher auf die neueste Version der AWS Encryption CLI ohne Code- oder Datenänderungen. In Version 2.1 wurden jedoch [neue Sicherheitsfunktionen](about-versions.md#version-2) eingeführt. *x* sind nicht abwärtskompatibel. Um von Version 1.7 zu aktualisieren. *x* oder früher, Sie müssen zuerst auf die neueste Version 1 aktualisieren. *x-Version* der AWS Encryption CLI. Details hierzu finden Sie unter [Migrieren Sie Ihre AWS Encryption SDK](migration.md).  
Neue Sicherheitsfunktionen wurden ursprünglich in den AWS Encryption CLI Versionen 1.7 veröffentlicht. *x* und 2.0. *x.* Allerdings AWS Encryption CLI Version 1.8. *x* ersetzt Version 1.7. *x* und AWS Encryption CLI 2.1. *x* ersetzt 2.0. *x.* Einzelheiten finden Sie in der entsprechenden [Sicherheitsempfehlung](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

Ein Beispiel zur Verwendung der Sicherheitsfunktion, die verschlüsselte Datenschlüssel einschränkt, finden Sie unter[Beschränkung verschlüsselter Datenschlüssel](configure.md#config-limit-keys).

Ein Beispiel, das zeigt, wie Schlüssel für AWS KMS mehrere Regionen verwendet werden, finden Sie unter[Verwenden Sie mehrere Regionen AWS KMS keys](configure.md#config-mrks).

**Topics**
+ [

## Daten verschlüsseln und entschlüsseln
](#crypto-cli-e-d-intro)
+ [

## Wie spezifiziert man Wrapping-Schlüssel
](#crypto-cli-master-key)
+ [

## Eingaben bereitstellen
](#crypto-cli-input)
+ [

## Den Ausgabespeicherort festlegen
](#crypto-cli-output)
+ [

## Einen Verschlüsselungskontext verwenden
](#crypto-cli-encryption-context)
+ [

## Wie spezifiziert man eine Verpflichtungsrichtlinie
](#crypto-cli-commitment-policy)
+ [

## Parameter in einer Konfigurationsdatei speichern
](#crypto-cli-config-file)

## Daten verschlüsseln und entschlüsseln
<a name="crypto-cli-e-d-intro"></a>

Die AWS Verschlüsselungs-CLI verwendet die Funktionen von AWS Encryption SDK , um das sichere Verschlüsseln und Entschlüsseln von Daten zu vereinfachen.

**Anmerkung**  
Der `--master-keys` Parameter ist in Version 1.8 veraltet. *x* der AWS Encryption CLI und wurde in Version 2.1 entfernt. *x.* Verwenden Sie stattdessen den `--wrapping-keys`-Parameter. Ab Version 2.1. *x*, der `--wrapping-keys` Parameter ist beim Verschlüsseln und Entschlüsseln erforderlich. Details hierzu finden Sie unter [AWS Encryption SDK CLI Syntax und Parameterreferenz](crypto-cli-reference.md).
+ Wenn Sie Daten in der AWS Encryption CLI verschlüsseln, geben Sie Ihre Klartextdaten und einen [Wrapping-Schlüssel](concepts.md#master-key) (oder *Hauptschlüssel*) an, z. B. ein AWS KMS key in AWS Key Management Service (AWS KMS). Wenn Sie einen benutzerdefinierten Hauptschlüsselanbieter verwenden, müssen Sie auch den Anbieter angeben. Außerdem geben Sie Ausgabespeicherorte für die [verschlüsselte Nachricht](concepts.md#message) und für Metadaten über die Verschlüsselungsoperation an. Ein [Verschlüsselungskontext](concepts.md#encryption-context) ist optional, wird aber empfohlen.

  In Version 1.8. *x*, der `--commitment-policy` Parameter ist erforderlich, wenn Sie den `--wrapping-keys` Parameter verwenden; andernfalls ist er nicht gültig. Ab Version 2.1. *x*, der `--commitment-policy` Parameter ist optional, wird aber empfohlen.

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

  Die AWS Encryption CLI verschlüsselt Ihre Daten unter einem eindeutigen Datenschlüssel. Anschließend verschlüsselt sie den Datenschlüssel unter den von Ihnen angegebenen Wrapping-Schlüsseln. Sie gibt eine [verschlüsselte Nachricht](concepts.md#message) und Metadaten über die Operation zurück. Die verschlüsselte Nachricht enthält Ihre verschlüsselten Daten (*verschlüsselter Text*) und eine verschlüsselte Kopie des Datenschlüssels. Sie müssen sich nicht um die Speicherung, Verwaltung oder den Verlust des Datenschlüssels kümmern.

   
+ Wenn Sie Daten entschlüsseln, übergeben Sie Ihre verschlüsselte Nachricht, den optionalen Verschlüsselungskontext und den Speicherort für die Klartextausgabe und die Metadaten. Sie geben auch die Wrapping-Schlüssel an, die die AWS Encryption CLI zum Entschlüsseln der Nachricht verwenden kann, oder teilen der AWS Encryption CLI mit, dass sie alle Wrapping-Schlüssel verwenden kann, die die Nachricht verschlüsselt haben.

  Ab Version 1.8. *x*, der `--wrapping-keys` Parameter ist beim Entschlüsseln optional, wird aber empfohlen. Ab Version 2.1. *x*, der `--wrapping-keys` Parameter ist beim Verschlüsseln und Entschlüsseln erforderlich.

  Beim Entschlüsseln können Sie das **Schlüsselattribut** des `--wrapping-keys` Parameters verwenden, um die Wrapping-Schlüssel anzugeben, mit denen Ihre Daten entschlüsselt werden. [Die Angabe eines AWS KMS Umschließungsschlüssels beim Entschlüsseln ist optional, hat sich jedoch bewährt, um zu verhindern, dass Sie einen Schlüssel verwenden, den Sie nicht verwenden wollten.](best-practices.md) Wenn Sie einen benutzerdefinierten Hauptschlüsselanbieter verwenden, müssen Sie den Anbieter und den Wrapping-Schlüssel angeben.

  Wenn Sie das **Schlüsselattribut** nicht verwenden, müssen Sie das [**Discovery-Attribut**](#discovery-cli-attribute) des `--wrapping-keys` Parameters auf setzen`true`, sodass die AWS Encryption CLI mit einem beliebigen Wrapping-Schlüssel, der die Nachricht verschlüsselt hat, entschlüsseln kann. 

  Es hat sich bewährt, den `--max-encrypted-data-keys` Parameter zu verwenden, um zu verhindern, dass eine falsch formatierte Nachricht mit einer übermäßigen Anzahl verschlüsselter Datenschlüssel entschlüsselt wird. Geben Sie die erwartete Anzahl verschlüsselter Datenschlüssel (einen für jeden bei der Verschlüsselung verwendeten Wrapping-Schlüssel) oder einen angemessenen Höchstwert (z. B. 5) an. Details hierzu finden Sie unter [Beschränkung verschlüsselter Datenschlüssel](configure.md#config-limit-keys).

  Der `--buffer` Parameter gibt erst dann Klartext zurück, wenn alle Eingaben verarbeitet wurden, einschließlich der Überprüfung der digitalen Signatur, falls eine vorhanden ist. 

  Der `--decrypt-unsigned` Parameter entschlüsselt Chiffretext und stellt sicher, dass Nachrichten vor der Entschlüsselung unsigniert sind. Verwenden Sie diesen Parameter, wenn Sie den `--algorithm` Parameter verwendet und eine Algorithmussuite ohne digitale Signatur zum Verschlüsseln von Daten ausgewählt haben. Wenn der Chiffretext signiert ist, schlägt die Entschlüsselung fehl.

  Sie können `--decrypt` oder `--decrypt-unsigned` für die Entschlüsselung verwenden, aber nicht beide.

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

  Die AWS Encryption CLI verwendet den Wrapping-Schlüssel, um den Datenschlüssel in der verschlüsselten Nachricht zu entschlüsseln. Anschließend verwendet sie den Datenschlüssel zum Entschlüsseln Ihrer Daten. Sie gibt Ihre Klartextdaten und Metadaten über die Operation zurück.

## Wie spezifiziert man Wrapping-Schlüssel
<a name="crypto-cli-master-key"></a>

Wenn Sie Daten in der AWS Encryption CLI verschlüsseln, müssen Sie mindestens einen [Wrapping-Schlüssel](concepts.md#master-key) (oder *Masterschlüssel*) angeben. Sie können AWS KMS keys in AWS Key Management Service (AWS KMS), Wrapping Keys von einem benutzerdefinierten [Masterkey-Anbieter](concepts.md#master-key-provider) oder beides verwenden. Der Kundenmasterschlüssel-Anbieter kann ein beliebiger kompatibler Python-Masterschlüssel-Anbieter sein.

Um das Umschließen von Schlüsseln in den Versionen 1.8 anzugeben. *x* und höher verwenden Sie den `--wrapping-keys` Parameter (`-w`). Der Wert dieses Parameters ist eine Sammlung von [Attributen](#cli-master-key-attributes) mit dem `attribute=value` Format. Welche Attribute Sie verwenden, hängt von dem Masterschlüssel-Anbieter und dem Befehl ab.
+ **AWS KMS**. In Verschlüsselungsbefehlen müssen Sie einen `--wrapping-keys` Parameter mit einem **Schlüsselattribut** angeben. Ab Version 2.1. *x*, der `--wrapping-keys` Parameter ist auch für Entschlüsselungsbefehle erforderlich. Bei der Entschlüsselung muss der `--wrapping-keys` Parameter ein **Schlüsselattribut** oder ein **Erkennungsattribut** mit einem Wert von `true` (aber nicht beiden) haben. Andere Attribute sind optional.
+ **Kundenmasterschlüssel-Anbieter**. Sie müssen in jedem Befehl einen `--wrapping-keys` Parameter angeben. Der Parameterwert muss **key**- und **provider**-Attribute besitzen.

Sie können [mehrere `--wrapping-keys` Parameter](#cli-many-cmks) und mehrere **Schlüsselattribute** in denselben Befehl aufnehmen. 

### Umschließen von Schlüsselparameterattributen
<a name="cli-master-key-attributes"></a>

Der Wert des `--wrapping-keys`-Parameters besteht aus den folgenden Attributen und ihren Werten. Ein `--wrapping-keys` Parameter (oder `--master-keys` Parameter) ist in allen Verschlüsselungsbefehlen erforderlich. Ab Version 2.1. *x*, der `--wrapping-keys` Parameter ist auch beim Entschlüsseln erforderlich.

Wenn ein Attributname oder Wert Leerzeichen oder Sonderzeichen enthält, schließen Sie den Namen und den Wert in Anführungszeichen ein. Beispiel, `--wrapping-keys key=12345 "provider=my cool provider"`.

**Schlüssel: Geben Sie einen Wrapping-Schlüssel an**  
Verwenden Sie das **Schlüsselattribut**, um einen Umschließungsschlüssel zu identifizieren. Bei der Verschlüsselung kann es sich bei dem Wert um einen beliebigen Schlüsselbezeichner handeln, den der Hauptschlüsselanbieter erkennt.   

```
--wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab
```
In einem Verschlüsselungsbefehl müssen Sie mindestens ein **Schlüsselattribut und einen Schlüsselwert** angeben. Verwenden Sie mehrere Schlüsselattribute, um Ihren Datenschlüssel unter mehreren Wrapping-Schlüsseln zu [**verschlüsseln**](#cli-many-cmks).  

```
aws-encryption-cli --encrypt --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab key=1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d
```
In Verschlüsselungsbefehlen, die verwenden AWS KMS keys, kann der Wert von **key** die Schlüssel-ID, der zugehörige Schlüssel-ARN, ein Aliasname oder ein Alias-ARN sein. Dieser Verschlüsselungsbefehl beispielsweise verwendet einen Alias-ARN im Wert des **key**-Attributs. *Einzelheiten zu den Schlüsselbezeichnern für eine AWS KMS key finden Sie unter [Schlüsselkennungen im AWS Key Management Service Entwicklerhandbuch](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
```
In Entschlüsselungsbefehlen, die einen Kundenmasterschlüssel-Anbieter verwenden, müssen die **key**- und **provider**-Attribute angegeben werden.  

```
\\ Custom master key provider
aws-encryption-cli --decrypt --wrapping-keys provider='myProvider' key='100101'
```
In Decrypt-Befehlen, die verwenden AWS KMS, können Sie das **Schlüsselattribut** verwenden, um das für die Entschlüsselung AWS KMS keys zu verwendende Objekt anzugeben, oder das [**Discovery-Attribut**](#discovery-cli-attribute) mit dem Wert von`true`, sodass die AWS Encryption CLI jedes Attribut verwenden kann AWS KMS key , das zum Verschlüsseln der Nachricht verwendet wurde. Wenn Sie einen angeben AWS KMS key, muss es sich um einen der Wrapping-Schlüssel handeln, die zum Verschlüsseln der Nachricht verwendet wurden.   
Die Angabe des Umschließungsschlüssels ist eine [AWS Encryption SDK bewährte Methode](best-practices.md). Es stellt sicher, dass Sie das verwenden, AWS KMS key was Sie verwenden möchten.   
In einem Decrypt-Befehl muss der Wert des **Schlüsselattributs** ein [Schlüssel-ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) sein.   

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

**Discovery: Verwenden Sie AWS KMS key bei der Entschlüsselung einen beliebigen**  <a name="discovery-cli-attribute"></a>
Wenn Sie die AWS KMS keys Verwendung beim Entschlüsseln nicht einschränken müssen, können Sie das **Discovery-Attribut** mit dem Wert von verwenden. `true` Ein Wert von `true` ermöglicht es der AWS Encryption CLI, die Nachricht mit jedem zu entschlüsseln, der AWS KMS key die Nachricht verschlüsselt hat. Wenn Sie kein **Discovery-Attribut** angeben, ist Discovery `false` (Standard). Das **Discovery-Attribut** ist nur in Entschlüsselungsbefehlen gültig und nur, wenn die Nachricht mit AWS KMS keys verschlüsselt wurde.  
Das **Discovery-Attribut** mit dem Wert von `true` ist eine Alternative zur Verwendung des **Schlüsselattributs** zur AWS KMS keys Spezifizierung. Beim Entschlüsseln einer mit AWS KMS keys verschlüsselten Nachricht muss jeder `--wrapping-keys` Parameter über ein **Schlüsselattribut** oder ein **Erkennungsattribut** mit einem Wert von`true`, aber nicht über beide verfügen.  
Wenn Discovery den Wert true hat, empfiehlt es sich, die Attribute **discovery-partition und **discovery-account**** zu verwenden, um die AWS KMS keys Verwendung auf die von Ihnen angegebenen Attribute zu beschränken. AWS-Konten Im folgenden Beispiel ermöglichen die **Discovery-Attribute** der AWS Encryption CLI, jedes AWS KMS key der angegebenen Werte zu verwenden AWS-Konten.  

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

**Anbieter: Geben Sie den Hauptschlüsselanbieter an**  
Das **provider**-Attribut identifiziert den [Masterschlüssel-Anbieter](concepts.md#master-key-provider). Der Standardwert ist `aws-kms` und steht für AWS KMS. Wenn Sie einen anderen Masterschlüsselanbieter verwenden, ist das **provider**-Attribut nicht erforderlich.  

```
--wrapping-keys key=12345 provider=my_custom_provider
```
Weitere Informationen zur Verwendung von benutzerdefinierten (Nicht-AWS KMS) Hauptschlüsselanbietern finden Sie im Thema **Erweiterte Konfiguration** in der [README-Datei](https://github.com/aws/aws-encryption-sdk-cli/blob/master/README.rst) für das [AWS Encryption CLI-Repository](https://github.com/aws/aws-encryption-sdk-cli/).

**Region: Geben Sie ein AWS-Region**  
Verwenden Sie das **Regionsattribut**, um die AWS-Region von einem anzugeben AWS KMS key. Dieses Attribut ist nur in Verschlüsselungsbefehlen und nur dann gültig, wenn der Masterschlüssel-Anbieter AWS KMS ist.   

```
--encrypt --wrapping-keys key=alias/primary-key region=us-east-2
```
AWS Verschlüsselungs-CLI-Befehle verwenden AWS-Region das, was im **Schlüsselattributwert** angegeben ist, wenn es eine Region enthält, z. B. einen ARN. Wenn der **Schlüsselwert** a angibt AWS-Region, wird das **Regionsattribut** ignoriert.  
Das **region**-Attribut hat Vorrang vor allen anderen Regionsangaben. Wenn Sie kein Regionsattribut verwenden, verwenden die Befehle der AWS Encryption CLI das in Ihrem AWS CLI [benannten Profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles), falls vorhanden, oder in Ihrem Standardprofil AWS-Region angegebene.

**Profil: Angabe eines benannten Profils**  
Verwenden Sie das **Profilattribut**, um ein AWS CLI [benanntes Profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) anzugeben. Benannte Profile können Anmeldeinformationen und eine enthalten AWS-Region. Dieses Attribut ist nur gültig, wenn der Masterschlüssel-Anbieter AWS KMS ist.   

```
--wrapping-keys key=alias/primary-key profile=admin-1
```
Sie können das **profile**-Attribut verwenden, um alternative Anmeldeinformationen in Ver- und Entschlüsselungsbefehlen anzugeben. **In einem Verschlüsselungsbefehl verwendet die AWS Verschlüsselungs-CLI das AWS-Region im benannten Profil nur, wenn der **Schlüsselwert** keine Region enthält und kein Regionsattribut vorhanden ist.** Bei einem Entschlüsselungsbefehl wird das AWS-Region im Namen angegebene Profil ignoriert.

### Wie spezifiziert man mehrere Wrapping-Schlüssel
<a name="cli-many-cmks"></a>

Sie können in jedem Befehl mehrere *Umbruchschlüssel (oder Hauptschlüssel*) angeben. 

Wenn Sie mehr als einen Umschließungsschlüssel angeben, generiert und verschlüsselt der erste Umschließungsschlüssel den Datenschlüssel, der zur Verschlüsselung Ihrer Daten verwendet wird. Die anderen Umschließungsschlüssel verschlüsseln denselben Datenschlüssel. Die daraus resultierende [verschlüsselte Nachricht](concepts.md#message) enthält die verschlüsselten Daten („Chiffretext“) und eine Sammlung verschlüsselter Datenschlüssel, von denen einer mit jedem Umschließungsschlüssel verschlüsselt wird. Jeder Wrapping kann einen verschlüsselten Datenschlüssel entschlüsseln und anschließend die Daten entschlüsseln.

Es gibt zwei Möglichkeiten, mehrere Wrapping-Schlüssel anzugeben: 
+ Schließen Sie mehrere **Schlüsselattribute** in den `--wrapping-keys` Parameterwert ein.

  ```
  $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
  ```
+ Verwendung von mehreren `--wrapping-keys`-Parametern im selben Befehl. Verwenden Sie diese Syntax, wenn die von Ihnen angegebenen Attributwerte nicht für alle Wrapping-Schlüssel im Befehl gelten.

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

Das **Discovery-Attribut** mit einem Wert von `true` ermöglicht es der AWS Encryption CLI AWS KMS key , jedes Attribut zu verwenden, das die Nachricht verschlüsselt hat. Wenn Sie mehrere `--wrapping-keys` Parameter in demselben Befehl verwenden, werden durch die Verwendung eines `discovery=true` beliebigen `--wrapping-keys` Parameters die Grenzwerte des **Schlüsselattributs** in anderen `--wrapping-keys` Parametern effektiv außer Kraft gesetzt. 

Im folgenden Befehl begrenzt beispielsweise das **Schlüsselattribut** im ersten `--wrapping-keys` Parameter die AWS Verschlüsselungs-CLI auf den angegebenen Wert AWS KMS key. Das **Discovery-Attribut** im zweiten `--wrapping-keys` Parameter ermöglicht es der AWS Encryption CLI jedoch, jedes AWS KMS key der angegebenen Konten zum Entschlüsseln der Nachricht zu verwenden.

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

## Eingaben bereitstellen
<a name="crypto-cli-input"></a>

Der Verschlüsselungsvorgang in der AWS Encryption CLI verwendet Klartextdaten als Eingabe und gibt eine [verschlüsselte](concepts.md#message) Nachricht zurück. Die Entschlüsselungsoperation übernimmt eine verschlüsselte Nachricht als Eingabe und gibt Klartextdaten zurück. 

Der `--input` Parameter (`-i`), der der AWS Encryption CLI mitteilt, wo sich die Eingabe befindet, ist in allen AWS Encryption CLI-Befehlen erforderlich. 

Sie können Eingaben wie folgt bereitstellen:
+ Über eine Datei.

  ```
  --input myData.txt
  ```
+ Unter Verwendung eines Dateinamenmusters. 

  ```
  --input testdir/*.xml
  ```
+ Unter Verwendung eines Verzeichnisses oder Verzeichnisnamenmusters. Wenn die Eingabe ein Verzeichnis ist, muss der `--recursive`-Parameter (`-r`, `-R`) angegeben werden.

  ```
  --input testdir --recursive
  ```
+ Eingabe an den Befehl weiterleiten (stdin). Einen Wert von `-` für den `--input`-Parameter verwenden. (Der Parameter `--input` ist immer erforderlich.)

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

## Den Ausgabespeicherort festlegen
<a name="crypto-cli-output"></a>

Der `--output` Parameter teilt der AWS Encryption CLI mit, wohin die Ergebnisse des Verschlüsselungs- oder Entschlüsselungsvorgangs geschrieben werden sollen. Es ist in jedem AWS Encryption CLI-Befehl erforderlich. Die AWS Encryption CLI erstellt für jede Eingabedatei im Vorgang eine neue Ausgabedatei. 

Wenn eine Ausgabedatei bereits existiert, gibt die AWS Encryption CLI standardmäßig eine Warnung aus und überschreibt dann die Datei. Um ein Überschreiben zu verhindern, verwenden Sie den Parameter `--interactive`, der Sie vor dem Überschreiben zur Bestätigung auffordert, oder `--no-overwrite`, der die Eingabe überspringt, wenn die Ausgabe ein Überschreiben verursachen würde. Um die Überschreibwarnung zu unterdrücken, verwenden Sie `--quiet`. Um Fehler und Warnungen aus der AWS Encryption CLI zu erfassen, verwenden Sie den `2>&1` Umleitungsoperator, um sie in den Ausgabestrom zu schreiben.

**Anmerkung**  
Befehle, die Ausgabedateien überschreiben, löschen zunächst die Ausgabedatei. Wenn der Befehl fehlschlägt, ist die Ausgabedatei möglicherweise bereits gelöscht.

Sie können den Ausgabespeicherort auf verschiedene Arten wählen.
+ Angabe eines Dateinamens. Wenn Sie einen Pfad zur Datei angeben, müssen alle Verzeichnisse im Pfad vorhanden sein, bevor der Befehl ausgeführt wird. 

  ```
  --output myEncryptedData.txt
  ```
+ Angabe eines Verzeichnisses. Die Ausgabeverzeichnis muss vorhanden sein, bevor der Befehl ausgeführt wird. 

  Wenn die Eingabe Unterverzeichnisse enthält, erzeugt der Befehl die Unterverzeichnisse unter dem angegebenen Verzeichnis.

  ```
  --output Test
  ```

  Wenn der Ausgabespeicherort ein Verzeichnis (ohne Dateinamen) ist, erstellt die AWS Encryption CLI Ausgabedateinamen auf der Grundlage der Eingabedateinamen plus einem Suffix. Verschlüsselungsoperationen fügen dem Eingabedateinamen `.encrypted` hinzu, Entschlüsselungsoperationen fügen `.decrypted` hinzu. Mit dem Parameter `--suffix` ändern Sie das Suffix.

  Wenn Sie z. B. `file.txt` verschlüsseln, erstellt der Verschlüsselungsbefehl `file.txt.encrypted`. Wenn Sie `file.txt.encrypted` entschlüsseln, erstellt der Entschlüsselungsbefehl `file.txt.encrypted.decrypted`.

   
+ In die Befehlszeile schreiben (stdout). Geben Sie einen Wert von `-` für den `--output`-Parameter ein. Sie können `--output -`verwenden , um die Ausgabe an einen anderen Befehl oder ein Programm weiterzuleiten.

  ```
  --output -
  ```

## Einen Verschlüsselungskontext verwenden
<a name="crypto-cli-encryption-context"></a>

Mit der AWS Encryption CLI können Sie einen Verschlüsselungskontext für Befehle zum Verschlüsseln und Entschlüsseln bereitstellen. Es ist nicht erforderlich, aber eine bewährte Methoden für die Kryptografie, die wir empfehlen.

Ein *Verschlüsselungskontext* ist eine Art zufälliger, nicht geheimer *zusätzlicher authentifizierter Daten*. In der AWS Encryption CLI besteht der Verschlüsselungskontext aus einer Sammlung von `name=value` Paaren. Sie können beliebigen Inhalt in den Paaren verwenden, einschließlich Informationen über die Dateien, Daten, die Ihnen helfen, den Verschlüsselungsvorgang in Protokollen zu finden, oder Daten, die Sie für Ihre Berechtigungen oder Richtlinien benötigen. 

**In einem Verschlüsselungsbefehl**

Der Verschlüsselungskontext, den Sie in einem Verschlüsselungsbefehl angeben, sowie alle weiteren Paare, die vom [CMM](concepts.md#crypt-materials-manager) hinzugefügt werden, sind kryptographisch an die verschlüsselten Daten gebunden. Er ist außerdem (in Klartext) in der [verschlüsselten Nachricht](concepts.md#encryption-context) enthalten, die den Befehl zurückgibt. Wenn Sie einen verwenden AWS KMS key, kann der Verschlüsselungskontext auch im Klartext in Prüfaufzeichnungen und Protokollen erscheinen, wie AWS CloudTrail z. 

Das folgende Beispiel zeigt einen Verschlüsselungskontext mit drei `name=value`-Paaren.

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

**In einem Entschlüsselungsbefehl**

In einem Entschlüsselungsbefehl hilft Ihnen der Verschlüsselungskontext zu bestätigen, dass Sie die richtige verschlüsselte Nachricht entschlüsseln. 

Sie müssen in einem Entschlüsselungsbefehl keinen Verschlüsselungskontext angeben, auch wenn beim Verschlüsseln ein Verschlüsselungskontext verwendet wurde. In diesem Fall überprüft die AWS Encryption CLI jedoch, ob jedes Element im Verschlüsselungskontext des Decrypt-Befehls mit einem Element im Verschlüsselungskontext der verschlüsselten Nachricht übereinstimmt. Wenn ein Element nicht übereinstimmt, schlägt der Entschlüsselungsbefehl fehl. 

Beispielsweise entschlüsselt der folgende Befehl die verschlüsselte Nachricht nur, wenn ihr Verschlüsselungskontext `dept=IT` enthält.

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

Ein Verschlüsselungskontext ist ein wichtiger Teil Ihrer Sicherheitsstrategie. Wenn Sie jedoch einen Verschlüsselungskontext wählen, denken Sie jedoch daran, dass seine Werte nicht geheim sind. Nehmen Sie keine vertraulichen Daten in den Verschlüsselungskontext auf.

**So geben Sie einen Verschlüsselungskontext an**
+ Verwenden Sie in einem **encrypt**-Befehl den `--encryption-context`-Parameter mit einem oder mehreren `name=value`-Paaren. Verwenden Sie ein Leerzeichen, um die einzelnen Paare zu trennen. 

  ```
  --encryption-context name=value [name=value] ...
  ```
+ In einem **decrypt**-Befehl kann der `--encryption-context`-Parameterwert `name=value`-Paare, `name`-Elemente (ohne Werte) oder eine Kombination aus beidem enthalten.

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

Wenn der `name` oder `value` in einem `name=value`-Paar Leerzeichen oder Sonderzeichen enthält, schließen Sie gesamte Paar in Anführungszeichen ein.

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

Dieser Entschlüsselungsbefehl enthält beispielsweise einen Verschlüsselungskontext mit zwei Paaren, `purpose=test` und `dept=23`.

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

Dieser Entschlüsselungsbefehl würde erfolgreich ausgeführt. Der Verschlüsselungskontext in den einzelnen Befehlen ist eine Teilmenge des ursprünglichen Verschlüsselungskontexts.

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

Diese Verschlüsselungsbefehle würden jedoch fehlschlagen. Der Verschlüsselungskontext in der verschlüsselten Nachricht enthält nicht die angegebenen Elemente.

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

## Wie spezifiziert man eine Verpflichtungsrichtlinie
<a name="crypto-cli-commitment-policy"></a>

Verwenden Sie den [`--commitment-policy`Parameter](crypto-cli-reference.md#syntax-commitment-policy), um die [Commitment-Richtlinie](concepts.md#commitment-policy) für den Befehl festzulegen. Dieser Parameter wurde in Version 1.8 eingeführt. *x.* Es ist gültig für Befehle zum Verschlüsseln und Entschlüsseln. Die von Ihnen festgelegte Verpflichtungsrichtlinie ist nur für den Befehl gültig, in dem sie vorkommt. Wenn Sie keine Commitment-Richtlinie für einen Befehl festlegen, verwendet die AWS Encryption CLI den Standardwert.

Mit dem folgenden Parameterwert wird die Commitment-Richtlinie beispielsweise auf festgelegt. Dabei wird immer mit Key Commitment verschlüsselt`require-encrypt-allow-decrypt`, Chiffretext, der mit oder ohne Key Commitment verschlüsselt wurde, jedoch entschlüsselt. 

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

## Parameter in einer Konfigurationsdatei speichern
<a name="crypto-cli-config-file"></a>

Sie können Zeit sparen und Tippfehler vermeiden, indem Sie häufig verwendete AWS Encryption CLI-Parameter und -Werte in Konfigurationsdateien speichern. 

Eine *Konfigurationsdatei* ist eine Textdatei, die Parameter und Werte für einen AWS Encryption CLI-Befehl enthält. Wenn Sie in einem AWS Encryption CLI-Befehl auf eine Konfigurationsdatei verweisen, wird die Referenz durch die Parameter und Werte in der Konfigurationsdatei ersetzt. Der Effekt ist der gleiche, als ob Sie den Dateiinhalt in der Befehlszeile eingegeben. Eine Konfigurationsdatei kann einen beliebigen Namen haben und sich in einem beliebigen Verzeichnis befinden, auf das der aktuelle Benutzer zugreifen kann. 

Die folgende Beispielkonfigurationsdatei,`key.conf`, gibt zwei AWS KMS keys in verschiedenen Regionen an.

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

Um die Konfigurationsdatei in einem Befehl zu verwenden, stellen sie dem Dateinamen ein At-Zeichen (`@`) voraus. Verwenden Sie in einer PowerShell Konsole ein Backtick-Zeichen, um das At-Zeichen (``@`) zu maskieren.

Dieser Beispielbefehl verwendet die Datei `key.conf` in einem Verschlüsselungsbefehl.

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

------

**Konfigurationsdateiregeln**

Für die Verwendung von Konfigurationsdateien gelten die folgenden Regeln:
+ Sie können mehrere Parameter in jede Konfigurationsdatei aufnehmen und in beliebiger Reihenfolge auflisten. Listen Sie jeden Parameter mit seinen Werten (falls vorhanden) in einer separaten Zeile auf. 
+ Verwenden Sie `#` zum Hinzufügen eines Kommentars für eine ganze oder einen Teil einer Zeile.
+ Sie können Verweise auf andere Konfigurationsdateien aufnehmen. Verwenden Sie kein Backtick, um dem `@` Zeichen zu entkommen, auch nicht in. PowerShell
+ Wenn Sie Anführungszeichen in einer Konfigurationsdatei verwenden, kann sich der angegebene Text nicht über mehrere Zeilen erstrecken.

Dies ist beispielsweise der Inhalt einer `encrypt.conf`-Beispieldatei.

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

Sie können auch mehrere Konfigurationsdateien in einem Befehl angeben. Dieser Beispielbefehl verwendet die Konfigurationsdateien `encrypt.conf` und `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
```

------

**Weiter:** [Probieren Sie die Beispiele für die AWS Verschlüsselungs-CLI](crypto-cli-examples.md) aus

# Beispiele für die AWS Encryption CLI
<a name="crypto-cli-examples"></a>

Verwenden Sie die folgenden Beispiele, um die AWS Encryption CLI auf der von Ihnen bevorzugten Plattform auszuprobieren. Weitere Informationen zum Master-Schlüssel und anderen Parametern finden Sie unter [So verwenden Sie die AWS Encryption CLI](crypto-cli-how-to.md). Informationen zum schnellen Einstieg finden Sie unter [AWS Encryption SDK CLI Syntax und Parameterreferenz](crypto-cli-reference.md).

**Anmerkung**  
Die folgenden Beispiele verwenden die Syntax für AWS Encryption CLI Version 2.1. *x.*   
Neue Sicherheitsfunktionen wurden ursprünglich in den AWS Encryption CLI Versionen 1.7 veröffentlicht. *x* und 2.0. *x.* Allerdings AWS Encryption CLI Version 1.8. *x* ersetzt Version 1.7. *x* und AWS Encryption CLI 2.1. *x* ersetzt 2.0. *x.* Einzelheiten finden Sie in der entsprechenden [Sicherheitsempfehlung](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

Ein Beispiel zur Verwendung der Sicherheitsfunktion, die verschlüsselte Datenschlüssel einschränkt, finden Sie unter[Beschränkung verschlüsselter Datenschlüssel](configure.md#config-limit-keys).

Ein Beispiel zur Verwendung von Schlüsseln für AWS KMS mehrere Regionen finden Sie unter[Verwenden Sie mehrere Regionen AWS KMS keys](configure.md#config-mrks).

**Topics**
+ [

## Verschlüsseln einer Datei
](#cli-example-encrypt-file)
+ [

## Entschlüsseln einer Datei
](#cli-example-decrypt-file)
+ [

## Alle Dateien in einem Verzeichnis verschlüsseln
](#cli-example-encrypt-directory)
+ [

## Alle Dateien in einem Verzeichnis entschlüsseln
](#cli-example-decrypt-directory)
+ [

## Verschlüsseln und Entschlüsseln in der Befehlszeile
](#cli-example-stdin)
+ [

## Verwenden mehrerer Hauptschlüssel
](#cli-example-multimaster)
+ [

## Verschlüsseln und Entschlüsseln in Skripts
](#cli-example-script)
+ [

## Verwenden von Datenschlüssel-Caching
](#cli-example-caching)

## Verschlüsseln einer Datei
<a name="cli-example-encrypt-file"></a>

In diesem Beispiel wird die AWS Encryption CLI verwendet, um den Inhalt der `hello.txt` Datei zu verschlüsseln, die eine Zeichenfolge „Hello World“ enthält. 

Wenn Sie einen Verschlüsselungsbefehl für eine Datei ausführen, ruft die AWS Encryption CLI den Inhalt der Datei ab, generiert einen eindeutigen [Datenschlüssel](concepts.md#DEK), verschlüsselt den Dateiinhalt unter dem Datenschlüssel und schreibt dann die [verschlüsselte Nachricht](concepts.md#message) in eine neue Datei. 

Der erste Befehl speichert den Schlüssel ARN von AWS KMS key in der `$keyArn` Variablen. Wenn Sie mit einem verschlüsseln AWS KMS key, können Sie es anhand einer Schlüssel-ID, eines Schlüssel-ARN, eines Aliasnamens oder eines Alias-ARN identifizieren. *Einzelheiten zu den Schlüsselkennungen für eine AWS KMS key finden Sie unter [Schlüsselkennungen](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) im AWS Key Management Service Entwicklerhandbuch.*

Der zweite Befehl verschlüsselt den Dateiinhalt. Der Befehl verwendet den Parameter `--encrypt`, um die Operation anzugeben, und den Parameter `--input`, um die zu verschlüsselnde Datei anzugeben. Der [`--wrapping-keys`Parameter](crypto-cli-how-to.md#crypto-cli-master-key) und das erforderliche **Schlüsselattribut** weisen den Befehl an, den durch den Schlüssel AWS KMS key repräsentierten ARN zu verwenden. 

Der Befehl verwendet den `--metadata-output`-Parameter, um eine Textdatei für die Metadaten über die Verschlüsselungsoperation anzugeben. Als bewährte Methode verwendet der Befehl den `--encryption-context`-Parameter, um einen [Verschlüsselungskontext](crypto-cli-how-to.md#crypto-cli-encryption-context) anzugeben. 

Dieser Befehl verwendet den [`--commitment-policy`Parameter](crypto-cli-reference.md#syntax-commitment-policy) auch, um die Commitment-Richtlinie explizit festzulegen. In Version 1.8. *x*, dieser Parameter ist erforderlich, wenn Sie den `--wrapping-keys` Parameter verwenden. Ab Version 2.1. *x*, der `--commitment-policy` Parameter ist optional, wird aber empfohlen.

Der Wert des `--output`-Parameters, ein Punkt (.), weist den Befehl an, die Ausgabedatei in das aktuelle Verzeichnis zu speichern. 

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

------

Wenn der Verschlüsselungsbefehl erfolgreich ausgeführt wird, erfolgt keine Ausgabe. Um festzustellen, ob der Befehl erfolgreich ausgeführt wurde, überprüfen Sie den booleschen Wert in der Variablen `$?`. Wenn der Befehl erfolgreich ist, `$?` ist der Wert von `0` (Bash) oder `True` (PowerShell). Wenn der Befehl fehlschlägt, `$?` ist der Wert von ungleich Null (Bash) oder (). `False` PowerShell

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

```
$ echo $?
0
```

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

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

------

Sie können auch einen Verzeichnisauflistungsbefehl ausführen, um zu überprüfen, ob der Verschlüsselungsbefehl eine neue Datei erstellt hat, `hello.txt.encrypted`. Da der Befehl encrypt keinen Dateinamen für die Ausgabe spezifizierte, schrieb die AWS Encryption CLI die Ausgabe in eine Datei mit demselben Namen wie die Eingabedatei plus einem `.encrypted` Suffix. Um ein anderes Suffix zu verwenden oder das Suffix wegzulassen, verwenden Sie den `--suffix`-Parameter.

Die Datei `hello.txt.encrypted` enthält eine [verschlüsselte Nachricht](concepts.md#message), die den Verschlüsselungstext der `hello.txt`-Datei enthält, eine verschlüsselte Kopie des Datenschlüssels und zusätzlichen Metadaten, einschließlich des Verschlüsselungskontexts.

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

------

## Entschlüsseln einer Datei
<a name="cli-example-decrypt-file"></a>

In diesem Beispiel wird die AWS Encryption CLI verwendet, um den Inhalt der `Hello.txt.encrypted` Datei zu entschlüsseln, die im vorherigen Beispiel verschlüsselt wurde.

Der Entschlüsselungsbefehl verwendet den Parameter `--decrypt`, um die Operation anzugeben, und den Parameter `--input`, um die zu entschlüsselnde Datei anzugeben. Der Wert des `--output` -Parameters ist ein Punkt, der das aktuelle Verzeichnis darstellt. 

Der `--wrapping-keys` Parameter mit einem **Schlüsselattribut** gibt den Wrapping-Schlüssel an, der zum Entschlüsseln der verschlüsselten Nachricht verwendet wird. Bei Entschlüsselungsbefehlen mit AWS KMS keys muss der Wert des Schlüsselattributs ein [Schlüssel-ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) sein. Der `--wrapping-keys` Parameter ist in einem Entschlüsselungsbefehl erforderlich. Wenn Sie verwenden AWS KMS keys, können Sie das **Schlüsselattribut** verwenden, um das AWS KMS keys Entschlüsselungsattribut anzugeben, oder das **Discovery-Attribut** mit einem Wert von `true` (aber nicht beide). Wenn Sie einen benutzerdefinierten Hauptschlüsselanbieter verwenden, sind die **Schlüssel** - und **Anbieterattribute** erforderlich. 

Der [`--commitment-policy`Parameter](crypto-cli-reference.md#syntax-commitment-policy) ist ab Version 2.1 optional. *x*, aber es wird empfohlen. Wenn Sie es explizit verwenden, wird Ihre Absicht deutlich, auch wenn Sie den Standardwert angeben`require-encrypt-require-decrypt`.

Der Parameter `--encryption-context` ist optional im Entschlüsselungsbefehl, auch dann, wenn im Verschlüsselungsbefehl ein [Verschlüsselungskontext](crypto-cli-how-to.md#crypto-cli-encryption-context) angegeben ist. In diesem Fall verwendet der Entschlüsselungsbefehl denselben Verschlüsselungskontext wie denjenigen, der im Verschlüsselungsbefehl angegeben wurde. Vor dem Entschlüsseln überprüft die AWS Encryption CLI, ob der Verschlüsselungskontext in der verschlüsselten Nachricht ein `purpose=test` Paar enthält. Wenn dies nicht der Fall ist, schlägt der Entschlüsselungsbefehl fehl.

Der `--metadata-output`-Parameter gibt eine Datei für Metadaten über die Entschlüsselungsoperation an. Der Wert des `--output`-Parameters, ein Punkt (.), weist den Befehl an, die Ausgabedatei in das aktuelle Verzeichnis zu schreiben. 

Es hat sich bewährt, den `--max-encrypted-data-keys` Parameter zu verwenden, um zu verhindern, dass eine falsch formatierte Nachricht mit einer übermäßigen Anzahl verschlüsselter Datenschlüssel entschlüsselt wird. Geben Sie die erwartete Anzahl verschlüsselter Datenschlüssel (einen für jeden bei der Verschlüsselung verwendeten Wrapping-Schlüssel) oder einen angemessenen Höchstwert (z. B. 5) an. Details hierzu finden Sie unter [Beschränkung verschlüsselter Datenschlüssel](configure.md#config-limit-keys).

Der `--buffer` gibt Klartext erst zurück, nachdem alle Eingaben verarbeitet wurden, einschließlich der Überprüfung der digitalen Signatur, falls eine vorhanden ist.

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

------

Wenn der Entschlüsselungsbefehl erfolgreich ausgeführt wird, erfolgt keine Ausgabe. Um festzustellen, ob der Befehl erfolgreich ausgeführt wurde, rufen Sie den Wert der Variablen `$?` ab. Sie können auch einen Verzeichnisauflistungsbefehl ausführen, um zu überprüfen, ob der Verschlüsselungsbefehl eine neue Datei erstellt mit dem Suffix `.decrypted` erstellt hat. Um den Klartextinhalt anzuzeigen, verwenden Sie einen Befehl, um den Dateiinhalt abzurufen, wie beispielsweise `cat` oder [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
```

------

## Alle Dateien in einem Verzeichnis verschlüsseln
<a name="cli-example-encrypt-directory"></a>

In diesem Beispiel wird die AWS Encryption CLI verwendet, um den Inhalt aller Dateien in einem Verzeichnis zu verschlüsseln. 

Wenn sich ein Befehl auf mehrere Dateien auswirkt, verarbeitet die AWS Encryption CLI jede Datei einzeln. Sie ruft den Dateiinhalt ab, ruft einen eindeutigen [Datenschlüssel](concepts.md#DEK) für die Datei aus dem Master-Schlüssel ab, verschlüsselt den Inhalt der Datei unter dem Datenschlüssel und schreibt die Ergebnisse in eine neue Datei im Ausgabeverzeichnis. Aus diesem Grund können Sie die Ausgabedateien unabhängig voneinander entschlüsseln. 

Diese Auflistung des `TestDir`-Verzeichnisses zeigt die Klartext-Dateien, die wir verschlüsseln möchten. 

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

------

Der erste Befehl speichert den [Amazon-Ressourcennamen (ARN)](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) von AWS KMS key in der `$keyArn` Variablen.

Der zweite Befehl verschlüsselt den Inhalt von Dateien im `TestDir`-Verzeichnis und schreibt die Dateien mit dem verschlüsselten Inhalt in das `TestEnc`-Verzeichnis. Wenn das `TestEnc`-Verzeichnis nicht vorhanden ist, schlägt der Befehl fehl. Da der Eingabespeicherort ein Verzeichnis ist, muss der `--recursive`-Parameter angegeben werden. 

Der [`--wrapping-keys`Parameter](crypto-cli-how-to.md#crypto-cli-master-key) und das erforderliche **Schlüsselattribut** geben den zu verwendenden Wrapping-Schlüssel an. Der Verschlüsselungsbefehl umfasst einen [Verschlüsselungskontext](crypto-cli-how-to.md#crypto-cli-encryption-context), `dept=IT`. Wenn Sie einen Verschlüsselungskontext in einem Befehl angeben, der mehrere Dateien verschlüsselt, wird für alle Dateien derselbe Verschlüsselungskontext verwendet. 

Der Befehl hat auch einen `--metadata-output` Parameter, der der AWS Encryption CLI mitteilt, wo die Metadaten zu den Verschlüsselungsvorgängen geschrieben werden sollen. Die AWS Encryption CLI schreibt einen Metadatensatz für jede verschlüsselte Datei.

Das [`--commitment-policy parameter`](crypto-cli-how-to.md#crypto-cli-commitment-policy)ist ab Version 2.1 optional. *x*, aber es wird empfohlen. Wenn der Befehl oder das Skript fehlschlägt, weil ein Chiffretext nicht entschlüsselt werden kann, kann Ihnen die Richtlinieneinstellung „Explizite Commitment“ dabei helfen, das Problem schnell zu erkennen.

Wenn der Befehl abgeschlossen ist, schreibt die AWS Encryption CLI die verschlüsselten Dateien in das `TestEnc` Verzeichnis, gibt aber keine Ausgabe zurück. 

Der letzte Befehl listet die Dateien im Verzeichnis `TestEnc` auf. Es gibt eine Ausgabedatei des verschlüsselten Inhalts für jede Eingabedatei mit Klartext-Inhalt. Da der Befehl kein alternatives Suffix angegeben hat, hat der Verschlüsselungsbefehl `.encrypted` an jeden der jede der Eingabedateinamen angefügt.

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

------

## Alle Dateien in einem Verzeichnis entschlüsseln
<a name="cli-example-decrypt-directory"></a>

In diesem Beispiel werden alle Dateien in einem Verzeichnis entschlüsselt. Es beginnt mit den Dateien im Verzeichnis `TestEnc`, die im vorherigen Beispiel verschlüsselt wurden.

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

------

Dieser Entschlüsselungsbefehl entschlüsselt alle Dateien im TestEnc Verzeichnis und schreibt die Klartextdateien in das Verzeichnis. TestDec Der `--wrapping-keys` Parameter mit einem **Schlüsselattribut** und einem [Schlüssel-ARN-Wert](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) teilt der AWS Encryption CLI mit, welche AWS KMS keys zum Entschlüsseln der Dateien verwendet werden soll. Der Befehl verwendet den `--interactive` Parameter, um die AWS Encryption CLI anzuweisen, Sie vor dem Überschreiben einer Datei mit demselben Namen zu fragen.

Dieser Befehl verwendet auch den Verschlüsselungskontext, die bereitgestellt wurde, als die Dateien verschlüsselt wurden. Beim Entschlüsseln mehrerer Dateien überprüft die AWS Encryption CLI den Verschlüsselungskontext jeder Datei. Wenn die Überprüfung des Verschlüsselungskontextes für eine Datei fehlschlägt, lehnt die AWS Encryption CLI die Datei ab, schreibt eine Warnung, zeichnet den Fehler in den Metadaten auf und fährt dann mit der Überprüfung der verbleibenden Dateien fort. Wenn die AWS Encryption CLI eine Datei aus einem anderen Grund nicht entschlüsseln kann, schlägt der gesamte Entschlüsselungsbefehl sofort fehl. 

In diesem Beispiel enthalten die verschlüsselten Nachrichten in allen Eingabedateien das Verschlüsselungskontextelement `dept=IT`. Wenn Sie jedoch Nachrichten mit unterschiedlichen Verschlüsselungskontexten entschlüsseln, können Sie möglicherweise immer noch einen Teil des Verschlüsselungskontexts überprüfen. Hatten beispielsweise einige Nachrichten den Verschlüsselungskontext `dept=finance`, andere hatten `dept=IT`, könnten Sie überprüfen, ob der Verschlüsselungskontext immer einen `dept`-Namen enthält, ohne den Wert anzugeben. Wenn Sie spezifischer vorgehen möchten, können Sie die Dateien in separaten Befehlen entschlüsseln. 

Die Entschlüsselungsbefehl gibt keine Ausgabe zurück, aber Sie können einen Verzeichnislistenbefehl verwenden, um zu prüfen, ob der Befehl neue Dateien mit dem Suffix `.decrypted` erstellt hat. Um den Klartextinhalt anzuzeigen, verwenden Sie einen Befehl, um den Dateiinhalt abzurufen.

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

------

## Verschlüsseln und Entschlüsseln in der Befehlszeile
<a name="cli-example-stdin"></a>

Diese Beispiele zeigen Ihnen, wie Sie Eingaben an Befehle übergeben (stdin) und Ausgaben in die Befehlszeile schreiben (stdout). Sie erklären, wie stdin und stdout in einem Befehl dargestellt werden, und wie die eingebauten Base64-Codierungstools verwendet werden, um zu verhindern, dass die Shell Nicht-ASCII-Zeichen falsch interpretiert.

Dieses Beispiel übergibt eine Klartext-Zeichenfolge an einen Verschlüsselungsbefehl und speichert die verschlüsselte Nachricht in einer Variablen. Dann übergibt es die verschlüsselte Nachricht in der Variablen an einen Entschlüsselungsbefehl, der seine Ausgabe in die Pipeline schreibt (stdout). 

Das Beispiel besteht aus drei Befehlen:
+ Der erste Befehl speichert den [Schlüssel ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) von AWS KMS key in der `$keyArn` Variablen.

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

------

   
+ Der zweite Befehl übergibt die Zeichenfolge`Hello World`an den Verschlüsselungsbefehl weiter und speichert das Ergebnis in der Variablen `$encrypted`. 

  Die `--output` Parameter `--input` und sind in allen AWS Encryption CLI-Befehlen erforderlich. Um anzugeben, dass eine Eingabe dem Befehl übergeben wird (stdin), verwenden Sie einen Bindestrich (`-`) für den Wert des `--input`-Parameters. Um die Ausgabe in die Befehlszeile zu senden (stdout), verwenden Sie einen Bindestrich für den Wert des `--output`-Parameters. 

  Der `--encode`-Parameter bewirkt, dass die Ausgabe mit Base64 codiert wird, bevor sie zurückgegeben wird. Dadurch wird verhindert, dass die Shell interpretiert die Nicht-ASCII-Zeichen in der verschlüsselten Nachricht falsch interpretiert. 

  Da dieser Befehl ist nur ein Machbarkeitsnachweist ist, lassen wir den Verschlüsselungskontext weg und unterdrücken die Metadaten (`-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
  ```

------

   
+ Der dritte Befehl übergibt die verschlüsselte Nachricht in der Variablen `$encrypted` an den Entschlüsselungsbefehl. 

  Dieser Entschlüsselungsbefehl verwendet `--input -`, um anzugeben, dass die Eingabe aus der Pipeline (stdin) kommt, und `--output -`, um die Ausgabe in die Pipeline zu senden (stdout). (Der Eingabeparameter verwendet den Speicherort der Eingabe, nicht die tatsächlich eingegebenen Bytes, Sie können also die Variable `$encrypted` nicht als Wert des `--input`-Parameters verwenden.) 

  In diesem Beispiel wird das **Discovery-Attribut** des `--wrapping-keys` Parameters verwendet, damit die AWS Encryption CLI jedes beliebige AWS KMS key zum Entschlüsseln der Daten verwenden kann. Es gibt keine [Verpflichtungsrichtlinie](concepts.md#commitment-policy) an, daher wird der Standardwert für Version 2.1 verwendet. *x* und später,`require-encrypt-require-decrypt`.

  Da die Ausgabe verschlüsselt und dann codiert wurde, verwendet der Entschlüsselungsbefehl den `--decode`-Parameter zum Decodieren der mit Base64 codierten Eingabe, bevor sie entschlüsselt wird. Sie können auch den `--decode`-Parameter verwenden, um mit Base64 codierte Eingaben zu decodieren, bevor sie verschlüsselt werden.

  Auch hier lässt der Befehl den Verschlüsselungskontext weg und unterdrückt die Metadaten (-`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
  ```

------

Sie können die Ver- und Entschlüsselungsoperationen auch in einem einzigen Befehl ohne die dazwischenliegende Variable durchführen. 

Wie im vorherigen Beispiel haben die Parameter `--input` und `--output` einen `-`-Wert, und der Befehl verwendet den `--encode`-Parameter, um die Ausgabe zu codieren, und den `--decode` Parameter, um die Eingabe zu decodieren.

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

------

## Verwenden mehrerer Hauptschlüssel
<a name="cli-example-multimaster"></a>

Dieses Beispiel zeigt, wie mehrere Masterschlüssel beim Verschlüsseln und Entschlüsseln von Daten in der AWS Encryption CLI verwendet werden. 

Wenn Sie mehrere Master-Schlüssel verwenden, um Daten zu verschlüsseln, kann einer der Master-Schlüssel verwendet werden, um die Daten zu entschlüsseln. Diese Strategie stellt sicher, dass Sie die Daten entschlüsseln können, selbst wenn einer der Master-Schlüssel nicht verfügbar ist. Wenn Sie die verschlüsselten Daten in mehreren speichern AWS-Regionen, können Sie mit dieser Strategie einen Hauptschlüssel in derselben Region verwenden, um die Daten zu entschlüsseln. 

Wenn Sie mit mehreren Master-Schlüsseln verschlüsseln, spielt der erste Master-Schlüssel eine spezielle Rolle. Er generiert den Datenschlüssel, der zum Verschlüsseln der Daten verwendet wird. Die verbleibenden Master-Schlüssel verschlüsseln den Klartext-Datenschlüssel. Die resultierende [verschlüsselte Nachricht](concepts.md#message) enthält die verschlüsselten Daten und eine Sammlung von verschlüsselten Datenschlüsseln, einen für jeden Master-Schlüssel. Obwohl der erste Master-Schlüssel den Datenschlüssel generiert hat, kann jeder der Master-Schlüssel einen der Datenschlüssel entschlüsseln, der verwendet werden kann, um die Daten zu entschlüsseln. 

**Verschlüsselung mit drei Hauptschlüsseln**

In diesem Beispielbefehl werden drei Umschließungsschlüssel verwendet, um die `Finance.log` Datei zu verschlüsseln, jeweils einen von dreien. AWS-Regionen

Er schreibt die verschlüsselte Nachricht in das Verzeichnis `Archive`. Der Befehl verwendet den `--suffix` -Parameter ohne Wert, um das Suffix zu unterdrücken, sodass die Eingabe- und Ausgabedateinamen gleich sind. 

Der Befehl verwendet den `--wrapping-keys`-Parameter mit drei **Schlüsselattributen**. Sie können auch mehrere `--wrapping-keys`-Parameter im selben Befehl verwenden. 

Um die Protokolldatei zu verschlüsseln, fordert die AWS Encryption CLI den ersten Wrapping-Schlüssel in der Liste auf`$key1`, den Datenschlüssel zu generieren, mit dem sie die Daten verschlüsselt. Anschließend verwendet sie jeden der anderen Umschließungsschlüssel, um eine Klartextkopie desselben Datenschlüssels zu verschlüsseln. Die verschlüsselte Nachricht in der Ausgabedatei enthält alle drei verschlüsselten Datenschlüssel. 

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

------

Dieser Befehl entschlüsselt die verschlüsselte Kopie der Datei `Finance.log` und schreibt sie in eine `Finance.log.clear`-Datei im Verzeichnis `Finance`. Um Daten zu entschlüsseln, die unter drei verschlüsselt wurden AWS KMS keys, können Sie dieselben drei AWS KMS keys oder eine beliebige Teilmenge davon angeben. In diesem Beispiel wird nur eine der Optionen angegeben. AWS KMS keys

Verwenden Sie das **Schlüsselattribut** des `--wrapping-keys` Parameters, AWS KMS keys um der AWS Encryption CLI mitzuteilen, welche zum Entschlüsseln Ihrer Daten verwendet werden soll. Bei der Entschlüsselung mit AWS KMS keys muss der Wert des **Schlüsselattributs** ein [Schlüssel-ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN) sein.

Sie benötigen die Berechtigung, die [Decrypt-API](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) auf dem von AWS KMS keys Ihnen angegebenen Computer aufzurufen. Weitere Informationen finden Sie unter [Authentifizierung und Zugriffskontrolle für AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html). 

Als bewährte Methode wird in diesen Beispielen der `--max-encrypted-data-keys` Parameter verwendet, um zu verhindern, dass eine falsch formatierte Nachricht mit einer übermäßigen Anzahl verschlüsselter Datenschlüssel entschlüsselt wird. Obwohl in diesem Beispiel nur ein Wrapping-Schlüssel für die Entschlüsselung verwendet wird, hat die verschlüsselte Nachricht drei (3) verschlüsselte Datenschlüssel, einen für jeden der drei beim Verschlüsseln verwendeten Wrapping-Schlüssel. Geben Sie die erwartete Anzahl verschlüsselter Datenschlüssel oder einen angemessenen Höchstwert an, z. B. 5. Wenn Sie einen Höchstwert unter 3 angeben, schlägt der Befehl fehl. Details hierzu finden Sie unter [Beschränkung verschlüsselter Datenschlüssel](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
```

------

## Verschlüsseln und Entschlüsseln in Skripts
<a name="cli-example-script"></a>

Dieses Beispiel zeigt, wie die AWS Encryption CLI in Skripten verwendet wird. Sie können Skripte schreiben, die nur Daten verschlüsseln und entschlüsseln, oder Skripts, die als Teil eines Datenverwaltungsprozesses verschlüsseln oder entschlüsseln.

In diesem Beispiel ruft das Skript eine Sammlung von Protokolldateien ab, komprimiert sie, verschlüsselt sie und kopiert dann die verschlüsselten Dateien in einen Amazon S3 S3-Bucket. Dieses Skript verarbeitet jede Datei einzeln, sodass Sie sie unabhängig voneinander entschlüsseln und erweitern können.

Wenn Sie Dateien komprimieren und verschlüsseln, stellen Sie sicher, dass Sie sie komprimieren, bevor Sie sie verschlüsseln. Ordnungsgemäß verschlüsselte Daten können nicht komprimiert werden.

**Warnung**  
Seien Sie vorsichtig, wenn Sie Daten komprimieren, die Geheimnisse oder Daten enthalten, die von böswilligen Angreifern kontrolliert werden könnten. Die endgültige Größe der komprimierten Daten verrät möglicherweise versehentlich vertrauliche Informationen über ihren Inhalt.

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

------

## Verwenden von Datenschlüssel-Caching
<a name="cli-example-caching"></a>

Dieses Beispiel verwendet das [Datenschlüssel-Caching](data-key-caching.md) in einem Befehl, der eine große Anzahl von Dateien verschlüsselt. 

Standardmäßig generiert die AWS Encryption CLI (und andere Versionen von AWS Encryption SDK) einen eindeutigen Datenschlüssel für jede Datei, die sie verschlüsselt. Obwohl die Verwendung eines eindeutigen Datenschlüssels für jede Operation ist eine bewährte Methode in der Kryptografie ist, ist eine begrenzte Wiederverwendung von Datenschlüsseln in einigen Situationen akzeptabel. Falls Sie ein Datenschlüssel-Caching in Betracht ziehen, beraten Sie sich mit einem Sicherheitstechniker,um die Sicherheitsanforderungen Ihrer Anwendung zu verstehen und die für Sie geeigneten Sicherheitsbarrieren zu bestimmen. 

In diesem Beispiel beschleunigt das Datenschlüssel-Caching die Verschlüsselungsoperation, indem sie die Frequenz der Anfragen an den Masterschlüssel-Anbieter reduziert.

Der Befehl in diesem Beispiel verschlüsselt ein großes Verzeichnis mit mehreren Unterverzeichnissen, die insgesamt ungefähr 800 kleine Protokolldateien enthalten. Der erste Befehl speichert den ARN des AWS KMS key in einer `keyARN`-Variablen. Der zweite Befehl verschlüsselt alle Dateien im Eingabeverzeichnis (rekursiv) und schreibt sie in ein Archiv-Verzeichnis. Der Befehl verwendet den `--suffix` -Parameter, um das `.archive`-Suffix anzugeben. 

Der `--caching`-Parameter aktiviert das Datenschlüssel-Caching. Die Attribut **capacity**, das die Anzahl der Datenschlüssel im Cache begrenzt, wird auf 1 gesetzt, da die serielle Dateiverarbeitung nie mehr als einen Datenschlüssel gleichzeitig verwendet. Das Attribut **max\$1age**, mit dem festgelegt wird, wie lange der Datenschlüssel im Cache verwendet werden kann, ist auf 10 Sekunden eingestellt. 

Das optionale Attribut **max\$1messages\$1encrypted** ist auf 10 Nachrichten festgelegt, sodass eine einzelner Datenschlüssel nie verwendet werden kann, um mehr als 10 Dateien zu verschlüsseln. Die Begrenzung der Anzahl der von einem Datenschlüssel verschlüsselten Dateien reduziert die Anzahl der Dateien, die in dem unwahrscheinlichen Fall betroffen wären, wenn ein Datenschlüssel kompromittiert wird.

Um diesen Befehl für von Ihrem Betriebssystem generierte Protokolldateien auszuführen, müssen Sie möglicherweise Administratorberechtigungen besitzen (`sudo` in Linux; **Als Administrator ausführen** in 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
```

------

Um die Wirkung der Zwischenspeicherung von Datenschlüsseln zu testen, wird in diesem Beispiel das [Cmdlet Measure-Command](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/measure-command) in verwendet. PowerShell Wenn Sie dieses Beispiel ohne Datenschlüssel-Caching ausführen, dauert seine Ausführung etwa 25 Sekunden. Dieser Prozess generiert einen neuen Datenschlüssel für jede Datei im Verzeichnis.

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

Das Datenschlüssel-Caching beschleunigt das Verfahren, auch wenn Sie die einzelnen Datenschlüssel auf maximal 10 Dateien begrenzen. Der Befehl benötigt jetzt weniger als 12 Sekunden und reduziert die Anzahl der Aufrufe des Masterschlüssel-Anbieter auf ein Zehntel des ursprünglichen Werts.

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

Wenn Sie die `max_messages_encrypted`-Einschränkung weglassen, werden alle Dateien unter demselben Datenschlüssel verschlüsselt. Diese Änderung erhöht das Risiko einer Wiederverwendung von Datenschlüsseln, ohne den Prozess sehr wesentlich schneller zu machen. Sie reduziert jedoch die Anzahl der Aufrufe des Masterschlüssel-Anbieters auf 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 CLI Syntax und Parameterreferenz
<a name="crypto-cli-reference"></a>

Dieses Thema enthält Syntaxdiagramme und kurze Parameterbeschreibungen, die Ihnen bei der Verwendung des AWS Encryption SDK Command Line Interface (CLI, Befehlszeilenschnittstelle) helfen. Hilfe zum Umschließen von Schlüsseln und anderen Parametern finden Sie unter[So verwenden Sie die AWS Encryption CLI](crypto-cli-how-to.md). Beispiele finden Sie unter [Beispiele für die AWS Encryption CLI](crypto-cli-examples.md). Eine vollständige Dokumentation finden Sie in [Read the Docs](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/).

**Topics**
+ [

## AWS Verschlüsselungs-CLI-Syntax
](#crypto-cli-syntax)
+ [

## AWS Befehlszeilenparameter der Verschlüsselungs-CLI
](#crypto-cli-parameters)
+ [

## Erweiterte Parameter
](#cli-advanced-parameters)

## AWS Verschlüsselungs-CLI-Syntax
<a name="crypto-cli-syntax"></a>

Diese Syntaxdiagramme von AWS Encryption CLI zeigen die Syntax für jede Aufgabe, die Sie mit der AWS Encryption CLI ausführen. Sie stellen die empfohlene Syntax in AWS Encryption CLI Version 2.1 dar. *x* und höher.

Neue Sicherheitsfunktionen wurden ursprünglich in den AWS Encryption CLI Versionen 1.7 veröffentlicht. *x* und 2.0. *x.* Allerdings AWS Encryption CLI Version 1.8. *x* ersetzt Version 1.7. *x* und AWS Encryption CLI 2.1. *x* ersetzt 2.0. *x.* Einzelheiten finden Sie in der entsprechenden [Sicherheitsempfehlung](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

**Anmerkung**  
Sofern in der Parameterbeschreibung nichts anderes angegeben ist, kann jeder Parameter oder jedes Attribut in jedem Befehl nur einmal verwendet werden.  
Wenn Sie ein Attribut verwenden, das ein Parameter nicht unterstützt, ignoriert die AWS Encryption CLI dieses nicht unterstützte Attribut ohne Warnung oder Fehler.

**Hilfe anfordern**  
Um die vollständige AWS Encryption CLI-Syntax mit Parameterbeschreibungen zu erhalten, verwenden Sie `--help` oder`-h`.  

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

**Die Version abrufen**  
Um die Versionsnummer Ihrer AWS Encryption CLI-Installation abzurufen, verwenden Sie`--version`. Geben Sie unbedingt die Version an, wenn Sie Fragen stellen, Probleme melden oder Tipps zur Verwendung der AWS Encryption CLI geben.  

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

**Daten verschlüsseln**  
Das folgende Syntaxdiagramm zeigt die Parameter, die ein **encrypt**-Befehl verwendet.   

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

**Daten entschlüsseln**  
Das folgende Syntaxdiagramm zeigt die Parameter, die ein **decrypt**-Befehl verwendet.   
In Version 1.8. *x*, der `--wrapping-keys` Parameter ist beim Entschlüsseln optional, wird aber empfohlen. Ab Version 2.1. *x*, der `--wrapping-keys` Parameter ist beim Verschlüsseln und Entschlüsseln erforderlich. Denn Sie können das **Schlüsselattribut** verwenden AWS KMS keys, um Wrapping-Schlüssel anzugeben (Best Practice) oder das **Discovery-Attribut** auf festlegen`true`, wodurch die Wrapping-Schlüssel, die die AWS Encryption CLI verwenden kann, nicht eingeschränkt werden.  

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

**Konfigurationsdateien verwenden**  
Sie können auf Konfigurationsdateien verweisen, die Parameter und deren Werte enthalten. Dies ist gleichwertig mit der Eingabe der Parameter und Werte im Befehl. Ein Beispiel finden Sie unter [Parameter in einer Konfigurationsdatei speichern](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 Befehlszeilenparameter der Verschlüsselungs-CLI
<a name="crypto-cli-parameters"></a>

Diese Liste enthält eine grundlegende Beschreibung der Befehlsparameter von AWS Encryption CLI. Eine vollständige Beschreibung finden Sie in der [aws-encryption-sdk-cliDokumentation](http://aws-encryption-sdk-cli.readthedocs.io/en/latest/).

**--encrypt (-e)**  
Verschlüsselt die Eingabedaten. Jeder Befehl muss einen `--encrypt``--decrypt`, oder oder `--decrypt-unsigned` -Parameter haben.

**--decrypt (-d)**  
Entschlüsselt die Eingabedaten. Jeder Befehl muss einen `--encrypt``--decrypt`, oder `--decrypt-unsigned` -Parameter haben.

**--decrypt-unsigned [Eingeführt in Version 1.9. *x und 2.2.* *x*]**  
Der `--decrypt-unsigned` Parameter entschlüsselt Chiffretext und stellt sicher, dass Nachrichten vor der Entschlüsselung unsigniert sind. Verwenden Sie diesen Parameter, wenn Sie den `--algorithm` Parameter verwendet und eine Algorithmussuite ohne digitale Signatur zum Verschlüsseln von Daten ausgewählt haben. Wenn der Chiffretext signiert ist, schlägt die Entschlüsselung fehl.  
Sie können `--decrypt` oder `--decrypt-unsigned` für die Entschlüsselung verwenden, aber nicht beide.

**--wrapping-keys (-w) [Eingeführt in Version 1.8. *x*]**  <a name="wrapping-keys"></a>
Gibt die [Wrapping-Schlüssel](concepts.md#master-key) (oder *Hauptschlüssel*) an, die bei Verschlüsselungs- und Entschlüsselungsvorgängen verwendet werden. Sie können in jedem Befehl [mehrere `--wrapping-keys` Parameter](crypto-cli-how-to.md#cli-many-cmks) verwenden.   
Ab Version 2.1. *x*, der `--wrapping-keys` Parameter ist für Befehle zum Verschlüsseln und Entschlüsseln erforderlich. In Version 1.8. *x*, Verschlüsselungsbefehle erfordern `--wrapping-keys` entweder einen `--master-keys` Oder-Parameter. In Version 1.8. *x* decrypt-Befehle, ein `--wrapping-keys` Parameter ist optional, wird aber empfohlen.   
**Wenn Sie einen benutzerdefinierten Hauptschlüsselanbieter verwenden, benötigen Befehle zum Verschlüsseln und Entschlüsseln **Schlüssel** - und Anbieterattribute.** **Bei der Verwendung von AWS KMS keys Verschlüsselungsbefehlen ist ein Schlüsselattribut erforderlich.** Für Befehle zum Entschlüsseln ist ein **Schlüsselattribut** oder ein **Erkennungsattribut** mit einem Wert von `true` (aber nicht beiden) erforderlich. [Es hat sich **bewährt, das Schlüsselattribut** beim Entschlüsseln zu verwenden.AWS Encryption SDK](best-practices.md) Dies ist besonders wichtig, wenn Sie Stapel unbekannter Nachrichten entschlüsseln, z. B. Nachrichten in einem Amazon S3 S3-Bucket oder einer Amazon SQS SQS-Warteschlange.  
Ein Beispiel, das zeigt, wie Sie Schlüssel mit AWS KMS mehreren Regionen als Schlüssel zum Umschließen von Schlüsseln verwenden können, finden Sie unter. [Verwenden Sie mehrere Regionen AWS KMS keys](configure.md#config-mrks)  
**Attribute**: Der Wert des `--wrapping-keys`-Parameters besteht aus den folgenden Attributen. Das Format ist `attribute_name=value`.     
**Schlüssel**  
Identifiziert den Umbruchschlüssel, der bei dem Vorgang verwendet wurde. Das Format ist ein **key**= ID-Paar. Sie können mehrere **key**-Attribute in jedem `--wrapping-keys`-Parameterwert angeben.  
+ **Befehle verschlüsseln**: Alle Verschlüsselungsbefehle erfordern das **Schlüsselattribut**. Wenn Sie einen Befehl AWS KMS key in an encrypt verwenden, kann der Wert des **Schlüsselattributs** eine Schlüssel-ID, ein Schlüssel-ARN, ein Aliasname oder ein Alias-ARN sein. *Eine Beschreibung der AWS KMS Schlüsselkennungen finden Sie unter [Schlüsselkennungen im AWS Key Management Service Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id).* 
+ **Befehle entschlüsseln**: Beim Entschlüsseln mit AWS KMS keys erfordert der `--wrapping-keys` Parameter ein **Schlüsselattribut mit einem [Schlüssel-ARN-Wert](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN)** oder ein **Discovery-Attribut** mit einem Wert von `true` (aber nicht beide). Die Verwendung des **Schlüsselattributs** ist eine [AWS Encryption SDK bewährte](best-practices.md) Methode. Bei der Entschlüsselung mit einem benutzerdefinierten Hauptschlüsselanbieter ist das **Schlüsselattribut** erforderlich.
**Anmerkung**  
Um einen AWS KMS Wrapping-Schlüssel in einem Decrypt-Befehl anzugeben, muss der Wert des **Schlüsselattributs** ein Schlüssel-ARN sein. Wenn Sie eine Schlüssel-ID, einen Aliasnamen oder einen Alias-ARN verwenden, erkennt die AWS Encryption CLI den Wrapping-Schlüssel nicht.
Sie können mehrere **key**-Attribute in jedem `--wrapping-keys`-Parameterwert angeben. Alle **Anbieter** -, **Regions** - und **Profilattribute** in einem `--wrapping-keys` Parameter gelten jedoch für alle Schlüssel, die in diesem Parameterwert enthalten sind. Verwenden Sie mehrere `--wrapping-keys` Parameter im Befehl, um Wrapping Keys mit unterschiedlichen Attributwerten anzugeben.  
**Entdeckung**  
Ermöglicht der AWS Encryption CLI, beliebige AWS KMS key zum Entschlüsseln der Nachricht zu verwenden. Der **Erkennungswert** kann `true` oder `false` sein. Der Standardwert ist `false`. Das **Discovery-Attribut** ist nur in Entschlüsselungsbefehlen gültig und nur, wenn der Hauptschlüsselanbieter dies AWS KMS tut.   
Bei der Entschlüsselung mit AWS KMS keys erfordert der `--wrapping-keys` Parameter ein **Schlüsselattribut** oder ein **Discovery-Attribut** mit einem Wert von `true` (aber nicht beiden). Wenn Sie das **Schlüsselattribut** verwenden, können Sie ein **Erkennungsattribut** mit dem Wert von verwenden`false`, um die Erkennung explizit abzulehnen.   
+ `False`(Standard) — Wenn das **Discovery-Attribut** nicht angegeben ist oder sein Wert ist`false`, entschlüsselt die AWS Encryption CLI die Nachricht nur unter Verwendung des durch das **Schlüsselattribut** des `--wrapping-keys` Parameters AWS KMS keys angegebenen. Wenn Sie bei der Erkennung kein **Schlüsselattribut** angeben`false`, schlägt der Entschlüsselungsbefehl fehl. Dieser Wert unterstützt eine [bewährte Methode](best-practices.md) für die AWS Verschlüsselungs-CLI.
+ `True`— Wenn der Wert des **Discovery-Attributs** ist`true`, ruft die AWS Encryption CLI die AWS KMS keys From-Metadaten in der verschlüsselten Nachricht ab und verwendet diese, AWS KMS keys um die Nachricht zu entschlüsseln. Das **Discovery-Attribut** mit dem Wert von `true` verhält sich wie Versionen der AWS Encryption CLI vor Version 1.8. *x*, das es Ihnen nicht erlaubte, beim Entschlüsseln einen Wrapping-Schlüssel anzugeben. Ihre Absicht, einen zu verwenden, AWS KMS key ist jedoch ausdrücklich. Wenn Sie bei der Erkennung ein **Schlüsselattribut** angeben`true`, schlägt der Entschlüsselungsbefehl fehl. 

  Der `true` Wert kann dazu führen, dass die AWS Encryption CLI AWS KMS keys in verschiedenen AWS-Konten Regionen verwendet wird oder AWS KMS keys dass versucht wird, eine Verwendung zu verwenden, für die der Benutzer nicht autorisiert ist. 
Wenn **Discovery aktiviert** ist`true`, empfiehlt es sich, die Attribute **discovery-partition und **discovery-account**** zu verwenden, um die Verwendung auf die von Ihnen AWS KMS keys angegebenen Attribute zu beschränken. AWS-Konten   
**Discovery-Konto**  
Beschränkt die für die Entschlüsselung AWS KMS keys verwendeten Werte auf die angegebenen Werte. AWS-Konto Der einzig gültige Wert für dieses Attribut ist eine [AWS-Konto ID.](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html)  
Dieses Attribut ist optional und nur in Entschlüsselungsbefehlen gültig, bei AWS KMS keys denen das **Discovery-Attribut** auf gesetzt `true` und das **Discovery-Partition-Attribut angegeben** ist.  
Jedes **Discovery-Account-Attribut** benötigt nur eine AWS-Konto ID, aber Sie können mehrere **Discovery-Account-Attribute** in demselben Parameter angeben. `--wrapping-keys` Alle in einem bestimmten `--wrapping-keys` Parameter angegebenen Konten müssen sich in der angegebenen Partition befinden. AWS   
**Discovery-Partition**  
Gibt die AWS Partition für die Konten im Attribut **discovery-account** an. Sein Wert muss eine AWS Partition sein, z. B. `aws``aws-cn`, oder. `aws-gov-cloud` Weitere Informationen finden Sie unter [Amazon Resource Names](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax) in der *Allgemeine AWS-Referenz*.  
Dieses Attribut ist erforderlich, wenn Sie das Attribut **discovery-account** verwenden. Sie können in jedem Parameter nur ein **Discovery-Partition-Attribut** angeben. `--wrapping keys` Verwenden Sie AWS-Konten einen zusätzlichen `--wrapping-keys` Parameter, um mehrere Partitionen anzugeben.  
**provider**  
Identifiziert den [Masterschlüssel-Anbieter](concepts.md#master-key-provider). Das Format ist ein **provider**= ID-Paar. Der Standardwert **aws-kms steht** für. AWS KMS Dieses Attribut ist nur erforderlich, wenn der Hauptschlüsselanbieter dies nicht tut. AWS KMS  
**Region**  
Identifiziert den AWS-Region von einem AWS KMS key. Dieses Attribut ist nur gültig für AWS KMS keys. Es wird nur verwendet, wenn die **key**-ID keine Region angibt, andernfalls wird es ignoriert. Wenn es verwendet wird, überschreibt es die Standardregion im AWS CLI namens profile.   
**Profil**  
Identifiziert ein AWS CLI [benanntes Profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html). Dieses Attribut ist nur gültig für AWS KMS keys. Die Region im Profil wird nur verwendet, wenn die key-ID keine Region angibt und es kein **region**-Attribut im Befehl gibt. 

**--input (-i)**  
Gibt den Speicherort der zu ver- oder entschlüsselnden Daten an. Dieser Parameter muss angegeben werden. Der Wert kann ein Pfad zu einer Datei oder einem Verzeichnis oder ein Dateinamenmuster sein. Wenn Sie Eingaben an den Befehl weiterleiten (stdin), verwenden Sie `-`.  
Wenn die Eingabe nicht vorhanden ist, wird der Befehl fehlerfrei ohne Fehlermeldung oder Warnung ausgeführt.    
**--recursive (-r, -R)**  
Führt die Operation für Dateien im Eingabeverzeichnis und seinen Unterverzeichnissen aus. Dieser Parameter ist erforderlich, wenn der Wert von `--input` ein Verzeichnis ist.  
**--decode**  
Decodiert Base64-codierte Eingaben.   
Wenn Sie eine Nachricht entschlüsseln, die verschlüsselt und dann codiert wurde, müssen Sie die Nachricht decodieren, bevor Sie sie entschlüsseln. Dieser Parameter erledigt dies für Sie.   
Wenn Sie beispielsweise den `--encode`-Parameter in einem Verschlüsselungsbefehl verwendet haben, verwenden Sie den `--decode`-Parameter in dem entsprechenden Entschlüsselungsbefehl. Sie können diesen Parameter auch verwenden, um mit Base64 codierte Eingaben zu decodieren, bevor Sie sie verschlüsseln.

**--output (-o)**  
Gibt einen Zielspeicherort für die Ausgabe an. Dieser Parameter muss angegeben werden. Der Wert kann ein Dateiname oder ein vorhandenes Verzeichnis sein, oder `-` sein, womit die Ausgabe in die Befehlszeile geschrieben wird (stdout).   
Wenn das angegebene Ausgabeverzeichnis nicht vorhanden ist, schlägt der Befehl fehl. Wenn die Eingabe Unterverzeichnisse enthält, reproduziert die AWS Encryption CLI die Unterverzeichnisse unter dem von Ihnen angegebenen Ausgabeverzeichnis.   
Standardmäßig überschreibt die AWS Encryption CLI Dateien mit demselben Namen. Dieses Verhalten ändern Sie mit den Parametern `--interactive` oder `--no-overwrite`. Um die Überschreibwarnung zu unterdrücken, verwenden Sie den Parameter `--quiet`.  
Wenn ein Befehl, der eine Ausgabedatei überschreiben würde, fehlschlägt, ist die Ausgabedatei bereits gelöscht.  
**--interactive**  
Informiert Sie, bevor die Datei überschrieben wird.  
**--no-overwrite**  
Überschreibt keine Dateien. Wenn die Ausgabedatei existiert, überspringt die AWS Encryption CLI stattdessen die entsprechende Eingabe.  
**--Suffix**  
Gibt ein benutzerdefiniertes Dateinamensuffix für Dateien an, die die AWS Encryption CLI erstellt. Wenn Sie kein Suffix angeben wollen, verwenden Sie den Parameter ohne Wert (`--suffix`).  
Wenn der `--output`-Parameter keinen Dateinamen angibt, hat der Ausgabedateiname standardmäßig den gleichen Namen wie die Eingabedatei, jedoch mit dem Suffix. Das Suffix für Verschlüsselungsbefehle ist `.encrypted`. Das Suffix für Entschlüsselungsbefehle ist `.decrypted`.   
**--encode**  
Wendet die Base64-Codierung (binär in Text) auf die Ausgabe an. Die Kodierung verhindert, dass das Shell-Host-Programm Nicht-ASCII-Zeichen im Ausgabetext falsch interpretiert.  
Verwenden Sie diesen Parameter, wenn Sie eine verschlüsselte Ausgabe nach stdout (`--output -`) schreiben, insbesondere in einer PowerShell Konsole, auch wenn Sie die Ausgabe an einen anderen Befehl weiterleiten oder sie in einer Variablen speichern.

**--metadata-output**  
Gibt einen Speicherort für Metadaten über die kryptografischen Operationen an. Geben Sie einen Pfad und einen Dateinamen ein. Wenn das Verzeichnis nicht vorhanden ist, schlägt der Befehl fehl. Um die Metadaten in die Befehlszeile zu schreiben (stdout), verwenden Sie `-`.   
Sie können die Befehlsausgabe (`--output`) und Metadatenausgaben (`--metadata-output`) nicht im selben Befehl auf stdout schreiben. Auch wenn der Wert von `--input` oder `--output` ein Verzeichnis (ohne Dateinamen) ist, können Sie die Metadatenausgabe nicht in das gleiche Verzeichnis oder in ein Unterverzeichnis dieses Verzeichnisses schreiben.  
Wenn Sie eine vorhandene Datei angeben, hängt die AWS Encryption CLI standardmäßig neue Metadatensätze an jeden Inhalt der Datei an. Mit dieser Funktion können Sie eine einzige Datei erstellen, die die Metadaten für alle Ihre kryptografischen Operationen enthält. Um den Inhalt einer bestehenden Datei zu überschreiben, verwenden Sie den `--overwrite-metadata`-Parameter.  
Die AWS Encryption CLI gibt für jeden Verschlüsselungs- oder Entschlüsselungsvorgang, den der Befehl ausführt, einen JSON-formatierten Metadatensatz zurück. Jeder Metadatensatz enthält die vollständigen Pfade zur Ein- und Ausgabedatei, den Verschlüsselungskontext, das Algorithmen-Paket und andere praktische Informationen, anhand derer Sie die Operation überprüfen und sicherstellen können, ob sie Ihren Sicherheitsstandards entspricht.    
**--overwrite-metadata**  
Überschreibt den Inhalt in der Metadaten-Ausgabedatei. Standardmäßig fügt der `--metadata-output`-Parameter Metadaten an vorhandenen Inhalt der Datei an.

**--suppress-metadata (-S)**  
Unterdrückt die Metadaten über die Verschlüsselungs- oder Entschlüsselungsoperation. 

**--commitment-policy**  <a name="syntax-commitment-policy"></a>
Gibt die [Commitment-Richtlinie für Befehle](concepts.md#commitment-policy) zum Verschlüsseln und Entschlüsseln an. Die Commitment-Richtlinie bestimmt, ob Ihre Nachricht mit der Sicherheitsfunktion [Key Commitment](concepts.md#key-commitment) ver- oder entschlüsselt wird.  
Der `--commitment-policy` Parameter wurde in Version 1.8 eingeführt. *x.* Es ist gültig für Befehle zum Verschlüsseln und Entschlüsseln.  
**In Version 1.8. ***x*, die AWS Encryption CLI verwendet die `forbid-encrypt-allow-decrypt` Commitment-Richtlinie für alle Verschlüsselungs- und Entschlüsselungsvorgänge. Wenn Sie den `--wrapping-keys` Parameter in einem Verschlüsselungs- oder Entschlüsselungsbefehl verwenden, ist ein `--commitment-policy` Parameter mit dem `forbid-encrypt-allow-decrypt` Wert erforderlich. Wenn Sie den `--wrapping-keys` Parameter nicht verwenden, ist der `--commitment-policy` Parameter ungültig. Wenn Sie eine Verpflichtungsrichtlinie festlegen, wird ausdrücklich verhindert, dass sich Ihre Verpflichtungsrichtlinie automatisch ändert, `require-encrypt-require-decrypt` wenn Sie auf Version 2.1 aktualisieren. *x*  
Ab **Version 2.1. ***x*, alle Werte der Verpflichtungspolitik werden unterstützt. Der `--commitment-policy` Parameter ist optional und der Standardwert ist`require-encrypt-require-decrypt`.   
Dieser Parameter hat die folgenden Werte:  
+ `forbid-encrypt-allow-decrypt`— Mit Schlüsselzusage kann nicht verschlüsselt werden. Es kann Chiffretexte entschlüsseln, die mit oder ohne Schlüsselbindung verschlüsselt wurden. 

  In Version 1.8. *x*, das ist der einzig gültige Wert. Die AWS Encryption CLI verwendet die `forbid-encrypt-allow-decrypt` Commitment-Richtlinie für alle Verschlüsselungs- und Entschlüsselungsvorgänge. 
+ `require-encrypt-allow-decrypt`— Verschlüsselt nur mit Schlüsselzusage. Entschlüsselt mit und ohne Schlüsselbindung. Dieser Wert wurde in Version 2.1 eingeführt. *x.*
+ `require-encrypt-require-decrypt`(Standard) — Verschlüsselt und entschlüsselt nur mit Schlüsselzusage. Dieser Wert wurde in Version 2.1 eingeführt. *x.* Dies ist der Standardwert in den Versionen 2.1. *x* und später. Mit diesem Wert entschlüsselt die AWS Encryption CLI keinen Chiffretext, der mit früheren Versionen von verschlüsselt wurde. AWS Encryption SDK
Ausführliche Informationen zur Festlegung Ihrer Verpflichtungsrichtlinie finden Sie unter. [Migrieren Sie Ihre AWS Encryption SDK](migration.md)

**--encryption-context (-c)**  
Gibt einen [Verschlüsselungskontext](crypto-cli-how-to.md#crypto-cli-encryption-context) für die Operation an. Dieser Parameter ist nicht erforderlich, wird jedoch empfohlen.   
+ In einem `--encrypt` -Befehl geben Sie ein oder mehrere `name=value` Paare an. Verwenden Sie Leerzeichen, um die zu trennen.
+ Geben Sie in einem `--decrypt` Befehl `name=value` Paare, `name` Elemente ohne Werte oder beides ein.
Wenn der `name` oder `value` in einem `name=value`-Paar Leerzeichen oder Sonderzeichen enthält, schließen Sie gesamte Paar in Anführungszeichen ein. Beispiel, `--encryption-context "department=software development"`.

**--buffer (-b) [Eingeführt in Version 1.9. *x und 2.2*. *x*]**  
Gibt Klartext erst zurück, nachdem alle Eingaben verarbeitet wurden, einschließlich der Überprüfung der digitalen Signatur, falls eine vorhanden ist.

**-- max-encrypted-data-keys [Eingeführt in Version 1.9. *x* und 2.2. *x*]**  
Gibt die maximale Anzahl verschlüsselter Datenschlüssel in einer verschlüsselten Nachricht an. Dieser Parameter ist optional.   
Gültige Werte sind 1 — 65.535. Wenn Sie diesen Parameter weglassen, erzwingt die AWS Encryption CLI kein Maximum. Eine verschlüsselte Nachricht kann bis zu 65.535 (2^16 — 1) verschlüsselte Datenschlüssel enthalten.  
Sie können diesen Parameter in Verschlüsselungsbefehlen verwenden, um eine falsch formatierte Nachricht zu verhindern. Sie können ihn in Entschlüsselungsbefehlen verwenden, um bösartige Nachrichten zu erkennen und zu verhindern, dass Nachrichten mit zahlreichen verschlüsselten Datenschlüsseln, die Sie nicht entschlüsseln können, entschlüsselt werden. Einzelheiten und ein Beispiel finden Sie unter [Beschränkung verschlüsselter Datenschlüssel](configure.md#config-limit-keys).

**--help (-h)**  
Gibt Verwendung und Syntax in der Befehlszeile aus.

**--version**  
Ruft die Version der AWS Encryption CLI ab.

**-v \$1 -vv \$1 -vvv \$1 -vvvv**  
Zeigt ausführliche Informationen, Warnungen und Debugging-Nachrichten an. Die Details in der Ausgabe nehmen mit der Anzahl der `v` im Parameter zu. Die detaillierteste Einstellung (`-vvvv`) gibt Daten auf Debugging-Ebene von der AWS Encryption CLI und allen von ihr verwendeten Komponenten zurück.

**--quiet (-q)**  
Unterdrückt Warnmeldungen, z. B. die Nachricht, die angezeigt wird, wenn Sie eine Ausgabedatei überschreiben.

**--master-keys (-m) [Veraltet]**  
Der Parameter --master-keys ist in 1.8 veraltet. *x und wurde* in Version 2.1 entfernt. *x.* Verwenden Sie stattdessen den Parameter [--wrapping-keys](#wrapping-keys).
Gibt die in Ver- und Entschlüsselungsoperationen verwendeten [Masterschlüssel](concepts.md#master-key) an. Sie können in einem Befehl mehrere Masterschlüsselparameter verwenden.  
Der `--master-keys`-Parameter muss in Verschlüsselungsbefehle angegeben werden. Er ist in Entschlüsselungsbefehlen nur erforderlich, wenn Sie einen benutzerdefinierten (nicht-AWS KMS) Hauptschlüsselanbieter verwenden.  
**Attribute**: Der Wert des `--master-keys`-Parameters besteht aus den folgenden Attributen. Das Format ist `attribute_name=value`.     
**Schlüssel**  
Identifiziert den [Wrapping-Schlüssel](concepts.md#master-key), der bei dem Vorgang verwendet wurde. Das Format ist ein **key**= ID-Paar. Das **key**Attribut muss in allen Verschlüsselungsbefehlen angegeben werden.   
Wenn Sie einen Befehl AWS KMS key in an encrypt verwenden, kann der Wert des **Schlüsselattributs** eine Schlüssel-ID, ein Schlüssel-ARN, ein Aliasname oder ein Alias-ARN sein. *Einzelheiten zu AWS KMS Schlüsselkennungen finden Sie unter [Schlüsselkennungen im Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id).AWS Key Management Service *  
Das **Schlüsselattribut** ist in Entschlüsselungsbefehlen erforderlich, wenn dies beim Hauptschlüsselanbieter nicht der Fall ist. AWS KMS Das **Schlüsselattribut** ist in Befehlen nicht zulässig, die Daten entschlüsseln, die unter einem verschlüsselt wurden. AWS KMS key  
Sie können mehrere **key**-Attribute in jedem `--master-keys`-Parameterwert angeben. Die **provider**-, **region**- und **profile**-Attribute gelten jedoch für alle Masterschlüssel im Parameterwert. Um Masterschlüssel mit unterschiedlichen Attributwerten anzugeben, verwenden Sie mehrere `--master-keys`-Parameter im Befehl.   
**provider**  
Identifiziert den [Masterschlüssel-Anbieter](concepts.md#master-key-provider). Das Format ist ein **provider**= ID-Paar. Der Standardwert **aws-kms** steht für. AWS KMS Dieses Attribut ist nur erforderlich, wenn der Hauptschlüsselanbieter dies nicht tut. AWS KMS  
**Region**  
Identifiziert den AWS-Region von einem AWS KMS key. Dieses Attribut ist nur gültig für AWS KMS keys. Es wird nur verwendet, wenn die **key**-ID keine Region angibt, andernfalls wird es ignoriert. Wenn es verwendet wird, überschreibt es die Standardregion im AWS CLI namens profile.   
**Profil**  
Identifiziert ein AWS CLI [benanntes Profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html). Dieses Attribut ist nur gültig für AWS KMS keys. Die Region im Profil wird nur verwendet, wenn die key-ID keine Region angibt und es kein **region**-Attribut im Befehl gibt. 

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

**--algorithm**  
Gibt ein alternatives [Algorithmen-Paket](concepts.md#crypto-algorithm) an. Dieser Parameter ist optional und nur in Verschlüsselungsbefehlen gültig.   
Wenn Sie diesen Parameter weglassen, verwendet die AWS Encryption CLI eine der Standard-Algorithmus-Suiten für die in Version 1.8 AWS Encryption SDK eingeführte. *x.* Beide Standardalgorithmen verwenden AES-GCM mit einer [HKDF](https://en.wikipedia.org/wiki/HKDF) -, einer ECDSA-Signatur und einem 256-Bit-Verschlüsselungsschlüssel. Man verwendet Key Commitment, man nicht. Die Wahl der Standard-Algorithmus-Suite wird durch die [Commitment-Richtlinie](concepts.md#commitment-policy) für den Befehl bestimmt.  
Die Standard-Algorithmus-Suiten werden für die meisten Verschlüsselungsvorgänge empfohlen. Eine Liste gültiger Werte finden Sie unter den Werten für den `algorithm`-Parameter in [Read the Docs](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/index.html#execution).

**--frame-length**  
Erstellt die Ausgabe mit angegebenen Frame-Länge. Dieser Parameter ist optional und nur in Verschlüsselungsbefehlen gültig.   
Geben Sie einen Wert in Bytes ein. Gültige Werte sind 0 und 1 — 2^31 - 1. Ein Wert von 0 steht für Daten ohne Frame. Die Standardeinstellung ist 4096 (Byte).   
Verwenden Sie nach Möglichkeit gerahmte Daten. Das AWS Encryption SDK unterstützt Daten ohne Frames nur für die Verwendung in älteren Versionen. Einige Sprachimplementierungen von AWS Encryption SDK können immer noch nicht gerahmten Chiffretext generieren. Alle unterstützten Sprachimplementierungen können gerahmten und ungerahmten Chiffretext entschlüsseln.

**--max-length**  
Gibt die maximale Frame-Größe (oder die maximale Inhaltslänge für Nachrichten ohne Frame) in Bytes an, die aus verschlüsselten Nachrichten gelesen werden. Dieser Parameter ist optional und nur in Entschlüsselungsbefehlen gültig. Es wurde entwickelt, um Sie vor der Entschlüsselung extrem großer bösartiger Verschlüsselungstexte zu schützen.   
Geben Sie einen Wert in Bytes ein. Wenn Sie diesen Parameter weglassen, wird die Framegröße beim AWS Encryption SDK Entschlüsseln nicht begrenzt.

**--caching**  
Aktiviert das [Datenschlüssel-Caching](data-key-caching.md), womit Datenschlüssel wiederverwendet werden können, statt für jede Eingabedatei einen neuen Datenschüssel zu generieren. Dieser Parameter unterstützt ein erweitertes Szenario. Lesen Sie unbedingt die Dokumentation zum [Datenschlüssel-Caching](data-key-caching.md), bevor Sie diese Funktion verwenden.   
Der `--caching`-Parameter hat die folgenden Attribute.    
**capacity (erforderlich)**  
Legt die maximale Anzahl der Einträge im Cache fest.   
Der minimale Wert beträgt 1. Es gibt keinen Höchstwert.  
**max\$1age (erforderlich)**  
Ermitteln Sie, wie lange Cache-Einträge in Sekunden verwendet werden, und zwar ab dem Zeitpunkt, zu dem sie dem Cache hinzugefügt werden.  
Geben Sie einen Wert größer als 0 ein. Es gibt keinen Höchstwert.  
**max\$1messages\$1encrypted (optional)**  
Legt die maximale Anzahl der Nachrichten fest, die ein im Cache befindlicher Eintrag verschlüsseln kann.   
Gültige Werte sind 1 — 2^32. Der Standardwert ist 2^32 (Nachrichten).  
**max\$1bytes\$1encrypted (optional)**  
Legt die maximale Anzahl der Bytes fest, die ein im Cache befindlicher Eintrag verschlüsseln kann.  
Gültige Werte sind 0 und 1 — 2^63 - 1. Der Standardwert ist 2^63 - 1 (Nachrichten). Bei einem Wert von 0 können Sie Datenschlüssel-Caching nur verwenden, wenn Sie leere Nachrichtenzeichenfolgen verschlüsseln.

# Versionen der AWS Encryption CLI
<a name="crypto-cli-versions"></a>

Wir empfehlen, die neueste Version der AWS Encryption CLI zu verwenden.

**Anmerkung**  
Versionen der AWS Encryption CLI vor 4.0.0 befinden sich in der [end-of-supportPhase](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle).  
Sie können problemlos von Version 2.1 aus aktualisieren. *x* und höher auf die neueste Version der AWS Encryption CLI ohne Code- oder Datenänderungen. In Version 2.1 wurden jedoch [neue Sicherheitsfunktionen](about-versions.md#version-2) eingeführt. *x* sind nicht abwärtskompatibel. Um von Version 1.7 zu aktualisieren. *x* oder früher, Sie müssen zuerst auf die neueste Version 1 aktualisieren. *x-Version* der AWS Encryption CLI. Details hierzu finden Sie unter [Migrieren Sie Ihre AWS Encryption SDK](migration.md).  
Neue Sicherheitsfunktionen wurden ursprünglich in den AWS Encryption CLI Versionen 1.7 veröffentlicht. *x* und 2.0. *x.* Allerdings AWS Encryption CLI Version 1.8. *x* ersetzt Version 1.7. *x* und AWS Encryption CLI 2.1. *x* ersetzt 2.0. *x.* Einzelheiten finden Sie in der entsprechenden [Sicherheitsempfehlung](https://github.com/aws/aws-encryption-sdk-cli/security/advisories/GHSA-2xwp-m7mq-7q3r) im [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)Repository unter GitHub.

Hinweise zu wichtigen Versionen von finden Sie unter[Versionen von AWS Encryption SDK](about-versions.md). AWS Encryption SDK

**Welche Version verwende ich?**

Wenn Sie mit der AWS Encryption CLI noch nicht vertraut sind, verwenden Sie die neueste Version.

Um Daten zu entschlüsseln, die mit einer Version AWS Encryption SDK vor Version 1.7 verschlüsselt wurden. *x*, migrieren Sie zuerst auf die neueste Version der AWS Encryption CLI. Nehmen Sie [alle empfohlenen Änderungen](migration-guide.md) vor, bevor Sie auf Version 2.1 aktualisieren. *x* oder später. Details hierzu finden Sie unter [Migrieren Sie Ihre AWS Encryption SDK](migration.md).

**Weitere Informationen**
+ Ausführliche Informationen zu den Änderungen und Anleitungen für die Migration zu diesen neuen Versionen finden Sie unter[Migrieren Sie Ihre AWS Encryption SDK](migration.md).
+ Eine Beschreibung der neuen AWS Encryption CLI-Parameter und -Attribute finden Sie unter[AWS Encryption SDK CLI Syntax und Parameterreferenz](crypto-cli-reference.md).

In den folgenden Listen werden die Änderungen an der AWS Encryption CLI in Version 1.8 beschrieben. *x* und 2.1. *x.*

## Ausführung 1.8. *x* Änderungen an der AWS Encryption CLI
<a name="cli-changes-1.7"></a>
+ Verwirft den Parameter. `--master-keys` Verwenden Sie stattdessen den `--wrapping-keys`-Parameter.
+ Fügt den Parameter `--wrapping-keys` () `-w` hinzu. Er unterstützt alle Attribute des `--master-keys` Parameters. Außerdem werden die folgenden optionalen Attribute hinzugefügt, die nur beim Entschlüsseln mit AWS KMS keys gültig sind.
  + **Entdeckung**
  + **Discovery-Partition**
  + **Discovery-Konto**

  Für benutzerdefinierte Hauptschlüsselanbieter benötigen `-decrypt` Befehle `--encrypt` und - entweder einen `--wrapping-keys` Parameter oder einen `--master-keys` Parameter (aber nicht beide). Außerdem AWS KMS keys erfordert ein `--encrypt` Befehl mit entweder einen `--wrapping-keys` Parameter oder einen `--master-keys` Parameter (aber nicht beides). 

  In einem `--decrypt` Befehl mit AWS KMS keys ist der `--wrapping-keys` Parameter optional, wird aber empfohlen, da er in Version 2.1 erforderlich ist. *x.* **Wenn Sie es verwenden, müssen Sie entweder das identifizierende Attribut oder das **Discovery-Attribut** mit einem Wert von `true` (aber nicht beide) angeben.**
+ Fügt den `--commitment-policy` Parameter hinzu. Der einzige gültige Wert ist `forbid-encrypt-allow-decrypt`. Die `forbid-encrypt-allow-decrypt` Commitment-Richtlinie wird in allen Befehlen zum Verschlüsseln und Entschlüsseln verwendet.

  In Version 1.8. *x*, wenn Sie den `--wrapping-keys` Parameter verwenden, ist ein `--commitment-policy` Parameter mit dem `forbid-encrypt-allow-decrypt` Wert erforderlich. Wenn Sie den Wert explizit festlegen, wird verhindert, dass Ihre [Verpflichtungsrichtlinie](concepts.md#commitment-policy) automatisch geändert wird, `require-encrypt-require-decrypt` wenn Sie auf Version 2.1 aktualisieren. *x.*

## Ausführung 2.1. *x* Änderungen an der AWS Encryption CLI
<a name="cli-changes-2.x"></a>
+ Entfernt den `--master-keys` Parameter. Verwenden Sie stattdessen den `--wrapping-keys`-Parameter.
+ Der `--wrapping-keys` Parameter ist in allen Befehlen zum Verschlüsseln und Entschlüsseln erforderlich. Sie müssen entweder ein **Schlüsselattribut** oder ein **Erkennungsattribut** mit dem Wert `true` (aber nicht beide) angeben.
+ Der `--commitment-policy` Parameter unterstützt die folgenden Werte. Details hierzu finden Sie unter [Festlegung Ihrer Verpflichtungspolitik](migrate-commitment-policy.md).
  + `forbid-encrypt-allow-decrypt`
  + `require-encrypt-allow-decrypt`
  + `require-encrypt-require decrypt` (Standard)
+ Der `--commitment-policy` Parameter ist in Version 2.1 optional. *x.* Der Standardwert ist `require-encrypt-require-decrypt`.

## Ausführung 1.9. *x* und 2.2. *x* Änderungen an der AWS Encryption CLI
<a name="cli-changes-2.2"></a>
+ Fügt den `--decrypt-unsigned` Parameter hinzu. Details hierzu finden Sie unter [Version 2.2. *x*](about-versions.md#version2.2.x).
+ Fügt den `--buffer` Parameter hinzu. Details hierzu finden Sie unter [Version 2.2. *x*](about-versions.md#version2.2.x).
+ Fügt den `--max-encrypted-data-keys` Parameter hinzu. Details hierzu finden Sie unter [Beschränkung verschlüsselter Datenschlüssel](configure.md#config-limit-keys).

## Version 3.0. *x* Änderungen an der AWS Encryption CLI
<a name="cli-changes-v3"></a>
+ Fügt Unterstützung für Schlüssel AWS KMS mit mehreren Regionen hinzu. Details hierzu finden Sie unter [Verwenden Sie mehrere Regionen AWS KMS keys](configure.md#config-mrks).