

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

# 了解如何在應用程式中使用別名
<a name="alias-using"></a>

您可以使用別名來代表應用程式程式碼中的 KMS 金鑰。`KeyId` 參數 AWS KMS [加密操作](kms-cryptography.md#cryptographic-operations) [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 和 [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) 接受別名名稱或別名 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](alias-view.md)。

例如，下列 `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 金鑰](symmetric-asymmetric.md)的全域應用程式，以進行簽章和驗證。
+ 在美國西部 (奧勒岡) (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](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) 操作。

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

不過，風險是有可能會刪除或更新別名，以與不同的 KMS 金鑰相關聯。在這種情況下，應用程式嘗試使用別名名稱驗證簽章將會失敗，您可能需要重新建立或更新別名。

若要降低此風險，請謹慎授予委託人管理您在應用程式中使用之別名的許可。如需詳細資訊，請參閱[控制對別名的存取](alias-access.md)。

對於在多個 AWS 區域中加密資料的應用程式，還有幾個其他解決方案，包括 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)。