使用 AWS SDK for PHP 版本 3 来使用 AWS KMS 密钥策略 - AWS SDK for PHP

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS SDK for PHP 版本 3 来使用 AWS KMS 密钥策略

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

以下示例演示如何:

的所有示例代码都可以在此AWS SDK for PHP处找到 GitHub

凭证

运行示例代码之前,请配置您的 AWS 凭证,如 凭证 中所述。然后导入 AWS SDK for PHP,如 基本用法 中所述。

有关使用 AWS Key Management Service (AWS KMS) 的更多信息,请参阅 AWS 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 密钥时已创建密钥策略,否则,唯一有效的策略名称为默认值。要了解更多信息,请参阅 AWS 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 密钥时已创建密钥策略,否则,唯一有效的策略名称为默认值。要了解更多信息,请参阅 AWS 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"; }