Gunakan ReEncrypt dengan AWS SDKatau CLI - AWS Key Management Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan ReEncrypt dengan AWS SDKatau CLI

Contoh kode berikut menunjukkan cara menggunakanReEncrypt.

Contoh tindakan adalah kutipan kode dari program yang lebih besar dan harus dijalankan dalam konteks. Anda dapat melihat tindakan ini dalam konteks dalam contoh kode berikut:

CLI
AWS CLI

Contoh 1: Untuk mengenkripsi ulang pesan terenkripsi di bawah kunci simetris yang berbeda KMS (Linux dan macOS).

Contoh re-encrypt perintah berikut menunjukkan cara yang disarankan untuk mengenkripsi ulang data dengan AWS CLI.

Berikan ciphertext dalam file.Dalam nilai --ciphertext-blob parameter, gunakan fileb:// awalan, yang memberitahu CLI untuk membaca data dari file biner. Jika file tidak ada di direktori saat ini, ketik path lengkap ke file. Untuk informasi lebih lanjut tentang membaca AWS CLInilai parameter dari file, lihat Memuat AWS CLIparameter dari file < https://docs.aws.amazon.com/cli/ terbaru/userguide/ cli-usage-parameters-file .html> di AWS Panduan Pengguna Antarmuka Baris Perintah dan Praktik Terbaik untuk Parameter File Lokal< https://aws.amazon.com/blogs/ best-practices-for-local pengembang/ -file-parameter/> di AWS Blog Alat Baris Perintah. Tentukan KMS kunci sumber, yang mendekripsi ciphertext. --source-key-id Parameter tidak diperlukan saat mendekripsi dengan kunci enkripsi simetris. KMS AWS KMSbisa mendapatkan KMS kunci yang digunakan untuk mengenkripsi data dari metadata di gumpalan ciphertext. Tapi itu selalu merupakan praktik terbaik untuk menentukan KMS kunci yang Anda gunakan. Praktik ini memastikan bahwa Anda menggunakan KMS kunci yang Anda inginkan, dan mencegah Anda mendekripsi ciphertext secara tidak sengaja menggunakan kunci yang tidak Anda percayai. Tentukan KMS KMS kunci tujuan, yang mengenkripsi ulang data.Parameter selalu diperlukan. --destination-key-id Contoh ini menggunakan kunciARN, tetapi Anda dapat menggunakan pengidentifikasi kunci yang valid. Minta output plaintext sebagai nilai --query teks.Parameter memberitahu CLI untuk mendapatkan hanya nilai bidang dari output. Plaintext --outputParameter mengembalikan output sebagai text.base64-decode plaintext dan menyimpannya dalam file.Contoh berikut pipa (|) nilai Plaintext parameter ke utilitas Base64, yang menerjemahkan itu. Kemudian, itu mengalihkan (>) output yang diterjemahkan ke file. ExamplePlaintext

Sebelum menjalankan perintah ini, ganti kunci contoh IDs dengan pengidentifikasi kunci yang valid dari AWS akun.

aws kms re-encrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --query CiphertextBlob \ --output text | base64 --decode > ExampleReEncryptedFile

Perintah ini tidak menghasilkan output. Output dari re-encrypt perintah adalah base64-decoded dan disimpan dalam file.

Untuk informasi lebih lanjut, lihat ReEncrypt < https://docs.aws.amazon.com/kms/ terbaru/APIReference/API_ReEncrypt.html di AWS APIReferensi Layanan Manajemen Kunci.

Contoh 2: Untuk mengenkripsi ulang pesan terenkripsi di bawah KMS tombol simetris yang berbeda (prompt perintah Windows).

Contoh re-encrypt perintah berikut adalah sama dengan yang sebelumnya kecuali bahwa ia menggunakan certutil utilitas untuk Base64-decode data plaintext. Prosedur ini membutuhkan dua perintah, seperti yang ditunjukkan pada contoh berikut.

Sebelum menjalankan perintah ini, ganti ID kunci contoh dengan ID kunci yang valid dari Anda AWS akun.

aws kms re-encrypt ^ --ciphertext-blob fileb://ExampleEncryptedFile ^ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 ^ --query CiphertextBlob ^ --output text > ExampleReEncryptedFile.base64

Kemudian gunakan certutil utilitas

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

Output:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

Untuk informasi lebih lanjut, lihat ReEncrypt < https://docs.aws.amazon.com/kms/ terbaru/APIReference/API_ReEncrypt.html di AWS APIReferensi Layanan Manajemen Kunci.

  • Untuk API detailnya, lihat ReEncryptdi AWS CLI Referensi Perintah.

Python
SDKuntuk Python (Boto3)
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankan di AWS Repositori Contoh Kode.

class KeyEncrypt: def __init__(self, kms_client): self.kms_client = 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.")
  • Untuk API detailnya, lihat ReEncryptdi AWS SDKuntuk Python (Boto3) Referensi. API

Ruby
SDKuntuk Ruby
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankan di AWS Repositori Contoh Kode.

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*")
  • Untuk API detailnya, lihat ReEncryptdi AWS SDK for Ruby APIReferensi.

Rust
SDKuntuk Rust
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankan di AWS Repositori Contoh Kode.

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(()) }
  • Untuk API detailnya, lihat ReEncryptdi AWS SDKuntuk API referensi Rust.

Untuk daftar lengkap AWS SDKpanduan pengembang dan contoh kode, lihatPenggunaan AWS KMS dengan sebuah AWS SDK. Topik ini juga mencakup informasi tentang memulai dan detail tentang SDK versi sebelumnya.