QUERY SECURITY
查询用户的安全权限以访问资源。 请注意, QUERY SECURITY 不受 TRANSACTION 资源定义上的 RESSEC (资源安全性) 和 CMDSEC (命令安全性) 设置的影响。
SIT 参数对 QUERY SECURITY 命令的影响
| SIT 参数 | RACF® 访问权 | 从 QUERY SECURITY 读取 cvda | 来自 QUERY SECURITY UPDATE 的 cvda | 来自 QUERY SECURITY CONTROL 的 cvda | 来自 QUERY SECURITY ALTER 的 cvda |
|---|---|---|---|---|---|
SEC=YES
Xnnnn=YES |
NONE
READ UPDATE CONTROL ALTER |
NOTREADABLE
READABLE READABLE READABLE READABLE |
NOTUPDATABLE
NOTUPDATABLE UPDATABLE UPDATABLE UPDATABLE |
NOTCTRLABLE
NOTCTRLABLE NOTCTRLABLE CTRLABLE CTRLABLE |
NOTALTERABLE
NOTALTERABLE NOTALTERABLE NOTALTERABLE ALTERABLE |
SEC=NO
Xnnnn=NO |
不适用 | 可读 | 升级表 | 按电缆 | ALTERABLE |
描述
QUERY SECURITY 命令允许应用程序确定用户是否有权访问 RACF中定义的资源。 这些资源可以在 CICS® 资源类中,也可以在用户定义的资源类中。
在调用 RACF之前,对于除 PSB 以外的所有资源, CICS 会检查是否已安装该资源。 如果资源不存在,那么 CICS 不会调用 RACF 并返回 NOTFND 条件。
如果未指定 USERID ,那么要查询的用户是调用发出 QUERY SECURITY 命令的事务的用户。
或者,应用程序可以查询 USERID 选项中指定的其他用户的安全权限。
有关使用 QUERY SECURITY 命令的更多信息,请参阅 使用 Query Security 命令进行安全性检查。
选项
- 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)
- 指定一个 8 字符字段,用于标识 RACF中的有效资源类 (可能是非CICS) 的名称。 由 RESCLASS 标识的类名按字面意思处理,不进行任何转换。
RACF 类 DATASET , GROUP 和 USER 不会出现在类描述符表 (CDT) 中,这意味着您无法针对这些类进行查询。 对于 CICS 资源类,类名必须是成员类,而不是组类; 即 CCICSCMD ,而不是 VCICSCMD。
如果 ESM 是 RACF,那么该类可以是 CICS提供的或用户定义的。 RESCLASS 使您能够更窄地定义要查询的权限; 例如,可以在记录或字段级别进行查询。
要查询用户的代理权限,可以使用带有 RESCLASS ('SURROGAT') 选项的 QUERY SECURITY 命令。 您还需要指定 RESID 和驻留长度选项。 但是,此命令 不受 XUSER 系统初始化参数控制,因此如果指定了 XUSER=NO ,那么您可能会获得意外的 NOTREADABLE 响应。
该命令返回的响应反映了在指定的 RESCLASS中定义的 RESID 资源的定义。
- RESID (data-value)
- 指定要查询用户访问权的 CICS 或用户定义的资源的名称。 该值为字符串 (对于 CICS 资源为 1-12 个字符,对于用户定义的资源为 1-246 个字符,除非您正在使用 COBOL3 转换程序选项,在这种情况下,最大长度为 160 个字符)。 仅当指定了 RESTYPE ("SPCOMMAND") 时, RESID 才会引用 CICS定义的资源; 否则,它会引用用户定义的资源。定义 RESID 值时,请注意在资源标识中使用空格 (X'40 ') 的影响。 例如,在:
空白定界 RESID 并导致 RACF 使用资源名称 A。QUERY SECURITY RESTYPE('PSB') RESID('A B')请注意,实际检查的资源取决于命令中是否指定了 RESCLASS 或 RESTYPE ,以及前缀是否处于活动状态 (SECPRFX=YES 或指定为系统初始化参数的 SECPRFX=prefix )。- 如果指定了 RESCLASS ,那么检查的资源始终是实际 RESID 数据值,无论前缀是否为 on 或 off。 在 SECPRFX 系统初始化参数中指定的前缀不适用于 QUERY SECURITY RESCLASS。
- 如果指定了 RESTYPE 并且前缀未处于活动状态 (SECPRFX = NO) ,那么检查的资源是指定的 RESID 值。
- 否则,检查的资源是以 CICS 区域用户标识 (如果 SECPRFX=YES) 或其他前缀 (如果 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 的访问权。
对于 SPCOMMAND ,标识由 CICS预先确定。 SPCOMMAND 的可能 RESID 值的列表如下所示:表 2。 A-F H-S T-X ASSOCIATION
ATOMSERVICE
AUTINSTMODEL
AUTOINSTALL
BRFACILITY
BUNDLE
BUNDLEPART
CAPDATAPRED
CAPINFOSRCE
CAPOPTPRED
CAPTURESPEC
CFDTPOOL
CONNECTION
CSD
DB2CONN
DB2ENTRY
DB2TRAN
DISPATCHER
DOCTEMPLATE
DSNAME
DUMP
DUMPDS
ENQUEUE
EPADAPTER
EPADAPTERSET
EPADAPTINSET
EVENTBINDING
EVENTPROCESS
EXCI
EXITPROGRAM
FEPIRESOURCE
FILE
HOST
IPCONN
IRC
JOURNALMODEL
JOURNALNAME
JVMSERVER
LIBRARY
MODENAME
MONITOR
MQCONN
MQMON
MVSTCB
NODEJSAPP
OSGIBUNDLE
OSGISERVICE
PARTNER
PIPELINE
PROCESS
PROFILE
PROGRAM
REQID
REQUEST
RESETTIME
RRMS
安全性
SHUTDOWN
STATISTICS
STORAGE
SUBPOOL
SYSDUMPCODE
系统
TASK
TCLASS
TCPIP
TCPIPSERVICE
TDQUEUE
TEMPSTORAGE
TERMINAL
TRACEDEST
TRACEFLAG
TRACETYPE
TRANDUMPCODE
TRANSACTION
TSQUEUE
TSMODEL
TSPOOL
TYPETERM
UOW
UOWDSNFAIL
UOWENQ
UOWLINK
URIMAP
VOLUME
VTAM ®
WEB
WEBSERVICE
XMLTRANSFORM - 驻留长度 (data-value)
- 以全字二进制形式指定 RESID中资源标识的长度。 仅当指定 RESCLASS 选项时才使用此参数。 RACF 类中资源 (RESID) 的最大长度在类描述符表 (CDT) 中指定。
- RESTYPE (data-value)
- 指定要查询用户访问权的资源类型 (1-12 个字符)。
如果未对 RACF®定义资源,那么 CICS 不会授予访问权,并且响应为 NOTREADABLE。 确保通过 RESTYPE 请求传递到 RACF 的资源名称的长度是该资源类型的实际最大长度。
为 RESTYPE 指定的值必须是下列其中一种资源类型:
XHFS 系统初始化参数控制 zFS 文件的资源安全性,并且在 QUERY SECURITY 命令上没有相应的 RESTYPE 值。 zFS 文件的访问控制遵循 z/OS® UNIX System Services所使用的许可权系统,因此它们以不同的方式运行。表 3。 QUERY SECURITY RESTYPE 值 RESTYPE 值 Xname 参数 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 TRANSATTACH 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
- 外部安全管理器 (ESM) 处于不活动状态或不存在。
缺省操作: 异常终止任务。
- 22 LENGERR
- RESP2 值:
- 6
- 驻留长度值无效,即不在 1 到 246 的范围内。
缺省操作: 异常终止任务。
- 70 NOTAUTH
- RESP2 值:
- 102
- 对指定 USERID 的代理用户安全性检查失败。
发出该命令的事务的安全访问功能不允许使用 USERID 选项中指定的值执行该命令。
事务的安全访问能力是由外部安全管理器根据用户安全性建立的,无论链路安全性还是执行诊断设施 (EDF) 都已在使用中。
缺省操作: 异常终止任务。
- 13 NOTFND
- RESP2 值:
- 1
- RESID 无效。
- 2
- RESTYPE 无效。
- 3
- RESTYPE (SPCOMMAND) 的 RESID 值无效。
- 5
- 未对外部安全性管理器 (ESM) 定义 RESCLASS。
- 8
- 资源不受保护。 仅当 QUERY SECURITY 与 RESCLASS 选项一起使用时 (并且从不与 RESTYPE 一起使用) ,才会返回此值。可能的原因包括:
- RESCLASS 未处于活动状态。
- 找不到概要文件。
- ESM不活动。
缺省操作: 异常终止任务。
- 44 QIDERR
- RESP2 值:
- 1
- 找不到与给定 RESID 关联的间接队列名称。
缺省操作: 异常终止任务。
- 69 个用户标识
- RESP2 值:
- 11
- 外部安全性管理器不知道指定的 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具有读 (或更高) 访问权。 - 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具有读 (或更高) 访问权。 - 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具有读 (或更高) 访问权。
