在資料加密狀態下,非授權營運人員(DBA)只能看到資料密文,無法進行資料內容的營運操作。全密態資料庫支援密態營運,DBA在獲得使用者BCL授權後可以正常營運,並支援資料脫敏,確保DBA無法擷取使用者明文資料。
情境介紹
假設您誤刪了資料庫中的個人資料,提交工單由DBA通過資料追蹤恢複。DBA通常通過抽樣查看,驗證資料是否正確恢複。但由於資料被加密,無法確認恢複的資料是否與原資料一致。
未授權時,DBA嘗試解密密文資料失敗,提示無許可權。
簽發BCL解密和脫敏授權,DBA可以看到脫敏後的明文結果。脫敏後資料可用於驗證資料正確性,同時保護個人敏感資訊。
前提條件
本文以投保人員資訊表(person)為例,請先參見個人隱私保護完成相關配置。
密態營運及脫敏流程樣本
DBA未得到授權,無法查看資料內容,隱私資料得到保護。
如下命令需使用
ins_data
帳號執行。SELECT encdb.decrypt(id) FROM person;
返回結果
WARNING: -- encdb -- -- Untrusted log -- 4 - src/core/untrusted/src/encdb_untrusted_enclave.cpp,256,encdb_ecall: Select BCL (subject_mekid: 178079820457738240, issuer_mekid: 178079820457738240) from table fail - returned 0xfa030000 ERROR: encdb_ext_enc_text_decrypt: enc_text decrypt errno:fa030000
資料部門授權DBA脫敏後查看的許可權。
編輯BCL內容,將目標DEK的授權範圍(包括groupid)更新到BCL中。
./setGroupIdBCL.sh -d <groupid>
擷取groupid方法:
SELECT encdb_get_cc_entry_by_name(encdb.keyname_generate('<user_name>', '<database_name>', '<schema_name>', '<table_name>', '<column_name>'));
簽發BCL。
./genEncdbSQLCommand.sh -r BCL_ISSUE --subject_sign --spriv sample/usr_pri_data.pem --spuk sample/usr_puk_data.pem --ipuk sample/usr_puk_data.pem --bcl sample/bcl_data_for_dba_select.txt -c ${cipher_suite} ./genEncdbSQLCommand.sh -r BCL_ISSUE --issuer_sign --ipriv sample/usr_pri_data.pem --spuk sample/usr_puk_data.pem --ipuk sample/usr_puk_data.pem --bcl sample/bcl_data_for_dba_select.txt -c ${cipher_suite}
DBA可以查看脫敏資料並進行營運。
SELECT encdb.decrypt(id) FROM person; decrypt -------------------- 11122*********9999 11122*********8888 (2 rows)
DBA營運結束後,資料部門可以及時撤銷授權。
# 撤銷授權 ./genEncdbSQLCommand.sh -r BCL_REVOKE --puk sample/usr_puk_data.pem --pri sample/usr_pri_data.pem --brl sample/brl_data_for_dba_select.txt -c ${cipher_suite}
撤銷授權後,DBA執行營運SQL將被拒絕。
如下命令需使用
ins_data
帳號執行。SELECT encdb.decrypt(id) FROM person;
返回結果:
NOTICE: -- encdb -- -- Enclave log -- 4 - src/core/trusted/src/key_mgmt.cpp,576,encdb_trusted_import_bcl: BCL (aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa) was invalidated by BRL (1dec8190-3fd6-4de1-9ab7-7c1456933b28) NOTICE: -- encdb -- -- Enclave log -- 4 - src/core/trusted/src/key_mgmt.cpp,596,encdb_trusted_import_bcl: no BCL authorization WARNING: -- encdb -- -- Untrusted log -- 4 - src/core/untrusted/src/encdb_untrusted_enclave.cpp,250,encdb_ecall: Import BCL (subject_mekid: 178079820457738240, issuer_mekid: 178079820457738240) to enclave failed - returned 0xfa020000 ERROR: encdb_ext_enc_text_decrypt: enc_text decrypt errno:fa020000