如何为对Amazon Redshift的原始SQL访问实施行级安全性(RLS)?

时间:2019-05-13 06:03:55

标签: sql amazon-redshift row-level-security

过去,我已经使用安全策略和谓词功能在Oracle和SQL Server数据库中实现了行级安全性。

现在,我的组织正在迁移到Amazon Redshift作为数据仓库,以寻求有关在Redshift中实现RLS以便用户进行原始sql访问的方法的输入。

示例: 表A包含许多区域的数据。 表中的“ REGION”列包含该行所对应的区域。 在user_setup表中,每个用户都有该用户应访问的区域列表。

表A:

帐户ID余额区域

1100 AUS

2120 IND

3 50欧元

表user_setup:

用户区域

Usr1 AUS

Usr2 AUS

2欧元

预期结果: 如果Usr1执行,请从A选择*; 输出应为:

帐户ID余额区域

1100 AUS

如果Usr2执行,请从A中选择*; 输出应为:

帐户ID余额区域

1100 AUS

3 50欧元

如果Usr3执行,请从A中选择*; 输出应为: 没有返回行。

1 个答案:

答案 0 :(得分:2)

我想一年后您找到了解决方案,但以防万一...

在AWS Redshift中实现基于行的安全性(或基于行的访问控制)并不是一件容易的事,但是可以通过以下方式实现:

  1. 添加具有所需权限映射的表。
  2. 添加一个视图,用于根据该表以及您要限制其权限的表过滤CURRENT_USER。
  3. 在授予对创建的视图的访问权限的同时,撤消对表本身的访问权限。

您可以在我写的Redshift security guide中找到概念证明。