配置 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 下定义的值。 有关这些属性的更多信息,请参阅 zosConnectManager 和 zosConnectService。
为了提供更高安全性,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。如果指定了这些值,那么它们将覆盖全局定义的值。
- 用户通过了授权检查
- 没有其他情况阻止返回服务信息
例如,为以下配置给定在服务级别定义的权限拦截器:
User "USR1" Groups: ADMINS1, ADMINS2
User "USR2" Groups: OPERATS1
User "USR3" Groups: ADMINS2, OPERATS1
<!-- 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" .../>
service1 | service2 | service3 | |
---|---|---|---|
USR1 | X | X | X |
USR2 | -- | -- | X |
USR3 | X | -- | X |