翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Encryption SDK for Go サンプルコード
次の例は、 AWS Encryption SDK for Go でプログラミングするときに使用する基本的なコーディングパターンを示しています。具体的には、 AWS Encryption SDK とマテリアルプロバイダーライブラリをインスタンス化します。次に、各メソッドを呼び出す前に、メソッドの入力を定義する オブジェクトをインスタンス化します。
代替アルゴリズムスイートの指定や暗号化されたデータキーの制限など AWS Encryption SDK、 でオプションを設定する方法の例については、GitHub の aws-encryption-sdk リポジトリの Go の例
AWS Encryption SDK for Go でのデータの暗号化と復号
この例では、データを暗号化および復号するための基本的なパターンを示しています。1 つのラ AWS KMS ッピングキーで保護されたデータキーを使用して少量のデータを暗号化します。
- ステップ 1: をインスタンス化します AWS Encryption SDK。
-
のメソッドを使用して、データを AWS Encryption SDK 暗号化および復号します。
import ( "context" mpl "aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" mpltypes "aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" client "github.com/aws/aws-encryption-sdk/awscryptographyencryptionsdksmithygenerated" esdktypes "github.com/aws/aws-encryption-sdk/awscryptographyencryptionsdksmithygeneratedtypes" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/kms" ) encryptionClient, err := client.NewClient(esdktypes.AwsEncryptionSdkConfig{}) if err != nil { panic(err) } - ステップ 2: AWS KMS クライアントを作成する。
-
cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic(err) } kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { o.Region = KmsKeyRegion }) - オプション: 暗号化コンテキストを作成します。
-
encryptionContext := map[string]string{ "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } - ステップ 3: マテリアルプロバイダーライブラリをインスタンス化します。
-
マテリアルプロバイダライブラリのメソッドを使用して、データを保護するキーを指定するキーリングを作成します。
matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) if err != nil { panic(err) } - ステップ 4: AWS KMS キーリングを作成します。
-
キーリングを作成するには、キーリング入力オブジェクトを使用してキーリングメソッドを呼び出します。この例では、
CreateAwsKmsKeyringメソッドを使用し、1 つの KMS キーを指定します。kmsKeyId変数は、指定した KMS キーのキー ARN を表します。awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ KmsClient: kmsClient, KmsKeyId: kmsKeyId, } awsKmsKeyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) if err != nil { panic(err) } - ステップ 5: プレーンテキストを暗号化します。
-
res, err := encryptionClient.Encrypt(context.Background(), esdktypes.EncryptInput{ Plaintext: []byte(exampleText), EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } ciphertext := res.Ciphertext - ステップ 6: 暗号化に使用したのと同じキーリングを使用して、暗号化されたデータを復号します。
-
decryptOutput, err := encryptionClient.Decrypt(context.Background(), esdktypes.DecryptInput{ Ciphertext: ciphertext, // Provide the encryption context that was supplied to the encrypt method EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } decrypted := decryptOutput.Plaintext