使用 WZSSAD 來存取 z/OS 安全資源
「WLP z/OS® 系統安全存取網域 (WZSSAD)」是指授與 Liberty 伺服器的許可權。 當進行使用者的鑑別及授權時,這些許可權用來控制允許伺服器查詢的「系統授權機能 (SAF)」應用程式網域及資源設定檔。
比方說,如果您想要設定兩個 Liberty 伺服器實例,一個用於正式作業,一個用於測試,且您想要正式作業與測試的角色存取權有所不同,您可以設定兩個不同的「系統安全存取網域」。
Liberty 伺服器是非管理者或非特許使用者所能配置及執行的未獲授權的程式,因此,為了系統安全和完整性,防止使用者濫用這部伺服器來執行他們未明確獲得許可權的安全作業,至關重要。
- 鑑別使用者
- 將 Java™ EE 角色授權給某個主體
- 將 SAF 資源授權給某個主體
鑑別使用者
針對藉由定義一項在 APPL 類別中稱為 APPLID 的資源所配置的特定 SAF 網域,伺服器會向該網域鑑別使用者。 如果要鑑別使用者能否進入網域,使用者必須具備 APPL 類別中之 APPLID 資源的 READ 存取權。 此外,每當 APPL 類別在作用中時,未經鑑別的使用者 ID(依預設是 WSGUEST)對於 APPL 類別中的 APPLID 資源,也需要具備 READ 存取權。
伺服器所用的 APPLID 資源名稱由 <safCredentials> 配置元素中的 profilePrefix 屬性來指定。 如果您沒有指定這個元素,就會使用 BBGZDFLT 的預設 profilePrefix。
<safCredentials profilePrefix="BBGZDFLT"/>
// Define the BBGZDFLT APPLID to RACF.
RDEFINE APPL BBGZDFLT UACC(NONE)
// Activate the APPL class.
//If not active, the domain is not restricted, which means anyone can authenticate to it.
SETROPTS CLASSACT(APPL)
//All users to be authenticated by the server must have READ access to the APPLID in the APPL class:
PERMIT BBGZDFLT CLASS(APPL) ACCESS(READ) ID(UserID)
//The unauthenticated user ID requires READ access to the APPLID in the APPL class:
PERMIT BBGZDFLT CLASS(APPL) ACCESS(READ) ID(WSGUEST)
RDEFINE SERVER BBG.SECPFX.BBGZDFLT UACC(NONE)
PERMIT BBG.SECPFX.BBGZDFLT CLASS(SERVER) ACCESS(READ) ID(serverUserId)
將 Java EE 角色授權給某個主體
profilePrefix="BBGZDFLT"
Application resource name = "MYAPP"
Application role name = "ADMIN"
Mapped profile name = "BBGZDFLT.MYAPP.ADMIN"
如需相關資訊,請參閱 Liberty:控制角色如何對映至 SAF 設定檔
EJBROLE profile name = "BBGZDFLT.ADMIN"
HLQ = "BBGZDFLT"
RDEFINE SERVER BBG.SECPFX.BBGZDFLT UACC(NONE)
PERMIT BBG.SECPFX.BBGZDFLT CLASS(SERVER) ACCESS(READ) ID(serverUserId)
在這個範例中,由於 SAF 角色對映器將對映的設定檔之 HLQ 設為 profilePrefix,APPLID 鑑別許可權及 EJBROLE 設定檔授權許可權會由相同的設定檔 BBG.SECPFX.BBGZDFLT 來控管。將 SAF 資源授權給某個主體
Java EE 應用程式可以針對 EJBROLE 以外的 SAF 類別來執行存取控制檢查。 WZSSAD 會限制伺服器可以針對 EJBROLE 以外的哪些 SAF 類別來進行授權。 這可以防止未獲授權的使用者或應用程式濫用伺服器所用已獲授權的 SAF 服務,藉此探索在非 EJBROLE SAF 類別中,使用者或應用程式對哪些資源設定檔已獲授權或未獲授權的相關資訊。
RDEFINE SERVER BBG.SECCLASS.FACILITY UACC(NONE)
PERMIT BBG.SECCLASS.FACILITY CLASS(SERVER) ACCESS(READ) ID(serverUserId)