天天看點

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

本節書摘來自華章出版社《sap hana平台應用開發》一書中的第2章,第2.4節使用者、角色和授權管理,作者劉剛,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

2.4 使用者、角色和授權管理

在2.2.節及之前的一些操作示範中,使用的都是system這個sap hana預設的系統管理者賬戶。通常,system使用者隻在做系統管理時使用,日常的應用層面的資料庫技術支援還是建議使用單獨的新使用者來執行。在sap hana系統中,通常有以下5類使用者:

系統使用者:對整個hana系統進行系統級别的配置和管理的使用者。例如,system使用者就是其中之一。資料複制和備份恢複也建議建立單獨的使用者。

開發和應用支援使用者:在hana中建立資料庫表,加載資料,建立資訊模型、存儲過程、xs應用程式,對開發的内容進行打包、導入/導出。應用支援使用者通常是在系統上線運作之後被建立的,其被賦予一定預定義的角色,或者直接使用提供的預設角色和權限。

應用使用者:在新開發的xs應用使用者層面建立出來的hana使用者。其通常被賦予一些基本的應用角色,但不會賦予某個schema操作角色,而且這些角色也不會使用sap hana工作台來登入系統。

監控使用者:對hana系統進行審計、日志和安全監控的使用者,該使用者對系統各項名額進行監控。

技術和通信使用者:這類使用者主要是供背景自動登入後運作使用,或者供其他外部系統通路sap hana時使用。例如,hana系統中的_sys、_sys_repo和_sys_afl等使用者,這些是用于實作系統内部通信和系統管理功能而設定的。

2.4.1 使用者管理

除了前面介紹的system使用者之外,hana系統中還有很多預設的系統使用者,這些系統使用者在sap hana系統安裝完成以後就存在,如表2-4所示。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

使用system賬戶登入sap hana系統之後,這個使用者有權限去建立新的使用者,如圖2-24所示。

首先,展開security檔案夾,然後在user檔案夾上右擊,在彈出的快捷菜單中選擇“new user”指令,就可以新建立一個新使用者。

同樣的道理,可以標明已有使用者,選擇“delete”指令即可删除該使用者;選擇“open”指令,可以編輯該使用者的一些資訊(如修改密碼、修改權限、激活/不激活使用者等操作)。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

圖2-25所示為建立新使用者的界面,在這個界面上使用者可以為新使用者設定使用者名、密碼、所采用的登入方式,以及所擁有的權限和角色等屬性。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

在建立新使用者時,可以直接為這個使用者賦予各種權限對象,也可以建立一個對應的新角色,将權限對象賦予該角色,然後将該角色加入使用者所擁有的角色中。此時使用者、角色和權限對象的關系如圖2-26所示。

在新建立一個使用者之後,如何用新使用者登入到sap hana系統呢?

打開sap hana工作台,然後在已有的sap hana系統上右擊,在彈出的快捷菜單中選擇“add additional user...”指令,如圖2-27所示(如果是第一次使用sap hana工作台,請參考2.2.2節)。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

接着,在彈出來的對話框中,選擇“authentication by database user”單選按鈕,然後輸入新建立的使用者名和密碼,單擊“finish”按鈕完成該過程,如圖2-28所示。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

如圖2-29所示,sap hana工作台會将剛才建立的sap hana系統連接配接并添加到使用者導航區,并且在sap hana系統旁邊顯示登入的使用者名。

同一個系統有兩個登入使用者,若使用者對tr3(hana_tpch)連接配接下的任何對象進行操作,則表示使用者目前是以“hana_tpch”使用者在進行操作。

在圖2-29所示界面中,展開hana_tpch使用者連接配接的sap hana系統的catalog檔案夾,除了發現該使用者自己擁有的hana_tpch這個schema對象之外,還能看見demo這個schema對象(sys、_sys_bi、_sys_bic等系統對象對所有使用者都可見),其他的schema對象均看不見,這其實和授權相關,接下來的章節将介紹和權限相關的内容。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

2.4.2 角色管理

角色管理,其實就是直接對運作期的角色進行建立、修改、删除等操作。在圖2-30所示菜單中,建立角色和建立使用者非常類似,在role檔案夾上右擊,在彈出的快捷菜單中選擇“new role”指令,就可以打開建立角色(role)向導界面。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

hana角色到底包含着什麼東西呢?

其實角色就是一組進行系統操作(例如,是否能夠進行備份、恢複、重新開機等操作)和在系統中對對象進行通路控制(是否能讀、寫、删除那些資料庫表中的資料)的權限集合。通路權限可以互相組合,進而形成不同的角色,不同的角色代表不同的職能,每個職能都用于完成一組相關的系統操作。

在圖2-31所示界面中,可以看到系統有很多不同名稱的角色,有的角色是系統自帶的(例如,content_admin、modeling、public),使用者也可以根據業務需要建立新的角色。

這裡用modeling這個系統自帶的角色舉例說明。在圖2-32所示界面中,在角色清單中輕按兩下modeling這個角色,在右邊的hana工作台中會顯示出該角色的詳細資訊。可以看到每個角色都由7個頁籤組成。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

接下來,就對7個頁籤中的内容進行簡要介紹。granted roles(包含的角色)

如果目前角色的granted roles頁籤中包含了一些其他的角色,則表示目前這個角色将自動從這些角色中繼承其所有的權限。

舉例來說:現在新建立的一個角色名為hana_test,并且在其granted role中添加了content_admin這個系統自帶的角色,這意味着hana_test角色擁有了content_admin所擁有的全部權限。

part of roles(被其他角色繼承)

這部分資訊是無法修改的,隻顯示目前這個角色是否被其他角色繼承了。如果删除目前這個角色,那麼引用目前這個角色的其他角色也将失去從目前角色繼承的所有權限。

