创建密钥 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

创建密钥

您可以在 Amazon Web Services Management Console 中,或通过使用 CreateKey 操作或 Amazon CloudFormation 模板创建 Amazon KMS keys。在此过程中,您可以选择 KMS 密钥的类型、其区域性(单区域或多区域)以及密钥材料的来源(默认由 Amazon KMS 为您创建密钥材料)。创建 KMS 密钥后,这些属性无法更改。您还可以设置 KMS 密钥的密钥策略,可以随时更改该策略。

本主题介绍如何创建基本 KMS 密钥、对称加密 KMS 密钥用于具有来自 Amazon KMS 的密钥材料的单区域。您可以在 Amazon Web Service 中使用此 KMS 密钥保护您的资源。有关对称加密 KMS 密钥的详细信息,请参阅 SYMMETRIC_DEFAULT 密钥规范。有关创建其他类型密钥的帮助,请参阅 特殊用途密钥

如果您要创建 KMS 密钥来加密在 Amazon 服务中存储或管理的数据,请创建对称加密 KMS 密钥。与 Amazon KMS 集成的 Amazon 服务仅使用对称加密 KMS 密钥来加密您的数据。这些服务不支持使用非对称 KMS 密钥进行加密。有关如何确定要创建的 KMS 密钥类型的帮助信息,请参阅 选择一种 KMS 密钥类型

注意

对称 KMS 密钥现在称为对称加密 KMS 密钥。Amazon KMS 支持两种对称 KMS 密钥、对称加密 KMS 密钥(默认类型)和 HMAC KMS 密钥,它们也是对称密钥。

当您在 Amazon KMS 控制台中创建 KMS 密钥时,需要为其指定一个别名(友好名称)。CreateKey 操作不会为新 KMS 密钥创建别名。要为新的或现有的 KMS 密钥创建别名,请使用 CreateAlias 操作。有关在 Amazon KMS 中的别名的详细信息,请参阅 使用别名

本主题介绍如何创建对称加密 KMS 密钥。

了解更多:

创建 KMS 密钥的权限

要在控制台中或使用 API 创建 KMS 密钥,您必须在 IAM policy 中具有以下权限。在可能的情况下,使用条件键来限制权限。例如,您可以使用 IAM policy 中的 kms:KeySpec 条件键,允许主体仅创建对称加密密钥。

有关创建密钥的委托人的 IAM policy 的示例,请参阅 允许用户创建 KMS 密钥

注意

请谨慎授予委托人管理标签和别名的权限。更改标签或别名可以允许或拒绝对客户托管密钥的权限。有关详细信息,请参阅Amazon KMS 中的 ABAC

创建 KMS 密钥不需要 kms:PutKeyPolicy 权限。kms:CreateKey 权限包括设置初始密钥策略的权限。但是,您必须在创建 KMS 密钥时将此权限添加到密钥策略中,以确保您可以控制对 KMS 密钥的访问。另一种方法是使用 BypassLockoutSafetyCheck 参数,我们不推荐这种方法。

KMS 密钥属于创建它们的 Amazon 账户。创建 KMS 密钥的 IAM 用户不会被视为密钥的拥有者,且他们不会自动获得使用或管理自己所创建 KMS 密钥的权限。与任何其他主体一样,密钥创建者需要通过密钥策略、IAM policy 或授权获得权限。但是,拥有 kms:CreateKey 权限的主体可以设置初始密钥策略,并授予自己使用或管理密钥的权限。

创建对称加密 KMS 密钥

您可以在 Amazon Web Services Management Console 中或使用 Amazon KMS API 创建 KMS 密钥。

本主题介绍如何创建基本 KMS 密钥、对称加密 KMS 密钥用于具有来自 Amazon KMS 的密钥材料的单区域。您可以在 Amazon Web Service 中使用此 KMS 密钥保护您的资源。有关创建其他类型密钥的帮助,请参阅 特殊用途密钥

创建对称加密 KMS 密钥(控制台)

