Sometimes you run across a user profile and you see that it's being used, but you have no idea of its purpose. This article discusses how to discover a profile's use.
When helping clients remove profiles from their systems or reduce authorities assigned to profiles, I often face a situation in which the current administrator is uncertain whether a profile is being used and, if it is, what it's used for. The first time I was faced with the dilemma of determining a profile's use, I thought it would be easy. Simply enable object auditing of *ALL on the profile and see when it's being used, right? Wrong. Not all operations on all object types are audited. When I checked Appendix E of the IBM i Security Reference manual, I realized that the use of a user profile is not audited via object auditing.
So how is the use of user profiles audited? Via the action auditing setting of *JOBDTA or a subset, *JOBBAS. While this audit setting provides valuable information, many organizations don't specify one of these values in the QAUDLVL (action auditing) system value because of the volume of audit entries generated. These values cause an audit journal entry for every start, stop, release, or hold of all jobs. If your organization prefers not to add one of these values to QAUDLVL, all is not lost. You can audit at the individual user level. Run the Change User Audit (CHGUSRAUD) command for the profile you're trying to investigate. For example, CHGUSRAUD USRPRF(HOWUSED) AUDLVL(*JOBBAS). Once you run this command, all subsequent jobs that are run as this profile (HOWUSED) will be audited.
Using the Audit Journal Information
Once you've enabled auditing, you can start to use the audit journal information to investigate the use of the profile. To ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦ÃƒÂ¢Ã¢â€šÂ¬Ã…â€œharvest"ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â the information out of the audit journal, run the Copy Audit Journal Entry (CPYAUDJRNE) command, specifying to retrieve the JS entries. (JS is the entry type that's generated when enabling *JOBDTA or *JOBBAS auditing.)
CPYAUDJRNE ENTTYP(JS) OUTFILE(QTEMP/QAUDIT) JRNRCV(*CURCHAIN)
CPYAUDJRNE generates a file of JS entries that you can then query to find jobs running as the profile you're investigating. The following SELECT statement will list the entries for the profile, HOWUSED. I'm displaying the fields from the audit journal that I typically use during my investigation. You may want to look at all fields, but I find these to be the most helpful. One note: Make sure your WHERE clause uses the correct user profile field: JSUSPF. The JSUSER field is the user in the job name. If the job started as one user and a profile swap occurred, the job name will reflect the original user, not the current user. JSUSPF lists the current user.
SELECT JSTSTP, JSJOB, JSUSER, JSNBR, JSPGM, JSPGMLIB, JSUSPF,
JSRADR, JSETYP, JSJTYP, JSSTYP FROM qtemp/qauditjs
WHERE jsuspf = 'HOWUSED'
From here, you'll want to refer to the IBM i Security Reference again. This time, look in Appendix F, for the details of the JS (Job Change) journal entries format table. To determine how the profile's being used, look at the Type of job and Subtype of job fields. These will indicate whether the job is interactive, batch, etc., and subsequent fields in the entry will list the actual job name. The information in these audit journal entries will provide you with the information you need to determine how the profile is being used.
Where there's a will, there's a way! It is possible to determine how a profile is being used. Even if your organization isn't auditing the job information for all profiles, you can simply enable auditing on the profile you're trying to investigate.