Aktualisierung derAWS KMS Master-Key-Anbieter - 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 derAWS KMS Master-Key-Anbieter

Um auf die neueste Version zu migrieren 1. x-Version vonAWS Encryption SDK, und dann zu Version 2.0. x oder höher müssen Sie ältereAWS KMS Masterschlüsselanbieter durch Masterschlüsselanbieter ersetzen, die explizit im strikten Modus oder Discovery-Modus erstellt wurden. Legacy-Master-Key-Anbieter sind in Version 1.7. x und 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 AWSVerschlüsselungs-CLI verwenden. Die Beispiele in diesem Abschnitt zeigen Ihnen, wie Sie Ihren Code aktualisieren.

Anmerkung

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

Wenn Sie einenAWS KMS Master-Key (keinen Masterkey-Anbieter) verwenden, können Sie diesen Schritt überspringen. AWS KMSMasterschlüssel sind nicht veraltet oder wurden 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 werden in diesen Beispielen in der Regel wichtige ARNs zur Darstellung verwendetAWS KMS keys. Wenn Sie einen Master-Key-Anbieter für die Verschlüsselung erstellen, können Sie einen beliebigen gültigenAWS KMS Schlüsselbezeichner verwenden, um einen darzustellenAWS KMS key. Wenn Sie einen Master-Key-Anbieter für die Entschlüsselung erstellen, müssen Sie einen Schlüssel-ARN verwenden.

Weitere Informationen zu Migrieren

Für alleAWS Encryption SDK Benutzer: Hier erfahren Sie, wie Sie Ihre Engagement-Richtlinien festlegenFestlegung Ihrer Engagement-Richtlinie.

FürAWS-Verschlüsselungs-SDK for C undAWS-Verschlüsselungs-SDK for JavaScript Benutzer erfahren Sie mehr über ein optionales Update der Schlüsselringe inWird aktualisiertAWS KMSSchlüsselringe.

Migrieren in den strikten Modus

Nach dem Update auf die neueste Version 1. x-Version vonAWS Encryption SDK, ersetzen Sie Ihre alten Master-Key-Anbieter durch Master-Key-Anbieter im strikten Modus. Im strikten Modus müssen Sie die Wrapping-Schlüssel angeben, die beim Verschlüsseln und Entschlüsseln verwendet werden sollen. DerAWS Encryption SDK verwendet nur die von Ihnen angegebenen Wrapping-Schlüssel. Veraltete Master-Key-Anbieter können Daten mithilfe eines beliebigen Schlüssels entschlüsselnAWS KMS key, der einen Datenschlüssel verschlüsselt hat, auchAWS KMS keys in verschiedenen RegionenAWS-Konten und Regionen.

Master-Key-Anbieter im strikten Modus werden in derAWS Encryption SDK Version 1.7 eingeführt. 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 eineAWS Encryption SDK bewährte Methode.

Der folgende Code erstellt einen Master-Key-Anbieter 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 eine frühere Version von verwendetAWS-Verschlüsselungs-SDK for Java.

Dieser Code verwendet dieKmsMasterKeyProvider.builder() Methode, um einenAWS KMS Master-Key-Anbieter zu instanziieren, der einenAWS KMS key als Wrapping-Schlü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 später vonAWS-Verschlüsselungs-SDK for Java. Ein vollständiges Beispiel finden Sie unter BasicEncryptionExample.java.

Die im vorherigen Beispiel verwendetenBuilder.withKeysForEncryption() MethodenBuilder.build() und sind in Version 1.7 veraltet. x und sind aus Version 2.0 entfernt. x.

Um auf einen Masterschlüsselanbieter im strikten Modus zu aktualisieren, ersetzt dieser Code Aufrufe veralteter Methoden durch einen Aufruf der neuenBuilder.buildStrict() Methode. In diesem Beispiel wird einsAWS KMS key als Wrapping-Schlüssel angegeben, aber dieBuilder.buildStrict() Methode kann eine Liste von mehreren verwendenAWS 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 verwendetAWS-Verschlüsselungs-SDK for Python. Dieser Code verwendetKMSMasterKeyProvider, der in Version 1.7 veraltet ist. x und aus Version 2.0 entfernt. x. Beim Entschlüsseln verwendet es einen beliebigen Schlüssel, der einen Datenschlüssel verschlüsselt hatAWS KMS key, ohne Rücksicht auf den vonAWS KMS keys Ihnen angegebenen Schlüssel.

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

# 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 desAWS-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 vonKMSMasterKeyProvider() 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 derAWS Encryption CLI Version 1.1.7 oder früher verschlüsselt und entschlüsselt wird.

In Version 1.1.7 und früheren Versionen geben Sie beim Verschlüsseln einen oder mehrere Hauptschlüssel (oder Wrapping-Schlüssel) an, z. B. einenAWS KMS key. Beim Entschlüsseln können Sie keine Wrapping-Schlüssel angeben, es sei denn, Sie verwenden einen benutzerdefinierten Master-Key-Anbieter. DieAWS Verschlüsselungs-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 derAWS Encryption CLI Version 1.7 verschlüsselt und entschlüsselt wird. x oder später. Vollständige Beispiele finden Sie unterBeispiele für dieAWSCLI für Verschlüsselung.

Der--master-keys Parameter ist in Version 1.7. x und in Version 2.0 entfernt. x. Er wurde durch den--wrapping-keys Parameter by ersetzt, der für Verschlüsselungs- und Entschlüsselungsbefehle erforderlich ist. Dieser Parameter unterstützt den strikten Modus und den Discovery-Modus. Der strikte Modus ist eineAWS Encryption SDK bewährte Methode, bei der sichergestellt wird, dass Sie den gewünschten Wrapping-Schlüssel verwenden.

