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

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

在应用程序中使用别名

您可以使用别名在应用程序代码中表示 CMK。这些区域有:KeyIdAWS KMS 中的参数加密操作DescribeKey, 和GetPublicKey接受别名称或别名 ARN。如果 CMK 位于不同 AWS 账户中,则必须使用密钥 ARN 或别名 ARN。

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

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

如果您有在不同 AWS 账户中使用 CMK 的权限对于 来说为加密操作DescribeKey,或者GetPublicKey,您必须指定 CMK 的密钥 ARN 或别名 ARN。使用别名 ARN 时,请记住 CMK 的别名是在 CMK 的帐户中定义的,并且在每个地区可能会有所不同。有关查找别名 ARN 的帮助,请参阅查找别名和别名 ARN

例如,以下GenerateDataKey命令使用不在调用者帐户中的 CMK。这些区域有:ExampleAlias别名与指定帐户和区域中的 CMK 相关联。

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

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

  • 在美国西部(俄勒冈)(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 语句为每个地区选择正确的 CMK。但在每个区域中创建具有相同别名的别名要容易得多。请记住,别名称区分大小写。

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

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

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

但是,别名可能会被删除或更新,以便与其他 CMK 相关联。在这种情况下,应用程序尝试使用别名验证签名将失败,您可能需要重新创建或更新别名。

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

针对多个 AWS 区域中的数据加密的应用程序还有其他几个解决方案,包括AWS 加密开发工具包