Redshift 安全性

Redshift 入门

Jason Myers

Principal Engineer

Redshift 安全性

  • 列级访问控制
  • 基于策略的行级安全
  • 基于策略的数据遮蔽

Redshift 安全组合

Redshift 入门

列级权限

  • 完全隐藏某列
  • 可通过 SVV_COLUMN_PRIVILEGES 验证
SELECT *
  FROM SVV_COLUMN_PRIVILEGES
 WHERE relation_name = 'products';
relation_name | column_name  | privilege_type | identity_name | identity_type
==============|==============|================|===============|==============
products      | product_name | SELECT         | amelia        | user
products      | product_name | SELECT         | analytics     | role
Redshift 入门

行级安全

  • 预过滤数据的策略
CREATE RLS POLICY policy_books
WITH (category VARCHAR(255))
USING (category = 'Dark Academia');
SELECT product_line, category, product_name
FROM products;
product_line | category      | product_name
=============|===============|===================
Books        | Dark Academia | A Deadly Education
Redshift 入门

行级安全

  • 使用 SVV_RLS_POLICY 查看策略
SELECT polname AS policy_name, 
       polatts AS column_details,
       polqual AS condition
  FROM SVV_RLS_POLICY;
policy_name  | column_details                                 | condition
 ============|================================================|===========================
policy_books | [{"colname":"category","type":"VARCHAR(255)"}] | category = 'Dark Academia'
Redshift 入门

行级安全管理视图

  • 超级用户可用 SVV_RLS_APPLIED_POLICY 查看受影响的查询
SELECT username, 
       command, 
       relschema, 
       relname, 
       polname,
FROM SVV_RLS_APPLIED_POLICY;
username | command | relschema | relname  | polname  
=========|=========|===========|==========|=============
aashvi   |    s    | public    | products | policy_books 
Redshift 入门

动态遮蔽概览

  • 隐藏查询返回值的策略
  • 仅超级用户或被授权者可见
  • 用途
    • 国家身份证号(如社会保障号)
    • 信用卡
SELECT name, social_security_number
  FROM customers;
name     | social_security_number
======== | =======================
John Doe | XXX-XX-1234
Jane Doe | XXX-XX-5678
Redshift 入门

Vamos praticar!

Redshift 入门

Preparing Video For Download...