步骤 1:创建不带密钥材料的 AWS KMS key
默认情况下,当您创建 KMS 密钥时,AWS KMS 会为您创建密钥材料。要改为导入自己的密钥材料,请先创建不带密钥材料的 KMS 密钥。然后导入密钥材料。要创建不具有密钥材料的 KMS 密钥,请使用 AWS KMS 控制台或 CreateKey 操作。
要创建不具有密钥材料的密钥,请指定 EXTERNAL
的源。KMS 密钥的源属性是不可变的。创建完成后,无法将专为导入密钥材料设计的 KMS 密钥转换为带有 AWS KMS 中的密钥材料或任何其他源的 KMS 密钥。
带 EXTERNAL
且无密钥材料的 KMS 密钥的密钥状态为 PendingImport
。KMS 密钥可以无限保留在 PendingImport
状态。但是,您不能在加密操作中使用处于 PendingImport
状态的 KMS 密钥。导入密钥材料时,KMS 密钥的密钥状态会更改为 Enabled
,您可以在加密操作中使用该密钥。
AWS KMS 会在您 创建 KMS 密钥、下载公有密钥和导入令牌 以及 导入密钥材料 时在您的 AWS CloudTrail 日志中记录一个事件。当您 删除导入的密钥材料 或 AWS KMS 删除过期的密钥材料时,AWS KMS 也会记录 CloudTrail 事件。
创建不带密钥材料的 KMS 密钥(控制台)
您只需为导入的密钥材料创建一次 KMS 密钥。您可以根据需要多次将相同的密钥材料导入和重新导入到现有的 KMS 密钥中,但不能将不同的密钥材料导入一个 KMS 密钥。有关详细信息,请参阅步骤 2:下载包装公有密钥和导入令牌。
要在您的 客户管理型密钥 表中查找带有导入的密钥材料的现有 KMS 密钥,请使用右上角的齿轮图标显示 KMS 密钥列表中的 Origin(源)列。导入的密钥的源值为外部(导入密钥材料)。
要使用导入的密钥材料创建 KMS 密钥,请首先按照创建首选密钥类型的 KMS 密钥的说明操作,但以下情况除外。
选择密钥用法后,请执行以下操作:
-
展开 Advanced options (高级选项)。
-
对于 Key material origin(密钥材料源),请选择 External (Import key material) [外部(导入密钥材料)]。
-
选择我了解使用导入密钥的安全性和持久性影响旁边的复选框,表示您了解使用导入密钥材料的影响。要了解这些含义,请参阅保护导入的密钥材料。
-
可选:要使用导入的密钥材料创建多区域 KMS 密钥,请在区域性下选择多区域密钥。
-
返回基本说明。对于该类型的所有 KMS 密钥,基本过程的其余步骤都相同。
选择完成时,您创建了一个 KMS 密钥,该密钥没有密钥材料,状态(密钥状态)为待导入。
但是,控制台不会返回到客户托管密钥表,而是显示一个页面,您可以在其中下载导入密钥材料所需的公有密钥和导入令牌。现在,您可以立即继续下载步骤,也可以选择取消停止下载。您可以随时返回此下载步骤。
下一步: 步骤 2:下载包装公有密钥和导入令牌。
创建不带密钥材料的 KMS 密钥 (AWS KMS API)
要使用 AWS KMS API 创建不带密钥材料的对称 KMS 密钥,请发送 CreateKey 请求,并将 Origin
参数设置为 EXTERNAL
。以下示例说明如何使用 AWS Command Line Interface (AWS CLI)
$
aws kms create-key --origin EXTERNAL
该命令成功执行后,您会看到类似以下内容的输出。AWS KMS 密钥的 Origin
为 EXTERNAL
,且其 KeyState
为 PendingImport
。
提示
如果命令不成功,则可能会看到 KMSInvalidStateException
或 NotFoundException
。您可以重试请求。
{ "KeyMetadata": { "Origin": "EXTERNAL", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "Enabled": false, "MultiRegion": false, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "CreationDate": 1568289600.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }
从命令输出中复制 KeyId
值,以供后面的步骤使用,然后继续 步骤 2:下载包装公有密钥和导入令牌。
注意
此命令创建对称加密 KMS 密钥,其 KeySpec
为 SYMMETRIC_DEFAULT
,KeyUsage
为 ENCRYPT_DECRYPT
。您可以使用可选参数 --key-spec
和 --key-usage
来创建非对称或 HMAC KMS 密钥。有关更多信息,请参阅 CreateKey 操作。