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

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

管理别名

授权用户可以创建、查看和删除别名。您也可以更新别名,也就说,将现有别名与其他 KMS 密钥相关联。

创建别名

您可以在 Amazon KMS 控制台中或使用 Amazon KMS API 操作来创建别名。

别名必须为 1-256 个字符的字符串。它只能包含字母数字字符、正斜杠 (/)、下划线 (_) 和连字符 (-)。客户托管密钥的别名名称不能以开头 alias/aws/ 开头。alias/aws/ 前缀专门预留供 Amazon 托管式密钥 使用。

您可以为新的 KMS 密钥或现有的 KMS 密钥创建别名。您可以添加别名,以便在项目或应用程序中使用特定 KMS 密钥。

创建别名(控制台)

当您在 Amazon KMS 控制台中创建 KMS 密钥时,您必须为新的 KMS 密钥创建别名。要为现有 KMS 密钥创建别名,请使用 KMS 密钥详细信息页面上的 Aliases(别名)选项卡。

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择客户托管密钥。您无法管理 Amazon 托管式密钥 或 Amazon 拥有的密钥 的别名。

  4. 在表中,选择 KMS 密钥的密钥 ID 和别名。然后,在 KMS 密钥详细信息页面上,选择 Aliases(别名)选项卡。

    如果 KMS 密钥具有多个别名,则表中的 Aliases(别名)列会显示一个别名和一个别名摘要,例如(再加 n 个)。选择别名摘要将直接进入 KMS 密钥详细信息页面上的 Aliases(别名)选项卡中。

  5. Aliases(别名)选项卡上,选择 Create alias(创建别名)。输入别名名称,然后选择 Create alias(创建别名)。

    重要

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

    注意

    不要添加 alias/ 前缀。控制台会为您自动添加。如果您输入 alias/ExampleAlias,实际的别名名称将是 alias/alias/ExampleAlias

创建别名 (Amazon KMS API)

要创建别名,请使用CreateAlias操作。与在控制台中创建 KMS 密钥的过程不同,该CreateKey操作不会为新的 KMS 密钥创建别名。

重要

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

您可以使用 CreateAlias 操作为没有别名的新 KMS 密钥创建别名。您也可以使用 CreateAlias 操作将别名添加到任何现有 KMS 密钥中或重新创建意外删除的别名。

在 Amazon KMS API 操作中,别名名称必须以 alias/ 开头,后跟一个名称(例如 alias/ExampleAlias)。别名在账户和 区域中必须是唯一的。要查找已在使用的别名,请使用ListAliases操作。别名名称区分大小写。

TargetKeyId可以是相同 Amazon Web Services 区域 中的任何客户托管密钥。要标识 KMS 密钥,请使用其密钥 ID密钥 ARN。您不能使用另一个别名。

以下示例将创建 example-key 别名,并将其与指定的 KMS 密钥相关联。这些示例使用 Amazon Command Line Interface (Amazon CLI)。有关使用多种编程语言的示例,请参阅使用别名

$ aws kms create-alias \ --alias-name alias/example-key \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab

CreateAlias 不返回任何输出。要查看新别名,请使用 ListAliases 操作。有关更多信息,请参阅 查看别名 (Amazon KMS API)

查看别名

别名使您能够轻松识别 Amazon KMS 控制台中的 KMS 密钥。您可以在Amazon KMS控制台中或使用ListAliases操作查看 KMS 密钥的别名。该DescribeKey操作返回 KMS 密钥的属性,但不包括别名。

查看别名(控制台)

Amazon KMS 控制台中的客户托管密钥Amazon 托管式密钥 页面显示与每个 KMS 密钥关联的别名。您还可以基于 KMS 密钥的别名搜索、排序和筛选 KMS 密钥。

下面的 Amazon KMS 控制台图像显示示例账户的客户托管密钥页面上的别名。如图所示,有些 KMS 密钥没有别名。

