Surrogate security
A surrogate user has the authority to start work on behalf of another user (the execution user). The execution user is typically a functional user ID. A surrogate user is authorized to act for the execution user without authenticating as that user.
The XUSER system initialization parameter and the RACF® SURROGAT class control surrogate security. There are a number of types of surrogate authority, depending on what the surrogate user attempts to do on behalf of the execution user. CICS® issues an authorization request for every eligible situation (see Types of surrogate authority).
- A task that runs transaction tranA under the user ID of surrogateUserid issues an EXEC CICS START command to run transaction tranB under the user ID of executionUserid.
- CICS calls RACF to check whether surrogateUserid has surrogate authority to start a transaction that runs under user ID executionUserid.
- RACF finds a resource profile in the RACF SURROGAT class that matches executionUserid.DFHSTART. See RACF classes and profiles for resources for more information about the RACF resource classes.
- RACF finds a group or groups permitted to use that profile and checks whether the surrogateUserid is in that group.
- RACF checks that the group has READ access to the executionUserid.DFHSTART profile, which gives it the required surrogate security access.
- RACF returns an OK response to CICS.
- CICS starts the transaction tranB under user ID executionUserid.
To query a user's surrogate authority, you can use the QUERY SECURITY command with the RESCLASS('SURROGAT') option. For information, see Application-specific security (QUERY SECURITY).
The currently active transaction profile is used for authorization checking. To understand this, see Refreshing profiles for SETROPTS RACLIST processing.
- Set the XUSER system initialization parameter. Always have XUSER on.
- Set up RACF profiles to specify which user is authorized to run as a surrogate.
Types of surrogate authority
| Profile in RACF SURROGAT | The surrogate user | What the surrogate user can do |
|---|---|---|
| execution-userID.DFHSTART | Task user ID | Start a transaction running under the execution-userID. This applies to the API commands START, DEFINE PROCESS, and DEFINE ACTIVITY. |
| execution-userID.DFHINSTL | At startup, the CICS region user ID, or the task user ID that issues a DEFINE, ALTER, or INSTALL command, or issue a SET command that changes the specific user ID. | Install or change a resource that has the ability to perform function under the execution-userID. See How it works: Identification in CICS. |
| default-userID.DFHINSTL | CICS region user ID | Use the CICS default user ID. See Defining the default CICS user ID to RACF. |
| plt-userID.DFHINSTL | CICS region user ID | Allows the PLTPIUSR user ID to run PLT processing. See Surrogate security. |
| execution-userID.DFHEXCI | The batch job's user ID | Run an EXCI call in CICS by using the execution-userID. |
| execution-userID.DFHQUERY | Task user ID | Issue the QUERY SECURITY command on behalf of the execution-userID. |
| execution-userID.SUBMIT | Task user ID | Submit JCL to run a job under the execution-userID. See Security for submitting a JCL job to the internal reader. |
| 6.3 beta execution-userID.DFHTERM | The user ID that invokes EXEC CICS START TRANSID TERMID. | Start a transaction to run under the execution-userID on a terminal occupied by that user ID. |