AWS SDK for PHP バージョン 3 を使用した AWS KMS データキーの暗号化と復号 - AWS SDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for PHP バージョン 3 を使用した AWS KMS データキーの暗号化と復号

データキーは、大量のデータや他のデータ暗号化キーといったデータを暗号化するための暗号化キーです。

AWS Key Management Serviceの (AWS KMS) を使用して、データキーAWS KMS keyを生成、暗号化、復号できます。

以下の例では、次の方法を示しています。

  • Encrypt を使用してデータキーを暗号化する。

  • Decrypt を使用してデータキーを復号化する。

  • ReEncrypt を使用して新しい KMS キーでデータキーを再暗号化します。

のすべてのサンプルコード AWS SDK for PHP はGitHub で入手できます

認証情報

サンプルコードを実行する前に、「」の説明に従って AWS 認証情報を設定しますAWS SDK for PHP バージョン 3 AWS を使用した での認証。次に AWS SDK for PHP、「」の説明に従って をインポートしますAWS SDK for PHP バージョン 3 のインストール

AWS Key Management Service (AWS KMS) の使用の詳細については、「 AWS KMS デベロッパーガイド」を参照してください。

暗号化

Encrypt オペレーションは、データキーを暗号化するように設計されていますが、頻繁には使用されていません。GenerateDataKey および GenerateDataKeyWithoutPlaintext オペレーションは、暗号化されたデータキーを返します。暗号化されたデータを新しい AWS リージョンに移動し、その新しいリージョンで KMS キーを使用してデータキーを暗号化するときに Encypt メソッドを使用できます。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

サンプルコード

$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0); try { $result = $KmsClient->encrypt([ 'KeyId' => $keyId, 'Plaintext' => $message, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

Decrypt

データキーを復号するには、Decrypt オペレーションを使用します。

指定する ciphertextBlob は、GenerateDataKeyGenerateDataKeyWithoutPlaintext、または暗号化レスポンスからの CiphertextBlob フィールド値である必要があります。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

サンプルコード

$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $ciphertext = 'Place your cipher text blob here'; try { $result = $KmsClient->decrypt([ 'CiphertextBlob' => $ciphertext, ]); $plaintext = $result['Plaintext']; var_dump($plaintext); } catch (AwsException $e) { // Output error message if fails echo $e->getMessage(); echo "\n"; }

再暗号化

暗号化されたデータキーを復号し、続いてすぐに異なる KMS キーでデータキーを再暗号化するには、ReEncrypt オペレーションを使用します。オペレーションは内部のサーバー側で完全に実行されるため AWS KMS、プレーンテキストが外部に公開されることはありません AWS KMS。

指定する ciphertextBlob は、GenerateDataKeyGenerateDataKeyWithoutPlaintext、または暗号化レスポンスからの CiphertextBlob フィールド値である必要があります。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

サンプルコード

$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $ciphertextBlob = 'Place your cipher text blob here'; try { $result = $KmsClient->reEncrypt([ 'CiphertextBlob' => $ciphertextBlob, 'DestinationKeyId' => $keyId, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }