本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 密钥的密钥 ID 和密钥 ARN。
-
使用启用 KMS 密钥EnableKey。
-
使用禁用 KMS 密钥DisableKey。
的所有示例代码都可以在此AWS SDK for PHP处找到 GitHub
凭证
运行示例代码之前,请配置您的 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 密钥的密钥 ID 和密钥 ARN
要获取 KMS 密钥的 ID 和 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"; }