翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 からのインポート (基本的な使用法 を参照)。
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または Encrypt レスポンスの 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または Encrypt レスポンスの 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"; }