使用 适用于 PHP 的 Amazon SDK 版本 3 来使用 Amazon KMS 密钥策略 - 适用于 PHP 的 Amazon SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 适用于 PHP 的 Amazon SDK 版本 3 来使用 Amazon KMS 密钥策略

在创建 Amazon KMS key 时,您可以确定能够使用和管理该 KMS 密钥的人员。这些权限包含在名为密钥策略的文档中。您可以随时使用该密钥策略为客户托管 KMS 密钥添加、删除或修改权限,但无法为 Amazon 托管 KMS 密钥编辑密钥策略。有关更多信息,请参阅 Amazon KMS 的身份验证和访问控制

以下示例演示如何:

适用于 PHP 的 Amazon SDKGitHub 上提供了的所有示例代码。

凭证

运行示例代码之前,请配置您的 Amazon 凭证,如 通过适用于 PHP 的 Amazon SDK 版本 3 使用 Amazon 进行身份验证 中所述。然后导入 适用于 PHP 的 Amazon SDK,如 安装适用于 PHP 的 Amazon SDK 版本 3 中所述。

有关使用 Amazon Key Management Service (Amazon KMS) 的更多信息,请参阅 Amazon KMS 开发人员指南

列出所有密钥策略

要获取 KMS 密钥的密钥策略名称,请使用 ListKeyPolicies 操作。

导入

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'; $limit = 10; try { $result = $KmsClient->listKeyPolicies([ 'KeyId' => $keyId, 'Limit' => $limit, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

检索密钥策略

要获取 KMS 密钥的密钥策略,请使用 GetKeyPolicy 操作。

GetKeyPolicy 需要策略名称。除非您在创建 KMS 密钥时已创建密钥策略,否则,唯一有效的策略名称为默认值。要了解更多信息,请参阅 Amazon Key Management Service 开发人员指南中的默认密钥策略

导入

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'; $policyName = "default"; try { $result = $KmsClient->getKeyPolicy([ 'KeyId' => $keyId, 'PolicyName' => $policyName ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

设置密钥策略

要为 KMS 密钥建立或更改密钥策略,请使用 PutKeyPolicy 操作。

PutKeyPolicy 需要策略名称。除非您在创建 KMS 密钥时已创建密钥策略,否则,唯一有效的策略名称为默认值。要了解更多信息,请参阅 Amazon Key Management Service 开发人员指南中的默认密钥策略

导入

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'; $policyName = "default"; try { $result = $KmsClient->putKeyPolicy([ 'KeyId' => $keyId, 'PolicyName' => $policyName, 'Policy' => '{ "Version":"2012-10-17", "Id": "custom-policy-2016-12-07", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/root" }, "Action": [ "kms:*" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" } ] } ' ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }