中的别名 AWS KMS - AWS Key Management Service

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

中的别名 AWS KMS

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

您可以使用别名在 AWS KMS 控制台、操作和加密DescribeKey操作(例如 E n crypt 和)中标识 KMS 密钥。GenerateDataKey别名还使您能够轻松识别 AWS 托管式密钥。这些 KMS 密钥的别名始终具有 aws/<service-name> 形式。例如,亚马逊 DynamoD AWS 托管式密钥 B 的别名是。aws/dynamodb您可以为项目建立类似的别名标准,例如在别名前加上项目或类别的名称。

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

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

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

您可以在 AWS KMS 控制台中使用 CreateAliasAPI 或使用AWS::KMS::Alias AWS CloudFormation 模板为 KMS 密钥创建别名。

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

别名的作用方式

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

别名是一种独立的 AWS 资源

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

如果您在 IAM policy 中指定别名作为资源,则该策略将引用别名,而不是关联的 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>
别名不是密钥

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

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

有些 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 来标识 KMS 密钥、DescribeKey和GetPublicKey(如果 KMS 密钥位于不同的 AWS 账户中,您必须使用其密钥 ARN 或别名 ARN。) 别名不是 KMS 密钥在其他 AWS KMS 操作中的有效标识符。有关每个 AWS KMS API 操作的有效密钥标识符的信息,请参阅《AP AWS Key Management Service I 参考》中对KeyId参数的描述。

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