创建密钥 - AWS Key Management Service

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

创建密钥

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

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

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

了解更多:

用于创建 CMKs 的权限

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

注意

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

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

创建对称 CMKs

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

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

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

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

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

  4. 选择 Create key

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

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

  6. 选择 Next (下一步)

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

    注意

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

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

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

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

    输入说明,说明您计划保护的数据类型或计划与 CMK 结合使用的应用程序。请勿使用用于 AWS 托管 CMKs 的描述格式。Default that protects my ... when no other key is defined (如果没有定义其他密钥,则保护我的 ... 的默认 ...)主密钥 描述格式是为 托管的 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. 选择可将 IAM 用于CMK加密操作 用户和角色。

    注意

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

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

    注意

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

  17. 选择 Next (下一步)

  18. 查看通过您的选择创建的密钥策略文档。您也可以对其进行编辑。

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

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

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

操作不让您指定别名,但您可以使用 CreateKeyCreateAlias 操作为新 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" : "*" } ] }

创建非对称CMKs

您可以在 中或使用 CMKs API 创建非对称AWS 管理控制台。AWS KMS非对称 CMK 表示可用于加密或签名的公有和私有密钥对。

如果要创建CMK以加密在 AWS 服务中存储或管理的数据,请使用对称 CMK。与 AWS 集成的 AWS KMS 服务不支持非对称 CMKs。有关决定是创建对称还是非对称 CMK 的帮助,请参阅如何选择 CMK 配置

您可以使用 AWS 管理控制台 创建非对称 客户主密钥 (CMKs)。每个非对称 CMK 表示一个公有和私有密钥对。

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

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

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

  4. 选择 Create key

  5. 要创建非对称 CMK,请在 Key type (密钥类型) 中选择 Asymmetric (非对称)

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

  6. 要创建用于公有密钥加密的非对称 CMK,请在 Key usage (密钥用法) 中选择 Encrypt and decrypt (加密和解密)。或者,要创建用于签署消息和验证签名的非对称 CMK,请在 Key usage (密钥用法) 中选择 Sign and verify (签名和验证)

    有关选择密钥用法值的帮助信息,请参阅选择密钥用法

  7. 为非对称 选择规范(Key spec (密钥规范)CMK)。

    通常,您选择的密钥规范由法规、安全性或业务要求决定。也可能受需要加密或签名的消息大小的影响。一般来说,加密密钥越长,对暴力攻击的抵抗力越强。

    有关选择密钥规范的帮助信息,请参阅选择密钥规范

  8. 选择 Next (下一步)

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

    别名 是一个友好名称,可用于在控制台和某些 CMK 中标识 AWS KMS。APIs 我们建议您选择一个别名,该别名指示您计划保护的数据类型或计划与 CMK 结合使用的应用程序。

    在 CMK中创建 AWS 管理控制台 时,需要别名。使用 CreateKey 操作时无法指定别名,但您可以使用控制台或 CreateAlias 操作为现有 CMK 创建别名。有关详细信息,请参阅 使用别名

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

    输入说明,说明您计划保护的数据类型或计划与 CMK 结合使用的应用程序。请勿使用用于 AWS 托管 CMKs 的描述格式。Default that protects my ... when no other key is defined (如果没有定义其他密钥,则默认保护我的 ...)主密钥 描述格式是为 托管的 AWS 保留的。CMKs

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

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

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

  12. 选择 Next (下一步)

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

    注意

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

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

  15. 选择 Next (下一步)

  16. 选择可将 IAM 用于CMK加密操作 用户和角色。

    注意

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

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

    注意

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

  18. 选择 Next (下一步)

  19. 查看通过您的选择创建的密钥策略文档。您也可以对其进行编辑。

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

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

创建非对称 CMK 时,必须指定 CustomerMasterKeySpec 参数,该参数决定了所创建密钥的类型。此外,还必须指定 KeyUsage 值是 ENCRYPT_DECRYPT 还是 SIGN_VERIFY。创建 CMK 后,无法更改这些属性。

操作不让您指定别名,但您可以使用 CreateKeyCreateAlias 操作为新 CMK 创建别名。

以下示例使用 CreateKey 操作创建为公有密钥加密设计的 4096 位 RSA 密钥的非对称 CMK。

$ aws kms create-key --customer-master-key-spec RSA_4096 --key-usage ENCRYPT_DECRYPT { "KeyMetadata": { "KeyState": "Enabled", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CustomerMasterKeySpec": "RSA_4096", "KeyManager": "CUSTOMER", "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1569973196.214, "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "AWSAccountId": "111122223333", "Origin": "AWS_KMS", "Enabled": true } }

以下示例命令创建一个非对称 CMK,它表示一对用于签名和验证的 ECDSA 密钥。不能创建用于加密和解密的椭圆曲线密钥对。

$ aws kms create-key --customer-master-key-spec ECC_NIST_P521 --key-usage SIGN_VERIFY { "KeyMetadata": { "KeyState": "Enabled", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1570824817.837, "Origin": "AWS_KMS", "SigningAlgorithms": [ "ECDSA_SHA_512" ], "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "AWSAccountId": "111122223333", "CustomerMasterKeySpec": "ECC_NIST_P521", "KeyManager": "CUSTOMER", "Description": "", "Enabled": true, "KeyUsage": "SIGN_VERIFY" } }