So verwenden Sie die AWS Encryption CLI - AWS Encryption SDK

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.

So verwenden Sie die AWS Encryption CLI

In diesem Thema wird erklärt, wie die Parameter in der AWS Encryption CLI verwendet werden. Beispiele finden Sie unter Beispiele für dieAWSCLI für Verschlüsselung. Eine vollständige Dokumentation finden Sie in Read the Docs. Die in diesen Beispielen gezeigte Syntax bezieht sich auf AWS Encryption CLI Version 2.1. x und später.

Anmerkung

Versionen der AWS Encryption CLI vor 4.0.0 befinden sich in der E-Phase. nd-of-support

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 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 Verschlüsselungs-CLI. Details hierzu finden Sie unter Migrieren Sie IhreAWS Encryption SDK.

Neue Sicherheitsfunktionen wurden ursprünglich in den Versionen 1.7 der AWS Encryption CLI veröffentlicht. x und 2.0. x. Allerdings AWS Encryption CLI Version 1.8. x ersetzt Version 1.7. x und AWS Verschlüsselungs-CLI 2.1. x ersetzt 2.0. x. Einzelheiten finden Sie in der entsprechenden Sicherheitsempfehlung im aws-encryption-sdk-cliRepository unterGitHub.

Ein Beispiel, das zeigt, wie die Sicherheitsfunktion verwendet wird, die verschlüsselte Datenschlüssel einschränkt, finden Sie unterBeschränkung verschlüsselter Datenschlüssel.

Ein Beispiel für die Verwendung von Schlüsseln AWS KMS mit mehreren Regionen finden Sie unterVerwenden Sie mehrere Regionen AWS KMS keys.

Daten verschlüsseln und entschlüsseln

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

  • Wenn Sie Daten in der AWS Encryption CLI verschlüsseln, geben Sie Ihre Klartextdaten und einen Wrapping-Schlüssel (oder Masterschlüssel) anAWS KMS key, z. B. 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 und für Metadaten über die Verschlüsselungsoperation an. Ein Verschlüsselungskontext 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 es den Datenschlüssel unter den von Ihnen angegebenen Wrapping-Schlüsseln. Sie gibt eine verschlüsselte Nachricht 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 Wickelschlü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, mit denen die Nachricht verschlüsselt wurde.

    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 Wrapping-Schlüssels beim Entschlüsseln ist optional, aber es ist eine bewährte Methode, die verhindert, dass Sie einen Schlüssel verwenden, den Sie nicht verwenden wollten. 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 des --wrapping-keys Parameters auf festlegentrue, sodass die AWS Encryption-CLI die Entschlüsselung mithilfe eines beliebigen Wrapping-Schlüssels, der die Nachricht verschlüsselt hat, ermöglicht.

    Es hat sich bewährt, den --max-encrypted-data-keys Parameter zu verwenden, um zu vermeiden, dass eine falsch formatierte Nachricht mit einer übermäßigen Anzahl von verschlüsselten Datenschlüsseln entschlüsselt wird. Geben Sie die erwartete Anzahl verschlüsselter Datenschlüssel (einer für jeden bei der Verschlüsselung verwendeten Wrapping-Schlüssel) oder ein angemessenes Maximum (z. B. 5) an. Details hierzu finden Sie unter Beschränkung verschlüsselter Datenschlüssel.

    Der --buffer Parameter gibt Klartext erst zurück, nachdem 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 nicht signiert 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 Verschlüsselungs-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.

So spezifizieren Sie Wrapping-Schlüssel

Wenn Sie Daten in der AWS Encryption CLI verschlüsseln, müssen Sie mindestens einen Wrapping-Schlüssel (oder Masterschlüssel) angeben. Sie können AWS KMS keys in AWS Key Management Service (AWS KMS), Wrapping-Schlüssel von einem benutzerdefinierten Hauptschlüsselanbieter oder beides verwenden. Der Kundenmasterschlüssel-Anbieter kann ein beliebiger kompatibler Python-Masterschlüssel-Anbieter sein.

Um Wrapping-Schlüssel in den Versionen 1.8 zu spezifizieren. x und später verwenden Sie den --wrapping-keys Parameter (-w). Der Wert dieses Parameters ist eine Sammlung von Attributen 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 in Entschlüsselungsbefehlen erforderlich. Beim Entschlüsseln muss der --wrapping-keys Parameter ein Schlüsselattribut oder ein Discovery-Attribut mit einem Wert von true (aber nicht beides) 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 und mehrere Schlüsselattribute in denselben Befehl einschließen.

Umschließen wichtiger Parameterattribute

Der Wert des --wrapping-keys-Parameters besteht aus den folgenden Attributen und ihren Werten. In allen Verschlüsselungsbefehlen ist ein --wrapping-keys --master-keys Parameter (oder Parameter) 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. Zum Beispiel --wrapping-keys key=12345 "provider=my cool provider".

Schlüssel: Geben Sie einen Umhüllungsschlüssel an

Verwenden Sie das Schlüsselattribut, um einen Verpackungsschlüssel zu identifizieren. Bei der Verschlüsselung kann der Wert ein beliebiger Schlüsselbezeichner sein, 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 Wert angeben. Verwenden Sie mehrere Schlüsselattribute, um Ihren Datenschlüssel unter mehreren Umhüllungsschlüsseln zu verschlüsseln.

aws-encryption-cli --encrypt --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab key=1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

In Verschlüsselungsbefehlen, die verwendet werdenAWS KMS keys, kann der Wert des Schlüssels die Schlüssel-ID, sein 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üsselkennungen für eine AWS KMS key finden Sie unter Schlüsselkennungen im AWS Key Management ServiceEntwicklerhandbuch.

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 Entschlüsselungsbefehlen, die verwendet werdenAWS KMS, können Sie das Schlüsselattribut verwenden, um das für die Entschlüsselung AWS KMS keys zu verwendende Attribut anzugeben, oder das Discovery-Attribut mit einem Wert vontrue, sodass die Encryption-CLI jedes Attribut verwenden kann, AWS KMS key das zum AWS Verschlüsseln der Nachricht verwendet wurde. Wenn Sie einen angebenAWS KMS key, muss es sich um einen der Verpackungsschlüssel handeln, die zum Verschlüsseln der Nachricht verwendet wurden.

Die Angabe des Wrapping-Schlüssels hat sich AWS Encryption SDKbewährt. Es stellt sicher, dass Sie das verwenden, AWS KMS key was Sie verwenden möchten.

In einem Entschlüsselungsbefehl muss der Wert des Schlüsselattributs ein Schlüssel-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
Entdeckung: Verwenden Sie AWS KMS key beim Entschlüsseln eine beliebige

Wenn Sie die AWS KMS keys Verwendung beim Entschlüsseln nicht einschränken müssen, können Sie das Discovery-Attribut mit einem Wert von true verwenden. Ein Wert von true ermöglicht es der AWS Encryption CLI, sie mit einem beliebigen Code 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 einem Wert von true ist eine Alternative zur Verwendung des Schlüsselattributs zur AngabeAWS KMS keys. Beim Entschlüsseln einer mit AWS KMS keys verschlüsselten Nachricht muss jeder --wrapping-keys Parameter ein Schlüsselattribut oder ein Discovery-Attribut mit einem Wert von habentrue, aber nicht beide.

Wenn die Erkennung wahr ist, empfiehlt es sich, die Attribute discovery-partition und discovery-account zu verwenden, um die AWS KMS keys verwendeten Attribute 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 AWS-Konten Attribute zu verwenden.

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. 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 für das AWSEncryption CLI-Repository.

Region: Geben Sie eine an AWS-Region

Verwenden Sie das regionsattribut, um das AWS-Region von einem anzugebenAWS 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

AWSCLI-Befehle für Verschlüsselung verwenden den WertAWS-Region, der im Schlüsselattributwert angegeben ist, wenn er eine Region enthält, z. B. einen ARN. Wenn der Schlüsselwert a angibtAWS-Region, wird das Regionsattribut ignoriert.

Das region-Attribut hat Vorrang vor allen anderen Regionsangaben. Wenn Sie kein Regionsattribut verwenden, verwenden AWS Encryption CLI-Befehle das in Ihrem AWS CLI benannten Profil, falls vorhanden, AWS-Region angegebene oder Ihr Standardprofil.

Profil: Angabe eines benannten Profils

