Security Patrol discusses security topics and implementation tips and answers your security questions. I welcome questions, recommendations, and suggestions for security topics you would like discussed in detail. You can submit your correspondence through MC-BBS at 619-931-9909; by E-mail at
-Wayne O. Evans, chief of security
Q: We would like to establish naming conventions for user profiles. Can you recommend some standards?
A:User profile naming conventions may not be possible because of naming conventions forced by the application packages installed on your system. I prefer to classify user profiles into four groups based upon their usage.
1. IBM-provided User Profiles-The IBM-provided user profiles begin with the letter Q. I recommend that you avoid using Q except for the IBM-provided profiles. The password for all IBM profiles should be *NONE, except for QSECOFR, which cannot be *NONE. Some installations use the IBM profiles as group profiles, but I prefer to avoid the use of these profiles.
2. Application Owners-I recommend using the characters OWN to start all application owner user profiles. This naming convention will group all owner user profiles when listing profiles and also allow generic operations. Application owner profiles should have a password of *NONE. The application owner user profile should not be a group profile.
3. Group Profiles-I recommend using the characters GRP to designate group profiles. Group profiles should have a password of *NONE.
4. Individual Users-Individual user profile naming convention can be last name and initials or first characters used to designate the type of user. In the latter case, the following applies:
o U-End user
o D-Development staff (programmers)
o O-Operators
o H-Help desk staff
Q:Many AS/400 security implementations handle user authorization to application objects by assigning *PUBLIC authority and using a customized menu or by using group profiles that own all objects in the application and rely on internal application security to control access. A product like Query/400 accesses files directly, bypassing custom menu systems and internal application security.
New query tools come onto the market every year. Do you have any recommendations for securing data for query tool users who are also business application users and who, in the eyes of the AS/400, have carte blanche access to the files?
A:You have an excellent grasp of the security exposure that exists if users are allowed direct access to production data. The application menus and programs can control the actions users can perform while in the application. If users are authorized to the data by *PUBLIC access, group profile access, or individual profile access, then tools like Query/400 represent security exposures. We often think of Query/400 as a report generation tool, but the OUTFILE option can be used to modify production files if the user is authorized to change the file. As you describe, new tools are being introduced that bypass the application controls. One of the new ways to access production data is using ODBC, which allows record-level access to read and possibly modify data if the users are authorized to the production data files.
The only solution I am aware of to prevent access is not to authorize users to data. This sounds simple but, with all of the different ways users can access data, it becomes impossible to attempt to block all the access ports. The data must be secured. If disclosure of information is not a concern, some installations will assign *PUBLIC authority of *USE to data so that query tools can be used to retrieve information but not modify files. If the data is sensitive and disclosure is a concern, *EXCLUDE access is the only option.
Users must have access to data when operating with the application menus and programs. If they do not have access to the data, the applications will fail. The key is to have the application programs adopt enough authority so that, while in the application, the user can access the data but, outside of the application, there is no access.
Q:We use programs that adopt authority in many of our applications. I understand that adopted authority has some performance impact. Is there a performance difference between having just the first program adopt and propagate access to called programs, and having all programs in the application adopt the same user profile? We prefer to implement this second option; it simplifies the application design because batch jobs get submitted, and it is difficult to determine which programs get called in batch.
A:You are correct that adopted authority will introduce a slight performance overhead. The AS/400 first checks the individual user profile and then group profile access, and it will look for adopted access only when the user and group do not have adequate authority.
The AS/400 machine architecture documents do not specify if there is a difference between the two alternatives. I contacted IBM to get more details. The answer to your performance question is, as always, it depends.
It depends on whether or not all programs in the stack adopt authority and are owned by the same profile. If the authority check is successful because the program owner has authority, then you will see the best performance using this option. The authority code doesn't have to run through the program stack looking for additional programs that adopt.
However, if the program owner doesn't have sufficient authority, then the AS/400 will repeat the authority check for the owner of each program in the stack that adopts (even if the owner is the same as the owner of the previous program). This can result in poor performance as the same check is done over and over again for each program in the stack because of insufficient authority. (IBM is considering making this more efficient by letting the AS/400 "remember" the previous owner of programs that adopt.)
In most production cases, your users are running an application and the owner of the application should be authorized to the data. Therefore, it would be more efficient to have all programs adopt. This saves time searching the program stack looking for the program that adopts. This time is minor compared to the time required to repeat the authority lookup operation for the adopted profile when the object has a private authority.
The best performance can be obtained from the following design:
Programs
1. Programs adopt their owner's user profile.
2. Programs are owned by the application owner user profile (e.g., OWN_APP1).
3. Programs have *PUBLIC authority of *USE.
4. Programs are stored in a library that is restricted to the users who should run the application.
Data
1. Application data files are owned by the application owner user profile (e.g., OWN_APP1).
2. The *PUBLIC authority is either *EXCLUDE (restrict all access) or *USE (allow read-only access).
3. Avoid authorizing other users to eliminate authority lookup operations. If one other profile needs to be authorized, use the Primary Group Profile option available in V3R1.
LATEST COMMENTS
MC Press Online