了解如何在應用程式中使用別名 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解如何在應用程式中使用別名

您可以使用別名來代表應用程式程式碼中的KMS金鑰。 AWS KMS 密碼編譯操作 DescribeKey和 中的 KeyId 參數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

您可以在每個區域中建立不同的應用程式版本,或使用字典或切換陳述式來為每個區域選取正確的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