forked from huawei/openGauss-server
59 lines
2.7 KiB
SQL
59 lines
2.7 KiB
SQL
|
||
-------------------------------------------------------------------------------------------------------------------------
|
||
-- grop : security
|
||
-- module : client encrypt
|
||
--
|
||
-- function : test {sql:CREATE/INSERT/UPDATE/DELETE/SELECT TABLE}
|
||
-- CREATE TABLE $tbl ($col $dat_type ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = $cek, ENCRYPTION_TYPE = $enc_type));
|
||
--
|
||
-- dependency :
|
||
-- service : Huawei KMS (https://console.huaweicloud.com/dew/?region=cn-north-4#/kms/keyList/customKey)
|
||
-- cmk : CREATE CLIENT MASTER KEY $cmk WITH (KEY_STORE = huawei_kms, ...)
|
||
-- cek : CREATE COLUMN ENCRYPTION KEY $cek ...
|
||
-------------------------------------------------------------------------------------------------------------------------
|
||
|
||
-- prepare | succeed
|
||
CREATE CLIENT MASTER KEY cmk1 WITH (KEY_STORE = huawei_kms, KEY_PATH = "cec162c2-983d-4a66-8532-c67b915fb409" , ALGORITHM = AES_256);
|
||
CREATE CLIENT MASTER KEY cmk2 WITH (KEY_STORE = huawei_kms, KEY_PATH = "31938a5e-6460-49ce-a358-886f46c6f643" , ALGORITHM = AES_256);
|
||
CREATE COLUMN ENCRYPTION KEY cek1 WITH VALUES (CLIENT_MASTER_KEY = cmk1, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256);
|
||
CREATE COLUMN ENCRYPTION KEY cek2 WITH VALUES (CLIENT_MASTER_KEY = cmk2, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256);
|
||
CREATE COLUMN ENCRYPTION KEY cek3 WITH VALUES (CLIENT_MASTER_KEY = cmk2, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256);
|
||
|
||
-- create table | succeed
|
||
CREATE TABLE IF NOT EXISTS tbl1 (
|
||
col1 INT,
|
||
col2 INT ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = cek1, ENCRYPTION_TYPE = DETERMINISTIC),
|
||
col3 TEXT ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = cek2, ENCRYPTION_TYPE = DETERMINISTIC),
|
||
col4 VARCHAR(20) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = cek2, ENCRYPTION_TYPE = DETERMINISTIC));
|
||
|
||
-- insert | succeed
|
||
INSERT INTO tbl1 VALUES (1, 1, 'row1 col3', 'row1 col4');
|
||
INSERT INTO tbl1 VALUES (2, 11111, 'row2 col3', 'row2 col4');
|
||
INSERT INTO tbl1 VALUES (3, 11111111, 'row3 col3', 'row3 col4');
|
||
|
||
-- update | succeed
|
||
UPDATE tbl1 SET col2 = 22222 WHERE col1=1;
|
||
UPDATE tbl1 SET col3 = 'new row2 col3' WHERE col1=2;
|
||
UPDATE tbl1 SET col4 = 'new row3 col4' WHERE col1=3;
|
||
|
||
-- select | succeed
|
||
SELECT * FROM tbl1 ORDER BY col1;
|
||
SELECT * FROM tbl1 WHERE col2 = 1;
|
||
SELECT * FROM tbl1 WHERE col3 = 'new row2 col3';
|
||
SELECT * FROM tbl1 WHERE col4 = 'new row3 col4' AND col1 = 3;
|
||
SELECT * FROM tbl1 WHERE col3 = 'row1 col3' AND col4 = 'row1 col4';
|
||
|
||
-- delete | succeed
|
||
DELETE FROM tbl1 WHERE col2=22222;
|
||
DELETE FROM tbl1 WHERE col3='new row2 col3';
|
||
DELETE FROM tbl1 WHERE col4='row3 col4';
|
||
|
||
-- clear | succeed
|
||
SELECT * FROM tbl1;
|
||
DROP TABLE tbl1;
|
||
DROP CLIENT MASTER KEY cmk1 CASCADE;
|
||
DROP CLIENT MASTER KEY cmk2 CASCADE;
|
||
SELECT * FROM gs_column_keys;
|
||
SELECT * FROM gs_client_global_keys;
|
||
|