KMS提供针对敏感信息的加密能力,适用于保护小型敏感数据(小于6KB),如口令、身份信息、证书、后台配置文件等。
通过密钥管理服务KMS的在线加密API,使用用户主密钥(CMK)直接加密敏感数据信息,而非直接将明文存储,确保敏感数据安全。
场景示意图
操作流程(以证书加密为例)
- 通过KMS控制台或者调用CreateKey接口,创建一个用户主密钥(CMK)。
- 调用KMS服务的Encrypt接口,将明文证书加密为密文证书。
- 将密文证书部署在服务器上。
- 当服务器启动需要使用证书时,调用KMS服务的Decrypt接口将密文证书解密为明文证书。
相关API
您可以调用以下KMS API,轻松完成对数据的加密或解密操作。
API名称 | 说明 |
---|---|
createKey | 创建用户主密钥(CMK)。 |
encrypt | 指定CMK,直接输入明文数据,由KMS在线加密数据。 |
decrypt | 解密由encrypt接口加密的数据,不需要指定CMK即可完成在线解密。 |
操作步骤
- 通过密钥管理服务控制台创建用户主密钥CMK。
- 通过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的主版本。 |
- 将加密后的数据存储。
根据业务的应用场景,将密文进行存储。
- 通过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编码的后的值。 |