翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK for PHP バージョン 3 を使用した AWS KMS データキーの暗号化と復号
データキーは、大量のデータや他のデータ暗号化キーといったデータを暗号化するための暗号化キーです。
AWS Key Management Serviceの (AWS KMS) を使用して、データキーAWS KMS keyを生成、暗号化、復号できます。
以下の例では、次の方法を示しています。
のすべてのサンプルコード 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
は、GenerateDataKey、GenerateDataKeyWithoutPlaintext、または暗号化レスポンスからの 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
は、GenerateDataKey、GenerateDataKeyWithoutPlaintext、または暗号化レスポンスからの 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"; }