Verwenden Sie das Profilattribut, um ein AWS CLI benanntes Profil anzugeben. Benannte Profile können Anmeldeinformationen und eine enthaltenAWS-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 es kein Regionsattribut gibt. In einem Entschlüsselungsbefehl wird das AWS-Region im Namen angegebene Profil ignoriert.

So geben Sie mehrere Wrapping-Schlüssel an

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

Wenn Sie mehr als einen Verpackungsschlüssel angeben, generiert und verschlüsselt der erste Verpackungsschlüssel den Datenschlüssel, der zum Verschlüsseln Ihrer Daten verwendet wird. Die anderen Wickelschlüssel verschlüsseln denselben Datenschlüssel. Die resultierende verschlüsselte Nachricht enthält die verschlüsselten Daten („Ciphertext“) und eine Sammlung von verschlüsselten Datenschlüsseln, von denen einer mit jedem Wrapping-Schlüssel verschlüsselt wird. Jedes Wrapping kann einen verschlüsselten Datenschlüssel entschlüsseln und dann die Daten entschlüsseln.

Es gibt zwei Möglichkeiten, mehrere Umhüllungsschlüssel anzugeben:

  • Fügen 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 Umbruchschlü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 dem Wert von true ermöglicht es der AWS Encryption CLIAWS KMS key, jedes zu verwenden, das die Nachricht verschlüsselt hat. Wenn Sie mehrere --wrapping-keys Parameter in demselben Befehl verwenden, überschreibt die Verwendung discovery=true in einem beliebigen --wrapping-keys Parameter effektiv die Grenzen des Schlüsselattributs in anderen --wrapping-keys Parametern.

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

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

Der Verschlüsselungsvorgang in der AWS Encryption CLI verwendet Klartextdaten als Eingabe und gibt eine verschlüsselte 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 die Eingabe zu finden ist, 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

Der --output Parameter teilt der AWS Encryption CLI mit, wo 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 in der Operation eine neue Ausgabedatei.

Wenn bereits eine Ausgabedatei existiert, gibt die AWS Verschlüsselungs-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 von der AWS Encryption CLI zu erfassen, verwenden Sie den 2>&1 Umleitungsoperator, um sie in den Ausgabestream 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 das Ausgabeverzeichnis ein Verzeichnis (ohne Dateinamen) ist, erstellt die AWS Verschlüsselungs-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

Mit der AWS Encryption CLI können Sie einen Verschlüsselungskontext für Verschlüsselungs- und Entschlüsselungsbefehle 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 hinzugefügt werden, sind kryptographisch an die verschlüsselten Daten gebunden. Er ist außerdem (in Klartext) in der verschlüsselten Nachricht enthalten, die den Befehl zurückgibt. Wenn Sie eine verwendenAWS KMS key, wird der Verschlüsselungskontext möglicherweise auch im Klartext in Prüfprotokollen und -protokollen angezeigt, z. B. AWS CloudTrail

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. Wenn Sie dies jedoch tun, überprüft die AWS Encryption CLI, ob jedes Element im Verschlüsselungskontext des Entschlüsselungsbefehls 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 ...

So spezifizieren Sie eine Verpflichtungspolitik

Verwenden Sie den --commitment-policyParameter, um die Commitment-Richtlinie 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 Commitment-Richtlinie gilt nur für den Befehl, in dem sie erscheint. Wenn Sie keine Commitment-Richtlinie für einen Befehl festlegen, verwendet die AWS Verschlüsselungs-CLI den Standardwert.

Mit dem folgenden Parameterwert wird beispielsweise die Commitment-Richtlinie auf festgelegtrequire-encrypt-allow-decrypt, die immer mit Schlüsselzusage verschlüsselt, aber einen Chiffretext entschlüsselt, der mit oder ohne Schlüsselzusage verschlüsselt wurde.

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

Parameter in einer Konfigurationsdatei speichern

Sie können Zeit sparen und Tippfehler vermeiden, indem Sie häufig verwendete AWS Verschlüsselungs-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 Beispielkonfigurationsdateikey.conf, spezifiziert zwei AWS KMS keys in verschiedenen Regionen.

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

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. Benutze keinen Backtick, um dem @ Schild zu entkommen, auch nicht inPowerShell.

  • 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

Als Nächstes: Probieren Sie die Beispiele für die AWS Verschlüsselungs-CLI aus