Q: How do you restrict program adoption in the following situation? A company receives a program from a software vendor. The program was compiled on the vendor's AS/400 using adopted authority and is owned by QSECOFR. The user running the appli-cation has limited access rights but inherits QSECOFR authority and has unlimited access while the program is running.
How can we protect ourselves from the security exposure of a user being able to gain QSECOFR rights from another AS/400?
A: I do not have a good answer for your question. If you install the software application, you must be willing to accept the programs that adopt. IBM added a new system value in V3R1 that does offer some protection. You can use the Allow object restore (QALWOBJRST) system value to limit the types of objects that users can restore. QALWOBJRST determines whether security-sensitive objects may be restored to your system. The possible settings for the system value are shown in 1. The QALWOBJRST system value defaults to *ALL, which allows users to restore security-sensitive objects. You can change the system value to prevent anyone from restoring a system state object or an object that adopts authority.
A: I do not have a good answer for your question. If you install the software application, you must be willing to accept the programs that adopt. IBM added a new system value in V3R1 that does offer some protection. You can use the Allow object restore (QALWOBJRST) system value to limit the types of objects that users can restore. QALWOBJRST determines whether security-sensitive objects may be restored to your system. The possible settings for the system value are shown in Figure 1. The QALWOBJRST system value defaults to *ALL, which allows users to restore security-sensitive objects. You can change the system value to prevent anyone from restoring a system state object or an object that adopts authority.
If you prevent the installation of programs that adopt, however, it is very likely that the purchased software application will not work. If you are concerned about programs that adopt being installed, contact your software vendor and get assurance that the programs do not allow users to compromise security.
Q: We want to implement timeout of inactive users. In the machine room that the operators use occasionally, some workstations keep getting signed off. The workstations are in a secure area, and there is no requirement to timeout these terminals. Is there a user profile attribute or some specification for an individual device that will prevent timeout of some devices?
A:The system value Inactive job timeout (QINACTITV) applies to all interactive sessions. No user profile option or device parameter allows for exclusion of selected devices. The system value Inactive Job Message Queue (QINACTMSGQ) has three options. If you specify *DSCJOB or *ENDJOB, inactive workstations will be returned to the sign-on screen, and your operators will be forced to sign on again. If the system value QINACT-MSGQ names a message queue, the system simply sends a CPI1126 message (Job &3/&2/&1 has not been active.) when it detects an inactive workstation. You can have a job that receives the messages and then determines if the workstation should be timed out.
Example program TIME1 in 2 receives the messages from the message queue. If the device is DSP01, the timeout request is ignored. Otherwise, the job is disconnected. When users are using text assist or the Client Access organizer, the Disconnect Job (DSCJOB) command will fail. The program monitors for the failure message and issues an End Job (ENDJOB) command.
Example program TIME1 in Figure 2 receives the messages from the message queue. If the device is DSP01, the timeout request is ignored. Otherwise, the job is disconnected. When users are using text assist or the Client Access organizer, the Disconnect Job (DSCJOB) command will fail. The program monitors for the failure message and issues an End Job (ENDJOB) command.
You must perform the following steps once to create the objects needed for inactive timeout:
1. Create the message queue that will be used to hold timeout messages:
CRTMSGQ MSGQ(QGPL/TIMEOUT) + TEXT('Inactive Session + Messages')
2. Create the program TIME1 using the source in 2:
2. Create the program TIME1 using the source in Figure 2:
CRTCLPGM PGM(xxx/TIME1) + SRCFILE(xxx/QCLSRC)
3. Start inactive timeout by setting the system values:
CHGSYSVAL QINACTMSGQ + 'TIMEOUT QGPL' CHGSYSVAL QINACTITV '30'
4. To submit a never-ending job that calls TIME1, the following command will need to be executed each time the system is started:
SBMJOB INACTIVE CMD(CALL TIME1) + JOBQ(QSYSNOMAX)
5. To end the program, send a message with the text SHUTDOWN to the message queue TIMEOUT.
Security Patrol
Figure 1: Allow Object Restore Option (QALWOBJRST) System Value Options
Security Patrol
Figure 2: Inactive Timeout Program TIME1
/*==================================================================*/ /* To compile: */ /* */ /* CRTCLPGM PGM(XXX/TIME1) SRCFILE(XXX/QCLSRC) */ /* */ /*==================================================================*/ PGM DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&DEVICE) TYPE(*CHAR) LEN(10) DCL VAR(&MSG) TYPE(*CHAR) LEN(100) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(100) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) LOOP: RCVMSG MSGQ(QGPL/TIMEOUT) WAIT(*MAX) MSG(&MSG) + MSGDTA(&MSGDTA) MSGID(&MSGID) /**************************************************/ /* Check for timeout message */ /**************************************************/ IF COND(&MSGID *EQ 'CPI1126') THEN(DO) CHGVAR VAR(&DEVICE) VALUE(%SST(&MSGDTA 1 10)) /**************************************************/ /* If device is not in machine room timeout */ /**************************************************/ IF COND(&DEVICE *NE DSP01) THEN(DO) CHGVAR VAR(&JOBNBR) VALUE(%SST(&MSGDTA 21 6)) CHGVAR VAR(&USER) VALUE(%SST(&MSGDTA 11 10)) DSCJOB JOB(&JOBNBR/&USER/&DEVICE) /**************************************************/ /* Monitor for failure PC organizer will not */ /* allow disconnect */ /**************************************************/ MONMSG MSGID(CPF1389) EXEC(ENDJOB + JOB(&JOBNBR/&USER/&DEVICE)) ENDDO ENDDO IF COND(&MSG *NE SHUTDOWN) THEN(GOTO + CMDLBL(LOOP)) ENDPGM
LATEST COMMENTS
MC Press Online