配置 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 定义了三个级别的权限:

  • 管理员 - 具有管理员权限的用户有权查询服务、对服务执行操作任务以及调用服务。
  • 操作 - 具有操作权限的用户能够对服务执行诸如停止和启动等任务,但是它们没有权限调用服务。
  • 调用 - 具有调用权限的用户能够调用服务,但是没有其他权限。

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:使用有关在 z/OS 上激活和配置 SAF 注册表的文档中概述的步骤的 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 安全性资源:

    # Define the APPL class based on the default security prefix called BBGZDFLT.
    RDEFINE APPL BBGZDFLT UACC(NONE)
    
    # Activate the APPL class. 
    SETROPTS CLASSACT(APPL)
    
    # For FRED to be authenticated by the server, assign FRED READ access to the APPLID in the APPL class.                                       
    PERMIT BBGZDFLT ID(FRED) ACCESS(READ) CLASS(APPL)
    
    # The unauthenticated user ID (i.e. WSGUEST by default) requires READ access to the APPLID in the APPL class
    PERMIT BBGZDFLT CLASS(APPL) ACCESS(READ) ID(unauthenticatedUserId)  
    
    # Grant the server permission to make authentication calls.
    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 上的应用程序配置权限的文档。
    将以下内容添加到 sample1 的步骤 1 中概述的 server.xml 文件配置:
    <authorization-roles id="zos.connect.access.roles"> 
    	<security-role name="zosConnectAccess">           
    		<user name="Fred"/>  
    	</security-role>  
    </authorization-roles>

    Sample2:使用 SAF/RACF 的权限配置:

    1. 将以下内容添加到 sample2 的步骤 1 中概述的配置。
      <safAuthorization id="saf2" />
    2. RACF 设置。用于为 FRED 指定 zosConnectAccess 角色的命令:
      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)
    
    # Add user FRED under the OPERATS1 group
    ADDUSER FRED DFLTGRP(OPERATS1) OMVS(UID(xxx) HOME(/xxxx) PROGRAM(/bin/sh)) NAME('USER FRED') NOPASSWORD
    ALTUSER FRED PASSWORD(xxxxxxx) NOEXPIRED
    
    # Connect user Fred to the OPERATS1 group
    CONNECT FRED GROUP(OPERATS1)

    请注意,在定义 z/OS Connect 的权限拦截器要使用的权限组时,可以使用“OPERATS1”组。例如:<zosConnectManager globalOperationsGroup="OPERATS1"/><zosConnectService serviceRef="service1" operationsGroup="OPERATS1"/>


用于指示主题类型的图标 任务主题

文件名:twlp_zconnect_security.html