使用KMS用户主密钥在线加解密数据

2025-01-07 07:21:14

KMS提供针对敏感信息的加密能力,适用于保护小型敏感数据(小于6KB),如口令、身份信息、证书、后台配置文件等。

通过密钥管理服务KMS的在线加密API,使用用户主密钥(CMK)直接加密敏感数据信息,而非直接将明文存储,确保敏感数据安全。

场景示意图

操作流程(以证书加密为例)

1. 通过KMS控制台或者调用CreateKey接口,创建一个用户主密钥(CMK);

2. 调用KMS服务的Encrypt接口,将明文证书加密为密文证书;

3. 将密文证书部署在服务器上;

4. 当服务器启动需要使用证书时,调用KMS服务的Decrypt接口将密文证书解密为明文证书。

操作步骤

1. 通过密钥管理服务控制台创建用户主密钥CMK;

2. 通过在线加密接口,对敏感数据进行加密;

请求参数

参数

是否必填

参数位置

参数类型

说明

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. 通过解密接口,对密文数据进行解密。

请求参数

参数

是否必填

参数位置

参数类型

说明

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编码的后的值。

 


FfCAprxsTTnt