Aktualisierung der AWS KMS Hauptschlüsselanbieter - 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.

Aktualisierung der AWS KMS Hauptschlüsselanbieter

Um auf die neueste Version zu migrieren 1. x-Version von AWS Encryption SDK und dann auf Version 2.0. x oder höher, Sie müssen ältere AWS KMS Hauptschlüsselanbieter durch Hauptschlüsselanbieter ersetzen, die explizit im strikten Modus oder Discovery-Modus erstellt wurden. Ältere Hauptschlüsselanbieter sind in Version 1.7 veraltet. x und wurde in Version 2.0 entfernt. x. Diese Änderung ist für Anwendungen und Skripts erforderlich, die die AWS-Verschlüsselungs-SDK for JavaAWS-Verschlüsselungs-SDK for Python, und die AWS Encryption CLI verwenden. Die Beispiele in diesem Abschnitt zeigen Ihnen, wie Sie Ihren Code aktualisieren.

Anmerkung

Schalten Sie in Python Verfallswarnungen ein. Auf diese Weise können Sie die Teile Ihres Codes identifizieren, die Sie aktualisieren müssen.

Wenn Sie einen AWS KMS Hauptschlüssel (keinen Hauptschlüsselanbieter) verwenden, können Sie diesen Schritt überspringen. AWS KMS Hauptschlüssel sind nicht veraltet oder wurden nicht entfernt. Sie verschlüsseln und entschlüsseln nur mit den von Ihnen angegebenen Wrapping-Schlüsseln.

Die Beispiele in diesem Abschnitt konzentrieren sich auf die Elemente Ihres Codes, die Sie ändern müssen. Ein vollständiges Beispiel für den aktualisierten Code finden Sie im Abschnitt Beispiele des GitHub Repositorys für Ihre Programmiersprache. Außerdem verwenden diese Beispiele in der Regel Schlüssel ARNs zur Darstellung AWS KMS keys. Wenn Sie einen Hauptschlüsselanbieter für die Verschlüsselung erstellen, können Sie einen beliebigen gültigen AWS KMS Schlüsselbezeichner verwenden, um einen AWS KMS key darzustellen. Wenn Sie einen Hauptschlüsselanbieter für die Entschlüsselung erstellen, müssen Sie einen Schlüssel-ARN verwenden.

Erfahren Sie mehr über Migration

Informationen zur Einrichtung Ihrer Verpflichtungsrichtlinie finden Sie für alle AWS Encryption SDK Benutzer unterFestlegung Ihrer Verpflichtungspolitik.

Für AWS-Verschlüsselungs-SDK for JavaScript Benutzer AWS-Verschlüsselungs-SDK for C und Benutzer finden Sie weitere Informationen zu einem optionalen Update für Schlüsselanhänger inAWS KMS Schlüsselanhänger aktualisieren.

Umstellung auf den strikten Modus

Nach dem Update auf die neueste Version 1. x-Version von AWS Encryption SDK, ersetzen Sie Ihre alten Hauptschlüsselanbieter durch Hauptschlüsselanbieter im strikten Modus. Im strikten Modus müssen Sie die Wrapping-Schlüssel angeben, die beim Verschlüsseln und Entschlüsseln verwendet werden sollen. Der AWS Encryption SDK verwendet nur die von Ihnen angegebenen Wrapping-Schlüssel. Veraltete Hauptschlüsselanbieter können Daten mit jedem entschlüsseln AWS KMS key , der einen Datenschlüssel verschlüsselt hat, auch AWS KMS keys in verschiedenen AWS-Konten Regionen.

Master-Key-Anbieter im strikten Modus wurden in Version 1.7 eingeführt. AWS Encryption SDK x. Sie ersetzen ältere Master-Key-Anbieter, die in 1.7 veraltet sind. x und in 2.0 entfernt. x. Die Verwendung von Master-Key-Anbietern im strikten Modus ist eine AWS Encryption SDK bewährte Methode.

Der folgende Code erstellt einen Hauptschlüsselanbieter im strikten Modus, den Sie zum Verschlüsseln und Entschlüsseln verwenden können.

Java

Dieses Beispiel stellt Code in einer Anwendung dar, die die Version 1.6.2 oder früher von verwendet. AWS-Verschlüsselungs-SDK for Java

In diesem Code wird die KmsMasterKeyProvider.builder() Methode verwendet, um einen AWS KMS Hauptschlüsselanbieter zu instanziieren, der einen AWS KMS key als Umschließungsschlüssel verwendet.