Um in den strikten Modus zu wechseln, verwenden Sie das Schlüsselattribut des--wrapping-keys Parameters, um beim Verschlüsseln und Entschlüsseln einen Wrapping-Schlü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 wechseln

Ab Version 1.7. x, es ist eineAWS Encryption SDK bewährte Methode, den strikten Modus fürAWS KMS Master-Key-Anbieter zu verwenden, das heißt, beim Verschlüsseln und Entschlüsseln Wrapping Keys anzugeben. Sie müssen beim Verschlüsseln immer Wrapping Keys angeben. Es gibt jedoch Situationen, in denen die Angabe der Schlüssel-ARNs vonAWS KMS keys für die Entschlüsselung nicht praktikabel ist. Wenn Sie beispielsweise Aliase verwenden, um sichAWS KMS keys beim Verschlüsseln zu identifizieren, verlieren Sie den Vorteil von Aliasen, wenn Sie beim Entschlüsseln wichtige ARNs auflisten müssen. Da sich Master-Key-Anbieter im Discovery-Modus außerdem wie die ursprünglichen Master-Key-Anbieter verhalten, können Sie sie vorübergehend als Teil Ihrer Migrationsstrategie verwenden und später im strikten Modus auf Master-Key-Anbieter upgraden.

In solchen Fällen können Sie Master-Key-Anbieter im Discovery-Modus verwenden. Bei diesen Master-Key-Anbietern können Sie keine Wrapping-Schlüssel angeben, sodass Sie sie nicht zum Verschlüsseln verwenden können. Beim Entschlüsseln können sie jeden Wrapping-Schlüssel verwenden, der einen Datenschlüssel verschlüsselt hat. Im Gegensatz zu herkömmlichen Master-Key-Anbietern, die sich genauso verhalten, erstellen Sie sie jedoch explizit im Discovery-Modus. Wenn Sie Master-Key-Anbieter im Discovery-Modus verwenden, können Sie die Wrapping-Schlüssel, die verwendet werden können, auf bestimmte Schlüssel beschränkenAWS-Konten. Dieser Discovery-Filter ist optional, wir empfehlen ihn jedoch als bewährte Methode. Informationen zuAWS Partitionen und Konten finden Sie unter Amazon-Ressourcennamen in der Allgemeine AWS-Referenz.

In den folgenden Beispielen wird einAWS KMS Master-Key-Anbieter im strikten Modus für die Verschlüsselung und einAWS KMS Master-Key-Anbieter im Discovery-Modus für die Entschlüsselung erstellt. Der Masterschlüsselanbieter im Discovery-Modus verwendet einen Discovery-Filter, um die für die Entschlüsselung verwendeten Wrapping-Schlüssel auf dieaws Partition und auf ein bestimmtes Beispiel zu beschränkenAWS-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 später vonAWS-Verschlüsselungs-SDK for Java. Ein vollständiges Beispiel finden Sie unter DiscoveryDecryptionExample.java.

Um einen Master-Key-Anbieter für die Verschlüsselung im strikten Modus zu instanziieren, wird in diesem Beispiel dieBuilder.buildStrict() Methode verwendet. Um einen Master-Key-Anbieter im Discovery-Modus für die Entschlüsselung zu instanziieren, verwendet er dieBuilder.buildDiscovery() Methode. DieBuilder.buildDiscovery() Methode verwendet eineDiscoveryFilter, die dasAWS Encryption SDK aufAWS KMS keys in der angegebenenAWS 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 später vonAWS-Verschlüsselungs-SDK for Python. Ein vollständiges Beispiel finden Sie unter discovery_kms_provider.py.

Um einen Master-Key-Anbieter im strikten Modus für die Verschlüsselung zu erstellen, wird in diesem Beispiel verwendetStrictAwsKmsMasterKeyProvider. Um einen Masterschlüsselanbieter im Discovery-Modus für die Entschlüsselung zu erstellen, verwendetDiscoveryAwsKmsMasterKeyProvider er einenDiscoveryFilter, der denAWS Encryption SDK aufAWS KMS keys in der angegebenenAWS 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 derAWS Encryption CLI Version 1.7 verschlüsselt und entschlüsselt wird. x oder später. Ab Version 1.7. x, der--wrapping-keys Parameter ist beim Verschlüsseln und Entschlüsseln erforderlich. Der--wrapping-keys Parameter unterstützt den strikten Modus und den Discovery-Modus. Vollständige Beispiele finden Sie unterBeispiele für dieAWSCLI für Verschlüsselung.

Beim Verschlüsseln gibt dieses Beispiel einen Wrapping-Schlüssel an, der erforderlich ist. Beim Entschlüsseln wird explizit der Ermittlungsmodus ausgewählt, indem dasdiscovery Attribut des--wrapping-keys Parameters mit dem Wert von verwendet wirdtrue.

Um die Wrapping-Schlüssel, die sie im Discovery-Modus verwendenAWS Encryption SDK können, auf bestimmte Schlüssel zu beschränkenAWS-Konten, verwendet dieses Beispiel diediscovery-partitiondiscovery-account AND-Attribute des--wrapping-keys Parameters. Diese optionalen Attribute sind nur gültig, wenn dasdiscovery Attribut auf gesetzt isttrue. Sie müssen diediscovery-partition unddiscovery-account -Attribute zusammen verwenden. Keines ist für sich allein 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 .