向内部阅读器提交 JCL 作业的安全性

为了保护可以提交 JCL 的人员, CICS® 需要许多配置和安全性定义。

可以通过两种方式提交 JCL 作业:
  • WRITEQ TD 命令用于对内部阅读器定义的分区外 TDQ
  • 使用以下 SPOOL 命令:
    • 具有 USERID ("INTRDR") 的 SPOOLOPEN 已指定
    • SPOOLWRITE
提交作业时涉及三个用户标识:
CICS 区域用户标识
这是用于启动 CICS的区域用户标识。
任务用户标识
这是正在运行任务的用户标识 (如果未登录,那么为缺省用户标识)。
作业用户标识
这是由 JOB 卡上的 USER 参数指定的用户标识。

如果 JOB 语句不包含 USER 参数,则默认值取决于安全设置,如下所示:

通过 TDQ 提交的 JCL
  • 第一个选择:工作用户ID TDQ 定义中的选项
  • 第二选择:CICS区域用户ID

有关详细信息,请参阅 使用 TDQ 提交 JCL 时的安全性

SPOOL 命令提交的 JCL
  • 6.2 之后INTRDRJOBUSER 系统初始化参数设置,该参数可以是以下任一 ID:
    • 任务用户标识
    • CICS 区域用户标识
  • 6.1 作业用户标识缺省为区域用户标识。 可以通过设置将其更改为默认任务用户 IDcom.ibm.cics.spool.defaultjobuser=TASK
安全提示:作为安全最佳实践,建议采用零信任策略,即任何工作都应在执行工作的用户身份下运行。 因此,
  • 6.2 及以后 INTRDRJOBUSER 的默认值(任务用户 ID)与此策略一致。
  • 6.1环境com.ibm.cics.spool.defaultjobuser=TASK是符合这个策略的。

有关详细信息,请参阅 使用 SPOOL 命令提交 JCL 时的安全性

如果作业用户标识不是 CICS 区域用户标识,那么 CICS 会将 USER=job_userid 添加到 JOB 卡。

提示: 使用 JOB 卡上的符号指定 CICS 区域用户标识

如果希望作业能够在 CICS 区域用户标识下运行,而无需动态更改 JCL ,那么可以在 JOB 卡上指定 USER=&SYSUID 。 这将在提交作业的任何 CICS 区域用户标识下运行作业。 这适用于使用 SPOOLWRITE 命令或使用 TDQ 编写的 JCL 作业。 在使用 &SYSUID 代表 CICS 区域用户 ID 提交任务时,会进行代用安全检查(如适用)。

适用的安全保护

TDQ 上的资源安全性为通过 TDQ 提交的 JCL 作业提供保护。 如果在 JOB 卡上指定了 USER 参数,那么 CICS 代理用户检查会提供其他保护。 有关详细信息,请参阅 使用 TDQ 提交 JCL 时的安全性

使用 SPOOL 命令提交的 JCL 作业的保护由代理安全性提供。 有关详细信息,请参阅 使用 SPOOL 命令提交 JCL 时的安全性

此外,您必须具有 JESSPOOL 类中 CICS 区域用户标识的概要文件,以授予 CICS 区域用户标识为作业用户标识提交作业的权限。 如果代理检查失败,请参阅 z/OS 代理用户检查 以获取 RACF® 定义和错误消息的详细信息。

使用 TDQ 提交 JCL 时的安全性

要通过TDQ作业提交将JCL提交给内部读者,必须将TDQUEUE资源定义中的 DDNAME 属性配置为指向 CICS 中指定的 DDNAME
示例
//DDNAME   DD  SYSOUT=(A,INTRDR),DCB=(RECFM=F,LRECL=80)
JCL 中的 DDNAME 随后将用于 TDQUEUE 资源定义中的 DDNAME 属性。

TDQ的记录大小应为80字节,与提交给内部读取器的每行JCL相同。 BLOCKFORMAT 也应为 BLOCKED ,以便 TDQ 等待找到终止字符。

在用户应用程序中,您可以使用以下命令逐行编写JCL:
EXEC CICS WRITEQ QUEUE(XXXX) TD FROM(_JCLLINE_)
当JCL需要终止并提交给内部阅读器时,可以执行一个最后的 WRITEQ ,指定 EOF 终止符:
EXEC CICS WRITEQ(XXXX) TD FROM("/*EOF")

保护由 TDQ 的资源安全性检查提供。 详情请参阅临时数据安全

其他安全性配置和检查取决于是否使用 WRITEQ TD 命令在写入 TDQ 的作业卡上指定了用户标识。

如果指定了用户标识
示例:
//JOBNAME JOB USER=job_userid

CICS 可以在将作业卡写入 TDQ 时执行额外的代理检查。 此代理检查验证任务用户 ID 是否有权代表作业用户 ID(本例中为 job_userid )提交作业。

有关如何启用此额外代理检查的信息,请参阅CICS代理用户检查