// Create a master key provider // Replace the example key ARN with a valid one String awsKmsKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; KmsMasterKeyProvider masterKeyProvider = KmsMasterKeyProvider.builder() .withKeysForEncryption(awsKmsKey) .build();

Dieses Beispiel stellt Code in einer Anwendung dar, die Version 1.7 verwendet. x oder höher von AWS-Verschlüsselungs-SDK for Java . Ein vollständiges Beispiel finden Sie unter BasicEncryptionExample.java.

Die im vorherigen Beispiel verwendeten Builder.withKeysForEncryption() Methoden Builder.build() und sind in Version 1.7 veraltet. x und wurden aus Version 2.0 entfernt. x.

Um auf einen Master-Key-Anbieter im strikten Modus zu aktualisieren, ersetzt dieser Code Aufrufe veralteter Methoden durch einen Aufruf der neuen Builder.buildStrict() Methode. In diesem Beispiel wird eine AWS KMS key als Schlüssel für den Zeilenumbruch angegeben, aber die Builder.buildStrict() Methode kann auch eine Liste mit mehreren verwenden. AWS KMS keys

// Create a master key provider in strict mode // Replace the example key ARN with a valid one from your AWS-Konto. String awsKmsKey = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; KmsMasterKeyProvider masterKeyProvider = KmsMasterKeyProvider.builder() .buildStrict(awsKmsKey);
Python

Dieses Beispiel stellt Code in einer Anwendung dar, die Version 1.4.1 von verwendet. AWS-Verschlüsselungs-SDK for Python Dieser Code verwendetKMSMasterKeyProvider, was in Version 1.7 veraltet ist. x und wurde aus Version 2.0 entfernt. x. Bei der Entschlüsselung wird jeder verwendet, der einen Datenschlüssel verschlüsselt hat AWS KMS key , unabhängig von dem, was AWS KMS keys Sie angeben.

Beachten Sie, dass dies nicht veraltet KMSMasterKey ist oder entfernt wurde. Beim Verschlüsseln und Entschlüsseln werden nur die von Ihnen angegebenen verwendet. AWS KMS key

# Create a master key provider # Replace the example key ARN with a valid one key_1 = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" key_2 = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" aws_kms_master_key_provider = KMSMasterKeyProvider( key_ids=[key_1, key_2] )

Dieses Beispiel stellt Code in einer Anwendung dar, die Version 1.7 verwendet. x von AWS-Verschlüsselungs-SDK for Python. Ein vollständiges Beispiel finden Sie unter basic_encryption.py.

Um auf einen Master-Key-Anbieter im strikten Modus zu aktualisieren, ersetzt dieser Code den Aufruf von KMSMasterKeyProvider() durch einen Aufruf vonStrictAwsKmsMasterKeyProvider().

# Create a master key provider in strict mode # Replace the example key ARNs with valid values from your AWS-Konto key_1 = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" key_2 = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" aws_kms_master_key_provider = StrictAwsKmsMasterKeyProvider( key_ids=[key_1, key_2] )
AWS Encryption CLI

Dieses Beispiel zeigt, wie mit der AWS Encryption CLI Version 1.1.7 oder früher ver- und entschlüsselt wird.

In Version 1.1.7 und früher geben Sie beim Verschlüsseln einen oder mehrere Hauptschlüssel (oder Wrapping-Schlüssel) an, z. B. einen. AWS KMS key Beim Entschlüsseln können Sie keine Umschließungsschlüssel angeben, es sei denn, Sie verwenden einen benutzerdefinierten Hauptschlüsselanbieter. Die AWS Encryption CLI kann jeden Wrapping-Schlüssel verwenden, der einen Datenschlüssel verschlüsselt hat.

\\ Replace the example key ARN with a valid one $ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \\ Encrypt your plaintext data $ aws-encryption-cli --encrypt \ --input hello.txt \ --master-keys key=$keyArn \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --output . \\ Decrypt your ciphertext $ aws-encryption-cli --decrypt \ --input hello.txt.encrypted \ --encryption-context purpose=test \ --metadata-output ~/metadata \ --output .

Dieses Beispiel zeigt, wie mit der AWS Encryption CLI Version 1.7 ver- und entschlüsselt wird. x oder höher. Vollständige Beispiele finden Sie unterBeispiele für die AWS Encryption CLI.

