云数据库 GAUSSDB-CREATE CLIENT MASTER KEY:示例(在使用JDBC连接数据库服务器的场景下)

时间:2023-11-15 14:50:39

示例(在使用JDBC连接数据库服务器的场景下)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* 
 * (1) 登录华为云官网(https://www.huaweicloud.com),进入“控制台”-“服务列表”-“数据加密服务 DEW”- “密钥管理”页面,创建一个密钥。
 *     该服务即由华为云提供的密钥管理服务——KMS。当然,你还可通过编程接口进行密钥管理,详情请参考华为云公开文档 :
 *    (https://support.huaweicloud.com/dew_faq/dew_01_0053.html)
 */

/* 
 *(2)与数据库服务器建立连接并执行本语法,在url中需开启全密态数据库的开关:enable_ce=1
 *      说明:本部分代码作为示例代码,仅考虑通过最少代码实现最基本的功能
 */
import java.sql.*;

public class CrtCmkTest {
    public static void main(String[] args) {
        String driver = "org.postgresql.Driver";
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }

        /* 用于与数据库服务器建立连接的信息 */
        String dbUrl = "jdbc:postgresql://localhost:19900/postgres?enable_ce=1";
        String dbUser = "alice";
        String dbPassword = "********";

       /* 
        * 用于访问华为云KMS的身份认证信息与KMS项目信息
        * 说明:本部分所有参数,均可在华为云官网“控制台”-“我的凭证”页面找到
        */
        String iamUser = "alice_for_kms";
        String iamPassword = "********";
        String kmsDomain = "hw00000000";
        String kmsProjectName = "cn-east-3";
        String kmsProjectId = "00000000000000000000000000000000";

        /* 用于创建CMK密钥对象的SQL语句 */
        String sql = "CREATE CLIENT MASTER KEY alice_cmk WITH ( " + 
         "KEY_STORE = huawei_kms, KEY_PATH = \"00000000-0000-0000-0000-000000000000\" , ALGORITHM = AES_256);";

        try {
            Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
            conn.setClientInfo("iamUser", iamUser);
            conn.setClientInfo("iamPassword", iamPassword);
            conn.setClientInfo("kmsDomain", kmsDomain);
            conn.setClientInfo("kmsProjectName", kmsProjectName);
            conn.setClientInfo("kmsProjectId", kmsProjectId );
            Statement stmt = conn.createStatement();
            System.out.println("results: " + stmt.executeUpdate(sql));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb_v5r2c10_0497.html