

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

# 中的别名 AWS KMS
<a name="kms-alias"></a>

*别名*是 AWS KMS key的友好名称。例如，别名允许您将 KMS 密钥引用为 `test-key`，而不是 `1234abcd-12ab-34cd-56ef-1234567890ab`。

您可以使用别名在 AWS KMS 控制台、操作和[加密[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)操作](kms-cryptography.md#cryptographic-operations)（例如 E [n](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) crypt 和）中标识 KMS 密钥。[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)别名还使您能够轻松识别 [AWS 托管式密钥](concepts.md#aws-managed-key)。这些 KMS 密钥的别名始终具有 `aws/{{<service-name>}}` 形式。例如，亚马逊 DynamoD AWS 托管式密钥 B 的别名是。`aws/dynamodb`您可以为项目建立类似的别名标准，例如在别名前加上项目或类别的名称。

您还可以根据 KMS 密钥的别名允许和拒绝访问 KMS 密钥，而无需编辑策略或管理授权。此功能是[基于属性的访问控制](abac.md) (ABAC) AWS KMS 支持的一部分。有关更多信息，请参阅 [使用别名控制对 KMS 密钥的访问](alias-authorization.md)。

别名的大部分功能来自于您随时更改与别名关联的 KMS 密钥的能力。别名可以使您的代码更易于编写和维护。例如，假设您使用别名来引用特定 KMS 密钥，并且您想要更改 KMS 密钥。在这种情况下，只需将别名与其他 KMS 密钥关联即可。您不需要更改您的代码。

别名还您更容易在不同 AWS 区域中重用相同代码。在多个区域中创建具有相同名称的别名，并将每个别名与其区域中的 KMS 密钥关联。当代码在每个区域中运行时，别名将引用该区域中关联的 KMS 密钥。有关示例，请参阅[了解如何在您的应用程序中使用别名](alias-using.md)。

您可以使用 [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)API 或使用[AWS::KMS::Alias CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html)在 AWS KMS 控制台中为 KMS 密钥创建别名。

该 AWS KMS API 提供对每个账户和区域中的别名的完全控制。API 包括创建别名 ([CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html))、查看别名和别名 ARNs ([ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html))、更改与别名关联的 KMS 密钥 ([UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)) 以及删除别名 ([DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)) 的操作。

## 别名的作用方式
<a name="alias-about"></a>

了解别名在 AWS KMS中的作用方式。

**别名是一种独立的 AWS 资源**  
别名不是 KMS 密钥的属性。您对别名执行的操作不会影响其关联的 KMS 密钥。您可以为 KMS 密钥创建别名，然后更新别名，使其与其他 KMS 密钥相关联。您甚至可以删除别名，而不会对关联的 KMS 密钥产生任何影响。但是，如果您删除 KMS 密钥，则会删除与该 KMS 密钥关联的所有别名。  
如果您在 IAM policy 中指定别名作为资源，则该策略将引用别名，而不是关联的 KMS 密钥。

**每个别名都有两种格式**  
创建别名时，需要指定别名。 AWS KMS 为您创建别名 ARN。  
+ [别名 ARN](concepts.md#key-id-alias-ARN) 是唯一标识别名的 Amazon Resource Name (ARN)。

  ```
  # Alias ARN
  arn:aws:kms:us-west-2:111122223333:alias/{{<alias-name>}}
  ```
+ [别名名称](concepts.md#key-id-alias-name)在账户和所在区域中是唯一的。在 AWS KMS API 中，别名总是以前缀为。`alias/` AWS KMS 控制台中省略了该前缀。

  ```
  # Alias name
  alias/{{<alias-name>}}
  ```

**别名不是密钥**  
别名可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。不要在别名名称中包含机密或敏感信息。

**每个别名一次与一个 KMS 密钥关联**  
别名及其 KMS 密钥必须位于同一账户和区域中。  
您可以将别名与同一 AWS 账户 区域中的任何[客户托管密钥](concepts.md#customer-mgn-key)相关联。但是，您无权将别名与 [AWS 托管式密钥](concepts.md#aws-managed-key) 关联。  
例如，此[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)输出显示`test-key`别名恰好与一个目标 KMS 密钥相关联，该密钥由`TargetKeyId`属性表示。  

```
{
     "AliasName": "alias/test-key",
     "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key",
     "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
     "CreationDate": 1593622000.191,
     "LastUpdatedDate": 1593622000.191
}
```

**多个别名可以与同一 KMS 密钥关联**  
例如，您可以将 `test-key` 和 `project-key` 别名与同一个 KMS 密钥关联。  

```
{
     "AliasName": "alias/test-key",
     "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key",
     "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
     "CreationDate": 1593622000.191,
     "LastUpdatedDate": 1593622000.191
},
{
     "AliasName": "alias/project-key",
     "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project-key",
     "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
     "CreationDate": 1516435200.399,
     "LastUpdatedDate": 1516435200.399
}
```

**别名在账户和区域中必须是唯一的**  
例如，您在每个账户和区域中只能有一个 `test-key` 别名。别名区分大小写，但仅在大小写上不同的别名很容易出错。您不能更改别名名称。但是，您可以删除别名并使用所需名称创建新别名。

**您可以在不同的区域中创建具有相同名称的别名。**  
例如，您可以在美国东部（弗吉尼亚北部）拥有 `finance-key` 别名，在欧洲（法兰克福）拥有 `finance-key` 别名。每个别名都将与其区域中的 KMS 密钥相关联。如果您的代码引用 `alias/finance-key` 之类的别名名称，您可以在多个区域中运行它。在每个区域中，它使用不同的 KMS 密钥。有关更多信息，请参阅 [了解如何在您的应用程序中使用别名](alias-using.md)。

**您可以更改与别名关联的 KMS 密钥**  
您可以使用该[UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)操作将别名与其他 KMS 密钥相关联。例如，如果 `finance-key` 别名与 `1234abcd-12ab-34cd-56ef-1234567890ab` KMS 密钥关联，您可以对其进行更新，使其与 `0987dcba-09fe-87dc-65ba-ab0987654321` KMS 密钥关联。  
但是，当前 KMS 密钥和新的 KMS 密钥必须是相同的类型（要么都是对称的，要么都是非对称的，要么都是 HMAC），并且它们必须具有相同的[密钥用途](create-keys.md#key-usage)（ENCRYPT\_DECRYPT、SIGN\_VERIFY 或 GENERATE\_VERIFY\_MAC）。此限制可防止使用别名的代码中出现错误。如果您必须将别名与其他类型的密钥关联，并且您已降低风险，则可以删除并重新创建别名。

**有些 KMS 密钥没有别名**  
在 AWS KMS 控制台中创建 KMS 密钥时，必须为其指定一个新的别名。但是，使用该[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作创建 KMS 密钥时，不需要别名。此外，您还可以使用[UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)操作来更改与别名关联的 KMS 密钥，使用该[DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)操作来删除别名。因此，有些 KMS 密钥可能有多个别名，有些可能没有别名。

**AWS 在您的账户中创建别名**  
AWS 在您的账户中为[AWS 托管式密钥](concepts.md#aws-managed-key)创建别名。这些别名具有 `alias/aws/{{<service-name>}}` 形式的名称，例如 `alias/aws/s3`。  
有些 AWS 别名没有 KMS 密钥。这些预定义的别名通常与您开始使用服务 AWS 托管式密钥 时相关联。

**使用别名标识 KMS 密钥**  
在[加密操作中，您可以使用[别](concepts.md#key-id-alias-name)[名或别名 ARN](concepts.md#key-id-alias-ARN) 来标识 KMS 密钥、[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)和](kms-cryptography.md#cryptographic-operations)。[GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)（如果 [KMS 密钥位于不同的 AWS 账户中](key-policy-modifying-external-accounts.md)，您必须使用其[密钥 ARN](concepts.md#key-id-key-ARN) 或别名 ARN。） 别名不是 KMS 密钥在其他 AWS KMS 操作中的有效标识符。有关每个 AWS KMS API 操作的有效[密钥标识符](concepts.md#key-id)的信息，请参阅《AP *AWS Key Management Service I 参考*》中对`KeyId`参数的描述。  
您不能使用别名名称或别名 ARN 来[标识 IAM policy 中的 KMS 密钥](cmks-in-iam-policies.md)。要根据别名控制对 KMS 密钥的访问权限，请使用 k [ms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) 或 k [ms: ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 条件密钥。有关更多信息，请参阅 [ABAC for AWS KMS](abac.md)。