AWS 文档 AWS SDK示例 GitHub 存储库中还有更多SDK示例
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS KMS 使用示例 AWS CLI
以下代码示例向您展示了如何使用with来执行操作和实现常见场景 AWS KMS。 AWS Command Line Interface
操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。
每个示例都包含一个指向完整源代码的链接,您可以在其中找到有关如何在上下文中设置和运行代码的说明。
主题
操作
以下代码示例演示如何使用 cancel-key-deletion
。
- AWS CLI
-
取消按计划删除客户托管KMS密钥
以下
cancel-key-deletion
示例取消了按计划删除客户托管KMS密钥的操作。aws kms cancel-key-deletion \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
cancel-key-deletion
命令成功后,定时删除即被取消。但是,密钥的密KMS钥状态为Disabled
,因此您不能在加密操作中使用该KMS密钥。要恢复其功能,请使用enable-key
命令。有关更多信息,请参阅《密钥管理服务开发者指南》中的计划和取消AWS 密钥删除。
-
有关API详细信息,请参阅 “CancelKeyDeletion AWS CLI
命令参考”。
-
以下代码示例演示如何使用 connect-custom-key-store
。
- AWS CLI
-
连接自定义密钥库
以下
connect-custom-key-store
示例重新连接指定的自定义密钥库。您可以使用这样的命令首次连接自定义密钥存储库或重新连接已断开连接的密钥库。您可以使用此命令连接 AWS 云HSM密钥存储库或外部密钥存储库。
aws kms connect-custom-key-store \ --custom-key-store-id
cks-1234567890abcdef0
此命令不返回任何输出。要验证命令是否有效,请使用
describe-custom-key-stores
命令。有关连接 AWS 云HSM密钥存储的信息,请参阅《密钥管理服务开发人员指南》中的连接和断开 AWS 云AWS 密HSM钥存储库的连接。
有关连接外部密钥存储的信息,请参阅《密钥管理服务开发人员指南》中的连接和断开外部AWS 密钥存储库的连接。
-
有关API详细信息,请参阅 “ConnectCustomKeyStore AWS CLI
命令参考”。
-
以下代码示例演示如何使用 create-alias
。
- AWS CLI
-
为KMS密钥创建别名
以下
create-alias
命令为由密钥 ID 标识的KMS密钥创建名example-alias
为的别名1234abcd-12ab-34cd-56ef-1234567890ab
。别名名称必须以
alias/
开头。请勿使用以开头的别名alias/aws
;这些别名保留给使用 AWS。aws kms create-alias \ --alias-name
alias/example-alias
\ --target-key-id1234abcd-12ab-34cd-56ef-1234567890ab
此命令不返回任何输出。要查看新别名,请使用
list-aliases
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的使用别名。
-
有关API详细信息,请参阅 “CreateAlias AWS CLI
命令参考”。
-
以下代码示例演示如何使用 create-custom-key-store
。
- AWS CLI
-
示例 1:创建 AWS 云HSM密钥存储
以下
create-custom-key-store
示例使用所需参数创建由 Cl AWS oud HSM 集群支持的 AWS 云HSM密钥存储。您也可以添加custom-key-store-type``parameter with the default value: ``AWS_CLOUDHSM
.要在中为
trust-anchor-certificate
命令指定文件输入 AWS CLI,必须file://
使用前缀。aws kms create-custom-key-store \ --custom-key-store-name
ExampleCloudHSMKeyStore
\ --cloud-hsm-cluster-idcluster-1a23b4cdefg
\ --key-store-passwordkmsPswd
\ --trust-anchor-certificatefile://customerCA.crt
输出:
{ "CustomKeyStoreId": cks-1234567890abcdef0 }
有关更多信息,请参阅《HSM密钥管理服务开发人员指南》中的创建 AWS 云AWS 密钥存储。
示例 2:创建具有公共端点连接的外部密钥存储库
以下
create-custom-key-store
示例创建了一个通过互联网与 AWS KMS通信的外部密钥存储库 (XKS)。在此示例中,
XksProxyUriPath
使用的可选前缀为example-prefix
。NOTE:如果您使用 AWS CLI版本 1.0,请在指定具有HTTP或HTTPS值的参数(例如 XksProxyUriEndpoint 参数)之前运行以下命令。
aws configure set
cli_follow_urlparam
false
否则, AWS CLI版本 1.0 会将参数值替换为在该URI地址找到的内容。
aws kms create-custom-key-store \ --custom-key-store-name
ExamplePublicEndpointXKS
\ --custom-key-store-typeEXTERNAL_KEY_STORE
\ --xks-proxy-connectivityPUBLIC_ENDPOINT
\ --xks-proxy-uri-endpoint"https://myproxy.xks.example.com"
\ --xks-proxy-uri-path"/example-prefix/kms/xks/v1"
\ --xks-proxy-authentication-credential"AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="
输出:
{ "CustomKeyStoreId": cks-2234567890abcdef0 }
有关更多信息,请参阅《密钥管理服务开发人员指南》中的创建外部AWS 密钥存储。
示例 3:创建具有VPC端点服务连接的外部密钥存储库
以下
create-custom-key-store
示例创建了一个使用亚马逊VPC终端节点服务与之通信的外部密钥存储库 (XKS) AWS KMS。NOTE:如果您使用 AWS CLI版本 1.0,请在指定具有HTTP或HTTPS值的参数(例如 XksProxyUriEndpoint 参数)之前运行以下命令。
aws configure set
cli_follow_urlparam
false
否则, AWS CLI版本 1.0 会将参数值替换为在该URI地址找到的内容。
aws kms create-custom-key-store \ --custom-key-store-name
ExampleVPCEndpointXKS
\ --custom-key-store-typeEXTERNAL_KEY_STORE
\ --xks-proxy-connectivityVPC_ENDPOINT_SERVICE
\ --xks-proxy-uri-endpoint"https://myproxy-private.xks.example.com"
\ --xks-proxy-uri-path"/kms/xks/v1"
\ --xks-proxy-vpc-endpoint-service-name"com.amazonaws.vpce.us-east-1.vpce-svc-example1"
\ --xks-proxy-authentication-credential"AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="
输出:
{ "CustomKeyStoreId": cks-3234567890abcdef0 }
有关更多信息,请参阅《密钥管理服务开发人员指南》中的创建外部AWS 密钥存储。
-
有关API详细信息,请参阅 “CreateCustomKeyStore AWS CLI
命令参考”。
-
以下代码示例演示如何使用 create-grant
。
- AWS CLI
-
创建授权
以下
create-grant
示例创建了一个授权,允许exampleUser
用户在1234abcd-12ab-34cd-56ef-1234567890ab
示例KMS密钥上使用该decrypt
命令。停用主体是adminRole
角色。该授权使用EncryptionContextSubset
授权约束,以便仅在decrypt
请求中的加密上下文包含"Department": "IT"
键值对时才允许此权限。aws kms create-grant \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --grantee-principalarn:aws:iam::123456789012:user/exampleUser
\ --operationsDecrypt
\ --constraintsEncryptionContextSubset={Department=IT}
\ --retiring-principalarn:aws:iam::123456789012:role/adminRole
输出:
{ "GrantId": "1a2b3c4d2f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "GrantToken": "<grant token here>" }
要查看有关授权的详细信息,请使用
list-grants
命令。有关更多信息,请参阅《AWS 密钥管理服务开发人员指南》AWS KMS中的授权。
-
有关API详细信息,请参阅 “CreateGrant AWS CLI
命令参考”。
-
以下代码示例演示如何使用 create-key
。
- AWS CLI
-
示例 1:在中创建客户托管KMS密钥 AWS KMS
以下
create-key
示例创建对称加密KMS密钥。要创建基本KMS密钥,即对称加密密钥,无需指定任何参数。这些参数的默认值会创建对称加密密钥。
由于此命令未指定密钥策略,因此该KMS密钥将获得以编程方式创建的密钥的默认KMS密钥策略。要查看密钥策略,请使用
get-key-policy
命令。要更改密钥策略,请使用put-key-policy
命令。aws kms create-key
该
create-key
命令返回密钥元数据,包括密钥 ID 和新密钥ARN的KMS密钥。您可以使用这些值来标识其他 AWS KMS操作中的KMS密钥。输出不包括标签。要查看KMS密钥的标签,请使用list-resource-tags command
。输出:
{ "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2017-07-05T14:04:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_KMS" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }
注意:该
create-key
命令不允许您指定别名。要为新KMS密钥创建别名,请使用create-alias
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的创建密钥。
示例 2:创建用于加密和解密的非对称密RSAKMS钥
以下
create-key
示例创建了一个包含用于加密和解KMS密的非对称RSA密钥对的密钥。aws kms create-key \ --key-spec
RSA_4096
\ --key-usageENCRYPT_DECRYPT
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2021-04-05T14:04:55-07:00", "CustomerMasterKeySpec": "RSA_4096", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "RSA_4096", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_KMS" } }
有关更多信息,请参阅《密钥管理服务开发人员指南》 AWS KMS中的非对称AWS密钥。
示例 3:创建用于签名和验证的非对称椭圆曲线KMS密钥
创建包含非对称椭圆曲线 () KMS ECC 密钥对的非对称密钥,用于签名和验证。尽管
SIGN_VERIFY
该--key-usage
参数是ECCKMS键的唯一有效值,但该参数也是必需的。aws kms create-key \ --key-spec
ECC_NIST_P521
\ --key-usageSIGN_VERIFY
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "ECC_NIST_P521", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "ECC_NIST_P521", "KeyState": "Enabled", "KeyUsage": "SIGN_VERIFY", "MultiRegion": false, "Origin": "AWS_KMS", "SigningAlgorithms": [ "ECDSA_SHA_512" ] } }
有关更多信息,请参阅《密钥管理服务开发人员指南》 AWS KMS中的非对称AWS密钥。
示例 4:创建HMACKMS密钥
以下
create-key
示例创建一个 384 位HMACKMS的密钥。--key-usage
参数的GENERATE_VERIFY_MAC
值是必需的,即使它是HMACKMS键的唯一有效值。aws kms create-key \ --key-spec
HMAC_384
\ --key-usageGENERATE_VERIFY_MAC
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2022-04-05T14:04:55-07:00", "CustomerMasterKeySpec": "HMAC_384", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "HMAC_384", "KeyState": "Enabled", "KeyUsage": "GENERATE_VERIFY_MAC", "MacAlgorithms": [ "HMAC_SHA_384" ], "MultiRegion": false, "Origin": "AWS_KMS" } }
有关更多信息,请参阅《HMAC密AWS 钥管理服务开发人员指南》 AWS KMS中的密钥。
示例 4:创建多区域主键 KMS
以下
create-key
示例创建多区域主对称加密密钥。由于所有参数的默认值都会创建对称加密密钥,因此该密KMS钥只需要该--multi-region
参数。在中 AWS CLI,要表示布尔参数为真,只需指定参数名称即可。aws kms create-key \ --multi-region
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab", "AWSAccountId": "111122223333", "CreationDate": "2021-09-02T016:15:21-09:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "mrk-1234abcd12ab34cd56ef12345678990ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": true, "MultiRegionConfiguration": { "MultiRegionKeyType": "PRIMARY", "PrimaryKey": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab", "Region": "us-west-2" }, "ReplicaKeys": [] }, "Origin": "AWS_KMS" } }
有关更多信息,请参阅《密钥管理服务开发人员指南》 AWS KMS中的非对称AWS密钥。
示例 5:为导入的KMS密钥材料创建密钥
以下
create-key
示例创建了一个不带KMS密钥材料的密钥。操作完成后,您可以将自己的密钥材料导入到密KMS钥中。要创建此KMS密钥,请将--origin
参数设置为EXTERNAL
。aws kms create-key \ --origin
EXTERNAL
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": false, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "PendingImport", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "EXTERNAL" } }
有关更多信息,请参阅《AWS KMS密钥管理服务开发人员指南》中的导入密AWS 钥中的密钥材料。
示例 6:在 AWS Cloud KMS 密钥存储区中创建HSM密钥
以下
create-key
示例在指定的 AWS Cloud KMS 密钥存储区中创建了一个HSM密钥。该操作在中创建KMS密钥及其元数据, AWS KMS并在与自定义密钥存储关联的 AWS Cloud HSM 集群中创建密钥材料。--custom-key-store-id
和--origin
参数是必需的。aws kms create-key \ --origin
AWS_CLOUDHSM
\ --custom-key-store-idcks-1234567890abcdef0
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CloudHsmClusterId": "cluster-1a23b4cdefg", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "CustomKeyStoreId": "cks-1234567890abcdef0", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_CLOUDHSM" } }
有关更多信息,请参阅《HSM密钥管理服务开发人员指南》中的AWS Cloud AWS 密钥存储。
示例 7:在外部密KMS钥存储库中创建密钥
以下
create-key
示例在指定的外部KMS密钥存储库中创建了一个密钥。在此命令中需要使用--custom-key-store-id
、--origin
和--xks-key-id
参数。--xks-key-id
参数指定外部密钥管理器中现有对称加密密钥的 ID。此密钥用作密钥的外部密KMS钥材料。参数的值必须--origin
为EXTERNAL_KEY_STORE
。custom-key-store-id
参数必须标识连接到其外部密钥存储代理的外部密钥存储。aws kms create-key \ --origin EXTERNAL_KEY_STORE \ --custom-key-store-id cks-9876543210fedcba9 \ --xks-key-id bb8562717f809024
输出:
{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2022-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "CustomKeyStoreId": "cks-9876543210fedcba9", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "EXTERNAL_KEY_STORE", "XksKeyConfiguration": { "Id": "bb8562717f809024" } } }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的外部密钥存储。
-
有关API详细信息,请参阅 “CreateKey AWS CLI
命令参考”。
-
以下代码示例演示如何使用 decrypt
。
- AWS CLI
-
示例 1:使用对称密KMS钥解密加密消息(Linux 和 macOS)
以下
decrypt
命令示例演示了使用解密数据的推荐方法。 AWS CLI此版本展示了如何使用对称KMS密钥解密数据。在文件中提供密文。在
--ciphertext-blob
参数的值中,使用fileb://
前缀,它告诉从二进制文件中读CLI取数据。如果文件不在当前目录中,请键入文件的完整路径。有关从文件中读取 AWS CLI参数值的更多信息,请参阅《AWS 命令行界面用户指南》中的从文件加载 AWS CLI参数 < https://docs.aws.amazon.com/cli/ latest/userguide/cli-usage-parameters-file .html> 和AWS 命令行工具博客中的本地文件参数最佳实践 < dev https://aws.amazon.com/blogs/ eloper/ best-practices-for-local-file-parameters/>。指定解密密钥以解密密文。使用对称KMS密钥解密时不需要参数。--key-id
KMS AWS KMS可以从密文中的元数据中获取用于加密数据的密KMS钥的密钥 ID。但是,指定您正在使用的KMS密钥始终是最佳做法。这种做法可确保您使用所需的KMS密钥,并防止您无意中使用您不信任的密KMS钥解密密文。将纯文本输出请求为文本值。该--query
参数告诉仅从输出中获取字段的值。CLIPlaintext
--output
参数以 text.base64 解码格式返回明文输出并将其保存在文件中。以下示例将Plaintext
参数的值传送(|)给 Base64 实用工具,该程序负责对其进行解码。然后,它将解码后的输出重定向(>)到ExamplePlaintext
文件。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。
aws kms decrypt \ --ciphertext-blob
fileb://ExampleEncryptedFile
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
\ --queryPlaintext
|
base64
\ --decode>
ExamplePlaintextFile
此命令不生成任何输出。
decrypt
命令的输出经过 base64 解码并保存在文件中。有关更多信息,请参阅《密AWS 钥管理服务API参考》中的 “解密”。
示例 2:使用对称密KMS钥解密加密邮件(Windows 命令提示符)
以下示例与前一个示例相同,不同之处在于,它使用
certutil
实用程序对明文数据进行 Base64 解码。此过程需要两个命令,如以下示例所示。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。
aws kms decrypt
^
--ciphertext-blobfileb://ExampleEncryptedFile
^
--key-id1234abcd-12ab-34cd-56ef-1234567890ab
^
--outputtext
^
--queryPlaintext
>
ExamplePlaintextFile.base64
运行
certutil
命令。certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile
输出:
Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.
有关更多信息,请参阅《密AWS 钥管理服务API参考》中的 “解密”。
示例 3:使用非对称密KMS钥解密加密消息(Linux 和 macOS)
以下
decrypt
命令示例显示如何解密使用RSA非对称KMS密钥加密的数据。使用非对称KMS密钥时,必须使用
encryption-algorithm
参数,该参数指定用于加密纯文本的算法。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。
aws kms decrypt \ --ciphertext-blob
fileb://ExampleEncryptedFile
\ --key-id0987dcba-09fe-87dc-65ba-ab0987654321
\ --encryption-algorithmRSAES_OAEP_SHA_256
\ --outputtext
\ --queryPlaintext
|
base64
\ --decode>
ExamplePlaintextFile
此命令不生成任何输出。
decrypt
命令的输出经过 base64 解码并保存在文件中。有关更多信息,请参阅《密钥管理服务开发人员指南》 AWS KMS中的非对称AWS密钥。
-
有关API详细信息,请参阅《AWS CLI 命令参考》中的 “解密
”。
-
以下代码示例演示如何使用 delete-alias
。
- AWS CLI
-
删除 AWS KMS别名
以下
delete-alias
示例将删除别名alias/example-alias
。别名名称必须以 alias/ 开头。aws kms delete-alias \ --alias-name
alias/example-alias
此命令不生成任何输出。要查找别名,请使用
list-aliases
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的删除别名。
-
有关API详细信息,请参阅 “DeleteAlias AWS CLI
命令参考”。
-
以下代码示例演示如何使用 delete-custom-key-store
。
- AWS CLI
-
删除自定义密钥库
以下
delete-custom-key-store
示例删除了指定的自定义密钥库。删除 AWS Cloud HSM 密钥存储对关联的 Cloud HSM 集群没有影响。删除外部密钥存储不会影响关联的外部密钥存储代理、外部密钥管理器或外部密钥。
NOTE:在删除自定义密钥库之前,必须计划删除自定义KMS密钥库中的所有密钥,然后等待这些KMS密钥被删除。然后,您必须断开自定义密钥存储的连接。有关在自定义KMS密钥库中查找密钥的帮助,请参阅《密钥管理服务开发者指南》中的 “删除 AWS Cloud HSM AWS 密钥存储” (API)。
delete-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0
此命令不返回任何输出。要验证自定义密钥库是否已删除,请使用
describe-custom-key-stores
命令。有关删除 AWS Cloud HSM 密钥存储的信息,请参阅《HSM密钥管理服务开发人员指南》中的 “删除 AWS 云AWS 密钥存储”。
有关删除外部密钥库的信息,请参阅《密钥管理服务开发人员指南》中的删除外部AWS 密钥存储库。
-
有关API详细信息,请参阅 “DeleteCustomKeyStore AWS CLI
命令参考”。
-
以下代码示例演示如何使用 delete-imported-key-material
。
- AWS CLI
-
从密钥中删除导入的KMS密钥材料
以下
delete-imported-key-material
示例删除已导入密钥的KMS密钥材料。aws kms delete-imported-key-material \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。要验证密钥材料是否已删除,请使用
describe-key
命令查找PendingImport
或的密钥状态PendingDeletion
。有关更多信息,请参阅密钥管理服务开发人员指南中的删除导入的密钥材料< https://docs.aws.amazon.com/kms/ latest/developerguide/importing-keys-delete-key-material .html>。AWS
-
有关API详细信息,请参阅 “DeleteImportedKeyMaterial AWS CLI
命令参考”。
-
以下代码示例演示如何使用 derive-shared-secret
。
- AWS CLI
-
派生共享密钥
以下
derive-shared-secret
示例使用密钥协议算法派生共享密钥。您必须使用非对称NIST推荐的椭圆曲线 (ECC) 或SM2(仅限中国区域)KMS密钥对,
KeyUsage
值为才能调用。KEY_AGREEMENT
DeriveSharedSecretaws kms derive-shared-secret \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --key-agreement-algorithmECDH
\ --public-key"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvH3Yj0wbkLEpUl95Cv1cJVjsVNSjwGq3tCLnzXfhVwVvmzGN8pYj3U8nKwgouaHbBWNJYjP5VutbbkKS4Kv4GojwZBJyHN17kmxo8yTjRmjR15SKIQ8cqRA2uaERMLnpztIXdZp232PQPbWGxDyXYJ0aJ5EFSag"
输出:
{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "SharedSecret": "MEYCIQCKZLWyTk5runarx6XiAkU9gv3lbwPO/pHa+DXFehzdDwIhANwpsIV2g/9SPWLLsF6p/hiSskuIXMTRwqrMdVKWTMHG", "KeyAgreementAlgorithm": "ECDH", "KeyOrigin": "AWS_KMS" }
有关更多信息,请参阅《AWS 密钥管理服务API参考》DeriveSharedSecret中的。
-
有关API详细信息,请参阅 “DeriveSharedSecret AWS CLI
命令参考”。
-
以下代码示例演示如何使用 describe-custom-key-stores
。
- AWS CLI
-
示例 1:获取有关 AWS Cloud HSM 密钥存储的详细信息
以下
describe-custom-key-store
示例显示了有关指定 AWS Cloud HSM 密钥存储的详细信息。所有类型的自定义密钥库的命令都相同,但输出因密钥库类型以及外部密钥存储的连接选项而异。默认情况下,此命令显示有关账户和区域中所有自定义密钥存储的信息。要显示有关特定自定义密钥库的信息,请使用
custom-key-store-name
或custom-key-store-id
参数。aws kms describe-custom-key-stores \ --custom-key-store-name
ExampleCloudHSMKeyStore
此命令的输出包括有关 AWS 云HSM密钥库的有用详细信息,包括其连接状态 (
ConnectionState
)。如果连接状态为FAILED
,则输出将包含一个描述问题的ConnectionErrorCode
字段。输出:
{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "CONNECTED", "CreationDate": "2022-04-05T14:04:55-07:00", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleExternalKeyStore", "TrustAnchorCertificate": "<certificate appears here>" } ] }
有关更多信息,请参阅HSM密钥管理服务开发人员指南中的查看 AWS Cloud AWS 密钥存储。
示例 2:获取有关具有公共端点连接的外部密钥存储库的详细信息
以下
describe-custom-key-store
示例显示有关指定外部密钥存储的详细信息。所有类型的自定义密钥库的命令都相同,但输出因密钥库类型以及外部密钥存储的连接选项而异。默认情况下,此命令显示有关账户和区域中所有自定义密钥存储的信息。要显示有关特定自定义密钥库的信息,请使用
custom-key-store-name
或custom-key-store-id
参数。aws kms describe-custom-key-stores \ --custom-key-store-id
cks-9876543210fedcba9
此命令的输出包括有关外部密钥库的有用详细信息,包括其连接状态 (
ConnectionState
)。如果连接状态为FAILED
,则输出将包含一个描述问题的ConnectionErrorCode
字段。输出:
{ "CustomKeyStores": [ { "CustomKeyStoreId": "cks-9876543210fedcba9", "CustomKeyStoreName": "ExampleXKS", "ConnectionState": "CONNECTED", "CreationDate": "2022-12-02T07:48:55-07:00", "CustomKeyStoreType": "EXTERNAL_KEY_STORE", "XksProxyConfiguration": { "AccessKeyId": "ABCDE12345670EXAMPLE", "Connectivity": "PUBLIC_ENDPOINT", "UriEndpoint": "https://myproxy.xks.example.com", "UriPath": "/example-prefix/kms/xks/v1" } } ] }
有关更多信息,请参阅《密钥管理服务开发人员指南》中的查看外部AWS 密钥存储。
示例 3:获取有关具有VPC端点服务连接功能的外部密钥存储的详细信息
以下
describe-custom-key-store
示例显示有关指定外部密钥存储的详细信息。所有类型的自定义密钥库的命令都相同,但输出因密钥库类型以及外部密钥存储的连接选项而异。默认情况下,此命令显示有关账户和区域中所有自定义密钥存储的信息。要显示有关特定自定义密钥库的信息,请使用
custom-key-store-name
或custom-key-store-id
参数。aws kms describe-custom-key-stores \ --custom-key-store-id
cks-2234567890abcdef0
此命令的输出包括有关外部密钥库的有用详细信息,包括其连接状态 (
ConnectionState
)。如果连接状态为FAILED
,则输出将包含一个描述问题的ConnectionErrorCode
字段。输出:
{ "CustomKeyStores": [ { "CustomKeyStoreId": "cks-3234567890abcdef0", "CustomKeyStoreName": "ExampleVPCExternalKeyStore", "ConnectionState": "CONNECTED", "CreationDate": "2022-12-22T07:48:55-07:00", "CustomKeyStoreType": "EXTERNAL_KEY_STORE", "XksProxyConfiguration": { "AccessKeyId": "ABCDE12345670EXAMPLE", "Connectivity": "VPC_ENDPOINT_SERVICE", "UriEndpoint": "https://myproxy-private.xks.example.com", "UriPath": "/kms/xks/v1", "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example1" } } ] }
有关更多信息,请参阅《密钥管理服务开发人员指南》中的查看外部AWS 密钥存储。
-
有关API详细信息,请参阅 “DescribeCustomKeyStores AWS CLI
命令参考”。
-
以下代码示例演示如何使用 describe-key
。
- AWS CLI
-
示例 1:查找有关KMS密钥的详细信息
以下
describe-key
示例在示例账户和区域中获取有关 Amazon S3 AWS 托管密钥的详细信息。您可以使用此命令来查找有关 AWS 托管密钥和客户托管密钥的详细信息。要指定KMS密钥,请使用
key-id
参数。此示例使用别名值,但您可以在此命令ARN中使用密钥 ID ARN、密钥、别名或别名。aws kms describe-key \ --key-id
alias/aws/s3
输出:
{ "KeyMetadata": { "AWSAccountId": "846764612917", "KeyId": "b8a9477d-836c-491f-857e-07937918959b", "Arn": "arn:aws:kms:us-west-2:846764612917:key/b8a9477d-836c-491f-857e-07937918959b", "CreationDate": 2017-06-30T21:44:32.140000+00:00, "Enabled": true, "Description": "Default KMS key that protects my S3 objects when no other key is defined", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "AWS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的查看密钥。
示例 2:获取有关RSA非对称KMS密钥的详细信息
以下
describe-key
示例获取有关用于签名和验证的非对称RSAKMS密钥的详细信息。aws kms describe-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2019-12-02T19:47:14.861000+00:00", "CustomerMasterKeySpec": "RSA_2048", "Enabled": false, "Description": "", "KeyState": "Disabled", "Origin": "AWS_KMS", "MultiRegion": false, "KeyManager": "CUSTOMER", "KeySpec": "RSA_2048", "KeyUsage": "SIGN_VERIFY", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] } }
示例 3:获取有关多区域副本密钥的详细信息
以下
describe-key
示例获取多区域副本密钥的元数据。此多区域密钥是对称加密密钥。任何多区域密钥的describe-key
命令输出都会返回有关主密钥及其所有副本的信息。aws kms describe-key \ --key-id
arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab
输出:
{ "KeyMetadata": { "MultiRegion": true, "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "CreationDate": "2021-06-28T21:09:16.114000+00:00", "Description": "", "Enabled": true, "KeyId": "mrk-1234abcd12ab34cd56ef1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_KMS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegionConfiguration": { "MultiRegionKeyType": "PRIMARY", "PrimaryKey": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "us-west-2" }, "ReplicaKeys": [ { "Arn": "arn:aws:kms:eu-west-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "eu-west-1" }, { "Arn": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "ap-northeast-1" }, { "Arn": "arn:aws:kms:sa-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "sa-east-1" } ] } } }
示例 4:获取有关HMACKMS密钥的详细信息
以下
describe-key
示例获取有关HMACKMS密钥的详细信息。aws kms describe-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "KeyMetadata": { "AWSAccountId": "123456789012", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2022-04-03T22:23:10.194000+00:00", "Enabled": true, "Description": "Test key", "KeyUsage": "GENERATE_VERIFY_MAC", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "HMAC_256", "MacAlgorithms": [ "HMAC_SHA_256" ], "MultiRegion": false } }
-
有关API详细信息,请参阅 “DescribeKey AWS CLI
命令参考”。
-
以下代码示例演示如何使用 disable-key-rotation
。
- AWS CLI
-
禁用KMS密钥的自动轮换
以下
disable-key-rotation
示例禁用客户托管KMS密钥的自动轮换。要重新启用自动旋转,请使用enable-key-rotation
命令。aws kms disable-key-rotation \ --key-id
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。要验证KMS密钥是否已禁用自动轮换,请使用
get-key-rotation-status
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的轮换密钥。
-
有关API详细信息,请参阅 “DisableKeyRotation AWS CLI
命令参考”。
-
以下代码示例演示如何使用 disable-key
。
- AWS CLI
-
暂时禁用KMS密钥
以下示例使用
disable-key
命令禁用客户托管KMS密钥。要重新启用KMS密钥,请使用enable-key
命令。aws kms disable-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的启用和禁用密钥。
-
有关API详细信息,请参阅 “DisableKey AWS CLI
命令参考”。
-
以下代码示例演示如何使用 disconnect-custom-key-store
。
- AWS CLI
-
断开自定义密钥存储的连接
以下
disconnect-custom-key-store
示例断开自定义密钥库与其 AWS Cloud HSM 集群的连接。您可以断开密钥库的连接以解决问题、更新其设置或阻止KMS密钥库中的密钥用于加密操作。此命令适用于所有自定义密钥存储,包括 AWS Cloud HSM 密钥存储和外部密钥存储。
在运行此命令之前,请将示例自定义密钥存储 ID 替换为有效 ID。
$ aws kms disconnect-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0
此命令不产生任何输出。请验证命令是否有效,请使用该
describe-custom-key-stores
命令。有关断开 AWS 云HSM密钥存储库连接的更多信息,请参阅《密钥管理服务开发人员指南》中的连接和断开 AWS 云AWS 密HSM钥存储库的连接。
有关断开外部密钥存储库连接的更多信息,请参阅《密钥管理服务开发人员指南》中的连接和断开外部AWS 密钥存储库的连接。
-
有关API详细信息,请参阅 “DisconnectCustomKeyStore AWS CLI
命令参考”。
-
以下代码示例演示如何使用 enable-key-rotation
。
- AWS CLI
-
启用KMS密钥的自动轮换
以下
enable-key-rotation
示例启用了客户托管KMS密钥的自动轮换,轮换周期为 180 天。该KMS密钥将自该命令完成之日起一年(大约 365 天)以及此后每年轮换。该
--key-id
参数用于标识KMS密钥。此示例使用密钥ARN值,但您可以使用密钥 ID 或密钥ARN的密钥KMS。该--rotation-period-in-days
参数指定每个轮换日期之间的天数。请指定 90 到 2560 天之间的值。如果未指定值,则默认值为 365 天。aws kms enable-key-rotation \ --key-id
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
\ --rotation-period-in-days180
此命令不生成任何输出。要验证KMS密钥是否已启用,请使用
get-key-rotation-status
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的轮换密钥。
-
有关API详细信息,请参阅 “EnableKeyRotation AWS CLI
命令参考”。
-
以下代码示例演示如何使用 enable-key
。
- AWS CLI
-
启用密KMS钥
以下
enable-key
示例启用客户托管密钥。您可以使用这样的命令来启用通过该命令暂时禁用的KMS密钥。disable-key
您还可以使用它来启用已禁用的KMS密钥,因为该密钥已计划删除且删除已取消。要指定KMS密钥,请使用
key-id
参数。此示例使用密钥 ID 值,但您可以在此命令中使用密钥 ID 或密钥ARN值。在运行此命令之前,将密钥 ID 示例替换为有效 ID。
aws kms enable-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。要验证KMS密钥是否已启用,请使用
describe-key
命令。查看describe-key
输出中KeyState
和Enabled
字段的值。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的启用和禁用密钥。
-
有关API详细信息,请参阅 “EnableKey AWS CLI
命令参考”。
-
以下代码示例演示如何使用 encrypt
。
- AWS CLI
-
示例 1:在 Linux 或 macOS 上对文件内容进行加密
以下
encrypt
命令演示了使用加密数据的推荐方法 AWS CLI。aws kms encrypt \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --plaintextfileb://ExamplePlaintextFile
\ --outputtext
\ --queryCiphertextBlob
|
base64
\ --decode>
ExampleEncryptedFile
该命令可以执行以下几项操作:
使用
--plaintext
参数来指示要加密的数据。此参数值必须采用 Base64 编码。plaintext
参数的值必须采用 base64 编码,或者必须使用fileb://
前缀,它告诉从文件中读取二进制数据。如果文件不在当前目录中,请键入文件的完整路径。 AWS CLI例如:fileb:///var/tmp/ExamplePlaintextFile
或fileb://C:\Temp\ExamplePlaintextFile
。有关从文件中读取 AWS CLI参数值的更多信息,请参阅《AWS 命令行界面用户指南》中的从文件加载参数和命令行工具博客上的 “本地文件参数最佳实践”。使用 --output
和--query
参数控制命令的输出。这些参数从命令的输出中提取被称为密文的加密数据。有关控制输出的更多信息,请参阅控制 AWS 命令行界面用户指南中的AWS 命令输出。使用该base64
实用程序将提取的输出解码为二进制数据。成功命令返回的密文是 base64 编码的文本。encrypt
必须先解码此文本,然后才能使用对其 AWS CLI进行解密。将二进制密文保存到文件中。命令 (> ExampleEncryptedFile
) 的最后一部分将二进制密文保存到文件中,以便于解密。有关使用解密数据的命令示例,请参阅解密示例。 AWS CLI示例 2:在 AWS CLI Windows 上使用加密数据
此示例与前一个示例相同,不同之处在于,它使用
certutil
工具代替base64
。此过程需要两个命令,如以下示例所示。aws kms encrypt \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --plaintextfileb://ExamplePlaintextFile
\ --outputtext
\ --queryCiphertextBlob
>
C:\Temp\ExampleEncryptedFile.base64certutil
-decode
C:\Temp\ExampleEncryptedFile.base64 C:\Temp\ExampleEncryptedFile示例 3:使用非对称KMS密钥加密
以下
encrypt
命令显示如何使用非对称KMS密钥加密纯文本。--encryption-algorithm
参数是必需的。与所有encrypt
CLI命令一样,plaintext
参数必须采用 base64 编码,或者您必须使用fileb://
前缀,它会告诉从文件中读 AWS CLI取二进制数据。aws kms encrypt \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --encryption-algorithmRSAES_OAEP_SHA_256
\ --plaintextfileb://ExamplePlaintextFile
\ --outputtext
\ --queryCiphertextBlob
|
base64
\ --decode>
ExampleEncryptedFile
此命令不生成任何输出。
-
有关API详细信息,请参阅《AWS CLI 命令参考》中的 “加密
”。
-
以下代码示例演示如何使用 generate-data-key-pair-without-plaintext
。
- AWS CLI
-
生成 ECC NIST P384 非对称数据密钥对
以下
generate-data-key-pair-without-plaintext
示例请求一个 ECC NIST P384 密钥对,以便在之外使用。 AWS该命令返回一个纯文本公钥和用指定KMS密钥加密的私钥的副本。它不返回纯文本私钥。您可以安全地将加密的私钥与加密数据一起存储,并在需要时调 AWS KMS用解密私钥。
要请求 ECC NIST P384 非对称数据密钥对,请使用
key-pair-spec
值为的参数。ECC_NIST_P384
您指定的KMS密钥必须是对称加密KMS密钥,即
KeySpec
值为的KMSSYMMETRIC_DEFAULT
密钥。NOTE:此示例输出中的值被截断以供显示。
aws kms generate-data-key-pair-without-plaintext \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --key-pair-specECC_NIST_P384
输出:
{ "PrivateKeyCiphertextBlob": "AQIDAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAFFxmiD134doUDzMGmfCEtcAAAHaTCCB2UGCSqGSIb3DQEHBqCCB1...", "PublicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3A3eGMyPrvSn7+LdlJE1oUoQV5HpEuHAVbdOyND+NmYDH/mL1OSIEuLrcdZ5hrMH4pk83r40l...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyPairSpec": "ECC_NIST_P384" }
PublicKey
和PrivateKeyCiphertextBlob
以 base64 编码的格式返回。有关更多信息,请参阅《密钥管理服务开发人员指南》中的数据AWS 密钥对。
-
有关API详细信息,请参阅 “GenerateDataKeyPairWithoutPlaintext AWS CLI
命令参考”。
-
以下代码示例演示如何使用 generate-data-key-pair
。
- AWS CLI
-
生成 2048 位RSA非对称数据密钥对
以下
generate-data-key-pair
示例请求一个 2048 位的RSA非对称数据密钥对,以便在之外使用。 AWS该命令返回一个纯文本公钥和一个供立即使用和删除的纯文本私钥,以及使用指定密钥加密的私钥的副本。KMS您可以安全地将加密的私钥与加密数据一起存储。要请求 2048 位RSA非对称数据密钥对,请使用
key-pair-spec
值为的参数。RSA_2048
您指定的KMS密钥必须是对称加密KMS密钥,即
KeySpec
值为的KMSSYMMETRIC_DEFAULT
密钥。NOTE:此示例输出中的值被截断以供显示。
aws kms generate-data-key-pair \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --key-pair-specRSA_2048
输出:
{ "PrivateKeyCiphertextBlob": "AQIDAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAFFxmiD134doUDzMGmfCEtcAAAHaTCCB2UGCSqGSIb3DQEHBqCCB1...", "PrivateKeyPlaintext": "MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQDcDd4YzI+u9Kfv4t2UkTWhShBXkekS4cBVt07I0P42ZgMf+YvU5IgS4ut...", "PublicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3A3eGMyPrvSn7+LdlJE1oUoQV5HpEuHAVbdOyND+NmYDH/mL1OSIEuLrcdZ5hrMH4pk83r40l...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyPairSpec": "RSA_2048" }
PublicKey
PrivateKeyPlaintext
、和PrivateKeyCiphertextBlob
以 base64 编码的格式返回。有关更多信息,请参阅《密钥管理服务开发人员指南》中的数据AWS 密钥对。
-
有关API详细信息,请参阅 “GenerateDataKeyPair AWS CLI
命令参考”。
-
以下代码示例演示如何使用 generate-data-key-without-plaintext
。
- AWS CLI
-
生成不带明文密钥的 256 位对称数据密钥
以下
generate-data-key-without-plaintext
示例请求 256 位对称数据密钥的加密副本以供在 AWS外部使用。当你准备好使用数据密钥时,你可以调 AWS KMS用解密它。要请求 256 位数据密钥,请使用值为
AES_256
的key-spec
参数。要请求 128 位数据密钥,请使用值为AES_128
的key-spec
参数。对于所有其他数据密钥长度,请使用number-of-bytes
参数。您指定的KMS密钥必须是对称加密KMS密钥,即KMS密钥规格值为 SYMMETRIC _ DEFAULT 的密钥。
aws kms generate-data-key-without-plaintext \ --key-id
"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
\ --key-specAES_256
输出:
{ "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogL", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
CiphertextBlob
(加密数据密钥)以 base64 编码的格式返回。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的数据密钥。
-
有关API详细信息,请参阅 “GenerateDataKeyWithoutPlaintext AWS CLI
命令参考”。
-
以下代码示例演示如何使用 generate-data-key
。
- AWS CLI
-
示例 1:生成 256 位对称数据密钥
以下
generate-data-key
示例请求一个 256 位的对称数据密钥以供外部使用。 AWS该命令返回一个供立即使用和删除的纯文本数据密钥,以及使用指定KMS密钥加密的该数据密钥的副本。您可以安全地将加密的数据密钥与加密的数据一起存储。要请求 256 位数据密钥,请使用值为
AES_256
的key-spec
参数。要请求 128 位数据密钥,请使用值为AES_128
的key-spec
参数。对于所有其他数据密钥长度,请使用number-of-bytes
参数。您指定的KMS密钥必须是对称加密KMS密钥,即KMS密钥规格值为 SYMMETRIC _ DEFAULT 的密钥。
aws kms generate-data-key \ --key-id
alias/ExampleAlias
\ --key-specAES_256
输出:
{ "Plaintext": "VdzKNHGzUAzJeRBVY+uUmofUGGiDzyB3+i9fVkh3piw=", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U=" }
Plaintext
(明文数据密钥)和CiphertextBlob
(加密数据密钥)均以 base64 编码的格式返回。有关更多信息,请参阅《密钥管理服务开发人员指南》中的数据密钥 < https://docs.aws.amazon.com/kms/ latest/developerguide/concepts .html #data-AWS k eys。
示例 2:生成 512 位对称数据密钥
以下
generate-data-key
示例请求用于加密和解密的 512 位对称数据密钥。该命令返回一个供立即使用和删除的纯文本数据密钥,以及使用指定KMS密钥加密的该数据密钥的副本。您可以安全地将加密的数据密钥与加密的数据一起存储。要请求 128 或 256 位以外的密钥长度,请使用
number-of-bytes
参数。为了请求 512 位数据密钥,以下示例使用值为 64(字节)的number-of-bytes
参数。您指定的KMS密钥必须是对称加密KMS密钥,即KMS密钥规格值为 SYMMETRIC _ DEFAULT 的密钥。
NOTE:此示例输出中的值被截断以供显示。
aws kms generate-data-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --number-of-bytes64
输出:
{ "CiphertextBlob": "AQIBAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAEnX/QQNmMwDfg2korNMEc8AAACaDCCAmQGCSqGSIb3DQEHBqCCAlUwggJRAgEAMIICSgYJKoZ...", "Plaintext": "ty8Lr0Bk6OF07M2BWt6qbFdNB+G00ZLtf5MSEb4al3R2UKWGOp06njAwy2n72VRm2m7z/Pm9Wpbvttz6a4lSo9hgPvKhZ5y6RTm4OovEXiVfBveyX3DQxDzRSwbKDPk/...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
Plaintext
(明文数据密钥)和CiphertextBlob
(加密数据密钥)均以 base64 编码的格式返回。有关更多信息,请参阅《密钥管理服务开发人员指南》中的数据密钥 < https://docs.aws.amazon.com/kms/ latest/developerguide/concepts .html #data-AWS k eys。
-
有关API详细信息,请参阅 “GenerateDataKey AWS CLI
命令参考”。
-
以下代码示例演示如何使用 generate-random
。
- AWS CLI
-
示例 1:生成 256 位的随机字节字符串(Linux 或)macOs
以下
generate-random
示例生成 256 位(32 字节)、以 base64 编码的随机字节字符串。该示例对字节字符串进行解码并将其保存在随机文件中。运行此命令时,您必须使用
number-of-bytes
参数指定随机值的长度(以字节为单位)。运行此命令时无需指定KMS密钥。随机字节字符串与任何KMS密钥无关。
默认情况下, AWS KMS生成随机数。但是,如果您指定自定义密钥存储< https://docs.aws.amazon.com/kms/ latest/developerguide/custom-key-store-overview .html>,则随机字节字符串将在与自定义密钥存储库关联的 AWS Cloud HSM 集群中生成。
本示例使用以下参数和值:
它使用值为的必需
--number-of-bytes
参数请求一个 32 字节(256 位)的字符串。它使用值为的--output
参数text
来指示以文本形式返回输出,而不是。它使用从响应中提取属性的值。它使用从响应中提取Plaintext
属性的值JSON。它使用重定--query parameter
向运算符 (>) 将命令的输出通过管道 (|) 传送给实用程序,该base64
实用程序对提取的输出进行解码。它使用重定向运算符 (>) 将解码后的字节字符串保存到文件中。它使用32
AWS CLIExampleRandom
重定向运算符 (>),用于将二进制密文保存到文件中。aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext | base64 --decode > ExampleRandom
此命令不生成任何输出。
有关更多信息,请参阅《AWS 密钥管理服务API参考》GenerateRandom中的。
示例 2:生成 256 位随机数(Windows 命令提示符)
以下示例使用
generate-random
命令生成 256 位(32 字节)、以 base64 编码的随机字节字符串。该示例对字节字符串进行解码并将其保存在随机文件中。此示例与前面的示例相同,不同之处在于:它在将随机字节字符串保存到文件之前,使用 Windows 中的certutil
实用工具对随机字节字符串进行 base64 解码。首先,生成一个 base64 编码的随机字节字符串并将其保存在临时文件
ExampleRandom.base64
中。aws kms generate-random \ --number-of-bytes
32
\ --outputtext
\ --queryPlaintext
>
ExampleRandom.base64
由于
generate-random
命令的输出保存在文件中,因此,此示例不生成任何输出。现在,使用
certutil -decode
命令解码ExampleRandom.base64
文件中以 base64 编码的字节字符串。然后,它将解码后的字节字符串保存在ExampleRandom
文件中。certutil -decode ExampleRandom.base64 ExampleRandom
输出:
Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.
有关更多信息,请参阅《AWS 密钥管理服务API参考》GenerateRandom中的。
-
有关API详细信息,请参阅 “GenerateRandom AWS CLI
命令参考”。
-
以下代码示例演示如何使用 get-key-policy
。
- AWS CLI
-
将密钥策略从一个密KMS钥复制到另一个KMS密钥
以下
get-key-policy
示例从一个密钥中获取KMS密钥策略并将其保存在文本文件中。然后,它使用文本文件作为策略输入替换另一个KMS密钥的策略。由于的
--policy
参数put-key-policy
需要字符串,因此必须使用--output text
选项将输出作为文本字符串返回,而不是JSON。aws kms get-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --queryPolicy
\ --outputtext
>
policy.txt
aws
kms
put-key-policy
\ --policy-namedefault
\ --key-id0987dcba-09fe-87dc-65ba-ab0987654321
\ --policyfile://policy.txt
此命令不生成任何输出。
有关更多信息,请参阅 “AWS KMSAPI参考” PutKeyPolicy中的。
-
有关API详细信息,请参阅 “GetKeyPolicy AWS CLI
命令参考”。
-
以下代码示例演示如何使用 get-key-rotation-status
。
- AWS CLI
-
检索KMS密钥的轮换状态。
以下
get-key-rotation-status
示例返回有关指定KMS密钥轮换状态的信息,包括是否启用自动轮换、轮换周期和下一个计划轮换日期。您可以对客户托管KMS密钥和 AWS 托管密钥使用此命令。KMS但是,所有 AWS 托管KMS密钥每年都会自动轮换。aws kms get-key-rotation-status \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyRotationEnabled": true, "NextRotationDate": "2024-02-14T18:14:33.587000+00:00", "RotationPeriodInDays": 365 }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的轮换密钥。
-
有关API详细信息,请参阅 “GetKeyRotationStatus AWS CLI
命令参考”。
-
以下代码示例演示如何使用 get-parameters-for-import
。
- AWS CLI
-
获取将密钥材料导入密钥所需的物KMS品
以下
get-parameters-for-import
示例获取将密钥材料导入密钥所需的公钥和导入KMS令牌。使用该import-key-material
命令时,请务必使用由同一get-parameters-for-import
命令中返回的公钥加密的导入令牌和密钥材料。此外,您在此命令中指定的包装算法必须是用于使用公钥加密密钥材料的算法。要指定KMS密钥,请使用
key-id
参数。此示例使用密钥 ID,但您可以在此命令ARN中使用密钥 ID 或密钥。aws kms get-parameters-for-import \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --wrapping-algorithmRSAES_OAEP_SHA_256
\ --wrapping-key-specRSA_2048
输出:
{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "PublicKey": "<public key base64 encoded data>", "ImportToken": "<import token base64 encoded data>", "ParametersValidTo": 1593893322.32 }
有关更多信息,请参阅《密钥管理服务开发者指南》中的下载公AWS 钥和导入令牌。
-
有关API详细信息,请参阅 “GetParametersForImport AWS CLI
命令参考”。
-
以下代码示例演示如何使用 get-public-key
。
- AWS CLI
-
示例 1:下载非对称密钥的公KMS钥
以下
get-public-key
示例下载非对称密钥的公KMS钥。除了返回公钥外,输出还包括您在外部安全使用公钥所需的信息 AWS KMS,包括密钥使用情况和支持的加密算法。
aws kms get-public-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "PublicKey": "jANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAl5epvg1/QtJhxSi2g9SDEVg8QV/...", "CustomerMasterKeySpec": "RSA_4096", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ] }
有关使用非对称KMS密钥的更多信息 AWS KMS,请参阅《密钥管理服务参考》中的 “使用对称密钥和非对称密钥”AWS 。API
示例 2:将公钥转换为DER格式(Linux 和 macOS)
以下
get-public-key
示例下载非对称密钥的公KMS钥并将其保存在DER文件中。当您在中使用
get-public-key
命令时 AWS CLI,它会返回一个 DER Base64 编码的 X.509 公钥。此示例以文本形式获取PublicKey
属性的值。它对 Base64 进行解码PublicKey
并将其保存在文件中。public_key.der
output
参数以文本形式返回输出,而不是JSON。该--query
参数仅获取PublicKey
属性,而不是您在外部安全使用公钥所需的属性 AWS KMS。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。
aws kms get-public-key \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
\ --queryPublicKey
|
base64
--decode>
public_key.der
此命令不生成任何输出。
有关使用非对称KMS密钥的更多信息 AWS KMS,请参阅《密钥管理服务参考》中的 “使用对称密钥和非对称密钥”AWS 。API
-
有关API详细信息,请参阅 “GetPublicKey AWS CLI
命令参考”。
-
以下代码示例演示如何使用 import-key-material
。
- AWS CLI
-
将密钥材料导入KMS密钥
以下
import-key-material
示例将密钥材料上传到创建时没有KMS密钥材料的密钥中。密钥的密KMS钥状态必须是PendingImport
。此命令使用您使用该
get-parameters-for-import
命令返回的公钥加密的密钥材料。它还使用来自同一get-parameters-for-import
命令的导入令牌。该
expiration-model
参数表示密钥材料在valid-to
参数指定的日期和时间自动过期。当密钥材料过期时, AWS KMS删除密钥材料,密钥的KMS密钥状态变为Pending import
,KMS密钥将无法使用。要恢复KMS密钥,必须重新导入相同的密钥材料。要使用不同的密钥材料,必须创建新的KMS密钥。在运行此命令之前,请将示例密钥 ID 替换为您 AWS 账户ARN中的有效密钥 ID 或密钥。
aws kms import-key-material \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --encrypted-key-materialfileb://EncryptedKeyMaterial.bin
\ --import-tokenfileb://ImportToken.bin
\ --expiration-modelKEY_MATERIAL_EXPIRES
\ --valid-to2021-09-21T19:00:00Z
此命令不生成任何输出。
有关导入密钥材料的更多信息,请参阅《密钥管理服务开发人员指南》中的导入AWS 密钥材料。
-
有关API详细信息,请参阅 “ImportKeyMaterial AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-aliases
。
- AWS CLI
-
示例 1:列出 AWS 账户和区域中的所有别名
以下示例使用
list-aliases
命令列出 AWS 账户默认区域中的所有别名。输出包括与 AWS 托管KMS密钥和客户托管密钥关联的别名。KMSaws kms list-aliases
输出:
{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/testKey", "AliasName": "alias/testKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/FinanceDept", "AliasName": "alias/FinanceDept", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "AliasName": "alias/aws/dynamodb", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/ebs", "AliasName": "alias/aws/ebs", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef" }, ... ] }
示例 2:列出特定KMS密钥的所有别名
以下示例使用
list-aliases
命令及其key-id
参数列出与特定KMS密钥关联的所有别名。每个别名仅与一个KMS密钥相关联,但一个KMS密钥可以有多个别名。此命令非常有用,因为 AWS KMS控制台仅列出每个KMS密钥的一个别名。要查找KMS密钥的所有别名,必须使用
list-aliases
命令。此示例使用密钥的KMS密钥 ID 作为
--key-id
参数,但您可以在此命令ARN中使用密钥 ID ARN、密钥、别名或别名。aws kms list-aliases --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "Aliases": [ { "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/oregon-test-key", "AliasName": "alias/oregon-test-key" }, { "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project121-test", "AliasName": "alias/project121-test" } ] }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的使用别名。
-
有关API详细信息,请参阅 “ListAliases AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-grants
。
- AWS CLI
-
查看 AWS KMS密钥上的授权
以下
list-grants
示例显示了您账户中针对亚马逊 DynamoDB 的指定 AWS 托管KMS密钥的所有授权。该授权允许 DynamoDB 在将 DynamoDB 表写入磁盘之前代表您使用KMS密钥对其进行加密。您可以使用这样的命令来查看 AWS 账户和区域中 AWS 托管KMS密钥和客户托管KMS密钥的授权。此命令使用带有密钥 ID 的
key-id
参数来识别KMS密钥。您可以使用密钥 ID 或密钥ARN来识别KMS密钥。要获取 AWS 托管密钥ARN的密钥 ID 或KMS密钥,请使用list-keys
或list-aliases
命令。aws kms list-grants \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出显示,该授权授予了 Amazon DynamoDB 使用KMS密钥进行加密操作的权限,并允许其查看有关KMS密钥的详细信息
DescribeKey
() 和停用授权 ()。RetireGrant
EncryptionContextSubset
约束将这些权限限制为包含指定加密上下文对的请求。因此,授权中的权限仅对指定账户和 DynamoDB 表有效。{ "Grants": [ { "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:subscriberId": "123456789012", "aws:dynamodb:tableName": "Services" } }, "IssuingAccount": "arn:aws:iam::123456789012:root", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59", "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "CreationDate": "2021-05-13T18:32:45.144000+00:00" } ] }
有关更多信息,请参阅《AWS 密钥管理服务开发人员指南》AWS KMS中的授权。
-
有关API详细信息,请参阅 “ListGrants AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-key-policies
。
- AWS CLI
-
获取密钥的密钥策略名称 KMS
以下
list-key-policies
示例获取示例账户和区域中客户托管密钥的密钥策略名称。您可以使用此命令查找托管密钥和客户 AWS 托管密钥的密钥策略名称。由于唯一有效的密钥策略名称是
default
,因此,此命令没有用。要指定KMS密钥,请使用
key-id
参数。此示例使用密钥 ID 值,但您可以在此命令ARN中使用密钥 ID 或密钥。aws kms list-key-policies \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "PolicyNames": [ "default" ] }
有关 AWS KMS密钥策略的更多信息,请参阅《密钥管理服务开发人员指南》 AWS KMS中的使用AWS 密钥策略。
-
有关API详细信息,请参阅 “ListKeyPolicies AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-key-rotations
。
- AWS CLI
-
检索有关所有已完成的密钥材料轮换的信息
以下
list-key-rotations
示例列出了有关指定KMS密钥的所有已完成密钥材质轮换的信息。aws kms list-key-rotations \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "Rotations": [ { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "RotationDate": "2024-03-02T10:11:36.564000+00:00", "RotationType": "AUTOMATIC" }, { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "RotationDate": "2024-04-05T15:14:47.757000+00:00", "RotationType": "ON_DEMAND" } ], "Truncated": false }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的轮换密钥。
-
有关API详细信息,请参阅 “ListKeyRotations AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-keys
。
- AWS CLI
-
获取账户和区域中的KMS密钥
以下
list-keys
示例获取账户和区域中的KMS密钥。此命令同时返回 AWS 托管密钥和客户托管密钥。aws kms list-keys
输出:
{ "Keys": [ { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "KeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" } ] }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的查看密钥。
-
有关API详细信息,请参阅 “ListKeys AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-resource-tags
。
- AWS CLI
-
获取密KMS钥上的标签
以下
list-resource-tags
示例获取KMS密钥的标签。要在KMS密钥上添加或替换资源标签,请使用tag-resource
命令。输出显示此KMS密钥有两个资源标签,每个标签都有一个键和值。要指定KMS密钥,请使用
key-id
参数。此示例使用密钥 ID 值,但您可以在此命令ARN中使用密钥 ID 或密钥。aws kms list-resource-tags \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "Tags": [ { "TagKey": "Dept", "TagValue": "IT" }, { "TagKey": "Purpose", "TagValue": "Test" } ], "Truncated": false }
有关在中使用标签的更多信息 AWS KMS,请参阅《密钥管理服务开发人员指南》中的为密AWS 钥添加标签。
-
有关API详细信息,请参阅 “ListResourceTags AWS CLI
命令参考”。
-
以下代码示例演示如何使用 list-retirable-grants
。
- AWS CLI
-
查看委托人可以退休的补助金
以下
list-retirable-grants
示例显示了ExampleAdmin
用户可以停用 AWS 账户和区域中KMS密钥的所有授权。您可以使用这样的命令来查看任何账户委托人可以凭 AWS 账户和区域中的KMS密钥撤销的授权。必填
retiring-principal
参数的值必须是账户、用户或角色的 Amazon 资源名称 (ARN)。即使服务可以是即将停用的主体,也不能在此命令
retiring-principal
中为的值指定服务。要查找以特定服务为终止主体的授权,请使用list-grants
命令。输出显示
ExampleAdmin
用户有权停用账户和区域中两个不同KMS密钥的授权。除了退休本金外,该账户还有权撤回账户中的任何赠款。aws kms list-retirable-grants \ --retiring-principal
arn:aws:iam::111122223333:user/ExampleAdmin
输出:
{ "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "GrantId": "156b69c63cb154aa21f59929ff19760717be8d9d82b99df53e18b94a15a5e88e", "Name": "", "CreationDate": 2021-01-14T20:17:36.419000+00:00, "GranteePrincipal": "arn:aws:iam::111122223333:user/ExampleUser", "RetiringPrincipal": "arn:aws:iam::111122223333:user/ExampleAdmin", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Encrypt" ], "Constraints": { "EncryptionContextSubset": { "Department": "IT" } } }, { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Name": "", "CreationDate": "2021-02-02T19:49:49.638000+00:00", "GranteePrincipal": "arn:aws:iam::111122223333:role/ExampleRole", "RetiringPrincipal": "arn:aws:iam::111122223333:user/ExampleAdmin", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Decrypt" ], "Constraints": { "EncryptionContextSubset": { "Department": "IT" } } } ], "Truncated": false }
有关更多信息,请参阅《AWS 密钥管理服务开发人员指南》AWS KMS中的授权。
-
有关API详细信息,请参阅 “ListRetirableGrants AWS CLI
命令参考”。
-
以下代码示例演示如何使用 put-key-policy
。
- AWS CLI
-
更改密钥的密KMS钥策略
以下
put-key-policy
示例更改客户托管密钥的密钥策略。首先,创建密钥策略并将其保存在本地JSON文件中。在本示例中,该文件为
key_policy.json
。您也可以将密钥策略指定为policy
参数的字符串值。此密钥策略中的第一条声明允许 AWS 账户使用IAM策略来控制对KMS密钥的访问。第二条语句允许
test-user
用户在KMS密钥上运行describe-key
和list-keys
命令。key_policy.json
的内容:{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:DescribeKey", "kms:ListKeys" ], "Resource" : "*" } ] }
为了识别KMS密钥,此示例使用密钥 ID,但您也可以使用密钥ARN。为了指定密钥策略,该命令使用
policy
参数。为了表示策略位于文件中,它使用所需的file://
前缀。需要使用此前缀来识别所有受支持操作系统上的文件。最后,该命令使用值为default
的policy-name
参数。如果未指定策略名称,则默认值为default
。唯一有效值为default
。aws kms put-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --policyfile://key_policy.json
此命令不生成任何输出。要验证命令是否有效,请使用
get-key-policy
命令。以下示例命令获取相同密钥的KMS密钥策略。值为text
的output
参数返回一种易于读取的文本格式。aws kms get-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
输出:
{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:Describe", "kms:List" ], "Resource" : "*" } ] }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的更改密钥策略。
-
有关API详细信息,请参阅 “PutKeyPolicy AWS CLI
命令参考”。
-
以下代码示例演示如何使用 re-encrypt
。
- AWS CLI
-
示例 1:使用不同的对称密KMS钥(Linux 和 macOS)重新加密加密消息。
以下
re-encrypt
命令示例演示了使用重新加密数据的推荐方法。 AWS CLI在文件中提供密文。在
--ciphertext-blob
参数的值中,使用fileb://
前缀,它告诉从二进制文件中读CLI取数据。如果文件不在当前目录中,请键入文件的完整路径。有关从文件读取 AWS CLI参数值的更多信息,请参阅《AWS 命令行界面用户指南》中的 “从文件加载 AWS CLI参数 < https://docs.aws.amazon.com/cli/ latest/userguide/cli-usage-parameters-file .html>” 和AWS 命令行工具博客中的本地文件参数最佳实践 < dev https://aws.amazon.com/blogs/ eloper/ best-practices-for-local-file-parameters/>。指定用于解密密文的源KMS密钥。使用对称加密解密时不需要参数--source-key-id
KMS钥匙。 AWS KMS可以从密文 blob 中的元数据中获取用于加密数据的密KMS钥。但是,指定您正在使用的KMS密钥始终是最佳做法。这种做法可确保您使用所需的KMS密钥,并防止您无意中使用您不信任的密钥解密密文。请指定目标密KMS钥,它会重新加密数据。参数始终为必填KMS项。--destination-key-id
此示例使用密钥ARN,但您可以使用任何有效的密钥标识符。将纯文本输出请求为文本值。该--query
参数告诉仅从输出中CLI获取字段的值。Plaintext
--output
参数以 text.base64 解码格式返回明文输出并将其保存在文件中。以下示例将Plaintext
参数的值传送(|)给 Base64 实用工具,该程序负责对其进行解码。然后,它将解码后的输出重定向(>)到ExamplePlaintext
文件。在运行此命令之前,请将示例密钥IDs替换为 AWS 账户中的有效密钥标识符。
aws kms re-encrypt \ --ciphertext-blob
fileb://ExampleEncryptedFile
\ --source-key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --destination-key-id0987dcba-09fe-87dc-65ba-ab0987654321
\ --queryCiphertextBlob
\ --outputtext
|
base64
--decode>
ExampleReEncryptedFile
此命令不生成任何输出。
re-encrypt
命令的输出经过 base64 解码并保存在文件中。有关更多信息,请参阅《AWS 密钥管理服务API参考》中的 ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API _ ReEncrypt .html。
示例 2:使用不同的对称密KMS钥重新加密加密邮件(Windows 命令提示符)。
以下
re-encrypt
命令示例与前一个示例相同,不同之处在于,它使用certutil
实用工具对明文数据进行 Base64 解码。此过程需要两个命令,如以下示例所示。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。
aws kms re-encrypt
^
--ciphertext-blobfileb://ExampleEncryptedFile
^
--source-key-id1234abcd-12ab-34cd-56ef-1234567890ab
^
--destination-key-id0987dcba-09fe-87dc-65ba-ab0987654321
^
--queryCiphertextBlob
^
--outputtext
>
ExampleReEncryptedFile.base64
然后使用
certutil
实用工具certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile
输出:
Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.
有关更多信息,请参阅《AWS 密钥管理服务API参考》中的 ReEncrypt < https://docs.aws.amazon.com/kms/ latest/APIReference/API _ ReEncrypt .html。
-
有关API详细信息,请参阅 “ReEncrypt AWS CLI
命令参考”。
-
以下代码示例演示如何使用 retire-grant
。
- AWS CLI
-
停用对客户主密钥的授权
以下
retire-grant
示例从KMS密钥中删除授权。以下示例命令指定
grant-id
和key-id
参数。key-id
参数的值必须是密钥ARN的KMS键。aws kms retire-grant \ --grant-id
1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3
\ --key-idarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。要确认授权是否已停用,请使用
list-grants
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的停用和撤消授权。
-
有关API详细信息,请参阅 “RetireGrant AWS CLI
命令参考”。
-
以下代码示例演示如何使用 revoke-grant
。
- AWS CLI
-
撤消对客户主密钥的授权
以下
revoke-grant
示例从KMS密钥中删除授权。以下示例命令指定grant-id
和key-id
参数。key-id
参数的值可以是密钥 ID 或密钥ARN的KMS密钥。aws kms revoke-grant \ --grant-id
1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。要确认授权是否已撤消,请使用
list-grants
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的停用和撤消授权。
-
有关API详细信息,请参阅 “RevokeGrant AWS CLI
命令参考”。
-
以下代码示例演示如何使用 rotate-key-on-demand
。
- AWS CLI
-
按需轮换密KMS钥
以下
rotate-key-on-demand
示例立即启动指定KMS密钥的密钥材料的轮换。aws kms rotate-key-on-demand \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
输出:
{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }
有关更多信息,请参阅《密钥管理服务开发人员指南》中的如何执行按需AWS 密钥轮换。
-
有关API详细信息,请参阅 “RotateKeyOnDemand AWS CLI
命令参考”。
-
以下代码示例演示如何使用 schedule-key-deletion
。
- AWS CLI
-
安排删除客户管理的KMS密钥。
以下
schedule-key-deletion
示例计划在 15 天后删除指定的客户托管KMS密钥。该
--key-id
参数用于标识KMS密钥。此示例使用密钥ARN值,但您可以使用密钥 ID 或密钥ARN的密钥。该--pending-window-in-days
参数KMS指定 7-30 天等待期的长度。默认的等待期限为 30 天。此示例指定值为 15,表示在命令完成 15 天后永久删除KMS密钥。 AWSaws kms schedule-key-deletion \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --pending-window-in-days 15
响应包括密钥ARN、密钥状态、等待期 (
PendingWindowInDays
) 和以 Unix 时间表示的删除日期。要以当地时间查看删除日期,请使用 AWS KMS控制台。KMS处于密PendingDeletion
钥状态的密钥不能用于加密操作。{ "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": "2022-06-18T23:43:51.272000+00:00", "KeyState": "PendingDeletion", "PendingWindowInDays": 15 }
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的删除密钥。
-
有关API详细信息,请参阅 “ScheduleKeyDeletion AWS CLI
命令参考”。
-
以下代码示例演示如何使用 sign
。
- AWS CLI
-
示例 1:为消息生成数字签名
以下
sign
示例为一条短消息生成加密签名。该命令的输出包括一个 base-64 编码的Signature
字段,您可以使用verify
命令对其进行验证。您必须指定要签名的消息以及您的非对称KMS密钥支持的签名算法。要获取KMS密钥的签名算法,请使用
describe-key
命令。在 AWS CLI 2.0 中,
message
参数的值必须采用 Base64 编码。或者,您可以将消息保存在文件中并使用fileb://
前缀,它告诉从文件中读 AWS CLI取二进制数据。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。密钥 ID 必须代表密KMS钥用法为 SIGN _ VERIFY 的非对称密钥。
msg=(echo 'Hello World' | base64) aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://UnsignedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256
输出:
{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Signature": "ABCDEFhpyVYyTxbafE74ccSvEJLJr3zuoV1Hfymz4qv+/fxmxNLA7SE1SiF8lHw80fKZZ3bJ...", "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }
有关在中使用非对称KMS密钥的更多信息 AWS KMS,请参阅《密钥管理服务开发人员指南》 AWS KMS中的非对称AWS密钥。
示例 2:将数字签名保存在文件中(Linux 和macOs)
以下
sign
示例为一条存储在本地文件中的短消息生成加密签名。该命令还会从响应中获取Signature
属性,Base64 对其进行解码并将其保存在文件中。 ExampleSignature 您可以在验证签名的verify
命令中使用该签名文件。该
sign
命令需要一条 Base64 编码的消息和您的非对称KMS密钥支持的签名算法。要获取您的KMS密钥支持的签名算法,请使用describe-key
命令。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。密钥 ID 必须代表密KMS钥用法为 SIGN _ VERIFY 的非对称密钥。
echo 'hello world' | base64 > EncodedMessage aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --output text \ --query Signature | base64 --decode > ExampleSignature
此命令不生成任何输出。此示例提取输出的
Signature
属性并将其保存在文件中。有关在中使用非对称KMS密钥的更多信息 AWS KMS,请参阅《密钥管理服务开发人员指南》 AWS KMS中的非对称AWS密钥。
-
有关API详细信息,请参阅登录AWS CLI
命令参考。
-
以下代码示例演示如何使用 tag-resource
。
- AWS CLI
-
为KMS密钥添加标签
以下
tag-resource
示例为客户托管KMS密钥添加"Purpose":"Test"
和"Dept":"IT"
标记。您可以使用这样的标签来标记KMS密钥并创建密KMS钥类别以进行权限和审计。要指定KMS密钥,请使用
key-id
参数。此示例使用密钥 ID 值,但您可以在此命令ARN中使用密钥 ID 或密钥。aws kms tag-resource \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --tags TagKey='Purpose',TagValue='Test' TagKey='Dept',TagValue='IT'此命令不生成任何输出。要查看 AWS KMSKMS密钥上的标签,请使用
list-resource-tags
命令。有关在中使用标签的更多信息 AWS KMS,请参阅《密钥管理服务开发人员指南》中的为密AWS 钥添加标签。
-
有关API详细信息,请参阅 “TagResource AWS CLI
命令参考”。
-
以下代码示例演示如何使用 untag-resource
。
- AWS CLI
-
从KMS密钥中删除标签
以下
untag-resource
示例从客户托管"Purpose"
密钥中删除带有密KMS钥的标签。要指定KMS密钥,请使用
key-id
参数。此示例使用密钥 ID 值,但您可以在此命令ARN中使用密钥 ID 或密钥。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。aws kms untag-resource \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --tag-key 'Purpose
'此命令不生成任何输出。要查看 AWS KMSKMS密钥上的标签,请使用
list-resource-tags
命令。有关在中使用标签的更多信息 AWS KMS,请参阅《密钥管理服务开发人员指南》中的为密AWS 钥添加标签。
-
有关API详细信息,请参阅 “UntagResource AWS CLI
命令参考”。
-
以下代码示例演示如何使用 update-alias
。
- AWS CLI
-
将别名与其他KMS密钥关联
以下
update-alias
示例将别名alias/test-key
与其他KMS密钥相关联。--alias-name
参数指定别名。别名值必须以开头alias/
。该--target-key-id
参数指定要与别名关联的KMS密钥。您无需为别名指定当前KMS密钥。aws kms update-alias \ --alias-name alias/test-key \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab
此命令不生成任何输出。要查找别名,请使用
list-aliases
命令。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的更新别名。
-
有关API详细信息,请参阅 “UpdateAlias AWS CLI
命令参考”。
-
以下代码示例演示如何使用 update-custom-key-store
。
- AWS CLI
-
示例 1:编辑自定义密钥库的友好名称
以下
update-custom-key-store
示例更改了自定义密钥库的名称。此示例适用于 AWS Cloud HSM 密钥存储库或外部密钥存储区。使用
custom-key-store-id
来识别密钥库。使用new-custom-key-store-name
参数指定新的友好名称。要更新 AWS Cloud HSM 密钥存储区的友好名称,必须先断开密钥库的连接,例如使用
disconnect-custom-key-store
命令。在外部密钥存储库连接或断开连接时,您可以更新其友好名称。要查找自定义密钥库的连接状态,请使用describe-custom-key-store
命令。aws kms update-custom-key-store \ --custom-key-store-id
cks-1234567890abcdef0
\ --new-custom-key-store-nameExampleKeyStore
此命令不返回任何数据。要验证该命令是否有效,请使用
describe-custom-key-stores
命令。有关更新 AWS Cloud HSM 密钥存储的更多信息,请参阅《HSM密钥管理服务开发人员指南》中的编辑 AWS Cloud AWS 密钥存储设置。
有关更新外部密钥存储的更多信息,请参阅《密钥管理服务开发人员指南》中的编辑外部AWS 密钥存储库属性。
示例 2:编辑 AWS 云端HSM密钥存储区的 kmsuser 密码
以下
update-custom-key-store
示例将kmsuser
密码值更新为与指定密钥库关联的 Cloud HSM 集群kmsuser
中的当前密码。此命令不会更改集群的kmsuser
密码。它只会告诉当前 AWS KMS的密码。如果KMS没有当前kmsuser
密码,则无法连接到 AWS Cloud HSM 密钥存储区。NOTE:在更新 AWS Cloud HSM 密钥存储库之前,必须将其断开连接。使用
disconnect-custom-key-store
命令。命令完成后,您可以重新连接 AWS Cloud HSM 密钥存储区。使用connect-custom-key-store
命令。aws kms update-custom-key-store \ --custom-key-store-id
cks-1234567890abcdef0
\ --key-store-passwordExamplePassword
此命令不返回任何输出。要验证更改是否有效,请使用
describe-custom-key-stores
命令。有关更新 AWS Cloud HSM 密钥存储的更多信息,请参阅《HSM密钥管理服务开发人员指南》中的编辑 AWS Cloud AWS 密钥存储设置。
示例 3:编辑 AWS 云HSM密钥存储库的 AWS 云HSM集群
以下示例将与 AWS Cloud HSM HSM 密钥存储关联的 AWS Cloud 集群更改为相关集群,例如同一集群的不同备份。
NOTE:在更新 AWS Cloud HSM 密钥存储库之前,必须将其断开连接。使用
disconnect-custom-key-store
命令。命令完成后,您可以重新连接 AWS Cloud HSM 密钥存储区。使用connect-custom-key-store
命令。aws kms update-custom-key-store \ --custom-key-store-id
cks-1234567890abcdef0
\ --cloud-hsm-cluster-idcluster-1a23b4cdefg
此命令不返回任何输出。要验证更改是否有效,请使用
describe-custom-key-stores
命令。有关更新 AWS Cloud HSM 密钥存储的更多信息,请参阅《HSM密钥管理服务开发人员指南》中的编辑 AWS Cloud AWS 密钥存储设置。
示例 4:编辑外部密钥库的代理身份验证凭据
以下示例更新了您的外部密钥存储的代理身份验证凭据。即使您只更改其中一个值
access-key-id
,也必须同时指定和。raw-secret-access-key
您可以使用此功能修复无效凭据或在外部密钥存储代理轮换凭据时更改凭据。在您的外部密钥存储 AWS KMS上建立的代理身份验证凭据。然后使用此命令向提供凭证。 AWS KMS AWS KMS使用此凭证签署其对外部密钥存储代理的请求。
您可以在连接或断开外部密钥存储库连接或断开连接时更新代理身份验证凭据。要查找自定义密钥库的连接状态,请使用
describe-custom-key-store
命令。aws kms update-custom-key-store \ --custom-key-store-id
cks-1234567890abcdef0
\ --xks-proxy-authentication-credential"AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="
此命令不返回任何输出。要验证更改是否有效,请使用
describe-custom-key-stores
命令。有关更新外部密钥存储的更多信息,请参阅《密钥管理服务开发人员指南》中的编辑外部AWS 密钥存储库属性。
示例 5:编辑外部密钥存储库的代理连接
以下示例将外部密钥存储代理连接选项从公共端点连接更改为VPC端点服务连接。除了更改
xks-proxy-connectivity
值外,您还必须更改该xks-proxy-uri-endpoint
值以反映与VPC终端节点服务关联的私有DNS名称。您还必须添加一个xks-proxy-vpc-endpoint-service-name
值。NOTE:在更新外部存储的代理连接之前,必须将其断开连接。使用
disconnect-custom-key-store
命令。命令完成后,您可以使用connect-custom-key-store
命令重新连接外部密钥存储库。aws kms update-custom-key-store \ --custom-key-store-id
cks-1234567890abcdef0
\ --xks-proxy-connectivityVPC_ENDPOINT_SERVICE
\ --xks-proxy-uri-endpoint"https://myproxy-private.xks.example.com"
\ --xks-proxy-vpc-endpoint-service-name"com.amazonaws.vpce.us-east-1.vpce-svc-example"
此命令不返回任何输出。要验证更改是否有效,请使用
describe-custom-key-stores
命令。有关更新外部密钥存储的更多信息,请参阅《密钥管理服务开发人员指南》中的编辑外部AWS 密钥存储库属性。
-
有关API详细信息,请参阅 “UpdateCustomKeyStore AWS CLI
命令参考”。
-
以下代码示例演示如何使用 update-key-description
。
- AWS CLI
-
示例 1:添加或更改客户托管KMS密钥的描述
以下
update-key-description
示例为客户托管KMS密钥添加了描述。您可以使用相同的命令来更改现有描述。该
--key-id
参数用于标识命令中的KMS密钥。此示例使用密钥ARN值,但您可以使用密钥 ID 或密KMS钥ARN的密钥。--description
参数指定了新的描述。此参数的值将替换当前对KMS密钥的描述(如果有)。aws kms update-key-description \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --description "IT Department test key"
此命令不生成任何输出。要查看KMS密钥的描述,请使用
describe-key
命令。有关更多信息,请参阅《AWS 密钥管理服务API参考》UpdateKeyDescription中的。
示例 2:删除客户托管KMS密钥的描述
以下
update-key-description
示例删除了客户托管KMS密钥的描述。该
--key-id
参数用于标识命令中的KMS密钥。此示例使用密钥 ID 值,但您可以使用密钥 ID 或密钥ARN的密钥KMS。带有空字符串值 (“) 的--description
参数会删除现有描述。aws kms update-key-description \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --description ''
此命令不生成任何输出。要查看KMS密钥的描述,请使用 describe-key 命令。
有关更多信息,请参阅《AWS 密钥管理服务API参考》UpdateKeyDescription中的。
-
有关API详细信息,请参阅 “UpdateKeyDescription AWS CLI
命令参考”。
-
以下代码示例演示如何使用 verify
。
- AWS CLI
-
验证数字签名
以下
verify
示例验证一条 Base64 编码短消息的加密签名。密钥 ID、消息、消息类型和签名算法必须与用于签名该消息的相同。您指定的签名不得采用 base64 编码。如需解码sign
命令返回的签名的帮助,请参阅sign
命令示例。该命令的输出包括一个布尔
SignatureValid
字段,表示签名已通过验证。如果签名验证失败,verify
命令也会失败。在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。
aws kms verify \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --messagefileb://EncodedMessage
\ --message-typeRAW
\ --signing-algorithmRSASSA_PKCS1_V1_5_SHA_256
\ --signaturefileb://ExampleSignature
输出:
{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "SignatureValid": true, "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }
有关使用非对称KMS密钥的更多信息 AWS KMS,请参阅《密钥管理服务开发人员指南》AWS 中的使用非对称密钥。
-
有关API详细信息,请参阅《AWS CLI 命令参考》中的 “验证
”。
-