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.
Verwendung ReEncrypt
mit einem AWS SDK oder CLI
Die folgenden Code-Beispiele zeigen, wie ReEncrypt
verwendet wird.
- CLI
-
- AWS CLI
-
Beispiel 1: Um eine verschlüsselte Nachricht unter einem anderen symmetrischen KMS-Schlüssel (Linux und macOS) erneut zu verschlüsseln.
Das folgende
re-encrypt
Befehlsbeispiel zeigt die empfohlene Methode zum erneuten Verschlüsseln von Daten mit der AWS CLI.Geben Sie den Geheimtext in einer Datei an. Verwenden Sie im Wert des
--ciphertext-blob
Parameters dasfileb://
Präfix, das die CLI anweist, die Daten aus einer Binärdatei zu lesen. Wenn sich die Datei nicht im aktuellen Verzeichnis befindet, geben Sie den vollständigen Dateipfad ein. Weitere Informationen zum Lesen von AWS CLI-Parameterwerten aus einer Datei finden Sie unter Laden von AWS CLI-Parametern aus einer Datei < https://docs.aws.amazon.com/cli/ latest/userguide/cli - usage-parameters-file .html> im AWS Command Line Interface User Guide und Best Practices for Local File Parameters< https://aws.amazon.com/blogs/ developer/ best-practices-for-local -file-parameters/> im AWS Command Line Tool Blog. Geben Sie den KMS-Quellschlüssel an, der den Chiffretext entschlüsselt. Der Parameter ist nicht erforderlich, wenn KMS-Schlüssel mit symmetrischer Verschlüsselung entschlüsselt werden.--source-key-id
AWS KMS kann den KMS-Schlüssel, der zum Verschlüsseln der Daten verwendet wurde, aus den Metadaten im Chiffretext-Blob abrufen. Es ist jedoch immer eine bewährte Methode, den von Ihnen verwendeten KMS-Schlüssel anzugeben. Diese Vorgehensweise stellt sicher, dass Sie den KMS-Schlüssel verwenden, den Sie beabsichtigen, und verhindert, dass Sie versehentlich einen Chiffretext mit einem KMS-Schlüssel entschlüsseln, dem Sie nicht vertrauen. Geben Sie den KMS-Zielschlüssel an, mit dem die Daten erneut verschlüsselt werden. Der Parameter ist immer erforderlich.--destination-key-id
In diesem Beispiel wird ein Schlüssel-ARN verwendet, Sie können jedoch jeden gültigen Schlüsselbezeichner verwenden.Fordern Sie die Klartext-Ausgabe als Textwert an. Der--query
Parameter weist die CLI an, nur den Wert des Felds aus der Ausgabe abzurufen.Plaintext
Der--output
Parameter gibt die Ausgabe als Text zurück. Base64-dekodieren Sie den Klartext und speichern Sie ihn in einer Datei. Im folgenden Beispiel wird der Wert des Parameters (|) an das Base64-Hilfsprogramm übergeben, das ihn dekodiert.Plaintext
Anschließend leitet er die dekodierte Ausgabe in die Datei um (>).ExamplePlaintext
Bevor Sie diesen Befehl ausführen, ersetzen Sie den Beispielschlüssel IDs durch gültige Schlüsselkennungen aus Ihrem AWS Konto.
aws kms re-encrypt \ --ciphertext-blob
fileb://ExampleEncryptedFile
\ --source-key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --destination-key-id0987dcba-09fe-87dc-65ba-ab0987654321
\ --queryCiphertextBlob
\ --outputtext
|
base64
--decode>
ExampleReEncryptedFile
Mit diesem Befehl wird keine Ausgabe zurückgegeben. Die Ausgabe des
re-encrypt
Befehls wird base64-dekodiert und in einer Datei gespeichert.Weitere Informationen finden Sie unter ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API _ ReEncrypt .html in der API-Referenz für den AWS Key Management Service.
Beispiel 2: Um eine verschlüsselte Nachricht unter einem anderen symmetrischen KMS-Schlüssel erneut zu verschlüsseln (Windows-Eingabeaufforderung).
Das folgende
re-encrypt
Befehlsbeispiel ist dasselbe wie das vorherige, außer dass es dascertutil
Hilfsprogramm zur Base64-Decodierung der Klartextdaten verwendet. Für dieses Verfahren sind zwei Befehle erforderlich, wie in den folgenden Beispielen gezeigt.Bevor Sie diesen Befehl ausführen, ersetzen Sie die Beispielschlüssel-ID durch eine gültige Schlüssel-ID aus Ihrem AWS Konto.
aws kms re-encrypt
^
--ciphertext-blobfileb://ExampleEncryptedFile
^
--source-key-id1234abcd-12ab-34cd-56ef-1234567890ab
^
--destination-key-id0987dcba-09fe-87dc-65ba-ab0987654321
^
--queryCiphertextBlob
^
--outputtext
>
ExampleReEncryptedFile.base64
Verwenden Sie dann das
certutil
Hilfsprogrammcertutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile
Ausgabe:
Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.
Weitere Informationen finden Sie unter ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API _ ReEncrypt .html in der AWS Key Management Service API-Referenz.
-
Einzelheiten zur API finden Sie ReEncrypt
in der AWS CLI Befehlsreferenz.
-
- Python
-
- SDK für Python (Boto3)
-
Anmerkung
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository
einrichten und ausführen. class KeyEncrypt: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyEncrypt": """ Creates a KeyEncrypt instance with a default KMS client. :return: An instance of KeyEncrypt initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def re_encrypt(self, source_key_id, cipher_text): """ Takes ciphertext previously encrypted with one key and reencrypt it by using another key. :param source_key_id: The ARN or ID of the original key used to encrypt the ciphertext. :param cipher_text: The encrypted ciphertext. :return: The ciphertext encrypted by the second key. """ destination_key_id = input( f"Your ciphertext is currently encrypted with key {source_key_id}. " f"Enter another key ID or ARN to reencrypt it: " ) if destination_key_id != "": try: cipher_text = self.kms_client.re_encrypt( SourceKeyId=source_key_id, DestinationKeyId=destination_key_id, CiphertextBlob=cipher_text, )["CiphertextBlob"] except ClientError as err: logger.error( "Couldn't reencrypt your ciphertext. Here's why: %s", err.response["Error"]["Message"], ) else: print(f"Reencrypted your ciphertext as: {cipher_text}") return cipher_text else: print("Skipping reencryption demo.")
-
Einzelheiten zur API finden Sie ReEncryptin AWS SDK for Python (Boto3) API Reference.
-
- Ruby
-
- SDK für Ruby
-
Anmerkung
Es gibt noch mehr dazu. GitHub Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository
einrichten und ausführen. require 'aws-sdk-kms' # v2: require 'aws-sdk' # Human-readable version of the ciphertext of the data to reencrypt. blob = '01020200785d68faeec386af1057904926253051eb2919d3c16078badf65b808b26dd057c101747cadf3593596e093d4ffbf22434a6d00000068306606092a864886f70d010706a0593057020100305206092a864886f70d010701301e060960864801650304012e3011040c9d629e573683972cdb7d94b30201108025b20b060591b02ca0deb0fbdfc2f86c8bfcb265947739851ad56f3adce91eba87c59691a9a1' sourceCiphertextBlob = [blob].pack('H*') # Replace the fictitious key ARN with a valid key ID destinationKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321' client = Aws::KMS::Client.new(region: 'us-west-2') resp = client.re_encrypt({ ciphertext_blob: sourceCiphertextBlob, destination_key_id: destinationKeyId }) # Display a readable version of the resulting re-encrypted blob. puts 'Blob:' puts resp.ciphertext_blob.unpack('H*')
-
Einzelheiten zur API finden Sie ReEncryptin der AWS SDK for Ruby API-Referenz.
-
- Rust
-
- SDK für Rust
-
Anmerkung
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository
einrichten und ausführen. async fn reencrypt_string( verbose: bool, client: &Client, input_file: &str, output_file: &str, first_key: &str, new_key: &str, ) -> Result<(), Error> { // Get blob from input file // Open input text file and get contents as a string // input is a base-64 encoded string, so decode it: let data = fs::read_to_string(input_file) .map(|input_file| base64::decode(input_file).expect("invalid base 64")) .map(Blob::new); let resp = client .re_encrypt() .ciphertext_blob(data.unwrap()) .source_key_id(first_key) .destination_key_id(new_key) .send() .await?; // Did we get an encrypted blob? let blob = resp.ciphertext_blob.expect("Could not get encrypted text"); let bytes = blob.as_ref(); let s = base64::encode(bytes); let o = &output_file; let mut ofile = File::create(o).expect("unable to create file"); ofile.write_all(s.as_bytes()).expect("unable to write"); if verbose { println!("Wrote the following to {}:", output_file); println!("{}", s); } else { println!("Wrote base64-encoded output to {}", output_file); } Ok(()) }
-
Einzelheiten zur API finden Sie ReEncrypt
in der API-Referenz zum AWS SDK für Rust.
-
Eine vollständige Liste der AWS SDK-Entwicklerhandbücher und Codebeispiele finden Sie unterVerwenden Sie diesen Dienst mit einem AWS SDK. Dieses Thema enthält auch Informationen zu den ersten Schritten und Details zu früheren SDK-Versionen.