火山引擎KMS支持自带密钥(Bring Your Own Key,简称BYOK),用户可以将自己的密钥材料导入到用户主密钥中托管。
用户使用 CreateKey 接口创建托管用户主密钥时,需指定密钥来源为External(外部),此时火山引擎KMS会为用户创建主密钥,但不会生成主密钥的密钥材料。密钥来源为外部的主密钥初始状态为待导入,用户可以将自己的密钥材料导入到该用户主密钥中,导入成功后,主密钥状态变更为启用中。
注意事项
用户使用由外部导入的密钥材料时,需要注意以下几点:
导入密钥材料的参数包含一个加密密钥材料的公钥和一个导入令牌,本文以公钥类型RSA_2048、加密算法RSAES_OAEP_SHA_256为例进行介绍。
i. 在用户主密钥的操作栏,单击"获取导入参数"
ii. 在获取导入参数对话框,选择"公钥类型"和"加密算法",单击"获取"
iii. 下载公钥和导入令牌
下载公钥可选公钥格式:
注意事项
下载公钥和导入令牌后,用户使用公钥加密自己的密钥材料,加密算法需使用获取导入参数时选择的加密算法。本文以OpenSSL加密密钥材料为例,以下命令在OpenSSL3.0+版本上运行通过:
i. 创建一个密钥材料,以SYMMETRIC_256为例:
openssl rand -out KeyMaterial.bin 32
ii. 使用指定算法RSAES_OAEP_SHA_256加密密钥材料:
openssl pkeyutl \ -in KeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey PublicKey.der \ -keyform DER -pubin \ -encrypt \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256
iii. 如果选择上传Binary格式的密钥材料,可直接上传EncryptedKeyMaterial.bin,如果选择上传Base64格式密钥材料,可进行Base64编码:
openssl enc -e -base64 -A -in EncryptedKeyMaterial.bin -out EncryptedKeyMaterial_base64.txt
上传加密密钥材料中生成的密钥材料文件和获取导入参数中获取的导入令牌文件完成导入:
i. 在用户主密钥的操作栏,单击"导入密钥材料"
ii. 在导入密钥材料对话框,上传"密钥材料"和"导入令牌",选择"密钥材料过期时间",单击"导入"
相关API
ImportKeyMaterial
用户可以直接删除密钥材料,删除密钥材料后,主密钥状态变更为待导入(若当前主密钥状态为计划删除中,删除密钥材料不会变更主密钥状态),此状态下主密钥将无法用于数据加解密。用户可以再次导入相同的密钥材料,重新启用主密钥,建议用户自行保存密钥材料的副本。
i. 在用户主密钥的操作栏,单击"删除密钥材料"
ii. 在删除密钥材料确认框中,单击"确认"
相关API
DeleteKeyMaterial