使用 WZSSAD 來存取 z/OS 安全資源

「WLP z/OS® 系統安全存取網域 (WZSSAD)」是指授與 Liberty 伺服器的許可權。 當進行使用者的鑑別及授權時,這些許可權用來控制允許伺服器查詢的「系統授權機能 (SAF)」應用程式網域及資源設定檔。

比方說,如果您想要設定兩個 Liberty 伺服器實例,一個用於正式作業,一個用於測試,且您想要正式作業與測試的角色存取權有所不同,您可以設定兩個不同的「系統安全存取網域」。

Liberty 伺服器是非管理者或非特許使用者所能配置及執行的未獲授權的程式,因此,為了系統安全和完整性,防止使用者濫用這部伺服器來執行他們未明確獲得許可權的安全作業,至關重要。

註: 只有在伺服器使用已授權的 SAF 服務來進行鑑別和授權時,WZSSAD 才有效。 這表示 Angel Process 在執行中,且伺服器已取得使用 SAFCRED 授權服務常式的許可權。
WZSSAD 會保護三個 SAF 作業:
  • 鑑別使用者
  • 將 Java™ EE 角色授權給某個主體
  • 將 SAF 資源授權給某個主體
依預設,不會配置 WZSSAD,這表示伺服器沒有進行任何鑑別或授權的許可權。 比方說,Liberty 伺服器無法利用已授權的 SAF 服務來進行鑑別或授權,直到管理者授與執行部分或所有這些作業的許可權。

鑑別使用者

針對藉由定義一項在 APPL 類別中稱為 APPLID 的資源所配置的特定 SAF 網域,伺服器會向該網域鑑別使用者。 如果要鑑別使用者能否進入網域,使用者必須具備 APPL 類別中之 APPLID 資源的 READ 存取權。 此外,每當 APPL 類別在作用中時,未經鑑別的使用者 ID(依預設是 WSGUEST)對於 APPL 類別中的 APPLID 資源,也需要具備 READ 存取權。

伺服器所用的 APPLID 資源名稱由 <safCredentials> 配置元素中的 profilePrefix 屬性來指定。 如果您沒有指定這個元素,就會使用 BBGZDFLT 的預設 profilePrefix。

下列範例顯示如何在 server.xml 檔中配置 BBGZDFLT 的 profilePrefix
<safCredentials profilePrefix="BBGZDFLT"/>
下列範例顯示如何利用 RACF® 指令,將 APPLID 配置為 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)
此外,伺服器必須在 WZSSAD 內獲得在給定的 APPLID 網域中發出鑑別呼叫的許可權。 這可以防止未獲授權的使用者濫用伺服器所用已獲授權的 SAF 服務,藉此探索哪些 APPLID 可以鑑別、哪些無法鑑別的相關資訊。 如果要授與伺服器在特定 APPLID 網域中的鑑別許可權,Liberty 伺服器的已啟動作業 ID 必須獲得 SERVER 類別中之 BBG.SECPFX.<APPLID> 設定檔的 READ 存取權:
RDEFINE SERVER BBG.SECPFX.BBGZDFLT UACC(NONE)
PERMIT BBG.SECPFX.BBGZDFLT CLASS(SERVER) ACCESS(READ) ID(serverUserId)

將 Java EE 角色授權給某個主體

伺服器會檢查主體對於 EJBROLE 類別中所定義的 SAF 資源設定檔是否已獲授權,從而針對 Java EE 應用程式安全角色,對這個主體進行授權。 SAF 資源設定檔名稱是透過 SAF 角色對映器,而從應用程式角色名稱進行對映。 SAF 角色對映器會針對給定的應用程式角色名稱及應用程式資源名稱來產生 SAF 設定檔名稱。 依預設,它會利用 {profilePrefix}.{resource}.{role} 型樣來產生 SAF 設定檔名稱。 例如:
profilePrefix="BBGZDFLT"

Application resource name = "MYAPP"

Application role name = "ADMIN"

Mapped profile name = "BBGZDFLT.MYAPP.ADMIN"

如需相關資訊,請參閱 Liberty:控制角色如何對映至 SAF 設定檔

WZSSAD 會限制伺服器可以針對 EJBROLE 類別中的哪些 SAF 設定檔來執行授權。 這可以防止未獲授權的使用者濫用伺服器所用已獲授權的 SAF 服務,藉此探索哪些 EJBROLE 設定檔可以進行授權,哪些無法進行授權的相關資訊。 伺服器必須獲得針對 EJBROLE 設定檔名稱之 HLQ 來執行授權檢查的許可權。 設定檔名稱的 HLQ 是設定檔名稱在第一個 '.'(不含 '.')之前的第一個區段。 例如:
EJBROLE profile name = "BBGZDFLT.ADMIN"
HLQ = "BBGZDFLT"
如果要授與伺服器針對設定檔 HLQ 來執行授權檢查的許可權,伺服器程序的相關使用者必須獲得 SERVER 類別中之 BBG.SECPFX.<HLQ> 設定檔的 READ 存取權。
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 類別中,使用者或應用程式對哪些資源設定檔已獲授權或未獲授權的相關資訊。

如果要授與伺服器針對非 EJBROLE SAF 類別來執行授權檢查的許可權,伺服器程序的關聯使用者必須獲得 SERVER 類別中之 BBG.SECCLASS.<SAF-CLASS> 設定檔的 READ 存取權。 比方說,如果要針對 FACILITY 類別中的設定檔來授權:
RDEFINE SERVER BBG.SECCLASS.FACILITY UACC(NONE)
PERMIT BBG.SECCLASS.FACILITY CLASS(SERVER) ACCESS(READ) ID(serverUserId)
註: 在非 EJBROLE 類別中,伺服器可以針對哪些資源設定檔來進行授權,沒有任何限制。 如果伺服器已獲得針對非 EJBROLE 類別來執行授權檢查的許可權,它就可以針對這個類別中的任何設定檔來進行授權。

指示主題類型的圖示 參照主題

檔名:rwlp_WZSSAD_zos.html