如果 KMS 密钥具有多个别名,则 Aliases(别名)列会显示一个别名和一个别名摘要(再加 n 个)。别名摘要显示与 KMS 密钥相关联的其他别名数量,以及指向 Aliases(别名)选项卡上的 KMS 密钥的所有别名显示的链接。


            Amazon KMS 控制台的客户托管密钥页面中的别名

每个 KMS 密钥的详细信息页面上的 Aliases(别名)选项卡显示 Amazon Web Services 账户 和区域中的 KMS 密钥的所有别名的别名名称和别名 ARN。您也可以使用 Aliases(别名)选项卡创建别名删除别名

要查找 KMS 密钥的所有别名的名称和别名 ARN,请使用 Aliases(别名)选项卡。

  • 要直接转到 Aliases(别名)选项卡上的 Aliases(别名)列中,选择别名摘要(再加 n)。仅当 KMS 密钥具有多个别名时,才会显示别名摘要。

  • 或者,选择 KMS 密钥的别名或密钥 ID(这将打开 KMS 密钥的详细信息页面),然后选择 Aliases(别名)选项卡。这些选项卡在 General configuration(常规配置)部分下。

下图显示了示例 KMS 密钥的 Aliases(别名)选项卡。

您可以使用别名识别 Amazon 托管式密钥,如此示例 Amazon 托管式密钥 页面中所示。Amazon 托管式密钥 的别名始终具有以下格式:aws/<service-name>。例如,适用于 Amazon DynamoDB 的 Amazon 托管式密钥 的别名为 aws/dynamodb


            Amazon KMS 控制台的 Amazon 托管式密钥 页面中的别名

查看别名 (Amazon KMS API)

ListAliases操作返回账户和区域中别名的别名和别名 ARN。输出包括 Amazon 托管式密钥 和客户托管密钥的别名。Amazon 托管式密钥 的别名始终具有格式 aws/<service-name>,如 aws/dynamodb

该响应可能还包括没有 TargetKeyId 字段的别名。这些是 Amazon 已创建但尚未与 KMS 密钥关联的预定义别名。

$ aws kms list-aliases { "Aliases": [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1516435200.399, "LastUpdatedDate": 1516435200.399 }, { "AliasName": "alias/ECC-P521-Sign", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ECC-P521-Sign", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1693622000.704, "LastUpdatedDate": 1693622000.704 }, { "AliasName": "alias/ImportedKey", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ImportedKey", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "CreationDate": 1493622000.704, "LastUpdatedDate": 1521097200.235 }, { "AliasName": "alias/finance-project", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/finance-project", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1604958290.014, "LastUpdatedDate": 1604958290.014 }, { "AliasName": "alias/aws/dynamodb", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef", "CreationDate": 1521097200.454, "LastUpdatedDate": 1521097200.454 }, { "AliasName": "alias/aws/ebs", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/ebs", "TargetKeyId": "abcd1234-09fe-ef90-09fe-ab0987654321", "CreationDate": 1466518990.200, "LastUpdatedDate": 1466518990.200 } ] }

要获取与特定 KMS 密钥关联的所有别名,请使用 ListAliases 操作的可选 KeyId 参数。KeyId 参数采用 KMS 密钥的密钥 ID 或者密钥 ARN

此示例获取与 0987dcba-09fe-87dc-65ba-ab0987654321 KMS 密钥关联的所有别名。

$ aws kms list-aliases --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Aliases": [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": "2018-01-20T15:23:10.194000-07:00", "LastUpdatedDate": "2018-01-20T15:23:10.194000-07:00" }, { "AliasName": "alias/finance-project", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/finance-project", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1604958290.014, "LastUpdatedDate": 1604958290.014 } ] }

KeyId 参数不采用通配符,但您可以使用编程语言的功能筛选响应。

例如,以下 Amazon CLI 命令仅获取 Amazon 托管式密钥 的别名。

$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/aws/`)]'

例如,以下命令仅获取 access-key 别名。别名名称区分大小写。

$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/access-key`]' [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": "2018-01-20T15:23:10.194000-07:00", "LastUpdatedDate": "2018-01-20T15:23:10.194000-07:00" } ]

更新别名

由于别名是独立的资源,因此您可以更改与别名关联的 KMS 密钥。例如,如果test-key别名与一个 KMS 密钥关联,则可以使用该UpdateAlias操作将其与其他 KMS 密钥关联。这是手动轮换 KMS 密钥而不更改其密钥材料的几种方法之一。您还可以更新 KMS 密钥,以使将一个 KMS 密钥用于新资源的应用程序现在使用不同的 KMS 密钥。

您无法在 Amazon KMS 控制台中更新别名。另外,您不能使用 UpdateAlias(或任何其他操作)更改别名名称。要更改别名名称,请删除当前别名,然后为 KMS 密钥创建新的别名。

更新别名时,当前 KMS 密钥和新 KMS 密钥必须为相同类型(均为对称、非对称或 HMAC)。它们还必须拥有相同的密钥用法(ENCRYPT_DECRYPTSIGN_VERIFY 或 GENERATE_VERIFY_MAC)。此限制可防止使用别名的代码中出现加密错误。

以下示例首先使用ListAliases操作来显示test-key别名当前与 KMS 密钥相关联1234abcd-12ab-34cd-56ef-1234567890ab

$ aws kms list-aliases --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Aliases": [ { "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 } ] }

