密态运维及脱敏

在数据加密状态下,非授权DBA仅可见数据密文、无法进行涉及数据内容的运维操作,全密态数据库支持密态运维,允许DBA在获得用户授权后(BCL授权)可以正常运维,支持数据脱敏,确保DBA在提供密态运维的同时,仍然无法获取用户明文数据。

场景介绍

假设您误删了数据库中的个人数据,提交工单由运维人员(DBA)通过数据追踪,恢复误删的数据。为了验证数据正确恢复,DBA一般通过抽样查看的方式,判断数据是否正常。但由于数据被加密,无法确认恢复的数据是否与原数据一致。

  • 未授权时,DBA尝试解密密文数据失败,提示无权限。

  • 签发BCL解密和脱敏授权,DBA可以看到脱敏后的明文结果。脱敏后数据仍然能够用于验证数据正确性与否,同时不泄露个人敏感信息。

密态运维及脱敏流程示例

本文以个密态运维个人隐私保护中的保险公司投保人员信息表(person)为例,请先参见个人隐私保护完成相关配置。

  1. 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
  2. 数据部门授权DBA脱敏后查看权限。

    # 编辑BCL内容,将目标dek的授权范围(包括groupid)更新到BCL中
    # 签发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)
  3. DBA运维结束后,数据部门可以及时撤销授权。

    # 编辑BCL内容,更新需要撤销的BCL信息
    # 签发BCL
    ./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