Amazon KMS 中的别名 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon KMS 中的别名

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

您可以在 Amazon KMS 控制台、DescribeKey 操作和加密操作(如 EncryptGenerateDataKey)中使用别名来标识 KMS 密钥。别名还使您能够轻松识别 Amazon 托管式密钥。这些 KMS 密钥的别名始终具有 aws/<service-name> 形式。例如,适用于 Amazon DynamoDB 的 Amazon 托管式密钥 的别名为 aws/dynamodb。您可以为项目建立类似的别名标准,例如在别名前加上项目或类别的名称。

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

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

别名还您更容易在不同 Amazon Web Services 区域 中重用相同代码。在多个区域中创建具有相同名称的别名,并将每个别名与其区域中的 KMS 密钥关联。当代码在每个区域中运行时,别名将引用该区域中关联的 KMS 密钥。有关示例,请参阅了解如何在您的应用程序中使用别名

您可以在 Amazon KMS 控制台中,通过使用 CreateAlias API 或通过使用 AWS::KMS::Alias Amazon CloudFormation 模板为 KMS 密钥创建别名。

Amazon KMS API 提供对每个账户和区域中的别名的完全控制。API 包括创建别名 (CreateAlias),查看别名和别名 ARN (ListAliases),更改与别名关联的 KMS 密钥 (UpdateAlias) 以及删除别名 (DeleteAlias) 的操作。

别名的作用方式

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

别名是独立的 Amazon 资源

别名不是 KMS 密钥的属性。您对别名执行的操作不会影响其关联的 KMS 密钥。您可以为 KMS 密钥创建别名,然后更新别名,使其与其他 KMS 密钥相关联。您甚至可以删除别名,而不会对关联的 KMS 密钥产生任何影响。但是,如果您删除 KMS 密钥,则会删除与该 KMS 密钥关联的所有别名。

如果您在 IAM policy 中指定别名作为资源,则该策略将引用别名,而不是关联的 KMS 密钥。

每个别名都有两种格式

在创建别名时,请指定别名。Amazon KMS 会为您创建别名 ARN。

  • 别名 ARN 是唯一标识别名的 Amazon Resource Name (ARN)。

    # Alias ARN arn:aws:kms:us-west-2:111122223333:alias/<alias-name>
  • 别名名称在账户和所在区域中是唯一的。在 Amazon KMS API 中,别名名称始终以 alias/ 为前缀。此前缀在 Amazon KMS 控制台中将省略。

    # Alias name alias/<alias-name>
别名不是密钥

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

每个别名一次与一个 KMS 密钥关联

别名及其 KMS 密钥必须位于同一账户和区域中。

您可以将别名与相同 Amazon Web Services 账户 和区域中的任何客户托管密钥关联。但是,您无权将别名与 Amazon 托管式密钥 关联。

例如,此 ListAliases 输出显示 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-keyproject-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 密钥。有关更多信息,请参阅 了解如何在您的应用程序中使用别名

您可以更改与别名关联的 KMS 密钥

您可以使用 UpdateAlias 操作将一个别名与另一个 KMS 密钥关联。例如,如果 finance-key 别名与 1234abcd-12ab-34cd-56ef-1234567890ab KMS 密钥关联,您可以对其进行更新,使其与 0987dcba-09fe-87dc-65ba-ab0987654321 KMS 密钥关联。

但是,当前 KMS 密钥和新的 KMS 密钥必须是相同的类型(要么都是对称的,要么都是非对称的,要么都是 HMAC),并且它们必须具有相同的密钥用途(ENCRYPT_DECRYPT、SIGN_VERIFY 或 GENERATE_VERIFY_MAC)。此限制可防止使用别名的代码中出现错误。如果您必须将别名与其他类型的密钥关联,并且您已降低风险,则可以删除并重新创建别名。

有些 KMS 密钥没有别名

当您在 Amazon KMS 控制台中创建 KMS 密钥时,您必须为其指定新别名。但是,当您使用 CreateKey 操作创建 KMS 密钥时,不需要别名。此外,您还可以使用 UpdateAlias 操作来更改与别名关联的 KMS 密钥,并使用 DeleteAlias 操作来删除别名。因此,有些 KMS 密钥可能有多个别名,有些可能没有别名。

Amazon 在您的账户中创建别名

Amazon 在您的账户中为 Amazon 托管式密钥 创建别名。这些别名具有 alias/aws/<service-name> 形式的名称,例如 alias/aws/s3

有些 Amazon 别名没有 KMS 密钥。这些预定义别名通常在您开始使用服务时就与 Amazon 托管式密钥 关联。

使用别名标识 KMS 密钥

您可以使用别名名称或者别名 ARN 来标识加密操作DescribeKeyGetPublicKey 中的 KMS 密钥。(如果 KMS 密钥位于不同的 Amazon Web Services 账户 中,您必须使用其密钥 ARN 或别名 ARN。) 别名不是 KMS 密钥在其他 Amazon KMS 操作中的有效标识符。有关每个 Amazon KMS API 操作的有效密钥标识符的信息,请参阅 Amazon Key Management Service API 参考中的 KeyId 参数的描述。

您不能使用别名名称或别名 ARN 来标识 IAM policy 中的 KMS 密钥。要根据 KMS 密钥的别名来控制对它的访问权限,请使用 kms:RequestAliaskms:ResourceAliases 条件键。有关更多信息,请参阅 Amazon KMS 中的 ABAC