本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解如何在您的应用程序中使用别名
您可以使用别名在应用程序代码中表示 KMS 密钥。 Amazon KMS 加密运算中的KeyId
参数DescribeKey、和GetPublicKey接受别名或别名 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 的帮助,请参阅 查找 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
别名的最强大用途之一是在多个 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。