QUERY SECURITY
查询用户的安全权限以访问资源。 QUERY SECURITY 不受 TRANSACTION 资源定义上的 RESSEC (资源安全性) 和 CMDSEC (命令安全性) 设置的影响。
语法
条件: INVREQ , LENGERR , NOTAUTH , NOTFND , QIDERR 和 USERIDERR
此命令是线程安全的。
NOHANDLE、RESP 和 RESP2是常用选项,可添加到所有 EXEC CICS 命令中以处理错误条件。 命令语法图和选项说明中没有明确包含这些选项。 有关这些常用选项和 EXEC CICS 命令语法的信息,请参阅 EXEC CICS 命令格式和编程注意事项.
描述
QUERY SECURITY 命令允许应用程序确定用户是否有权访问 RACF中定义的资源。 这些资源可以在 CICS 资源类中,也可以在用户定义的资源类中。
对于除 PSB 以外的所有资源,在 CICS® 调用 RACF 之前, CICS 会检查资源是否已安装。 如果资源不存在,那么 CICS 不会调用 RACF 并返回 NOTFND 条件。
如果未指定 USERID ,那么要查询的用户是调用发出 QUERY SECURITY 命令的事务的用户。
或者,应用程序可以查询 USERID 选项中指定的其他用户的安全权限。
有关从应用程序查询访问权的信息,请参阅 特定于应用程序的安全性 (QUERY SECURITY)。
SIT 参数对 QUERY SECURITY 命令的影响
| SIT 参数 | RACF® 访问 | 来自 QUERY SECURITY READ 的 CVDA | 来自 QUERY SECURITY UPDATE 的 CVDA | 来自 QUERY SECURITY CONTROL 的 CVDA | 来自 QUERY SECURITY ALTER 的 CVDA |
|---|---|---|---|---|---|
SEC=YES
Xnnn=YES |
NONE | 可 Notreadable | NOTUPDATABLE | NOTCTRLABLE | 不可更改 |
| READ | 可读 | NOTUPDATABLE | NOTCTRLABLE | 不可更改 | |
| UPDATE | 可读 | 升级表 | NOTCTRLABLE | 不可更改 | |
| CONTROL | 可读 | 升级表 | 按电缆 | 不可更改 | |
| ALTER | 可读 | 升级表 | 按电缆 | 可变 | |
SEC=YES
Xnnn=NO |
不适用 | 可读 | 升级表 | 按电缆 | 可变 |
SEC=NO
|
不适用 | 可读 | 升级表 | 按电缆 | 可变 |
QUERY SECURITY 日志记录选项
您可以控制 QUERY SECURITY 命令上的日志记录。 当日志记录生效时,如果终端用户没有对指定资源的请求访问权,那么会向 CICS 安全性瞬时数据目标 CSCS 发出消息 DFHXS1111 和 DFHXS1117 。 如果相关,还会发出 RACF 消息 ICH408I 。
根据为该资源指定的审计和日志记录选项,还可以记录 SMF 记录。 有关详细信息,请参阅 z/OS Security Server RACF 审计员指南 。
6.2 后来 出于审计目的,禁用日志记录时, CICS 统计信息仍会写入 XSG_AUTHOR_FAIL_NL_NA (DFHSTUP 名称 授权失败 NOLOG NOTAUTH) 和 XSG_AUTHOR_FAIL_NL_NF (DFHSTUP 名称 授权失败 NOLOG NOTFND) 字段。 并将监控数据写入 XSNLNACT 和 XSNLNFCT 字段。 有关更多信息,请参阅安全域: DFHTASK 组中的全局统计信息和性能数据。
- LOG (缺省值)
- 无日志
- LOGMESSAGE (cvda) ,其中 cvda 值为 54 (对于 LOG) 或 55 (对于 NOLOG)
有关 CVDA 的编程信息,请参阅 CICS-value 数据区 (CVDA)。
选项
- ALTER (cvda)
- 查询用户是否对指定资源具有 ALTER 权限。 CICS 返回的 CVDA 值为 ALTERABLE 和 NOTALTERABLE。
- CONTROL (cvda)
- 查询用户是否对指定资源具有 CONTROL 权限。 CICS 返回的 CVDA 值为 CTRLABLE 和 NOTCTRLABLE。
- LOGMESSAGE (cvda)
- 禁止安全违例消息。 传递到 CICS 的值为 LOG (缺省值) ,或者为禁止消息 NOLOG。
- READ (cvda)
- 查询用户是否具有指定资源的 READ 权限命令。 CICS 返回的 CVDA 值为可读和 NOTREADABLE。 READ 访问权限通常允许无损使用资源,例如,在 READ 和 INQUIRE 命令的情况下。
- RESCLASS (data-value)
- 使用此选项可查询非CICS 资源的访问级别。 要查询对 CICS 资源的访问权,通常应使用 RESTYPE 选项,其中资源类由相应的 Xnnn 系统初始化参数确定。 但是,如果出于特殊原因,您想查询特定的 CICS 资源类,则类名必须是成员类,而不是组类;也就是说,必须是 CCICSCMD,而不是 VCICSCMD。 如果成员类由 RACLIST 激活,那么将自动检查组类中的概要文件。 仅当相关 Xnnn 类处于活动状态 (例如, XCMD=YES 或 XCMD=$USRCMD) 时, CICS 才能 RACLIST 组。 例如,如果指定 SEC=YES ,并且 XCMD=YES ,那么 CCICSCMD 和 VCICSCMD 都由 CICS 区域中的 RACLIST 激活,这意味着 QUERY SECURITY RESCLASS ('CCICSCMD') 检查 CCICSCMD 和 VCICSCMD 中的概要文件。
- RESID (data-value)
- 指定要查询用户访问权的 CICS 或用户定义的资源的名称。 该值是字符串 (对于 CICS 资源为 1-12 个字符,对于用户定义的资源为 1-246 个字符,除非您使用 COBOL3 转换程序选项,在这种情况下最大长度为 160 个字符)。 仅当指定了
RESTYPE('SPCOMMAND')时, RESID 才会引用 CICS定义的资源; 否则,它会引用用户定义的资源。RACF 类中资源 (RESID) 的最大长度在类描述符表 (CDT) 中定义。 定义 RESID 值时,请注意在资源标识中使用空格 (X'40 ') 的影响。 例如,在
QUERY SECURITY RESTYPE('PSB') RESID('A B')中,空白定界 RESID 并使 RACF 使用资源名称 A。 同样,在QUERY SECURITY RESCLASS('MYCLASS') RESID('MY PROFILE') RESIDLENGTH(10)中,存在空白会导致 INVREQ 条件。 这是因为 RACF 不允许在概要文件名称中嵌入空白。检查的实际资源取决于是否在命令中指定了 RESCLASS 或 RESTYPE ,以及 (仅针对 RESTYPE) 前缀是否处于活动状态 (指定为系统初始化参数的 SECPRFX=YES 或 SECPRFX=prefix )。例如,如果发出以下命令表 2。 检查了哪些资源? 选项 前缀的效果 SECPRFX=YES SECPRFX=前缀 SECPRFX=NO RESCLASS 无。 检查指定的 RESID 值。 在调用 RACF之前, CICS 不会使用 CICS区域用户标识作为 RESID 的前缀,也不会使用用户指定的前缀。 不适用 不适用 不适用 RESTYPE 取决于 SECPRFX 系统初始化参数的设置。 以 CICS 区域用户标识为前缀的 RESID 值 RESID 值以 SECPRFX 上指定的 prefix 作为前缀。 指定的 RESID 值 QUERY SECURITY RESTYPE('FILE') RESID('PAYFILE'),- 当 SECPRFX=YES 时, CICS 会应用 CICS 区域用户标识作为前缀,并调用 RACF 以检查用户对 cics-region-userid的访问权。PAYFILE。
- 当 SECPRFX=prefix时, CICS 将应用提供的前缀,并调用 RACF 以检查用户对 prefix的访问权。PAYFILE。
- 如果指定了 SECPRFX=NO ,那么 CICS 不会应用前缀,并调用 RACF 以检查用户对 PAYFILE 的访问权。
指定
RESTYPE('SPCOMMAND')时,标识由 CICS预先确定。 SPCOMMAND 的可能资源标识 (RESID) 值的列表列示在 CICS 资源的表中,受命于命令安全性检查。 - 驻留长度 (data-value)
- 以全字二进制形式指定 RESID中资源标识的长度。 仅当指定 RESCLASS 选项时才使用此参数。 RACF 类中资源 (RESID) 的最大长度在类描述符表 (CDT) 中指定。
- RESTYPE (data-value)
- 使用此选项可查询用户对 RACLIST 在初始化时激活的类中包含的 CICS 资源类型 (包括 Db2® 资源定义) 的访问级别。 指定资源类型 1-12 个字符。
如果未对 RACF®定义资源,那么 CICS 不会授予访问权,并且响应为 NOTREADABLE。 确保通过 RESTYPE 请求传递到 RACF 的资源名称的长度是该资源类型的实际最大长度。
为 RESTYPE 指定的值必须是下列其中一种资源类型:
XHFS 系统初始化参数控制 zFS 文件的资源安全性,并且在 QUERY SECURITY 命令上没有相应的 RESTYPE 值。 zFS 文件的访问控制遵循 z/OS UNIX System Services所使用的许可权系统,因此它们以不同的方式运行。表 3。 QUERY SECURITY RESTYPE 值 RESTYPE 值 Xnnn 参数 ATOMSERVICE XRES BUNDLE XRES DB2ENTRY XDB2 DOCTEMPLATE XRES EPADAPTER XRES EPADAPTERSET XRES EVENTBINDING XRES FILE XFCT JOURNALNAME XJCT JOURNALNUM (支持与先前发行版兼容) XJCT JVMSERVER XRES PROGRAM XPPT PSB XPSB SPCOMMAND (用于为命令指定 CICS定义的资源) XCMD TDQUEUE XDCT TRANSACTION XPCT 转接 XTRAN TSQUEUE XTST TSQNAME XTST XMLTRANSFORM XRES 不适用 XHFS 通过动态事务路由,您不必在终端拥有区域中安装事务定义。 如果未安装事务,那么 RESTYPE 为 TRANSATTACH 的 QUERY SECURITY 命令将返回 NOTFND 条件。 应用程序开发者必须知道事务可能动态路由。
如果发出 QUERY SECURITY RESTYPE(TRANSATTACH) RESID(tranid) READ(cvda),那么如果用户对名称为 tranid的资源具有 READ 权限,那么此命令将返回 CVDA 值 READ ,如果用户仅具有 EXECUTE 权限,那么此命令将返回 NOTREADABLE。 因此,如果使用 EXECUTE 权限,那么使用 QUERY SECURITY RESTYPE(TRANSATTACH) 构建可用事务菜单的应用程序将不起作用。
该命令返回的响应反映了在实际尝试访问指定的 CICS 资源时将获取的结果。
- UPDATE (cvda)
- 查询用户是否对指定资源具有 UPDATE 权限。 CICS 返回的 CVDA 值为 UPDATABLE 和 NOTUPDATABLE。 UPDATE 访问权限通常允许破坏性地使用资源,例如,在 WRITE , DELETE 或 UPDATE 命令的情况下。
- USERID (data-value)
- 指定要查询其对指定资源的访问权的用户的 8 字符用户标识。
调用发出 QUERY SECURITY 命令的事务的用户必须有权查询 USERID 中指定的其他用户是否有权访问指定的资源。 CICS 执行代理用户检查,以验证调用事务的执行用户是否有权使用 USERID中指定的代理用户。 如果代理用户检查失败,那么 CICS 将返回 NOTAUTH 条件。
条件
- 16 INVREQ
- RESP2 值:
- 7
- CVDA 值对于 LOGMESSAGE 无效。
- 9
- RESID 无效或填充了空白。
- 10
- RACF 处于不活动状态或不存在。
- 6.2 后来 13
- 必须指定其中一个访问级别 (READ , UPDATE , CONTROL 或 ALTER)。
缺省操作: 异常终止任务。
- 22 LENGERR
- RESP2 值:
- 6
- 驻留长度值无效,即不在范围 1-246 中。
缺省操作: 异常终止任务。
- 70 NOTAUTH
- RESP2 值:
- 102
- 对指定 USERID 的代理用户安全性检查失败。
发出该命令的事务的安全访问功能不允许使用 USERID 选项中指定的值执行该命令。
事务的安全访问功能由 RACF 根据用户安全性以及链路安全性或执行诊断设施 (EDF) 是否已在使用中来建立。
缺省操作: 异常终止任务。
- 13 NOTFND
- RESP2 值:
- 1
- RESID 无效。
- 2
- RESTYPE 无效。
- 3
- RESTYPE (SPCOMMAND) 的 RESID 值无效。
- 5
- 未对 RACF定义 RESCLASS。
- 8
- 资源不受保护。 仅当 QUERY SECURITY 与 RESCLASS 选项一起使用时 (并且从不与 RESTYPE 一起使用) ,才会返回此值。可能的原因包括:
- RESCLASS 未处于活动状态。
- 找不到概要文件。
- ESM不活动。
缺省操作: 异常终止任务。
- 44 QIDERR
- RESP2 值:
- 1
- 找不到与给定 RESID 关联的间接队列名称。
缺省操作: 异常终止任务。
- 69 个用户标识
- RESP2 值:
- 11
- RACF不知道指定的 USERID。
- 12
- 指定的 USERID 已撤销。
QUERY SECURITY=RESTYPE 返回的值示例
- SEC=NO
- 当指定 SEC=NO 时,发出:
Returns:QUERY SECURITY RESTYPE('FILE') RESID('PAYFILE') ALTER(alter_cvda)
因为 SEC=NO 意味着不会对整个 CICS 区域执行安全性检查。alter_cvda = DFHVALUE(ALTERABLE) - SEC=YES 和 XFCT = NO
- 当指定 SEC=YES 和 XFCT = NO 时,发出:
Returns:QUERY SECURITY RESTYPE('FILE') RESID('PAYFILE') ALTER(alter_cvda)
因为 XFCT = NO 表示不对文件执行安全性检查。alter_cvda = DFHVALUE(ALTERABLE) - SEC=YES , XDCT = YES 和 SECPRFX=NO
- 当 SEC=YES , XDCT = YES 和 SECPRFX=NO 时,发出:
Returns:QUERY SECURITY RESTYPE('TDQUEUE') RESID('TDQ1') READ(read_cvda)
如果用户对 DCICSDCT 类或 ECICSDCT 组类中的 "TDQ1" 具有 READ (或更高版本) 访问权。read_cvda = DFHVALUE(READABLE) - SEC=YES , XTRAN=YES 和 SECPRFX=YES
- 当指定 SEC=YES , XTRAN=YES 和 SECPRFX=YES 时,发出:
Returns:QUERY SECURITY RESTYPE('TRANSATTACH') RESID('TRN1') READ(read_cvda)
如果用户对 TCICSTRN 类或 GCICSTRN 组类中的read_cvda = DFHVALUE(NOTREADABLE)cics_region_userid.TRN1没有 READ (或更高版本) 访问权。 - SEC=YES , XTRAN=YES 和 SECPRFX=YES
- 当指定 SEC=YES , XTRAN=YES 和 SECPRFX=YES 时,发出:
Returns:QUERY SECURITY RESTYPE('TRANSATTACH') RESID('TRN1') READ(read_cvda)
如果用户对 TCICSTRN 类或 GCICSTRN 组类中的read_cvda = DFHVALUE(NOTREADABLE)cics_region_userid.TRN1没有 READ (或更高版本) 访问权。 - SEC=YES , XCMD=$USRCMD ,且 SECPRFX=前缀
- 当 SEC=YES 时,指定 XCMD=$USRCMD 和 SECPRFX=prefix ,发出:
Returns:QUERY SECURITY RESTYPE('TRANSATTACH') RESID('TRN1') READ(read_cvda)
如果用户对 TCICSTRN 类或 GCICSTRN 组类中的read_cvda = DFHVALUE(NOTREADABLE)prefix.TRN1没有 READ (或更高版本) 访问权。
