0

我需要在 Impala 中实现基于用户 ID 的行级安全性。我现在遵循的方法是我有一个用户到角色的映射,并使用它来形成一个主查询,如下所示:

create view dervied_view as 
select *, 1 as roleid from src_table where a = 1 and b = 2
union
select *, 2 as roleid from src_table where a = 1 and b = 3
...
...

然后,有另一个查询如下:

create view well_known_named_view as 
select * from derived_view where roleid in 
(select roleid from role_mapping table where userid = effective_user());

这样,每当用户登录时,他只需要查询众所周知的视图,而无需基于每个用户/角色创建视图。问题是这个查询在 Hue 中超时(这是它最常使用的地方),并且至少需要 10 分钟才能在 shell 中执行一个基本查询。有没有更好的方法来完成这项工作?

4

0 回答 0