关于别名 - AWS Key Management Service

关于别名

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

别名是独立的 AWS 资源

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

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

每个别名都有两种格式

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

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

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

    # Alias name alias/<alias-name>
每个别名一次与一个 KMS 密钥关联

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

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

例如,此 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 密钥必须是相同的类型(要么都是对称的,要么都是非对称的),并且它们必须具有相同的密钥用法(ENCRYPT_DECRYPT 或 SIGN_VERIFY)。此限制可防止使用别名的代码中出现错误。如果您必须将别名与其他类型的密钥关联,并且您已降低风险,则可以删除并重新创建别名。

有些 KMS 密钥没有别名

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

AWS 在您的账户中创建别名

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

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

使用别名标识 KMS 密钥

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

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