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