配置 z/OS Connect 的安全性

亦獲授權具備 zosConnectAccess 角色的已鑑別使用者可以存取 z/OS Connect 應用程式。您可以在服務定義層次配置群組授權。SAF 和 LDAP 群組類型支援群組授權。

關於這項作業

使用者必須經過鑑別,才能存取 z/OS Connect 應用程式。

z/OS Connect 需要的預設鑑別機制是 CLIENT_CERT。使用者必須獲授權具備 zosConnectAccess 角色,才能存取 z/OS Connect 應用程式。 HTTPS 是必要的傳輸機制。

您可以設定 requireSecure 和 requireAuth 屬性定義,將 z/OS Connect 配置成在沒有任何安全限制的情況下執行。 這些屬性是定義在 zosConnectManager 元素之下,適用於所有已配置的服務,或定義在 zosConnectService 元素之下,適用於特定服務。 如果這些屬性既定義在 zosConnectService 元素之下,又定義在廣域範圍的 zosConnectManager 元素之下,會使用 zosConnectService 下所定義的值。 請參閱 zosConnectManagerzosConnectService,以取得這些屬性的相關資訊。

為了提供更好的安全層次,z/OS Connect 可讓您根據群組授權(可透過 SAF 或 LDAP 來配置),來限制存取權。基於此因,z/OS Connect 定義了三個授權層次:

  • 管理者 - 具備管理者權限的 IUser 有權查詢服務、對服務執行運行作業,以及呼叫它們。
  • 作業 - 具備作業權限的使用者能夠對服務執行停止、啟動等之類的作業,但是無權呼叫服務。
  • 呼叫 - 具備呼叫權限的使用者能夠呼叫服務,但不具備其他任何權限。

z/OS Connect 提供一個實作 com.ibm.wsspi.zos.connect.Interceptor() SPI 的授權攔截程式。這個攔截程式同時支援 SAF 和 LDAP。這個攔截程式在內部使用 getGroupsforUser() 安全 API,來判斷現行使用者所在的群組,然後將這些群組與服務定義或廣域定義中提供的群組相互比較。

當啟用 z/OS Connect 提供的授權攔截程式時,與使用者相關聯的 RACF 或 LDAP 群組名稱,也可以與先前在廣域或服務定義層次所提及的任何群組相關聯。在廣域層次,它們可以定義在 <zosConnectManager> 配置元素之下。 定義在這個層次的屬性包括:globalAdminGroup、globalOperationsGroup 和 globalInvokeGroup。如果有配置的話,則會將它們套用至所有配置的服務。如果希望更精細,也可以在服務層次將群組配置在 <zosConnectService> 配置元素之下。定義在該層次的屬性為:adminGroup、operationsGroup 和 invokeGroup。如果有指定這些值的話,則會置換廣域定義的值。

當在廣域層次定義授權攔截程式時,會針對所有服務執行一次授權檢查。當您對多項服務和服務探索,使用 /zosConnect/operations/getStatistics 要求時,只要存在下列條件,使用者會取得已向 z/OS Connect 登錄之所有服務的相關資訊:
  • 使用者通過授權檢查
  • 沒有其他條件阻止傳回服務資訊
如果授權攔截程式是放在服務層次的定義中,則只限位於該服務定義中的使用者,才能存取那些服務的資訊。

例如,在下列配置中,授權攔截程式定義在服務層次:

User "USR1" Groups: ADMINS1, ADMINS2

User "USR2" Groups: OPERATS1

User "USR3" Groups: ADMINS2, OPERATS1

z/OS Connect 配置:
<!-- z/OS Connect global configuration. It applies to all services. -->
<zosConnectManager globalAdminGroup="ADMINS1"  globalOperationsGroup="OPERATS1" globalInvokeGroup="INVOKES1"/>

<!-- Interceptor configuration -->
<zosConnectInterceptors id="interceptorList1"  interceptorRef="zosConnectAuthorizationInterceptor"/>
<authorizationInterceptor id="zosConnectAuthorizationInterceptor"/>

<!--Service 1-->
<zosConnectService serviceName="service1" serviceRef="service1Ref" adminGroup="ADMINS2" operationsGroup="OPERATS2"   interceptorsRef="interceptorList1" .../>

<!--Service 2-->
<zosConnectService serviceName="service2" serviceRef="service2Ref" operationsGroup="OPERATS2"   interceptorsRef="interceptorList1" .../>

<!--Service 3-->
<zosConnectService  serviceName="service3" serviceRef="service3Ref" adminGroup="ADMINS1" interceptorsRef="interceptorList1" .../>
表 1. . 使用者資料存取權
  service1 service2 service3
USR1 X X X
USR2 -- -- X
USR3 X -- X