接下来,它使用 UpdateAlias 操作将与 test-key 别名关联的 KMS 密钥更改为 KMS 密钥 0987dcba-09fe-87dc-65ba-ab0987654321。您不需要指定当前关联的 KMS 密钥,只需指定新的(“目标”)KMS 密钥。别名名称区分大小写。

$ aws kms update-alias --alias-name 'alias/test-key' --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321

要验证别名现在是否已与目标 KMS 密钥关联,请再次使用 ListAliases 操作。该 Amazon CLI 命令使用 --query 参数来仅获取 test-key 别名。TargetKeyIdLastUpdatedDate 字段将更新。

$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/test-key`]' [ { "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1593622000.191, "LastUpdatedDate": 1604958290.154 } ]

删除别名

您可以在Amazon KMS控制台中删除别名,也可以使用DeleteAlias操作来删除别名。删除别名之前,请确保别名未使用。虽然删除别名不会影响关联的 KMS 密钥,但它可能会为使用别名的任何应用程序造成问题。如果错误地删除了别名,您可以创建具有相同名称的新别名,并将其与相同或不同的 KMS 密钥关联。

如果您删除 KMS 密钥,则会删除与该 KMS 密钥关联的所有别名。

删除别名(控制台)

要在 Amazon KMS 控制台中删除别名,请使用 KMS 密钥的详细信息页面上的 Aliases(别名)选项卡。您可以一次删除一个 KMS 密钥的多个别名。

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择客户托管密钥。您无法管理 Amazon 托管式密钥 或 Amazon 拥有的密钥 的别名。

  4. 在表中,选择 KMS 密钥的密钥 ID 和别名。然后,在 KMS 密钥详细信息页面上,选择 Aliases(别名)选项卡。

    如果 KMS 密钥具有多个别名,则表中的 Aliases(别名)列会显示一个别名和一个别名摘要,例如(再加 n 个)。选择别名摘要将直接进入 KMS 密钥详细信息页面上的 Aliases(别名)选项卡中。

  5. Aliases(别名)选项卡上,选中要删除的别名旁边的复选框。然后选择删除

删除别名 (Amazon KMS API)

要删除别名,请使用DeleteAlias操作。此操作一次删除一个别名。别名名称区分大小写,且前面必须带有 alias/ 前缀。

例如,以下命令删除 test-key 别名。此命令不返回任何输出。

$ aws kms delete-alias --alias-name alias/test-key

要验证别名是否已删除,请使用ListAliases操作。以下命令使用 Amazon CLI 中的 --query 参数来仅获取 test-key 别名。响应中的空括号表示 ListAliases 响应不包含 test-key 别名。要消除括号,请使用 --output text 参数和值。

$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/test-key`]' []