Der --master-keys Parameter ist in Version 1.7 veraltet. x und wurde in Version 2.0 entfernt. x. Er wurde durch den --wrapping-keys Parameter by ersetzt, der für Befehle zum Verschlüsseln und Entschlüsseln erforderlich ist. Dieser Parameter unterstützt den strikten Modus und den Erkennungsmodus. Der strikte Modus ist eine AWS Encryption SDK bewährte Methode, mit der sichergestellt wird, dass Sie den gewünschten Umbruchschlüssel verwenden.

Um auf den strikten Modus umzusteigen, verwenden Sie das Schlüsselattribut des --wrapping-keys Parameters, um beim Verschlüsseln und Entschlüsseln einen Umschließungsschlüssel anzugeben.

\\ Replace the example key ARN with a valid value $ keyArn=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \\ Encrypt your plaintext data $ aws-encryption-cli --encrypt \ --input hello.txt \ --wrapping-keys key=$keyArn \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --output . \\ Decrypt your ciphertext $ aws-encryption-cli --decrypt \ --input hello.txt.encrypted \ --wrapping-keys key=$keyArn \ --encryption-context purpose=test \ --metadata-output ~/metadata \ --output .

In den Discovery-Modus migrieren

Ab Version 1.7. x, es hat sich bewährt AWS Encryption SDK , den strikten Modus für AWS KMS Hauptschlüsselanbieter zu verwenden, d. h., beim Verschlüsseln und Entschlüsseln anzugeben, dass Schlüssel eingeschlossen werden. Sie müssen beim Verschlüsseln immer Wrapping-Schlüssel angeben. Es gibt jedoch Situationen, in denen die Angabe ARNs des Schlüssels AWS KMS keys für die Entschlüsselung nicht praktikabel ist. Wenn Sie beispielsweise AWS KMS keys beim Verschlüsseln Aliase zur Identifizierung verwenden, verlieren Sie den Vorteil von Aliasen, wenn Sie beim Entschlüsseln den Schlüssel angeben müssen. ARNs Da sich Hauptschlüsselanbieter im Erkennungsmodus wie die ursprünglichen Hauptschlüsselanbieter verhalten, können Sie sie außerdem vorübergehend als Teil Ihrer Migrationsstrategie verwenden und später im strikten Modus auf Hauptschlüsselanbieter umsteigen.

In solchen Fällen können Sie Hauptschlüsselanbieter im Erkennungsmodus verwenden. Bei diesen Hauptschlüsselanbietern können Sie keine Schlüssel angeben, sodass Sie sie nicht zum Verschlüsseln verwenden können. Bei der Entschlüsselung können sie jeden beliebigen Umschließungsschlüssel verwenden, mit dem ein Datenschlüssel verschlüsselt wurde. Im Gegensatz zu älteren Hauptschlüsselanbietern, die sich genauso verhalten, werden sie jedoch explizit im Discovery-Modus erstellt. Wenn Sie Master-Key-Anbieter im Discovery-Modus verwenden, können Sie die Anzahl der Wrapping-Schlüssel, die verwendet werden können, auf bestimmte Schlüssel beschränken AWS-Konten. Dieser Erkennungsfilter ist optional, aber es handelt sich um eine bewährte Methode, die wir empfehlen. Informationen zu AWS Partitionen und Konten finden Sie unter Amazon Resource Names in der Allgemeine AWS-Referenz.

In den folgenden Beispielen werden ein AWS KMS Master-Key-Provider im Strict-Modus für die Verschlüsselung und ein AWS KMS Master-Key-Provider im Discovery-Modus für die Entschlüsselung erstellt. Der Hauptschlüsselanbieter im Erkennungsmodus verwendet einen Erkennungsfilter, um die für die Entschlüsselung verwendeten Schlüssel auf die aws Partition und auf ein bestimmtes Beispiel zu beschränken. AWS-Konten Obwohl der Kontofilter in diesem sehr einfachen Beispiel nicht erforderlich ist, ist er eine bewährte Methode, die sehr nützlich ist, wenn eine Anwendung Daten verschlüsselt und eine andere Anwendung die Daten entschlüsselt.

Java

Dieses Beispiel stellt Code in einer Anwendung dar, die Version 1.7 verwendet. x oder höher von AWS-Verschlüsselungs-SDK for Java. Ein vollständiges Beispiel finden Sie unter DiscoveryDecryptionExample.java.

