翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Encryption SDK Rust のサンプルコード用
次の例は、 AWS Encryption SDK for Rust でプログラミングするときに使用する基本的なコーディングパターンを示しています。具体的には、 AWS Encryption SDK とマテリアルプロバイダーライブラリをインスタンス化します。次に、各メソッドを呼び出す前に、メソッドの入力を定義する オブジェクトをインスタンス化します。
代替アルゴリズムスイートの指定や暗号化されたデータキーの制限など AWS Encryption SDK、 でオプションを設定する方法の例については、GitHub の aws-encryption-sdk リポジトリの Rust の例
AWS Encryption SDK for Rust でのデータの暗号化と復号
この例は、データを暗号化および復号するための基本的なパターンを示しています。1 つの AWS KMS ラッピングキーで保護されたデータキーを使用して小さなファイルを暗号化します。
- ステップ 1: をインスタンス化します AWS Encryption SDK。
-
のメソッドを使用して AWS Encryption SDK 、データを暗号化および復号します。
let esdk_config = AwsEncryptionSdkConfig::builder().build()?; let esdk_client = esdk_client::Client::from_conf(esdk_config)?;
- ステップ 2: AWS KMS クライアントを作成する。
-
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await; let kms_client = aws_sdk_kms::Client::new(&sdk_config);
- オプション: 暗号化コンテキストを作成します。
-
let encryption_context = HashMap::from([ ("encryption".to_string(), "context".to_string()), ("is not".to_string(), "secret".to_string()), ("but adds".to_string(), "useful metadata".to_string()), ("that can help you".to_string(), "be confident that".to_string()), ("the data you are handling".to_string(), "is what you think it is".to_string()), ]);
- ステップ 3: マテリアルプロバイダーライブラリをインスタンス化します。
-
マテリアルプロバイダライブラリのメソッドを使用して、データを保護するキーを指定するキーリングを作成します。
let mpl_config = MaterialProvidersConfig::builder().build()?; let mpl = mpl_client::Client::from_conf(mpl_config)?;
- ステップ 4: AWS KMS キーリングを作成します。
-
キーリングを作成するには、キーリング入力オブジェクトを使用してキーリングメソッドを呼び出します。この例では、
create_aws_kms_keyring()
メソッドを使用し、1 つの KMS キーを指定します。let kms_keyring = mpl .create_aws_kms_keyring() .kms_key_id(kms_key_id) .kms_client(kms_client) .send() .await?;
- ステップ 5: プレーンテキストを暗号化します。
-
let plaintext = example_data.as_bytes(); let encryption_response = esdk_client.encrypt() .plaintext(plaintext) .keyring(kms_keyring.clone()) .encryption_context(encryption_context.clone()) .send() .await?; let ciphertext = encryption_response .ciphertext .expect("Unable to unwrap ciphertext from encryption response");
- ステップ 6: 暗号化に使用したのと同じキーリングを使用して、暗号化されたデータを復号します。
-
let decryption_response = esdk_client.decrypt() .ciphertext(ciphertext) .keyring(kms_keyring) // Provide the encryption context that was supplied to the encrypt method .encryption_context(encryption_context) .send() .await?; let decrypted_plaintext = decryption_response .plaintext .expect("Unable to unwrap plaintext from decryption response");