使用Amazon KMS使用处理的密钥策略AmazonSDK for PHP 版本 3 - Amazon适用于 PHP 的开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用Amazon KMS使用处理的密钥策略AmazonSDK for PHP 版本 3

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

以下示例演示如何:

所有示例代码示例AmazonSDK for PHP 版本 3(位于 GitHub 上).

Credentials

运行示例代码之前,请配置Amazon凭证,如的凭证AmazonSDK for PHP 版本 3. 然后导入Amazon适 SDK for PHP 软件开发工具包,如的基本使用模式AmazonSDK for PHP 版本 3.

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

列出所有密钥策略

要获取 CMK 的密钥策略的名称,请使用 ListKeyPolicies 操作。它返回的唯一密钥策略名称为默认名称。

导入

require 'vendor/autoload.php'; use Aws\Kms\KmsClient; 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"; }

检索密钥策略

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

GetKeyPolicy 需要策略名称。除非您在创建 CMK 时已创建密钥策略,否则,唯一有效的策略名称为默认值。详细了解默认密钥策略

导入

require 'vendor/autoload.php'; use Aws\Kms\KmsClient; 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"; }

设置密钥策略

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

PutKeyPolicy 需要策略名称。除非您在创建 CMK 时已创建密钥策略,否则,唯一有效的策略名称为默认值。详细了解默认密钥策略

导入

require 'vendor/autoload.php'; use Aws\Kms\KmsClient; 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"; }