在应用程序中使用别名 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在应用程序中使用别名

您可以使用别名在应用程序代码中表示 KMS 密钥。Amazon KMS 加密操作DescribeKeyGetPublicKey 中的 KeyId 参数接受别名名称或别名 ARN。

例如,以下 GenerateDataKey 命令使用别名名称 (alias/finance)来标识 KMS 密钥。别名名称是 KeyId 参数的值。

$ aws kms generate-data-key --key-id alias/finance --key-spec AES_256

如果 KMS 密钥位于不同的 Amazon Web Services 账户 中,您必须在这些操作中使用密钥 ARN 或别名 ARN。使用别名 ARN 时,请记住 KMS 密钥的别名是在拥有 KMS 密钥的账户中定义的,并且在每个区域中可能会有所不同。有关查找别名 ARN 的帮助,请参阅 查找别名和别名 ARN

例如,以下 GenerateDataKey 命令使用不在调用者账户中的 KMS 密钥。ExampleAlias 别名与指定账户和区域中的 KMS 密钥相关联。

$ aws kms generate-data-key --key-id arn:aws:kms:us-west-2:444455556666:alias/ExampleAlias --key-spec AES_256

别名的最强大用途之一是在多个 Amazon Web Services 区域 中运行的应用程序中。例如,您可能有一个使用 RSA 非对称 KMS 密钥进行签名和验证的全局应用程序。

  • 在美国西部(俄勒冈)(us-west-2) 区域中,您需要使用 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

  • 在欧洲(法兰克福)(eu-central-1) 区域中,您需要使用 arn:aws:kms:eu-central-1:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321

  • 在亚太地区(新加坡)(ap-southeast-1) 区域中,您需要使用 arn:aws:kms:ap-southeast-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

您可以在每个区域中创建不同版本的应用程序,也可以使用字典或 switch 语句为每个区域选择正确的 KMS 密钥。但在每个区域中创建具有相同别名名称的别名要容易得多。请记住,别名名称区分大小写。

aws --region us-west-2 kms create-alias \ --alias-name alias/new-app \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab aws --region eu-central-1 kms create-alias \ --alias-name alias/new-app \ --key-id arn:aws:kms:eu-central-1:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321 aws --region ap-southeast-1 kms create-alias \ --alias-name alias/new-app \ --key-id arn:aws:kms:ap-southeast-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

然后,在代码中使用别名。当代码在每个区域中运行时,别名将引用该区域中关联的 KMS 密钥。例如,此代码将使用别名名称调用 Sign 操作。

aws kms sign --key-id alias/new-app \ --message $message \ --message-type RAW \ --signing-algorithm RSASSA_PSS_SHA_384

但是,别名可能有被删除或更新为与其他 KMS 密钥关联的风险。在这种情况下,应用程序尝试使用别名名称验证签名将失败,您可能需要重新创建或更新别名。

要降低此风险,请谨慎授予委托人管理您在应用程序中使用的别名的权限。有关详细信息,请参阅控制对别名的访问

对于在多个 Amazon Web Services 区域 中加密数据的应用程序,还有几个其他解决方案,包括 Amazon Encryption SDK