在数据加密状态下,非授权运维人员(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
文档内容是否对您有帮助?