SAP Hana从用户

时间:2016-02-08 14:22:57

标签: hana

任何人都编写了一个存储过程,可以删除给定用户的所有已分配角色/权限?我喜欢这样做,而无需查找分配的每个角色或分配的权限。 类似于下面的声明,但没有逐个列出每个角色和特权。无论分配了什么角色,都可以在一个语句中删除所有角色/特权。这是用于用户终止过程。

CALL REVOKE_ACTIVATED_ROLE(' RoleName','用户名');

2 个答案:

答案 0 :(得分:1)

如果您真的想要这个程序,我会使用这个程序并且它可以正常工作。

它从用户中删除所有授予的角色。如果你知道自己在做什么,就跑吧。

create procedure myCleanupUser(in i_user varchar(20)) as
begin
    declare cursor Roles for
        SELECT ROLE_NAME FROM "PUBLIC"."EFFECTIVE_ROLES" 
        where USER_NAME=i_user AND GRANTEE_TYPE='USER' AND ROLE_NAME <> 'PUBLIC';

    for role as Roles do
        call REVOKE_ACTIVATED_ROLE(role.ROLE_NAME,i_user);
    end for;
end;

答案 1 :(得分:0)

没有这样的标准功能,我建议非常小心自动撤销权限。如果用户自己授予了使用ADMIN OPTION或GRANT OPTION授予其他用户的权限,并且这些权限被撤销,则会导致对这些授予的权限进行递归撤销。

简而言之:这可能会变得令人讨厌。

对于用户终止,从安全角度来看,禁用登录就足够了。

除此之外,它非常直接查询系统视图GRANTED_ROLES和GRANTED_PRIVILEGES来生成REVOKE语句。