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

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

创建密钥

您可以在 中或使用 客户主密钥CreateKey 操作创建CMKs对称和非对称 AWS 管理控制台)。在此过程中,您将确定 的加密配置CMK及其密钥材料源。CMK 创建 后,无法更改这些属性。您还可以设置 的密钥策略CMK,您可以随时更改该策略。

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

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

了解更多:

创建 的权限 CMKs

要在 控制台CMK中或使用 APIs 创建 ,您必须在 IAM 策略中具有以下权限。如果可能,请使用 条件键来限制权限。有关创建密钥的委托人的 IAM 策略示例,请参阅允许用户创建 CMKs

注意

授予委托人管理标签和别名的权限时,请务必谨慎。更改标签或别名可以允许或拒绝对 CMK 的权限。有关详细信息,请参阅将 ABAC 用于 AWS KMS.

  • CreateKey 是必需的。

  • CreateAlias需要在 控制台CMK中创建 ,其中每个新 都需要别名CMK。

  • TagResource 是在创建 时添加标签所必需的CMK。

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

创建对称 CMKs

您可以在 CMKs 中或使用 AWS 管理控制台 API 创建AWS KMS对称。对称密钥加密功能使用同一密钥来加密和解密数据。

您可以使用 AWS 管理控制台 创建 客户主密钥 (CMKs)。

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.amazonaws.cn/kms

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

  3. 在导航窗格中,选择 Customer managed keys (客户托管密钥)

  4. 选择 Create key

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

    有关如何在 CMK 控制台AWS KMS中创建非对称 的信息,请参阅

  6. 选择 Next

  7. 键入 的别名CMK。别名名称不能以 aws/ 开头。aws/ 前缀由 预留Amazon Web Services,用于在您的账户AWS中表示CMKs托管 。

    注意

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

    别名是可用于标识 的显示名称CMK。我们建议您选择一个别名,以指示您计划保护的数据类型或计划用于 的应用程序CMK。

    在 中创建 时需要别名CMKAWS 管理控制台。当您使用 CreateKey 操作时,别名是可选的。

  8. (可选) 键入 的描述CMK。

    输入说明,说明您计划保护的数据类型或计划用于 的应用程序CMK。请勿使用用于AWS托管 CMKs的描述格式。当未定义任何其他键时主密钥,用于保护我的 ... 的默认 描述格式将为AWS托管 保留CMKs。

    现在,除非密钥状态Pending Deletion,否则您可以添加描述或更新描述。要添加、更改或删除现有客户托管 的描述CMK,请在 中编辑描述,AWS 管理控制台或使用 UpdateKeyDescription 操作。

  9. 选择 Next

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

    注意

    标记或取消标记 CMK 可以允许或拒绝对 CMK 的权限。有关详细信息,请参阅 将 ABAC 用于 AWS KMS使用标签控制对 的访问 CMKs

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

  11. 选择 Next

  12. 选择可管理 的用户IAM和角色CMK。

    注意

    IAM 策略可以向其他用户IAM和角色授予管理 的权限CMK。

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

  14. 选择 Next

  15. 选择可将 用于IAMCMK加密操作加密操作的用户和角色。

    注意

    默认情况下,AWS 账户(根用户)拥有完全权限。因此,任何 IAM 策略还可以向用户和角色授予使用 CMK 进行加密操作的权限。

  16. (可选)您可以允许其他AWS账户CMK将此参数用于加密操作。为此,请在页面底部的 Other AWS accounts (其他账户) 部分中,选择 Add another AWS account (添加其他账户),然后输入外部账户AWS的账户标识号。要添加多个外部账户,请重复此步骤。

    注意

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

  17. 选择 Next

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

  19. 选择 Finish (完成) 以创建 CMK。

您可以使用 CreateKey 操作创建新的对称 客户主密钥 (CMK)。这些示例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何受支持的编程语言。

该操作没有必需参数。不过,您可能还希望使用 Policy 参数指定密钥策略。您可以随时更改密钥策略 (PutKeyPolicy) 并添加可选元素,例如描述标签。此外,如果您要CMK为导入的密钥材料创建 ,或在CMK自定义密钥存储使用自定义密钥存储中创建 ,则 Origin 参数是必需的。

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

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

$ aws kms create-key { "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "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" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

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

例如,这个对 GetKeyPolicy 操作的调用会返回 CreateKey 应用的密钥策略。它向 AWS 账户授予对 的访问权限CMK,并允许它为 创建 AWS Identity and Access Management (IAM) 策略CMK。有关 的 IAM 策略和密钥策略的详细信息CMKs,请参阅 AWS 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 User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ] }