管理别名 - AWS Key Management Service

管理别名

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

创建别名

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

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

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

创建别名(控制台)

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

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

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

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

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

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

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

    注意

    在控制台中,您无需指定 alias/ 前缀。控制台会为您添加它。如果您输入 alias/ExampleAlias,实际的别名名称将是 alias/alias/ExampleAlias

创建别名 (AWS KMS API)

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

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

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

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

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

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

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

查看别名

别名使您能够轻松识别 AWS KMS 控制台中的 KMS 密钥。您可以在 AWS KMS 控制台中或通过使用 ListAliases 操作查看 KMS 密钥的别名。返回 KMS 密钥的属性的 DescribeKey 操作不包含别名。

查看别名(控制台)

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

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

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


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

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

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

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

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

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

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


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

查看别名 (AWS KMS API)

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

该响应可能还包括没有 TargetKeyId 字段的别名。这些是 AWS 已创建但尚未与 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 参数不采用通配符,但您可以使用编程语言的功能筛选响应。

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

$ 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 密钥。

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

更新别名时,当前 KMS 密钥和新 KMS 密钥必须为相同类型(均为对称或非对称)。它们还必须拥有相同的密钥用法(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 操作。该 AWS 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 } ]

删除别名

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

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

删除别名(控制台)

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

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

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

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

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

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

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

删除别名 (AWS KMS API)

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

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

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

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

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