0

我有一种情况,我需要创建一个视图,供最终用户使用,这些最终用户可能具有由 AD 组控制的 PII 和 NON-PII 权限许可。

假设我有 dim_customer,其中包含四列 ID、名称、DoB、国家。当 PII 用户运行时

Select ID, Name, DoB, Country FROM dim_customer

pii 用户应该得到

ID  NAME  DoB         Country
1   John  1999-10-10  US

如果非 PII 用户运行相同的查询,那么他们应该得到

ID  NAME     DoB         Country
1   PII DATA PII DATA    US

所以基本上使用相同的视图对象,但数据是根据 pii 间隙显示的。

  1. 我不想用 pii 和非 pii 后缀创建两个视图。
  2. 我尝试了列级权限,但这意味着当最终用户尝试上述查询时,他们会收到错误“对名称和 DoB 列没有选择权限”
  3. 我尝试过数据屏蔽,但显示“XXXX”,我更喜欢“PII 数据”。

我正在寻找一个查询成功运行并显示结果如上的解决方案。

这在 SQL Server 中可行吗?

提前致谢

4

1 回答 1

0

创建两个角色,一个允许 PII 数据,一个不允许。将每个用户置于一个角色或另一个角色中。不如写下你的看法

Select 
    ID, 
    Name, 
    CASE 
       WHEN IS_ROLEMEMBER ('pii_role') = 1 THEN DoB
       ELSE 'PII Data' 
    END as DoB, 
    Country 
FROM dim_customer
于 2020-06-15T20:37:03.157 回答