使用加密技术动态屏蔽数据
本教程介绍如何在Netezza Performance Server中使用加密配置和使用动态数据屏蔽。
动态数据屏蔽可防止非特权用户未经授权访问字段或表列等数据库对象中的敏感数据。 屏蔽规则只应用于查询结果,数据库中的数据不受影响,因此其他需要访问这些数据的应用程序也可以使用。
关于本任务
本教程使用了以下示例模式:

customer_name
和 "customer_address
是需要屏蔽和加密的敏感列。 在所有可以访问这些表的用户(即拥有 "SELECT
权限的用户)中,只有拥有 "ACCOUNTS
角色的用户才可以查看这两列敏感数据。 对于其他用户,这些值通过加密被屏蔽。
标准的方法是限制对底层表的访问,并在表上分层显示视图,视图会根据用户的角色改变值。 要做到这一点,首先要重命名底层表,然后使用表的原名创建一个视图,该视图会根据有访问权限的角色为敏感列预测加密值。
程序
结果
alice
需要一份按州代码分列的 "order_amount
总数报告:select
sum(order_amount) as total,
customer_state
from customers inner join orders using (customer_id)
group by customer_state;
总计 | 客户状态 |
10750.01 | NY |
2000.00 | TX |
99.99 | XX |
Alice 可以访问 CUSTOMERS(屏蔽视图)。 customer_id
列未加密,用于连接 ORDERS 表。 customer_state
列未加密,用于滚动(按州)。 但 "customer_name
和 "customer_address
是敏感的。 如果她选择查看,这些信息将被加密:
select * from customers order by customer_id;
客户编号 | 客户名称 | 客户地址 | 客户状态 | 客户邮编 |
10031 | &J.&#+RXV | /u/%9$,1WZJ\*?<1L3- | TX | 90210 |
21451 | INR0-F50_0 | 1U*"\(7H"V;3S%NH0]!= ['T | NY | 55555 |
43918 | I_*$)VM0X0 | 0U+;!="XWV;#T&^Y#F#=8[ | NY | 98765 |
60844 | M>6%(7Q0Y@ | -T+#!9$@9T+#T6L(5L0 | NY | 55554 |
80008 | H>F0*F]0Y@ | 1L>B4*7<#U:WN&Z,JISI7YS< | XX | 0 |
ACCOUNTS
角色权限,可以查看未加密的源数据:set role accounts;
select * from customers order by customer_id;
客户编号 | 客户名称 | 客户地址 | 客户状态 | 客户邮编 |
10031 | 马克-F | 234 主街 | TX | 90210 |
21451 | 克拉克 K | 1 Metropolis Ave. | NY | 55555 |
43918 | 布鲁斯-W | 1600 Gotham Lane | NY | 98765 |
60844 | Peter P | 500 Fifth Ave. | NY | 55554 |
80008 | 戴安娜-P | 特米斯奇拉岛 | XX | 0 |