2016-02-08 27 views
0

任何人都已經編寫了一個存儲過程,可以從給定用戶移除所有指定的角色/特權?我喜歡這樣做,而不必查看分配的每個角色或分配的權限。 類似下面的聲明,但沒有列出每個角色和特權一個接一個。不管分配了哪個角色,都可以在一個語句中刪除所有角色/權限。這是用於用戶終止過程。SAP Hana撤消用戶的所有特權和角色

CALL REVOKE_ACTIVATED_ROLE('RoleName','username');

回答

0

有可沒有這樣的標準功能,我建議是非常小心與自動撤銷權限。如果用戶自己授予了使用ADMIN OPTION或GRANT OPTION授予其他用戶的權限並取消了這些權限,則會導致對這些授予權限的遞歸吊銷。

總之:這可能變得討厭。

對於用戶終止,從安全的角度來看,禁用登錄就足夠了。

除此之外,查詢系統視圖GRANTED_ROLES和GRANTED_PRIVILEGES以生成REVOKE語句非常簡單。

+0

>「如果用戶自己想當然地認爲他得到了與ADMIN > OPTION或GRANT OPTION向其他用戶和這些權限授予的權限得到 >撤銷,這導致那些遞歸撤銷授予 >特權「。 以上聲明不正確。如果用戶放棄權限,我不認爲存在遞歸吊銷。我可以刪除分配給授予Y權限的X用戶的所有角色給其他用戶,並且不會被吊銷。 我最初的問題是,當我終止時,我將作爲標準過程的一部分從給定用戶中刪除所有角色。我正在嘗試自動化進程相同的過程。 –

+0

上述聲明實際上是真實的,甚至記載:https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/fc91cb75191014ac15eb4d6f2d7dde/content.htm 這很容易嘗試了這一點太: 創建用戶密碼blabla; 創建用戶b密碼blabla; 創建用戶c密碼blabla; - >作爲用戶a: 創建角色rA; 創建列表atab(id int); 授權選擇atab到rA; 使用管理員選項將rA授予b; - >現在用戶b獲得角色rA。 作爲用戶b: 將rA授予c; - >現在用戶C得到這個角色的rA –

+0

- >檢查:從granted_roles 選擇受讓人其中ROLE_NAME = 'RA' GRANTEE 甲 乙 Ç - >現在撤消角色b R a和再次檢查: 從b撤銷rA; 從granted_roles中選擇受贈人,其中role_name ='RA'; GRANTEE A - >就是這樣。 –

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;