了解如何在您的应用程序中使用别名 - AWS Key Management Service

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

了解如何在您的应用程序中使用别名

您可以使用别名来表示应用程序代码中的KMS密钥。 AWS KMS 加密运算中的KeyId参数DescribeKey、和GetPublicKey接受别名或别ARN名。

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

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

如果KMS密钥位于不同的密钥中 AWS 账户,则必须在这些操作ARN中使用密钥ARN或别名。使用别名时ARN,请记住,KMS密钥的别名是在拥有密KMS钥的账户中定义的,每个区域可能有所不同。有关查找别名的帮助ARN,请参阅查找KMS密钥的别名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

别名的最强大用途之一是在多个 AWS 区域中运行的应用程序中。例如,您可能有一个使用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密钥关联。在这种情况下,应用程序尝试使用别名名称验证签名将失败,您可能需要重新创建或更新别名。

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

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