文档简介:
KMS提供针对敏感信息的加密能力,适用于保护小型敏感数据(小于6KB),如口令、身份信息、证书、后台配置文件等。
通过密钥管理服务KMS的在线加密API,使用用户主密钥(CMK)直接加密敏感数据信息,而非直接将明文存储,确保敏感数据安全。
场景示意图
操作流程(以证书加密为例)
1. 通过KMS控制台或者调用CreateKey接口,创建一个用户主密钥(CMK)。
2. 调用KMS服务的Encrypt接口,将明文证书加密为密文证书。
3. 将密文证书部署在服务器上。
4. 当服务器启动需要使用证书时,调用KMS服务的Decrypt接口将密文证书解密为明文证书。
相关API
您可以调用以下KMS API,轻松完成对数据的加密或解密操作。
API名称 |
说明 |
createKey |
创建用户主密钥(CMK)。 |
encrypt |
指定CMK,直接输入明文数据,由KMS在线加密数据。 |
decrypt |
解密由encrypt接口加密的数据,不需要指定CMK即可完成在线解密。 |
操作步骤
1. 通过密钥管理服务控制台创建用户主密钥CMK。
2. 通过OpenAPI在线加密接口,对敏感数据进行加密。
请求参数如下:
参数 |
是否必填 |
参数位置 |
参数类型 |
说明 |
cmkUuid |
是 |
body |
String |
主密钥(CMK)的全局唯一标识符。 |
plaintext |
是 |
body |
String |
待加密明文(必须经过Base64编码)。 |
请求示例
{
"plaintext": "SGVsbG8gd29ybGQ=",
"cmkUuid": "241ede22-6261-4617-9caf-10d89990516c"
}
成功返回
{
"code": 200,
"result": {
"ciphertextBlob": "MDA2NE1qUXhaV1JsTWpJdE5qSTJNUzAwTmpFM0xUbGpZV1l0TVRCa09EazVPVEExTVRaakpqUTVaV00zTm1RM0xXTmpOR010TkRBd1pTMDVaakU1TFdZNU1EQXhOVGczWVdVd1pnPT3oCYiGAy7mNTLitIlJaQ92",
"cmkUuid": "241ede22-6261-4617-9caf-10d89990516c",
"keyVersionId": "49ec76d7-cc4c-400e-9f19-f9001587ae0f"
},
"statusCode": 200,
"success": 1
}
返回参数说明
参数 |
说明 |
ciphertextBlob |
数据被指定CMK的主版本加密后的密文。 |
cmkUuid |
CMK的全局唯一标识符。如果请求中的Cmk_uuid参数使用的是CMK的别名,在响应中会返回别名对应的CMK标志符。 |
keyVersionId |
用于加密明文的密钥版本标志符,是指定CMK的主版本。 |
3. 将加密后的数据存储
根据业务的应用场景,将密文进行存储。
4. 通过OpenAPI解密接口,对密文数据进行解密。
请求参数如下:
参数 |
是否必填 |
参数位置 |
参数类型 |
说明 |
ciphertextBlob |
是 |
body |
String |
主密钥(CMK)加密的数据密钥的密文。 |
成功返回
{
"statusCode": 800,
"returnObj": {
"code": 200,
"result": {
"cmkUuid": "8bca8f33-d42a-448a-866b-a064f44b29b7",
"keyVersionId": "73670b28-4eea-4260-b497-ae0334cc0c85",
"plaintext": "sc7280+klUSln3Y9FHdfKGUT+6kPrcIMW41uZQeXxGU="
},
"statusCode": 200,
"success": 1
}
}
返回参数说明
参数 |
说明 |
cmkUuid |
CMK的全局唯一标识符。如果请求中的Cmk_uuid参数使用的是CMK的别名,在响应中会返回别名对应的CMK标志符。 |
keyVersionId |
密钥版本ID。主密钥版本的全局唯一标识符。 |
plaintext |
解密后的明文经过Base64编码的后的值。 |