Compliance testing
Security policy rule configuration
Rules are defined in a PDS or PDSE. An INDEX member defines the details of the rules available and when they should be executed. The INDEX member can also define allowlist entries, that is, certain users, jobs or system entities excluded from specific tests.
INDEX member
The INDEX member contains a table of rule definitions. The following definitions are supported:
Rule definition | Description |
---|---|
Defaults | Defaults to apply to all rules |
Rule | Specific rule definition |
Allowlist | Allowlist table |
Default definitions
The Defaults definition defines settings that are applied as default values to all other rules. If required, you can override the default values in each individual rule definition.
You can define only one Default table with the INDEX member. The following keywords are supported:
Keyword | Description |
---|---|
Defaults | Start of Defaults table |
Startup Yes | No | Default for whether rules are to be executed at SPM startup |
Frequency n Seconds | Default frequency at which the rule is executed, in seconds, minutes, hours, or days |
Category category | Default category, up to 15 characters |
Example of a default definitions
Frequency 24 hours
Startup No
Category DEFCAT
Rule definition
A rule definition defines a specific rule. You can define multiple rule definitions in the INDEX member. The following keywords are supported:
Keyword | Description |
---|---|
Rule memberName | Start of a new rule definition and the member name that contains the associated SQL or REXX command |
Startup Yes | No | Determines whether this rule should be executed at SPM startup If omitted, the value defined in the Defaults table is used. |
Frequency n Seconds | Frequency at which the rule is executed, in seconds, minutes, hours, or days If omitted, the value defined in the Defaults table is used. |
Category category | Category assigned to this rule, up to 15 characters If omitted, the value defined in the Defaults table is used. |
Reference reference | Reference for the rule, up to 15 characters You can use the reference as a cross-check to a standards document. |
Description description | Description of the rule, up to 127 characters |
ESMType RACF | TSS | ACF2 | Specific ESM type that is required to run the rule If the value of ESMType (RACF, TSS, or ACF2) does not match the ESM of the system, the rule is ignored. |
Version version | Version of the supported compliance rule |
Examples of rule definitions
Rule MVS00001
Startup Yes
Frequency 24 hours
Category MVS
Reference MVS.1
Priority 1
Version Base
ESMType RACF
Description Protecting z/OS Master Catalogs
Rule DS223649
Startup Yes
Frequency 24 hours
Category DISA STIG
Reference V-223649
Priority 1
Version 9.0
ESMType RACF
Description Write or greater access to SYS1.NUCLEUS must be limited to system programmers only
Allowlists
(SPE2501)You can use allowlists to exclude specific entries that are authorized to access secure resources from Compliance reports, thereby reducing false positives. Allowlists are created in the Compliance rule index member as follows:
id-1 description
id-2 description
.
.
id-n description
Specific allowlists can be read in a compliance rule by allowlist-type to exclude the entries present from being reported in the compliance report.
For example, Compliance Rule MVS00001 reports users who have access to the Master Catalog data set. MVS00001 also uses allowlist type SYSPROG to exclude authorized users from the report.
Hence, you can exclude authorized users with access to the Master Catalog data set from the report, by adding these user IDs to the SYSPROG allowlist as illustrated in the following code block:
X000002 SYSPROG user id
X000003 SYSPROG user id
RacfGroup parameter
You can update the allowlist by using a RACF group instead of user IDs, to capture all user IDs that are connected to a group. To do this, use the RacfGroup parameter in the allowlist. In the preceding example, a group SGROUP can be defined in RACF and the users X000002 and X000003 can be connected to this group. The allowlist is then defined as follows:
RacfGroup SGROUP sysprogs
For information about allowlists that are used in various compliance rules, see Allowlists-and-compliance-rules.
Rule members
The rule member can contain two types of statement:
- An SQL SELECT string to select records from the SPM database that do not comply with the rule being executed.
- A REXX procedure and parameters to be executed.
You can define a rule over multiple lines. You can use an asterisk ( * ) in column 1 to add comments.
SQL rules must terminate with a semicolon ( ; ). Only one SELECT or WITH statement is permitted per rule.
You must prefix REXX procedures with the constant REXX followed by the procedure name and any arguments to be passed.
Example of SQL rule members
SELECT * from mvscommands WHERE userid <> OPERATOR ;
* Compliance Rule X00002
REXX RX002 DSN=SYS1,TYPE=SMF
For details about the SQL tables and columns that can be used for queries, see Database-tables-and-columns-for-RACF or Database-tables-and-columns-for-TSS.