本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS KMS API 和AWS SDK for PHP版本 3 使用金鑰
AWS Key Management Service(AWS KMS) 中的主要資源是AWS KMS keys。您可以使用 KMS 金鑰來加密資料。
下列範例示範如何:
-
使用建立客戶 KMS 金鑰CreateKey。
-
使用產生資料金鑰GenerateDataKey。
-
使用查看 KMS 金鑰DescribeKey。
-
使ListKeys用取得 KMS 金鑰的金鑰識別碼和金鑰 ARNS。
-
使用啟用 KMS 金鑰EnableKey。
-
使用停用 KMS 金鑰DisableKey。
所有的範例程式碼都可以AWS SDK for PHP在這裡取
登入資料
在執行範例程式碼之前,請依照中的說明設定您的AWS認證憑證。然後匯入AWS SDK for PHP,如中所述基本使用。
如需使用 AWS Key Management Service (AWS KMS) 的詳細資訊,請參閱AWS KMS開發人員指南。
建立 KMS 金鑰
匯入
require 'vendor/autoload.php'; use Aws\Exception\AwsException;
範例程式碼
$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); //Creates a customer master key (CMK) in the caller's AWS account. $desc = "Key for protecting critical data"; try { $result = $KmsClient->createKey([ 'Description' => $desc, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }
產生資料金鑰
若要產生資料加密金鑰,請使用此GenerateDataKey作業。這個操作會傳回它建立的純文字和加密的資料金鑰副本。指定要AWS KMS key在其下產生資料金鑰的項目。
匯入
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'; $keySpec = 'AES_256'; try { $result = $KmsClient->generateDataKey([ 'KeyId' => $keyId, 'KeySpec' => $keySpec, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }
檢視 KMS 金鑰
若要取得 KMS 金鑰的詳細資訊 (包括 KMS 金鑰的 Amazon 資源名稱 (ARN) 和金鑰狀態,請使用此DescribeKey作業。
DescribeKey
不會取得別名。若要取得別名,請使用此ListAliases作業。
匯入
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'; try { $result = $KmsClient->describeKey([ 'KeyId' => $keyId, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }
取得 KMS 金鑰的金鑰識別碼和金鑰 ARN
若要取得 KMS 金鑰的識別碼和 ARN,請使用此ListAliases作業。
匯入
require 'vendor/autoload.php'; use Aws\Exception\AwsException;
範例程式碼
$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $limit = 10; try { $result = $KmsClient->listKeys([ 'Limit' => $limit, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }
啟用 KMS 金鑰
若要啟用已停用的 KMS 金鑰,請使用EnableKey作業。
匯入
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'; try { $result = $KmsClient->enableKey([ 'KeyId' => $keyId, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }
停用 KMS 金鑰
若要停用 KMS 金鑰,請使用此DisableKey作業。停用 KMS 金鑰可防止其使用。
匯入
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'; try { $result = $KmsClient->disableKey([ 'KeyId' => $keyId, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }