如何撤销用户的所有权限和角色?

问题描述 投票:0回答:2

有人编写过一个存储过程,可以删除给定用户的所有分配的角色/权限吗?我喜欢在不查找分配的每个角色或分配的特权的情况下执行此操作。 类似于下面的语句,但没有一一列出每个角色和权限。无论分配什么角色,都可以在一条语句中删除所有角色/权限。这是用于用户终止过程。

CALL REVOKE_ACTIVATED_ROLE('角色名','用户名');

roles hana privileges sql-revoke database-roles
2个回答
2
投票

如果你真的想要这个程序,我正在使用这个,它很有效。

它会删除用户所有授予的角色。如果您知道自己在做什么,请运行它。

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;

0
投票

没有这样的标准功能可用,我建议在自动撤销权限时“非常”小心。如果用户自己将通过 ADMIN OPTION 或 GRANT OPTION 授予的权限授予其他用户,并且这些权限被撤销,这会导致递归撤销那些授予的权限。 简而言之:这可能会变得令人讨厌。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.