Um einen Hauptschlüsselanbieter im strikten Modus für die Verschlüsselung zu instanziieren, verwendet dieses Beispiel die Methode. Builder.buildStrict() Um einen Hauptschlüsselanbieter im Discovery-Modus für die Entschlüsselung zu instanziieren, wird die Methode verwendet. Builder.buildDiscovery() Die Builder.buildDiscovery() Methode verwendet eine, DiscoveryFilter die den Wert AWS Encryption SDK auf AWS KMS keys in der angegebenen AWS Partition und den angegebenen Konten begrenzt.

// Create a master key provider in strict mode for encrypting // Replace the example alias ARN with a valid one from your AWS-Konto. String awsKmsKey = "arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias"; KmsMasterKeyProvider encryptingKeyProvider = KmsMasterKeyProvider.builder() .buildStrict(awsKmsKey); // Create a master key provider in discovery mode for decrypting // Replace the example account IDs with valid values. DiscoveryFilter accounts = new DiscoveryFilter("aws", Arrays.asList("111122223333", "444455556666")); KmsMasterKeyProvider decryptingKeyProvider = KmsMasterKeyProvider.builder() .buildDiscovery(accounts);
Python

Dieses Beispiel stellt Code in einer Anwendung dar, die Version 1.7 verwendet. x oder höher von AWS-Verschlüsselungs-SDK for Python . Ein vollständiges Beispiel finden Sie unter discovery_kms_provider.py.

Um einen Hauptschlüsselanbieter im strikten Modus für die Verschlüsselung zu erstellen, verwendet StrictAwsKmsMasterKeyProvider dieses Beispiel. Um einen Hauptschlüsselanbieter im Discovery-Modus für die Entschlüsselung zu erstellen, wird DiscoveryAwsKmsMasterKeyProvider with a verwendet, DiscoveryFilter das den Wert AWS Encryption SDK auf AWS KMS keys in der angegebenen AWS Partition und den angegebenen Konten begrenzt.

# Create a master key provider in strict mode # Replace the example key ARN and alias ARNs with valid values from your AWS-Konto. key_1 = "arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias" key_2 = "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" aws_kms_master_key_provider = StrictAwsKmsMasterKeyProvider( key_ids=[key_1, key_2] ) # Create a master key provider in discovery mode for decrypting # Replace the example account IDs with valid values accounts = DiscoveryFilter( partition="aws", account_ids=["111122223333", "444455556666"] ) aws_kms_master_key_provider = DiscoveryAwsKmsMasterKeyProvider( discovery_filter=accounts )
AWS Encryption CLI

Dieses Beispiel zeigt, wie mit der AWS Encryption CLI Version 1.7 ver- und entschlüsselt wird. x oder höher. Ab Version 1.7. x, der --wrapping-keys Parameter ist beim Verschlüsseln und Entschlüsseln erforderlich. Der --wrapping-keys Parameter unterstützt den Strict-Modus und den Discovery-Modus. Vollständige Beispiele finden Sie unterBeispiele für die AWS Encryption CLI.

Bei der Verschlüsselung gibt dieses Beispiel einen Umschließungsschlüssel an, der erforderlich ist. Beim Entschlüsseln wird explizit der Erkennungsmodus ausgewählt, indem das discovery Attribut des --wrapping-keys Parameters mit dem Wert von verwendet wird. true

Um die Anzahl der Schlüssel, die im Discovery-Modus verwendet werden AWS Encryption SDK können, auf bestimmte Schlüssel zu beschränken AWS-Konten, werden in diesem Beispiel die discovery-account Attribute discovery-partition und des --wrapping-keys Parameters verwendet. Diese optionalen Attribute sind nur gültig, wenn das discovery Attribut auf gesetzt isttrue. Sie müssen die discovery-account Attribute discovery-partition und zusammen verwenden. Keines der Attribute ist alleine gültig.

\\ Replace the example key ARN with a valid value $ keyAlias=arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias \\ Encrypt your plaintext data $ aws-encryption-cli --encrypt \ --input hello.txt \ --wrapping-keys key=$keyAlias \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --output . \\ Decrypt your ciphertext \\ Replace the example account IDs with valid values $ aws-encryption-cli --decrypt \ --input hello.txt.encrypted \ --wrapping-keys discovery=true \ discovery-partition=aws \ discovery-account=111122223333 \ discovery-account=444455556666 \ --encryption-context purpose=test \ --metadata-output ~/metadata \ --output .