

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

# 了解如何在您的应用程序中使用别名
<a name="alias-using"></a>

您可以使用别名在应用程序代码中表示 KMS 密钥。 AWS KMS [加密运算](kms-cryptography.md#cryptographic-operations)中的`KeyId`参数[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/)。