StarRocks列级脱敏工具

StarRocks MaskingPolicies

StarRocks支持通过动态数据访问控制机制实现敏感数据保护,其核心特点包括:

  1. 访问控制机制
  • 基于策略(Policy)的条件语句设置
  • 支持查询运行时动态数据转换
  • 实现列级数据屏蔽和行级数据过滤
  1. 数据处理方式
  • 保持原始数据不变(不修改表数据)
  • 不进行数据加密存储
  • 通过查询重写实现动态保护
  1. 实现原理
  • 查询时生成临时视图
  • 自动重写查询计划
  • 确保返回结果已应用数据屏蔽

这种机制在保证数据安全性的同时,为授权用户提供了灵活的数据访问能力。

背景

在上面内置的功能中,小工具直接支持轻量级简化加密操作。

metadb:
  host: 127.0.0.1
  port: 3306
  user: root
  password: xxx
  base: starrocks.starrocks_masking_information

log:
  path: '/chengken/log'

Options:

list

encrypt

用户加密

表名:default_catalog.demo.masking_policies_item
字段:item_nbr

实现基于用户svccntest1的动态列级数据脱敏策略,使其查询item表时item_nbr字段返回加密值,而其他用户则获取明文数据。

MaskingPolicies -s <app> -u svccntest1 -t default_catalog.demo.masking_policies_item -f item_nbr -m encrypt

当svccntest1用户访问时item_nbr列已经实现脱敏处理

而非加密用户来说,显示的依旧是明文

全局加密

表名:default_catalog.demo.masking_policies_item
字段:item_nbr

实现所有用户动态列级数据脱敏策略,使其查询item表时item_nbr字段返回加密值。

MaskingPolicies -s <app> -t default_catalog.demo.masking_policies_item -f item_nbr -m encrypt -g global

普通角色(脱敏)

管理员(脱敏)

decrypt

表名:default_catalog.demo.masking_policies_item
字段:item_nbr

在目前所有用户动态列级数据脱敏策略场景下,仅root管理员账号可访问明文数据,其他账号访问时仍返回脱敏数据

MaskingPolicies -s <app> -u root -t default_catalog.demo.masking_policies_item -f item_nbr -m decrypt

普通角色(所有脱敏)

管理员(明文)

list id

列出policy name对应的数据策略创建语句

@https://github.com/chengkenli/MaskingPolicies