Ada lebih banyak AWS SDK contoh yang tersedia di GitHub repo SDKContoh AWS Dokumen
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan ReEncrypt
dengan AWS SDK atau CLI
Contoh kode berikut menunjukkan cara menggunakanReEncrypt
.
- 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 file. AWS CLIBerikan ciphertext dalam file.Dalam nilai
--ciphertext-blob
parameter, gunakanfileb://
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 selengkapnya tentang membaca nilai AWS CLI parameter dari file, lihat Memuat AWS CLI parameter dari file < https://docs.aws.amazon.com/cli/ latest/userguide/cli - usage-parameters-file .html> di Panduan Pengguna Antarmuka Baris AWS Perintah dan Praktik Terbaik untuk Parameter File Lokal< https://aws.amazon.com/blogs/ pengembang/ best-practices-for-local -file-parameters/> di Blog Alat Baris AWS Perintah. Tentukan KMS kunci sumber, yang mendekripsi ciphertext. Parameter tidak diperlukan saat mendekripsi dengan enkripsi simetris--source-key-id
KMSkunci. AWS KMSbisa mendapatkan KMS kunci yang digunakan untuk mengenkripsi data dari metadata di gumpalan ciphertext. Tetapi 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
--output
Parameter mengembalikan output sebagai text.base64-decode plaintext dan menyimpannya dalam file.Contoh berikut pipa (|) nilaiPlaintext
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 Anda.
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
Perintah ini tidak menghasilkan output. Output dari
re-encrypt
perintah adalah base64-decoded dan disimpan dalam file.Untuk informasi selengkapnya, lihat ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API _ ReEncrypt .html di APIReferensi Layanan Manajemen AWS 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 menggunakancertutil
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 AWS akun Anda.
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
Kemudian gunakan
certutil
utilitascertutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile
Output:
Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.
Untuk informasi selengkapnya, lihat ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API _ ReEncrypt .html di APIReferensi Layanan Manajemen AWS Kunci.
-
Untuk API detailnya, lihat ReEncrypt
di Referensi AWS CLI Perintah.
-
- Python
-
- SDKuntuk Python (Boto3)
-
catatan
Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS
. 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.")
-
Untuk API detailnya, lihat ReEncrypt AWSSDKReferensi Python (Boto3). API
-
- Ruby
-
- SDKuntuk Ruby
-
catatan
Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS
. 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 pengaturan dan menjalankannya di Repositori Contoh Kode AWS
. 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 ReEncrypt AWS
SDKuntuk API referensi Rust.
-