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

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

创建密钥

您可以创建对称和非对称客户主密钥(CMK)中的Amazon Web Services Management Console或通过使用CreateKeyoperation. 在此过程中,您可以确定您的 CMK 的加密配置及其密钥材料来源。创建 CMK 后,这些属性无法更改。您还可以设置 CMK 的密钥策略,可以随时更改该策略。

如果您要创建 CMK 来加密在Amazon服务中创建一个对称 CMK。Amazon服务集成到Amazon KMS使用对称 CMK 加密数据。这些服务不支持使用非对称 CMK 进行加密。有关如何确定要创建的 CMK 类型的帮助信息,请参阅如何选择 CMK 配置

当您在Amazon KMS控制台,则需要为其指定一个别名(友好名称)。这些区域有:CreateKey操作不会为新 CMK 创建别名。有关中的别名的详细信息,请参阅Amazon KMS,请参阅使用别名.

了解更多:

创建 CMK 的权限

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

注意

授予委托人管理标签和别名的权限时要谨慎。更改标记或别名可以允许或拒绝对 CMK 的权限。有关详细信息,请参阅 使用 ABACAmazon KMS

这些区域有:KMS: 普特键策略权限不需要创建 CMK。这些区域有:kms:CreateKey权限包括设置初始密钥策略的权限。但是,您必须在创建 CMK 时将此权限添加到密钥策略中,以确保您可以控制对 CMK 的访问。另一种方法是使用绕过锁定安全检查参数,不推荐使用。

创建对称 CMK

您可以创建对称 CMK中的Amazon Web Services Management Console或通过使用Amazon KMSAPI。对称密钥加密功能使用同一密钥来加密和解密数据。

您可以使用 Amazon Web Services Management Console创建客户主密钥 (CMK)。

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

  2. 要更改 Amazon 区域,请使用页面右上角的 Region selector (区域选择器)。

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

  4. 选择 Create key

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

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

  6. 选择 Next (下一步)

  7. 键入alias为 CMK。别名名称不能以 aws/ 开头。这些区域有:aws/前缀由 Amazon Web Services 预留,用于表示Amazon托管 CMK。

    注意

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

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

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

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

    现在,除非选择键状态Pending Deletion或者Pending Replica Deletion. 要添加、更改或删除现有客户管理 CMK 的描述,编辑描述中的Amazon Web Services Management Console或使用UpdateKeyDescriptionoperation.

  9. 选择 Next (下一步)

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

    注意

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

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

  11. 选择 Next (下一步)

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

    注意

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

  13. (可选)要阻止选定 IAM 用户和角色删除此 CMK,请在删除密钥部分中,清除允许密钥管理员删除”复选框。

  14. 选择 Next (下一步)

  15. 选择可将 CMK 用于加密操作.

    注意

    这些区域有: Amazon Web Services 账户 (根用户)默认情况下拥有完全权限。因此,任何 IAM 策略还可以向用户和角色授予在加密操作中使用 CMK 的权限。

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

    注意

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

  17. 选择 Next (下一步)

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

  19. 选择 Finish 以创建 CMK。

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

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

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

以下示例显示的是在没有任何参数的情况下调用 CreateKey 操作。此命令使用所有默认值。它将创建一个对称 CMK,以使用 Amazon 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", "MultiRegion": false "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], } }

如果您不为新 CMK 指定密钥策略,默认密钥策略thatCreateKey应用程序不同于在您使用控制台创建新 CMK 时控制台应用的默认密钥策略。

例如,这个对 GetKeyPolicy 操作的调用会返回 CreateKey 应用的密钥策略。它给出了 Amazon Web Services 账户 访问 CMK,并允许它创建Amazon Identity and Access Management(IAM) 策略。有关 CMK 的 IAM 策略和密钥策略的详细信息,请参阅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" : "*" } ] }

创建非对称 CMK

您可以创建非对称 CMK中的Amazon Web Services Management Console或通过使用Amazon KMSAPI。非对称 CMK 表示可用于加密或签名的公有密钥和私有密钥对。私有密钥仍在内Amazon KMS. 下载公有密钥供外部使用Amazon KMS,请参阅下载公有密钥.

创建 CMK 以加密Amazon服务,创建对称 CMK.Amazon服务不支持非对称 CMK 进行加密。有关如何确定是创建对称 CMK 还是非对称 CMK 的帮助信息,请参阅如何选择 CMK 配置

您可以使用 Amazon Web Services Management Console创建非对称客户主密钥 (CMK)。每个非对称 CMK 表示一个公有密钥和私有密钥对。

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

  2. 要更改 Amazon 区域,请使用页面右上角的 Region selector (区域选择器)。

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

  4. 选择 Create key

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

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

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

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

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

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

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

  8. 选择 Next (下一步)

  9. 键入alias为 CMK。别名名称不能以 aws/ 开头。这些区域有:aws/前缀由 Amazon Web Services 预留,用于表示Amazon托管 CMK。

    网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的alias是一个友好名称,您可以使用它来标识控制台中的 CMK,并在某些Amazon KMSAPI。我们建议您选择一个别名,用来指示您计划保护的数据类型或计划与 CMK 搭配使用的应用程序。

    在 Amazon Web Services Management Console中创建 CMK 时需要别名。您不能指定别名,当您使用CreateKey操作,但您可以使用控制台或CreateAlias操作为现有 CMK 创建别名。有关详细信息,请参阅 使用别名

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

    现在,除非选择键状态Pending Deletion或者Pending Replica Deletion. 要添加、更改或删除现有客户管理 CMK 的描述,编辑描述中的Amazon Web Services Management Console或使用UpdateKeyDescriptionoperation.

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

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

  12. 选择 Next (下一步)

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

    注意

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

  14. (可选)要阻止选定 IAM 用户和角色删除此 CMK,请在删除密钥部分中,清除允许密钥管理员删除”复选框。

  15. 选择 Next (下一步)

  16. 选择可将 CMK 用于加密操作.

    注意

    这些区域有: Amazon Web Services 账户 (根用户)默认情况下拥有完全权限。因此,任何 IAM 策略还可以向用户和角色授予在加密操作中使用 CMK 的权限。

  17. (可选)您可以允许其他 Amazon Web Services 账户 将此 CMK 用于加密操作。为此,请在其他 Amazon Web Services 账户 部分中,选择页面底部的添加其他 Amazon Web Services 账户 并输入 Amazon Web Services 账户 外部帐户的识别号码。要添加多个外部账户,请重复此步骤。

    注意

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

  18. 选择 Next (下一步)

  19. 查看您选择的关键设置。您仍然可以返回并更改所有设置。

  20. 选择 Finish 以创建 CMK。

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

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

这些区域有:CreateKey操作不允许您指定别名,但您可以使用CreateAlias操作为新 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, "MultiRegion": false, "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, "MultiRegion": false, "KeyUsage": "SIGN_VERIFY" } }