舉例來說:在顯示content_admin角色的資訊時,切換到part of roles頁籤中,将顯示hana_test角色的名稱,因為hana_test角色中繼承conent_admin角色,以及其他的一些權限。

system privileges(系統權限)

系統權限是sap hana系統預設自帶的權限對象。為了簡化使用者對于權限的配置設定操作,sap hana根據不同的系統操作預設定義了一些系統權限對象,在使用時隻需要從清單中選擇好,然後加入目前角色就可以了。預設提供的系統權限對象如圖2-33所示。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

為了讓讀者對系統權限有一個較為清楚的認識,表2-5中列出了一些常用的系統權限所使用的場景和具體功能。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理
《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

object privileges(對象權限)

這裡所說的對象全都是sql object(sql對象),這些sql對象包括schema、資料庫表、視圖、模型視圖、存儲過程、sequence等。

所謂對象權限,指的是擁有對這些對象進行操作的權限(每一種權限都代表一種具體的操作),并且不同的sql對象上所能執行的操作是不相同的。

舉例來說,對于demo這個schema類型的sql對象,使用者可以授予的權限有create any、alter、drop、execute、select、insert、update、delete、trigger、debug、index、reference等,如圖2-34所示。

但是,如果使用者選中reorganize_shared_memory存儲過程,則會發現該sql對象隻有4個可授權的操作,即alter、drop、execute、debug。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

如何添加sql對象的操作權限呢?

單擊按鈕,然後輸入關鍵字或者模糊查詢,進行查找,找到所要的對象之後,将其選中并添加到sql object清單中,然後單擊這個sql對象,在右邊的權限面闆中就可以進行設定對該對象的哪些權限進行授權。analytic privileges(分析權限)

首先,這裡的分析權限指的是基于sap hana中的視圖(屬性視圖、分析視圖、計算視圖)建立的分析權限對象。在這些分析權限對象中,使用者可以設定對某個視圖的通路限制條件。

在定義一個角色時,将某個分析權限加進來,即表示該角色需要執行所有該分析權限中所設定的通路限制條件等。

package privileges(開發包權限)

顧名思義,開發包權限就是對某個開發包(package)的通路權限,這些通路權限包含對開發包資源的浏覽、編輯修改、重新激活、引用等。切換到“package privileges”頁籤,可以看到圖2-35所示的界面。

在“package name”清單中單擊“”按鈕,可以将需要通路的開發包添加到該清單中,然後單擊這個開發包,在右側權限面闆中就會出現對該開發包進行授權的操作界面。

一旦完成授權操作,這些授權的操作對該開發包下的子開發包同樣生效(開發包下面可以有若幹層級的子開發包,并且可以設定多個層級)。表2-6對開發包上可以進行授權的操作進行了簡要的說明。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理
《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

application privileges(應用權限)

這裡的應用指的是基于sap hana開發的原生應用程式(即xs應用,第5章會詳細介紹)。在xs應用被激活時,會在系統中建立一些應用權限對象,在這些應用權限對象中有對xs應用進行通路的權限設定,如圖2-36所示。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

在圖2-36所示代碼中,xs應用程式中定義了兩個權限對象,即basic和admin。在xs應用被激活後,系統中就會自動生成兩個應用權限。

在xs應用中可以使用應用權限來控制使用者對xs應用的通路,如果某個使用者需要通路這個xs應用,那麼就需要将這個應用權限對象賦予這個使用者,或者直接按照使用者分類建立不同的角色,在角色中把應用權限放進來,然後再将角色賦予使用者。這樣,該使用者就可以通路這個xs應用了。

2.4.3 關于授權

接着2.4.1節的例子,在使用hana_tpch使用者連接配接sap hana系統之後,在這個使用者的schema清單中還能看到demo這個schema對象,這是因為hana_tpch使用者擁有對demo對象的操作權限。打開hana_tpch使用者的資訊,如圖2-37所示。

切換到“objective privileges”頁籤,在sql object清單中能看到該使用者擁有對demo對象進行select操作的權限。同樣,切換到其他權限頁籤,可以添加不同的權限對象,然後進行一一授權。通過圖2-38所示的說明,可以大緻了解sap hana是如何進行使用者通路授權的。

《SAP HANA平台應用開發》—第2章2.4節使用者、角色和授權管理

除此之外,使用者也可以使用sql 指令行的方式來進行授權。使用sql指令行進行授權管理的相關文法如下。

文法:

alter user <需要修改權限的使用者名> <修改選項>

例子:

alter user hana_tpch password sap12345

grant <系統權限> to <使用者名or角色名>

grant backup admin to hana_tpch

grant on schema to <使用者名or角色名>

grant trigger delete drop select on schema demo to hana_tpch

grant <對象權限> on <對象名稱> to <使用者名or角色名>

grant all privileges on demo.table_1 to hana_tpch

grant to <使用者名or角色名>

下面介紹一個用sql指令對使用者通路控制進行授權的例子。建立一個使用者,名為tester,然後修改其預設密碼為sap12345。接着建立一個新角色,将demo這個schema對象的select權限賦予該角色,并且将demo中的資料庫表sales的insert、update、select等權限也賦予該角色,最後将這個角色賦予使用者tester。

**提示資訊:

上面的sql示例代碼及文法隻是權限通路控制中經常使用的一部分内容,更多關于通路權限相關的sql指令請參考:sap hana sql reference文檔→sql statement章節→access control statement。

因為在sap hana工作台中,使用者要通過向導操作來管理所有的授權操作,隻需要掌握如何賦予權限,以及該權限的意義即可,并不需要使用者掌握所有使用sql來進行授權管理的指令文法。**