如果代理检查失败,那么将从 WRITEQ TD 命令返回 NOTAUTH 响应。 如果代理检查失败,请参阅 CICS 代理用户检查 以获取 RACF 定义和错误消息的详细信息。

如果未指定用户标识
示例:
//JOBNAME JOB
CICS 向写入 TDQ 的语句添加 USER 参数。 添加的作业用户标识设置为 TDQ 定义中的 JOBUSERID 选项指定的值。
//JOBNAME JOB USER=job_userid
如果未在 TDQ 定义中定义 JOBUSERID ,那么作业用户标识将设置为 CICS 区域用户标识。 CICS不会执行其他代理检查。
//JOBNAME JOB USER=region_userid

如需了解TDQ定义的更多信息,请参阅 TDQUEUE资源

使用 SPOOL 命令提交 JCL 时的安全性

要使用假脱机命令,必须使用系统初始化参数 SPOOL=YES来启动 CICS 。

您可以使用带有 USERID ("INTRDR") 的 SPOOLOPEN 命令来提交 JCL 指定。 SPOOLWRITE 命令用于编写 JCL 语句。

如果 JOB 卡具有 USER 参数,那么将执行代理检查以验证任务用户标识是否有权代表作业用户标识提交作业。

有关如何启用此替代检查的信息,请参阅CICS代理用户检查

如果代理检查失败,那么将从 SPOOLWRITE 命令返回 NOTAUTH 响应。 如果代理检查失败,请参阅 CICS 代理用户检查 以获取 RACF 定义和错误消息的详细信息。

如果 JOB 卡没有 USER 参数,那么作业用户标识缺省为在其他位置设置的用户标识:
  • 6.2 及以后的 任务用户 ID 默认为系统初始化参数设置的用户 ID。 INTRDRJOBUSER 系统初始化参数设置的用户 ID。 根据 INTRDRJOBUSER 的默认设置,任务用户 ID 将被假定, CICS 不会进行额外的代理检查。 也可以将 INTRDRJOBUSER 设置为使用 CICS 区域用户 ID 而不是任务用户 ID 作为默认任务用户 ID,在这种情况下,它将接受代理检查。
  • 6.1 作业用户标识缺省为区域用户标识。 这要接受代理检查。 如果设置了以下功能开关,那么可以将作业用户标识的缺省值更改为任务用户标识: com.ibm.cics.spool.defaultjobuser=TASK

z/OS® 代理用户检查

虽然 SPOOLWRITEWRITEQ TD 命令由任务用户标识发出,但作业由 CICS 区域用户标识提交。 因此,如果作业用户标识不是 CICS 区域用户标识,并且未提供密码,那么必须授予 CICS 区域用户标识代理权限以代表作业用户标识提交作业。 无论 CICS 代理用户检查是否处于活动状态,都需要执行此操作。


RDEFINE SURROGAT job_userid.SUBMIT UACC(NONE) OWNER(sysadmin) 
PERMIT job_userid.SUBMIT CLASS(SURROGAT) ID(region_userid) ACCESS(READ)

如果将 CICS 区域用户标识配置为能够代表任何用户提交作业,那么建议不要将 CICS 区域用户标识用于运行 CICS的用户标识以外的任何其他用途。

此检查在提交作业后进行。 如果检查失败,那么作业将失败,并向控制台和作业日志发出 ICH408I 消息,但不会向应用程序返回任何响应。

ICH408I USER (job_userid) GROUP (group) NAME (username) SUBMITTER (region_userid)                                 
登录/作业启动-用户未授权提交者 

CICS 代理用户检查

CICS如果出现以下情况,则启用代理用户:
  • 6.2 后来 系统初始化参数 XUSER=YES 已生效。
  • 6.1 系统初始化参数 XUSER=YES 已生效,并且已启用用于替代用户检查假脱机命令的功能开关: com.ibm.cics.spool.surrogate.check=true

如果作业用户标识不是任务用户标识,并且未提供密码,那么需要授予任务用户标识代理权限以代表作业用户标识提交作业。


RDEFINE SURROGAT job_userid.SUBMIT UACC(NONE) OWNER(sysadmin) 
PERMIT job_userid.SUBMIT CLASS(SURROGAT) ID(task_userid) ACCESS(READ) 

如果代理检查适用,那么将在 SPOOLWRITEWRITEQ TD 命令写入 JOB 卡时进行。 如果检查失败,那么该命令将失败并返回 NOTAUTH 响应。 此外, DFHXS1111 (6.2 后来 DFHXS1117) 消息会发布到 CICS 日志,而 ICH408I 消息则会发布到控制台和工作日志。

ICH408I USER (job_userid) GROUP (group) NAME (username) SUBMITTER (task_userid)                 
登录/作业启动-用户未授权提交者

了解更多信息

如果要迁移到使用 CICS 代理用户检查,请遵循 升级安全性中的指示信息。