How to setup SPI checking in Top Secret(TSS)?
The purpose of this document is to detail the process of setting up SPI (Set, Perform, Inquire) resource checking and secondary resource checking in Top Secret. SPI resource checking is a little different than secondary resource checking. SPI resource checking uses a keyword in the SPI resource class that corresponds to the command keyword in the CEMT or the EXEC CICS command.
For example, with CEMT INQUIRE TRANSACTION(ABC), the keyword TRANSACT would be used in the SPI resource class (i.e., SPI(TRANSACT) ) when protecting this command using SPI.
SPI resource checking is limited to CEMT and EXEC CICS commands. With XCMD=YES, there is no way to distinguish between CEMT and EXEC CICS. There is a security call made for CEMT prior to the SPI check. If the security call for CEMT fails, the transaction or EXEC CICS command will also fail, and no SPI check is made.
Secondary resource checking keys on the actual resource being accessed in the transaction. With CEMT INQUIRE TRANSACTION(ABC), a second check (after the check for access to CEMT) would occur against OTRAN(ABC) when using secondary resource checking. If the security call for CEMT fails, the transaction fails and no check is made for the secondary resource. Secondary resource checking is optional and somewhat redundant if used with SPI resource checking. However, if secondary resource checking is used with SPI resource checking:
Use SPI checking if you want to secure the command keywords in CEMT and EXEC CICS commands. Use secondary resource checking if you want to allow certain resources to be accessed with any or all CICS transactions (not just the CEMT transaction). SPI resource checking is limited to CEMT and EXEC CICS commands where secondary resource checking can be used on any or all CICS transactions.
SPI Resource Checking
Top Secret provides the SPI resource for added security checking. With the Top Secret SPI resource you can secure the following:
To implement SPI resource checking
Below is a list of the command keywords and the corresponding SPI resource.
For INQUIRE and SET:
Command Keyword SPI Keyword 'Blanks' (default) SPI(SYSTEM) AUTINSTMODEL SPI(AUTINSTM) AUTOINSTALL SPI(AUTOINST) AUXTRACE SPI(TRACEDES) BEAN SPI(BEAN) CFDTPOOL SPI(CFDTPOOL) CONNECTION SPI(CONNECTI) CORBASERVER SPI(CORBASER) DB2CONN SPI(DB2CONN) DB2ENTRY SPI(DB2ENTRY) DB2TRAN SPI(DB2TRAN) DELETESHIPPED SPI(DELETESH) DELTSHIPPED SPI(DELTSHIP) DJAR SPI(DJAR) DLIDATABASE SPI(DLIDATAB) DOCTEMPLATE SPI(DOCTEMPL) DSA SPI(SYSTEM) DSNAME SPI(DSNAME) DUMP SPI(DUMP) DUMPDS SPI(DUMPDS) ENQ SPI(UOWENQ) ENQMODEL SPI(ENQMODEL) EXCI SPI(EXCI) FECONNECTION SPI(FEPIRESO) FENODE SPI(FEPIRESO) FEPOOL SPI(FEPIRESO) FEPROPSET SPI(FEPIRESO) FETARGET SPI(FEPIRESO) FILE SPI(FILE) GTFTRACE SPI(TRACEDES) INTTRACE SPI(TRACEDES) IRBATCH SPI(IRBATCH) IRC SPI(IRC) JMODEL SPI(JMODEL) JOURNALNAME/JOURNALNUM SPI(JOURNAL) * JVMPOOL SPI(JVMPOOL) LINE SPI(LINE) MODENAME SPI(MODENAME) MONITOR SPI(MONITOR) NETNAME SPI(TERMINAL) PARTNER SPI(PARTNER) PITRACE SPI(PITRACE) PROCESSTYPE SPI(PROCESST) PROFILE SPI(PROFILE) PROGRAM SPI(PROGRAM) REQUESTMODEL SPI(REQUESTM) RRMS SPI(RRMS) STATISTICS SPI(STATISTI) STREAMNAME SPI(STREAMNA) SYSDUMPCODE SPI(SYSDUMPC) SYSTEM SPI(SYSTEM) TASK SPI(TASK) TCLASS SPI(TCLASS) TCPIP SPI(TCPIP) TCPIPSERVICE SPI(TCPIPSER) TDQUEUE SPI(TDQUEUE) TERMINAL SPI(TERMINAL) TRANSACTION SPI(TRANSACT) TRDUMPCODE SPI(TRANDUMP) TSMODEL SPI(TSMODEL) TSPOOL SPI(DB2CONN) TSQUEUE SPI(TSQUEUE) UOW SPI(UOW) UOWDSNFAIL SPI(UOWDSNFA) UOWENQ SPI(UOWENQ) UOWLINK SPI(UOWLINK) VOLUME SPI(VOLUME) VTAM SPI(VTAM) WEB SPI(WEB)
* Note: JOURNALNAME is used for CTS 1.2 and above; JOURNALNUM is used for CICS 4.1 and CTS 1.1.
For PERFORM:
Command Keyword SPI Keyword DELETESHIPPED SPI(DELETESH) DUMP SPI(DUMP) ENDAFFINITY SPI(CONNECTI) RECONNECT SPI(RECONNEC) RESET SPI(RESET) SECURITY SPI(SECURITY) SHUTDOWN SPI(SHUTDOWN) SNAP SPI(SNAP) STATISTICS SPI(STATISTI)
For DISCARD:
Command Keyword SPI Keyword DB2CONN SPI(DB2CONN) DB2ENTRY SPI(DB2ENTRY) DB2TRAN SPI(DB2TRAN) DOCTEMPLATE SPI(DOCTEMPL) ENQMODEL SPI(ENQMODEL) JMODEL SPI(JOURNALM) JOURNALNAME SPI(JOURNAL) PROCESSTYPE SPI(PROCESST) REQUESTMODEL SPI(REQUESTM) TCPIPSERVICE SPI(CONNECTI) TSMODEL SPI(TSMODEL)
For EXEC CICS ENABLE, DISABLE, EXTRACT, and COLLECT STATISTICS:
Command Function SPI Keyword ENABLE SPI(EXITPROG) DISABLE SPI(EXITPROG) EXTRACT SPI(EXITPROG) COLLECT STATISTICS SPI(EXITPROG)
EXEC CICS SPOOLOPEN:
Command Function SPI Keyword SPOOLOPEN SPI(JESSPOOL)
SPI access levels:
For CEMT commands:
CEMT Action SPI Access Level INQUIRE INQUIRE PERFORM PERFORM SET SET DISCARD DISCARD
For example, if a CEMT INQUIRE is done, ACCESS(INQUIRE) is required to the protected SPI resource in order to perform the function.
For EXEC CICS ENABLE, DISABLE, EXTRACT, and COLLECT STATISTICS:
Command Function SPI Access Level ENABLE SET DISABLE SET EXTRACT INQUIRE COLLECT STATISTICS COLLECT
For example, if an EXEC CICS ENABLE is done, ACCESS(SET) is required to the protected SPI resource in order to perform the function.
For EXEC CICS SPOOLOPEN:
Command Options SPI Access Level INPUT SET OUTPUT SET
For example, if an EXEC CICS SPOOLOPEN INPUT is done, ACCESS(SET) is required to the protected SPI resource in order to perform the function.
Examples:
SPI(*ALL*) ACCESS(acc) can be owned and permitted to allow access to all of the SPI resources; however, in order to have all the SPI resources protected, you must own all of them via TSS ADD(dept) SPI(xxxx). You can set DEFPROT on the SPI resource class; however, you have to be VERY careful about this because with DEFPROT set on the SPI resource class, access will be denied to any SPI resource that is not permitted to the user. For example, a user who used to successfully issue CEMT INQ TRANS(ABC) will be denied access once DEFPROT is set if he is not permitted ACCESS(INQUIRE) to SPI(TRANSACT).
SPI bypass list
The SPI access levels can be put in the bypass list on the CICS facility in Top Secret. For example, to put INQUIRE in the CEMT bypass list to bypass the INQUIRE checks:
TSS MODIFY((FAC(cicsfac=BYPADD(CEMT=INQUIRE)))
In the TSS parameter file add "FAC(cicsfac=BYPADD(CEMT=INQUIRE))".
This will bypass SPI security for all CEMT INQUIRE commands.
Note: To bypass SET you also need to add INQUIRE to the Bypass List because CEMT SET redisplays the items altered in the CEMT SET.
Secondary resource checking
To turn on secondary resource checking for a specific transaction:
For example, to activate secondary resource checking for CEMT:
This means any resource CEMT goes after will be checked. For example, with CEMT I TRAN(ABC), there would first be a check for EXECUTE access to OTRAN(CEMT) and if access is allowed, an additional (second) check for INQUIRE access to OTRAN(ABC).
To turn on secondary resource checking for all transactions:
Set PCTRESSEC=OVERRIDE on the CICS facility in Top Secret. This will override the RESSEC= parameter in the CSD entry and enforce secondary resource checking for all CICS transactions.
Notes:
The secondary resource checking is a little trickier to set up because CEMT I TRAN(CEMT) would require EXECUTE and INQUIRE access to OTRAN(CEMT). Assuming your AUTH control option is AUTH(OVERRIDE,ALLOVER), EXECUTE and INQUIRE access would have to be in the same place (e.g., user record, same profile, or the ALL record). If EXECUTE is permitted in the user record and INQUIRE in a PROFILE, the transaction will fail because the permit for EXECUTE on the user record will be picked up as a match and it won't get to the INQUIRE permit. However, the secondary resource checking is more granular. You could allow CEMT INQ for certain transactions, but not others.
You can ADD and PERMIT OTRAN(*ALL*) ACCESS(acc). The PERMIT for OTRAN(*ALL*) ACCESS(acc) will include all OTRANs. Also, as long as NONGENERIC is not set on the OTRAN, permits for the OTRAN are generic, so OTRAN(AB) includes all transactions that start with AB.
WARNING: USING ACCESS(EXECUTE) WITH TSS PER(acid) OTRAN(*ALL*) ACCESS(acc) WILL ALLOW THE USER TO EXECUTE ANY TRANSACTION.
Secondary resource checking includes the following resource classes:
CEMT Keyword Secondary Resource Type DB2ENTRY* DB2ENTRY DB2TRAN* DB2TRAN DSNAME DATASET FILE FCT JOURNAL JCT PROGRAM PPT QUEUE DCT TRANSACTIONS OTRAN or LCF VOLUMES VOLUMES
* - CTS 1.2 and above only.
NOTES:
Like CEMT INQUIRE, the CEMT SET action is also used to provide a display of affected resources (after the SET operands are implemented). For this reason, individual resources described in the table above will often need both INQUIRE and SET access to invoke alteration through CEMT. You should also note that:
EXAMPLES
The following examples assume PCTRESSEC=HONOR is set on the CICS facility in Top Secret, RESSEC=YES is set on the CSD entry in CICS for CEMT, RESSEC=ASIS is set in the CICS SIT, and TSS ADD(dept) OTRAN(CEMT) has been done.
To allow a user to issue CEMT INQUIRE TRANSACTION(CS*) but prevent others from doing so:
TSS PER(acid) OTRAN(CEMT) ACCESS(EXECUTE) TSS ADDTO(dept) OTRAN(CS) TSS PERMIT(acid) OTRAN(CS) ACCESS(INQUIRE)
Note: The OTRAN(CS) permission in the above example does not allow the ACID to use the CSxx transactions.
To allow a user to issue CEMT SET FILE(WXYZ) where 'WXYZ' is an FCT entry that points to dataset ABC.DEF and then alter characteristics of the file, but prevent others from doing so:
With DSNCHECK=YES on the CICS facility in Top Secret:
TSS PER(acid) OTRAN(CEMT) ACCESS(EXECUTE) TSS ADDTO(dept) DSNAME(ABC.DEF) TSS PERMIT(acid) DSNAME(ABC.DEF) ACCESS(INQUIRE,SET)
With DSNCHECK=NO on the CICS facility in Top Secret:
TSS PER(acid) OTRAN(CEMT) ACCESS(EXECUTE) TSS ADDTO(dept) FCT(WXYZ) TSS PERMIT(acid) FCT(WXYZ) ACCESS(INQUIRE,SET)