您可以使用 Amazon Web Services Management Console 创建 Amazon KMS keys(KMS 密钥)。

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

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

  3. 在导航窗格中,选择客户托管密钥

  4. 选择 Create key

  5. 要创建对称加密 KMS 密钥,请为 Key type(密钥类型)选择 Symmetric(对称)。

    有关如何在 Amazon KMS 控制台中创建非对称 KMS 密钥的信息,请参阅 创建非对称 KMS 密钥(控制台)

  6. Key usage(密钥用法)中,已为您选择了 Encrypt and decrypt(加密和解密)选项。

    有关如何创建生成和验证 MAC 代码的 KMS 密钥的信息,请参阅 创建 HMAC KMS 密钥

  7. 选择 Next (下一步)

    有关Advanced options(高级选项)的更多信息,请参阅 特殊用途密钥

  8. 为 KMS 密钥键入别名。别名名称不能以 aws/ 开头。aws/ 前缀由 Amazon Web Services 预留,用于在您的账户中表示 Amazon 托管式密钥。

    注意

    添加、删除或更新别名可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅 Amazon KMS 中的 ABAC使用别名控制对 KMS 密钥的访问

    别名是一个显示名称,您可以使用它来标识 KMS 密钥。我们建议您选择一个别名,用来指示您计划保护的数据类型或计划与 KMS 密钥搭配使用的应用程序。

    在 Amazon Web Services Management Console 中创建 KMS 密钥时需要别名。当您使用 CreateKey 操作时,别名是可选的。

  9. (可选)为 KMS 密钥键入描述。

    现在,除非密钥状态Pending DeletionPending Replica Deletion,否则您可以随时添加描述或更新描述。要添加、更改或删除现有客户管理密钥的描述,请在 Amazon Web Services Management Console 中编辑描述或使用 UpdateKeyDescription 操作。

  10. (可选) 键入标签键和一个可选标签值。要向 KMS 密钥添加多个标签,请选择 Add tag(添加标签)。

    注意

    标记或取消标记 KMS 密钥可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅 Amazon KMS 中的 ABAC使用标签控制对 KMS 密钥的访问

    在将标签添加到 Amazon 资源时,Amazon 可生成成本分配报告,其中按标签汇总了使用情况和成本。标签还可以用来控制对 KMS 密钥的访问。有关轮换 KMS 密钥的信息,请参阅 标记密钥Amazon KMS 中的 ABAC

  11. 选择 Next (下一步)

  12. 选择可管理 KMS 密钥的 IAM 用户和角色。

    注意

    此密钥策略将授予 Amazon Web Services 账户 对此 KMS 密钥的完全控制权。此控制权允许账户管理员使用 IAM policy 授予其他主体管理 KMS 密钥的权限。有关详细信息,请参阅默认密钥策略

  13. (可选)要阻止选定 IAM 用户和角色删除此 KMS 密钥,请在页面底部的 Key deletion(密钥删除)部分中,清除 Allow key administrators to delete this key(允许密钥管理员删除此密钥)复选框。

  14. 选择 Next (下一步)

  15. 选择可在加密操作中使用密钥的 IAM 用户和角色

    注意

    此密钥策略将授予 Amazon Web Services 账户 对此 KMS 密钥的完全控制权。此控制权允许账户管理员使用 IAM policy 授予其他主体在加密操作中使用 KMS 密钥的权限。有关详细信息,请参阅默认密钥策略

  16. (可选)您可以允许其他 Amazon Web Services 账户 将此 KMS 密钥用于加密操作。为此,请在页面底部的 Other Amazon Web Services 账户(其他 Amazon Web Services 账户)部分中,选择 Add another Amazon Web Services 账户(添加另一个 Amazon Web Services 账户)并输入外部账户的 Amazon Web Services 账户 账户标识号。要添加多个外部账户,请重复此步骤。

    注意

    要允许外部账户中的委托人使用 KMS 密钥,外部账户的管理员必须创建提供这些权限的 IAM policy。有关更多信息,请参阅允许其他账户中的用户使用 KMS 密钥

  17. 选择 Next (下一步)

  18. 检视您选择的密钥设置。您仍然可以返回并更改所有设置。

  19. 选择 Finish(完成)以创建 KMS 密钥。

创建对称加密 KMS 密钥(Amazon KMS API)

您可以使用 CreateKey 操作创建任何类型的 Amazon KMS keys。这些示例使用 Amazon Command Line Interface (Amazon CLI),但您可以使用任何受支持的编程语言。

以下操作会创建最常用的 KMS 密钥,这是由 Amazon KMS 生成的密钥材料提供支持的、单个区域中的对称加密密钥。该操作没有必需参数。不过,您可能还希望使用 Policy 参数指定密钥策略。您可以随时更改密钥策略 (PutKeyPolicy) 并添加可选元素,例如描述标签。您还可以创建非对称密钥多区域密钥、具有导入密钥材料的密钥以及自定义密钥存储中的密钥。

CreateKey 操作不允许您指定别名,但您可以使用 CreateAlias 操作为新 KMS 密钥创建别名。

以下示例显示的是在没有任何参数的情况下调用 CreateKey 操作。此命令使用所有默认值。它将创建一个具有 Amazon KMS 生成的密钥材料的对称加密 KMS 密钥。

$ aws kms create-key { "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1502910355.475, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "MultiRegion": false "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], } }

如果您不为新 KMS 密钥指定密钥策略,则 CreateKey 应用的默认密钥策略会不同于在您使用控制台创建新 KMS 密钥时控制台应用的默认密钥策略。

例如,这个对 GetKeyPolicy 操作的调用会返回 CreateKey 应用的密钥策略。它授予了对 KMS 密钥的 Amazon Web Services 账户 访问权限,并允许它为 KMS 密钥创建 Amazon Identity and Access Management (IAM) 策略。有关 KMS 密钥的 IAM policy 和密钥策略的详细信息,请参阅 Amazon KMS 的身份验证和访问控制

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text { "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM policies", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ] }