程序

  1. 設定使用者鑑別,以存取 z/OS Connect 應用程式。 如果要設定用戶端憑證鑑別,請參閱有關配置 Web 應用程式和伺服器,以進行用戶端憑證鑑別的說明文件。如果要透過登錄來設定鑑別,請參閱有關鑑別 Liberty 中之使用者的說明文件。

    範例 1:基本登錄配置,利用說明文件中所概述的步驟,來配置 Liberty 的基本使用者登錄。

    Server.xml:
    <featureManager>    
    	<feature>zosConnect-1.0</feature> 
    	<feature>ssl-1.0</feature>     
    	<feature>appSecurity-2.0</feature>
    </featureManager> 
    
    
    <!-- Define a keystore. --> 
    <keyStore id="defaultKeyStore" password="Liberty"/>
    
    
    <!-- Fail over to basic authenitcation -->
    <webAppSecurity allowFailOverToBasicAuth="true"/> 
    
    
    <!-- Basic registry definition -->
    <basicRegistry id="basic1" realm="zosConnect">    
    	<user name="Fred" password="fredpwd"/>
    </basicRegistry>

    範例 2:SAF 登錄配置,利用說明文件中所概述的步驟,在 z/OS 上啟動和配置 SAF 登錄。

    Server.xml:
    <featureManager> 
    	<feature>zosConnect-1.0</feature>  
    	<feature>ssl-1.0</feature>    
    	<feature>appSecurity-2.0</feature> 
    	<feature>zosSecurity-1.0</feature> 
    </featureManager>    
    
    <!-- Saf registry definition -->
    <safRegistry id="saf" realm="zosConnect"/>

    RACF 設定。如需詳細資料,請遵循有關「Liberty:使用 WZSSAD 來存取 z/OS 安全資源」的說明文件:

    # 根據稱為 BBGZDFLT 的預設安全字首,來定義 APPL 類別。
    RDEFINE APPL BBGZDFLT UACC(NONE)
    
    # 啟動 APPL 類別。
    SETROPTS CLASSACT(APPL)
    
    # 為了讓 FRED 接受伺服器的鑑別,將 APPL 類別中之 APPLID 的 READ 存取權指派給 FRED。
    PERMIT BBGZDFLT ID(FRED) ACCESS(READ) CLASS(APPL)
    
    # 未經鑑別的使用者 ID(亦即,預設的 WSGUEST)對於 APPL 類別中的 APPLID,需具備 READ 存取權
    PERMIT BBGZDFLT CLASS(APPL) ACCESS(READ) ID(unauthenticatedUserId)  
    
    # 授與伺服器許可權,以發出鑑別呼叫。
    RDEFINE SERVER BBG.SECPFX.BBGZDFLT UACC(NONE)
    PERMIT BBG.SECPFX.BBGZDFLT ID(serverId) ACCESS(READ) CLASS(SERVER)

    請注意,伺服器需要獲得許可權,才能使用 SAFCRED 授權服務常式。如需詳細資料,請參閱有關在 Liberty for z/OS 上啟用 z/OS 授權服務的說明文件。

  2. 將 zosConnectAccess 角色指派給使用者,以設定使用者授權,來存取 z/OS Connect 應用程式。 如果要這麼做,請參閱有關為 Liberty 上的應用程式配置授權的說明文件。
    在範例 1 的步驟 1 所概述的 server.xml 檔配置中,新增下列:
    <authorization-roles id="zos.connect.access.roles"> 
    	<security-role name="zosConnectAccess">           
    		<user name="Fred"/>  
    	</security-role>  
    </authorization-roles>

    範例 2:使用 SAF/RACF 的授權配置:

    1. 在範例 2 的步驟 1 所概述的配置中,新增下列:
      <safAuthorization id="saf2" />
    2. RACF 設定。將 zosConnectAccess 角色指派給 FRED 的指令:
      RDEFINE EJBROLE BBGZDFLT.zos.connect.access.roles.zosConnectAccess 
      UACC(NONE)                                                       
      PERMIT BBGZDFLT.zos.connect.access.roles.zosConnectAccess 
      CLASS(EJBROLE) ID(FRED) ACCESS(READ)
  3. (選用)當使用 z/OS Connect 的授權攔截程式時,定義授權群組。
    範例 1:使用 SAF 時的「RACF 群組」定義:
    ADDGROUP OPERATS1 OMVS(GID(xxx)) OWNER(xxxx)
    
    # 將使用者 FRED 新增至 OPERATS1 群組之下
    ADDUSER FRED DFLTGRP(OPERATS1) OMVS(UID(xxx) HOME(/xxxx) PROGRAM(/bin/sh)) NAME('USER FRED') NOPASSWORD
    ALTUSER FRED PASSWORD(xxxxxxx) NOEXPIRED
    
    # 將使用者 Fred 連接至 OPERATS1 群組
    CONNECT FRED GROUP(OPERATS1)

    請注意,之後當定義授權群組以供 z/OS Connect 的授權攔截程式使用時,就可以使用 "OPERATS1" 群組。例如:<zosConnectManager globalOperationsGroup="OPERATS1"/><zosConnectService serviceRef="service1" operationsGroup="OPERATS1"/>


指示主題類型的圖示 作業主題

檔名:twlp_zconnect_security.html