RACF6 Ichza7c0
RACF6 Ichza7c0
SA22-7683-15
Note Before using this information and the product it supports, be sure to read the general information under Notices on page 781.
This edition applies to z/OS Version 1 Release 13 of z/OS (5694-A01) and to all subsequent releases and modifications until otherwise indicated in new editions. This edition replaces SA22-7683-14. Copyright IBM Corporation 1994, 2011. US Government Users Restricted Rights Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Contents
Figures . . . . . . . . . . . . . . xiii Tables . . . . . . . . . . . . . . . xv About this document . . . . . . . . xvii
Who should use this document . . . . . . . xvii How to use this document . . . . . . . . . xvii Where to find more information . . . . . . . xvii Softcopy documents . . . . . . . . . . xvii RACF courses . . . . . . . . . . . . xviii IBM systems center publications. . . . . . . xviii Other sources of information . . . . . . . . xix Internet sources . . . . . . . . . . . . xix The z/OS Basic Skills Information Center . . . xx To request copies of IBM publications . . . . . xx The RACF command exits . . . . . The RACF password processing exits . . The RACF password authentication exits Tools for the Security Administrator . . . Using RACF utilities . . . . . . . RACF block update command (BLKUPD) Using the RACF report writer . . . . Using the data security monitor . . . Recording statistics in RACF profiles . . Listing information from RACF profiles . Searching for RACF profile names . . . Using the LIST and SEARCH commands effectively . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 26 26 26 28 28 29 29 29 32
. 32
xxi
. xxi
Chapter 1. Introduction . . . . . . . . 1
How RACF Meets Security Needs . . . . . . User Identification and Verification . . . . . Authorization Checking . . . . . . . . Logging and Reporting . . . . . . . . . User Accountability . . . . . . . . . . Flexibility . . . . . . . . . . . . . RACF Transparency . . . . . . . . . Implementing Multilevel Security . . . . . Multilevel Security . . . . . . . . . . . Characteristics of a Multilevel-Secure Environment . . . . . . . . . . . . Administering Security . . . . . . . . . Delegating Administration Tasks . . . . . Administering Security When a z/VM System Shares the RACF Database . . . . . . . Using RACF Commands or Panels . . . . RACF Group and User Structure . . . . . . Defining Users and Groups . . . . . . . Protecting Resources . . . . . . . . . Security Classification of Users and Data . . Selecting RACF Options . . . . . . . . Using RACF Installation Exits to Customize RACF The RACROUTE REQUEST=VERIFY, VERIFYX, AUTH, and DEFINE exits . . . . . . . The RACROUTE REQUEST=LIST exits . . . The RACROUTE REQUEST=FASTAUTH exits.
Copyright IBM Corp. 1994, 2011
. 2 . 2 . 3 . 4 . 5 . 9 . 10 . 10 . 10 . 11 . 12 . 12 . . . . . . . 13 13 15 16 20 24 24 24
51
52 52 54 56 57 57 59 61 62 63 64 75 75 76 76 82 87 88 88 88
. 24 . 25 . 25
iii
Limiting When a User Can Access the System . Defining protected user IDs . . . . . . . Defining restricted user IDs . . . . . . . Assigning password phrases. . . . . . . Summary of Steps for Defining Users. . . . . Summary of Steps for Deleting Users . . . . . General Considerations for User ID Delegation .
. . . . . . .
89 90 91 92 94 96 98
113
114 115 116 117 117 118 119 120 121 121 123 123 124 128 128
Using the SETROPTS Command . . . . . . . SETROPTS Options for Initial Setup . . . . . . Allowing Mixed-Case Passwords (PASSWORD Option) . . . . . . . . . . . . . . Establishing Password Syntax Rules (PASSWORD Option) . . . . . . . . . . Setting the Maximum and Minimum Change Interval (PASSWORD Option) . . . . . . . Extending Password and User ID Processing (PASSWORD Option) . . . . . . . . . . Revoking Unused User IDs (INACTIVE Option) Activating List-of-Groups Checking (GRPLIST Option) . . . . . . . . . . . . . . Setting the RVARY Passwords (RVARYPW Option) . . . . . . . . . . . . . . Restricting the Creation of General Resource Profiles (GENERICOWNER Option) . . . . . Activating General Resource Classes (CLASSACT Option) . . . . . . . . . . Activating Generic Profile Checking and Generic Command Processing . . . . . . . . . Activating statistics collection (STATISTICS option) . . . . . . . . . . . . . . Activating Global Access Checking (GLOBAL Option) . . . . . . . . . . . . . . RACF-Protecting All Data Sets (PROTECTALL Option) . . . . . . . . . . . . . .
Activating JES2 or JES3 RACF Support . . . . Preventing Access to Uncataloged Data Sets (CATDSNS Option) . . . . . . . . . . Activating Enhanced Generic Naming for the DATASET Class (EGN Option) . . . . . . Controlling Data Set Modeling (MODEL Option) Bypassing Automatic Data Set Protection (NOADSP Option). . . . . . . . . . . Displaying and Logging Real Data Set Names (REALDSN Option) . . . . . . . . . . Protecting Data Sets with Single-Qualifier Names (PREFIX Option). . . . . . . . . Activating Tape Data Set Protection (TAPEDSN Option) . . . . . . . . . . . . . . Activating Tape Volume Protection (TAPEVOL Option) . . . . . . . . . . . . . . Establishing a Security Retention Period for Tape Data Sets (RETPD Option) . . . . . . Erasing Scratched or Released Data (ERASE Option) . . . . . . . . . . . . . . Establishing National Language Defaults (LANGUAGE Option) . . . . . . . . . SETROPTS Options to Activate In-Storage Profile Processing . . . . . . . . . . . . . . SETROPTS GENLIST Processing . . . . . . SETROPTS RACLIST Processing . . . . . . SETROPTS REFRESH Option for Special Cases . . Refreshing In-Storage Generic Profile Lists (GENERIC REFRESH Option) . . . . . . . Refreshing Global Access Checking Lists (GLOBAL REFRESH Option) . . . . . . . Refreshing Shared Systems (REFRESH Option) SETROPTS Options for Special Purposes . . . . Protecting Undefined Terminals (TERMINAL Option) . . . . . . . . . . . . . . Activating the Security Classification of Users and Data . . . . . . . . . . . . . . Establishing the Maximum VTAM Session Interval (SESSIONINTERVAL Option) . . . . Activating Program Control (WHEN(PROGRAM) Option) . . . . . . . SETROPTS Options Related to Security Labels . . Restricting Changes to Security Labels (SECLABELCONTROL option) . . . . . . Preventing Changes to Security Labels (MLSTABLE Option) . . . . . . . . . . Quiescing RACF Activity (MLQUIET Option) Preventing the Copying of Data to a Lower Security Label (SETROPTS MLS Option) . . . Activating Compatibility Mode For Security Labels (COMPATMODE Option) . . . . . . Enforcing Multilevel Security (MLACTIVE Option) . . . . . . . . . . . . . . Restricting Access to z/OS UNIX Files and Directories (MLFSOBJ Option). . . . . . . Restricting Access to Interprocess Communication Objects (MLIPCOBJ Option) . . Using Name-hiding (MLNAMES Option) . . . Activating Security Labels by System Image (SECLBYSYSTEM Option) . . . . . . . .
129 129 131 131 132 132 132 133 133 133 135 136 136 137 138 141 141 142 142 143 143 143 144 144 145 145 146 146 147 147 148 150 150 151 151
iv
SETROPTS Options for Automatic Control of Access List Authority. . . . . . . . . . . Automatic Addition of Creator's User ID to Access List . . . . . . . . . . . . . Automatic Omission of Creator's User ID from Access List . . . . . . . . . . . . . Specifying the Encryption Method for User Passwords . . . . . . . . . . . . . . Using Started Procedures . . . . . . . . . Assigning RACF User IDs to Started Procedures Authorizing Access to Resources . . . . . . Setting Up the STARTED Class . . . . . . Using the Started Procedures Table (ICHRIN03) Started Procedure Considerations. . . . . .
152 152 152 152 153 154 155 155 157 158
Authorization Requirements for Tape Data Sets When TAPEVOL Is Inactive and TAPEDSN Is Active . . . . . . . . . . . . . . . Authorization Requirements for Tape Data Sets When TAPEVOL Is Active and TAPEDSN Is Inactive . . . . . . . . . . . . . . JCL Changes . . . . . . . . . . . . Installations with DFSMShsm . . . . . . . IEC.TAPERING Profile in the FACILITY Class Password-Protected Tape Data Sets . . . . . Using the PROTECT Parameter for Tape Data Set or Tape Volume Protection . . . . . . . Multivolume Tape Data Sets . . . . . . . RACF Authorization of Bypass Label Processing (BLP) . . . . . . . . . . . . . . . Authorization Requirements for Labels . . . . Tape Data Set and Tape Volume Protection with Nonstandard Labels (NSL) . . . . . . . . Tape Data Set and Tape Volume Protection for Nonlabeled (NL) Tapes . . . . . . . . .
200
200 200 200 201 201 201 202 202 203 203 203
207 207 210 210 211 211 213 215 216 217 218 219 219 219 223 223 223 225 232 232 233 233 235 235 235 235 236 237 238
199
Example of Protecting Several Tape Volumes Using the RACFVARS Class . . . . . . . Using RACF Variables . . . . . . . . . How RACF uses the RACFVARS member list Using RACFVARS with Mixed-Case Classes . . Controlling VTAM LU 6.2 Bind . . . . . . . Protecting Applications . . . . . . . . . . Protecting DFP-Managed Temporary Data Sets . . Protecting File Services Provided by LFS/ESA . . Protecting Terminals . . . . . . . . . . . Creating Profiles in the TERMINAL and GTERMINL Classes . . . . . . . . . . Controlling the Use of Undefined Terminals . . Limiting Specific Groups of Users to Specific Terminals. . . . . . . . . . . . . . Limiting the Times That a Terminal Can Be Used . . . . . . . . . . . . . . . Using Security Labels to Control Terminals . . Using the TSO LOGON Command with the RECONNECT Operand . . . . . . . . . Protecting Consoles . . . . . . . . . . . Using Security Labels to Control Consoles. . . Using the Secured Signon Function . . . . . . The RACF PassTicket. . . . . . . . . . Activating the PTKTDATA Class . . . . . . Defining Profiles in the PTKTDATA Class . . . When the Profile Definitions Are Complete . . How RACF Processes the Password or PassTicket . . . . . . . . . . . . . Enabling the Use of PassTickets . . . . . . Protecting the Vector Facility . . . . . . . . Controlling Access to Program Dumps . . . . . Using RACF to Control Access to Program Dumps . . . . . . . . . . . . . . Using Non-RACF Methods to Control Access to Program Dumps . . . . . . . . . . . Controlling the Allocation of Devices . . . . . Protecting LLA-Managed Data Sets . . . . . . Controlling Data Lookaside Facility (DLF) Objects (Hiperbatch). . . . . . . . . . . . . . Using RACROUTE REQUEST=LIST,GLOBAL=YES Support . . . . . . . . . . . . . . . The RACGLIST Class. . . . . . . . . . Administering the Use of Operator Commands . . Authorizing the Use of Operator Commands Command Authorization in an MCS Sysplex Controlling the Use of Operator Commands . . Controlling the Use of Remote Sharing Functions Controlling Access to the RACLINK Command Controlling Password Synchronization . . . . Controlling the Use of the AT Operand. . . . Controlling the Use of the ONLYAT Operand Controlling Automatic Direction . . . . . . Establishing Security for the RACF Parameter Library . . . . . . . . . . . . . . . Controlling Message Traffic. . . . . . . . . Controlling the Opening of VTAM ACBs . . . . RACF and PSF (Print Services Facility) . . . . . Auditing When Users Receive Message Traffic . . RACF and APPC . . . . . . . . . . . . User Verification during APPC Transactions . .
238 239 240 242 243 245 246 246 247 247 248 249 250 250 250 251 252 252 253 253 253 259 259 261 263 263 263 265 265 268 269 271 271 272 273 274 274 279 279 280 281 281 282 286 287 288 288 289 289 289
Protection of APPC/MVS Transaction Programs (TPs) . . . . . . . . . . . . . . . LU Security Capabilities . . . . . . . . . Origin LU Authorization . . . . . . . . Protection of APPC Server IDs (APPCSERV) . . RACF and CICS . . . . . . . . . . . . RACF and DB2 . . . . . . . . . . . . . RACF and IMS . . . . . . . . . . . . . RACF and ICSF . . . . . . . . . . . . RACF and z/OS UNIX . . . . . . . . . . RACF Support for NDS and Lotus Notes for z/OS Administering Application User Identities . . . System Considerations . . . . . . . . . Authorizing Applications to Use Identity Mapping . . . . . . . . . . . . . . Considerations for Application User Names . . Storing encryption keys using the KEYSMSTR class Steps for storing a key in a KEYSMSTR profile Defining delegated resources . . . . . . . . Steps for authorizing daemons to use delegated resources . . . . . . . . . . . . . .
290 291 291 292 292 292 292 292 293 293 293 294 296 297 297 298 299 300
vi
Overview of enabling RACF to verify signed programs . . . . . . . . . . . . . Steps for discovering if signed programs currently execute on your systems (optional) . Steps for preparing RACF to verify signed programs (one-time setup) . . . . . . . Steps for verifying a signed program . . .
369
369 370 371 372 373 373 373 374 374 374 374 375 376 376 380 381 381 381 382 383 383 383 384 385 385 385 385 386 386 386
Coordinating Profile Updates . . . . . . . . RACF Commands for Flushing a VLF Cache Getting Started with RACF (after First Installing RACF). . . . . . . . . . . . . . . . Logging On as IBMUSER and Checking Initial Conditions . . . . . . . . . . . . . Defining Administrator User IDs for Your Own Use. . . . . . . . . . . . . . . . Defining at Least One User ID to Be Used for Emergencies Only . . . . . . . . . . . Logging on as RACFADM, Checking Groups and Users, and Revoking IBMUSER . . . . . Defining the Groups Needed for the First Users Defining a System-Wide Auditor . . . . . . Defining Users and Groups. . . . . . . . Defining Group Administrators, Group Auditors, and Data Managers . . . . . . . Protecting System Data Sets . . . . . . . Setting RACF Options . . . . . . . . . Using the Data Security Monitor (DSMON) . . . JCL Parameters Related to RACF . . . . . . . Restarting Jobs . . . . . . . . . . . . . Bypassing Password Protection . . . . . . . Controlling Access to RACF Passwords. . . . . Authorizing Only RACF-Defined Users to Access RACF-Protected Resources . . . . . . . . . Using the TSO or ISPF Editor . . . . . . . . Service by IBM Personnel . . . . . . . . . Failsoft Processing. . . . . . . . . . . . Failsoft Processing with Tape Data Sets . . . . Considerations for RACF Databases . . . . . . Backup RACF Database . . . . . . . . . Multiple Data Set Support . . . . . . . . Protecting the RACF Database. . . . . . . Using RACF Data Sharing . . . . . . . . Sharing Data without Sharing a RACF Database Number of Resident Data Blocks . . . . . .
Contents
vii
IRRRID00 return codes . . . . . . Finding Residual IDs . . . . . . . Creating Commands to Remove IDs . . Using IRRRID00 output . . . . . . Processing Profiles and Resources . . What IRRRID00 Verifies . . . . . . Database Objects That Are Not Processed Processing a Hierarchy of Groups . . Processing Global Profiles . . . . . Processing General Resource Profiles . Processing MEMBER Data . . . . . Processing Universal Groups . . . . IRRRID00 and Tivoli . . . . . . . Time Required to Run IRRRID00 . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
415 415 417 418 421 422 423 423 423 423 424 424 424 425
| | | | | | |
Forcing Batch Users to Identify Themselves to RACF . . . . . . . . . . . . . . . Support for Execution Batch Monitor (XBM) (JES2 Only) . . . . . . . . . . . . . . . Defining and Grouping Operators . . . . . JES User ID Early Verification . . . . . . . User ID Propagation When Jobs Are Submitted . Allowing Surrogate Job Submission . . . . Controlling User ID Propagation in a Local Environment . . . . . . . . . . . Using Protected User IDs for Batch Jobs . . . Propagating Protected User IDs . . . . . Using Protected User IDs for Surrogate Job Submission . . . . . . . . . . . . Where NJE Jobs Are Verified . . . . . . . How SYSOUT Requests Are Verified . . . . Security Labels for JES Resources. . . . . . Controlling Access to Data Sets JES Uses . . . Controlling Input to Your System. . . . . . How RACF Validates Users . . . . . . Controlling the Use of Job Names . . . . Authorizing the Use of Input Sources . . . Authorizing Network Jobs and SYSOUT (NJE) . Authorizing Inbound Work. . . . . . . Authorizing Outbound Work . . . . . . Controlling Access to Spool Data . . . . . . Protecting Data Sets on Spools . . . . . Defining Profiles for SYSIN and SYSOUT Data Sets . . . . . . . . . . . . . . Letting Users Create Their Own JESSPOOL Profiles . . . . . . . . . . . . . Protecting JESNEWS . . . . . . . . . Protecting Trace Data Sets (JES2 Only) . . . Protecting SYSLOG . . . . . . . . . Spool Offload Considerations (JES2 Only) . . How RACF Affects Jobs Dumped from and Restored to Spool (JES3 Only) . . . . . . Authorizing Console Access . . . . . . . MCS Consoles . . . . . . . . . . . Remote Workstations (RJP/RJE Consoles) . . JES3 Consoles . . . . . . . . . . . Controlling Where Output Can Be Processed . . Authorizing the Use of Your Installation's Printers Authorizing the Use of Operator Commands . . Commands from RJE Work Stations . . . . Commands from NJE Nodes . . . . . . Who Authorizes Commands When RACF Is Active . . . . . . . . . . . . . .
. 477 . 478 . 478 . . . . . . . . . . . . . . 478 478 479 480 480 481 481 482 485 486 487 504 504 504
511 511 511 512 514 514 515 . 516 . 516 . 516
. 517
viii
How RACF Uses the Information in the DFP Segments . . . . . . . . . . . . . Controlling Access to the DFP Segment. . . Controlling the Use of Other SMS Resources . .
. 542 . 542 . 543 . 544 . 545 . 549 . 550 . 552 . 553 . 553 . 556 557 . 557 . . . . . . . . 558 559 559 562 562 564 564 565
Public and private keys . . . . . . . . . X.509 certificates . . . . . . . . . . . Certificate hierarchies. . . . . . . . . . Certificate formats . . . . . . . . . . . Using certificates with z/OS client/server applications . . . . . . . . . . . . . Enabling client login using certificates . . . . Using RACF to manage digital certificates . . . . Size considerations for public and private keys Using the RACDCERT command to administer certificates . . . . . . . . . . . . . . Sharing the RACF database with a z/VM system . . . . . . . . . . . . . . Controlling the Use of the RACDCERT Command . . . . . . . . . . . . . Examples of adding digital certificate information . . . . . . . . . . . . . Examples of listing digital certificate information . . . . . . . . . . . . . Examples of checking digital certificate information . . . . . . . . . . . . . Examples of altering digital certificate information . . . . . . . . . . . . . Examples of deleting digital certificates. . . . DIGTCERT general resource profiles. . . . . . DIGTCERT profile names . . . . . . . . Ownership of DIGTCERT profiles . . . . . RACLISTing the DIGTCERT class . . . . . RACF and key rings . . . . . . . . . . . DIGTRING general resource profiles . . . . Sharing a private key using a key ring . . . . Using a virtual key ring . . . . . . . . . RACF and z/OS PKCS #11 tokens . . . . . . Creating and populating PKCS #11 tokens. . . Certificate name filtering . . . . . . . . . Interpreting the X.500 directory information tree Creating certificate name filters . . . . . . Types of certificate name filters . . . . . . How RACF processes certificate name filters Using an existing certificate as a model. . . . Excluding a certificate by using the NOTRUST option . . . . . . . . . . . . . . . Mapping multiple user IDs using additional criteria . . . . . . . . . . . . . . Automatic registration of digital certificates . . . Integrated Cryptographic Service Facility (ICSF) considerations . . . . . . . . . . . . . Using a PCI cryptographic coprocessor to generate private keys . . . . . . . . . . Migrating an ICSF private key from one system to another . . . . . . . . . . . . . The irrcerta, irrmulti, and irrsitec user IDs. . . . Renewing an expiring certificate . . . . . . . Renewing a certificate with the same private key . . . . . . . . . . . . . . . . Renewing (rekeying) a certificate with a new private key . . . . . . . . . . . . . Supplied digital certificates . . . . . . . . . Steps to begin using a supplied CA certificate Implementation scenarios . . . . . . . . .
568 569 570 571 572 575 577 578 579 580 580 583 583 588 590 590 591 591 592 592 593 594 595 595 595 596 598 598 599 601 605 605 606 606 610 611 611 611 613 613 614 615 618 619 620
Contents
ix
Scenario 1: Secure Server with a Certificate Signed by a Certificate Authority . . . . . Scenario 2: Secure Server with a Locally Signed Certificate . . . . . . . . . . . . Scenario 3: Migrating an ikeyman or gskkyman Certificate . . . . . . . . . . . . Scenario 4: Secure Server-to-Server Session Enablement . . . . . . . . . . . . Scenario 5: Creating Client Browser Certificates with a Locally Signed Certificate . . . . . Scenario 6: Enabling Secure Outbound FTP . Scenario 7: Sharing One Certificate Between Multiple Servers . . . . . . . . . . Scenario 8: Using the IBM Encryption Facility for z/OS . . . . . . . . . . . . .
Signing hash algorithm and encryption strength used to create the envelope. . . . . . . . The IRR.PWENV.KEYRING key ring . . . . Controlling envelope retrieval . . . . . . . The NOTIFY.LDAP.USER resource . . . . . Setting up enveloping . . . . . . . . . . Preparing the address space of the RACF subsystem . . . . . . . . . . . . . Generating a local CA certificate using RACF as the CA . . . . . . . . . . . . . . Generating an X.509 V3 certificate for the RACF address space . . . . . . . . . . . . Generating an X.509 V3 certificate for the envelope recipient . . . . . . . . . . . Copying the certificates to the host system (if generated elsewhere) . . . . . . . . . . Exporting RACF's certificate to the recipient key database . . . . . . . . . . . . . . Authorizing the envelope recipient . . . . . Activating enveloping . . . . . . . . . . Disabling enveloping . . . . . . . . . . . Steps for disabling enveloping and deleting existing envelopes . . . . . . . . . . . Planning considerations for heterogeneous password synchronization . . . . . . . . .
649 650 650 650 650 651 651 652 653 655 656 657 657 659 660 661
Delegating the authority to list user information Delegating the authority to list user information in any user profile. . . . . . . . . . . Delegating the authority to list user information in only selected user profiles . . . . . . . Delegating the authority to list user information by owner . . . . . . . . . . . . . . Delegating the authority to list user information by group tree . . . . . . . . . . . . Excluding selected user profiles . . . . . . Delegating the authority to reset passwords and password phrases . . . . . . . . . . . . Levels of authority . . . . . . . . . . Delegating the authority to reset the password for any user . . . . . . . . . . . . . Delegating the authority to reset passwords for only selected users . . . . . . . . . . Delegating the authority to reset passwords by owner . . . . . . . . . . . . . . . Delegating the authority to reset passwords by group tree . . . . . . . . . . . . . Excluding selected users. . . . . . . . . Delegating both by owner and by group tree . . . Examples of delegating help desk authorities . . . Delegating help desk authorities by owner . . Delegating help desk authorities by group tree Delegating help desk authorities for all users, excluding selected users . . . . . . . . .
684 684 685 686 687 688 689 690 691 692 693 694 695 697 697 697 698 699
Summary of commands and their functions . . Summary of Authorities and Commands . . . The SPECIAL or group-SPECIAL Attribute . The AUDITOR or group-AUDITOR Attribute The OPERATIONS or group-OPERATIONS Attribute . . . . . . . . . . . . . The CLAUTH Attribute . . . . . . . . Group Authority . . . . . . . . . . Access Authority . . . . . . . . . . Profile Ownership Authority . . . . . . Other Authorities . . . . . . . . . .
. 725 . 728 . 729 730 . . . . . . 730 730 731 732 732 733
Appendix C. Listings of RACF supplied certificates . . . . . . . . 735 Appendix D. Security for system data sets . . . . . . . . . . . . . . . 745 Appendix E. Debugging problems in the RACF database . . . . . . . . . 749
Checklist: Resolving Problems When Access Is Denied Unexpectedly. . . . . . . . . . . Checklist: Resolving Problems When Access Is Allowed Incorrectly . . . . . . . . . . . When Changes to Data Set Profiles Take Effect . . Authorization Checking for RACF-Protected Resources . . . . . . . . . . . . . . When Authorization Checking Takes Place and Why . . . . . . . . . . . . . . . Authorizing Access to RACF-Protected Resources . . . . . . . . . . . . . Pictorial View of RACF Authorization Checking Authorizing Access to z/OS UNIX Files and Directories . . . . . . . . . . . . . Authorizing Access to RACF-Protected Terminals. . . . . . . . . . . . . . Authorizing Access to Consoles, JES Input Devices, APPC Partner LUs, or IP Addresses . . Authorization Checking for RACROUTE REQUEST=FASTAUTH Requests . . . . . . Authorizing Access to RACF-Protected Applications. . . . . . . . . . . . . Security Label Authorization Checking . . . . Relationships among the SECLABEL class, SETROPTS MLS(FAILURES), SETROPTS MLACTIVE(FAILURES) and SETROPTS MLQUIET . . . . . . . . . . . . . Problems with User ID Authentication . . . . . When Logon or Job Initialization Processing Takes Place and Why . . . . . . . . . . Logon/Job Initialization Processing . . . . . 749 751 752 753 753 754 759 764 766 767 769 770 770
701
701 701 702 702 703 703 703 704 704 708 709 709 710 710 711 713 713
Overview of distributed identity filters . . . . . What is a distributed identity filter? . . . . . Applications that support distributed identity filters . . . . . . . . . . . . . . . Overview of the RACMAP command . . . . Profiles in the IDIDMAP class . . . . . . . RACMAP command updates to user profiles DELUSER processing with distributed identity filters . . . . . . . . . . . . . . . IRRRID00 considerations for distributed identity filters . . . . . . . . . . . . . . . Details about specifying user and registry names . . . . . . . . . . . . . . . Restrictions for UTF-8 data values . . . . . Defining a filter for a non-LDAP user name . . . Steps for defining a filter for a non-LDAP user name . . . . . . . . . . . . . . . Defining a filter for an X.500 user identity . . . . Steps for defining a filter for a full X.500 DN Steps for defining a filter using selected RDNs Deleting a distributed identity filter . . . . . . Steps for deleting a distributed identity filter
Notices . . . . . . . . . . . . . . 781
Policy for unsupported hardware. . . . . . . 783
Contents
xi
Trademarks .
. 783
Index . . . . . . . . . . . . . . . 803
Glossary . . . . . . . . . . . . . 785
xii
Figures
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. RACF authorization checking . . . . . . . 4 Sample ISPF panel for RACF. . . . . . . 15 Scope of control of an attribute assigned at the group level. . . . . . . . . . . . . 17 User and group relationships . . . . . . 45 Group-level authority structure . . . . . . 86 Scope of authority for a group-SPECIAL user 87 Delegating authority (user profiles) . . . . 99 Example of two network LU partners 245 Reports produced by DSMON . . . . . . 377 Member UGRP: Users with extraordinary group authoritiesreport format statements . 394 Member UGRPCNTL: Users with extraordinary group authoritiesrecord selection statements . . . . . . . . . 395 Report of all users with extraordinary group authorities . . . . . . . . . . . . 396 Customized record selection criteria . . . . 398 Customized report format . . . . . . . 399 Customized report JCL . . . . . . . . 399 Sample SQL utility statements: Defining a table space . . . . . . . . . . . . 401 Sample SQL utility statements: Creating a table . . . . . . . . . . . . . . 402 Sample SQL utility statements: Creating indexes . . . . . . . . . . . . . 402 DB2 utility statements required to load the tables . . . . . . . . . . . . . . 403 DB2 utility statements required to delete the group records . . . . . . . . . . . 403 Sample SQL to process revoke and resume dates . . . . . . . . . . . . . . 407 A sample SQL query . . . . . . . . . 408 A sample QMF form . . . . . . . . . 409 A sample report. . . . . . . . . . . 409 Using the remove ID utility . . . . . . . 411 Searching for all residual references . . . . 414 Searching for specific references . . . . . 414 Specifying a replacement ID . . . . . . 415 Running IRRRID00 with an empty SYSIN: Sample input . . . . . . . . . . . 416 Running IRRRID00 with an empty SYSIN: Sample output . . . . . . . . . . . 417 Running IRRRID00 with data in SYSIN: Sample input . . . . . . . . . . . 418 Running IRRRID00 with data in SYSIN: Sample output . . . . . . . . . . . 418 Sample output from the IRRRID00 utility 420 Running IRRRID00 CLIST using TMP: Sample JCL statements . . . . . . . . 421 An RRSF network . . . . . . . . . . 429 Captured Output From a Password Synchronization Request . . . . . . . . 432 RACLINK ID(userid) LIST(*.*) Output 434 38. 39. 40. 41. 42. 43. 44. 45. Captured Output from a Directed LISTGRP Command . . . . . . . . . . . . Captured Output from a Directed ADDSD Command . . . . . . . . . . . . Which NODES profiles are used? . . . . . Example: Simple NJE user translation Example: Simple NJE user translation using &SUSER . . . . . . . . . . . . . Example: Trusted, semitrusted, and untrusted nodes . . . . . . . . . . . . . . Example of a simple certificate hierarchy A high-level view of a secure z/OS handshake using a public key network protocol . . . . . . . . . . . . . Controlling access to RACDCERT functions Output from the RACDCERT LIST command Output from the RACDCERT LISTRING command . . . . . . . . . . . . . Output from the RACDCERT LIST command with LABEL . . . . . . . . . . . . Output from the RLIST DIGTCERT command Output from the SEARCH CLASS(DIGTCERT) command . . . . . . Example of an X.500 directory information tree . . . . . . . . . . . . . . . Sample RACDCERT MAP command for creating an issuer's name filter . . . . . . Sample output from the LISTMAP command for an issuer's name filter . . . . . . . Sample RACDCERT MAP commands for creating subject's name filters . . . . . . Sample RACDCERT MAP command for creating a subject's and issuer's name filter. . Sample RACDCERT MAP commands using a model certificate . . . . . . . . . . Sample RACDCERT MAP commands not using a model certificate . . . . . . . . Sample RACDCERT MAP command using the NOTRUST option . . . . . . . . . Sample RACDCERT MAP and RDEFINE commands for mapping multiple user IDs . . Sample output from the LISTMAP command for a MULTIID filter . . . . . . . . . Sample RACDCERT MAP and RDEFINE commands using multiple criteria. . . . . Sample group and user structure for delegating help desk authorities . . . . . Process flow of callers of RACF for RACROUTE REQUEST=AUTH requests . . Process flow of SAF router for RACROUTE REQUEST=AUTH requests . . . . . . . Process flow of RACF router . . . . . . Process flow of RACF authorization checking 437 437 491 499 500 501 570
12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
573 582 584 585 586 587 588 599 600 601 602 603 606 606 606 608 608 609 697 759 760 761 762
xiii
xiv
Tables
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. User attributes . . . . . . . . . . . 18 Commands to list profile contents . . . . . 30 Command to search for profile names. . . . 32 Participants of the security implementation team . . . . . . . . . . . . . . . 38 Checklist for implementation team activities 48 Group authorities . . . . . . . . . . 60 Scope of authority for user attributes at the group level. . . . . . . . . . . . . 84 Sample profile names for STARTED class resources . . . . . . . . . . . . . 157 Sample data set profile names in order from most specific to least specific (EGN off) . . . 170 Sample data set profile names in order from most specific to least specific (EGN on) . . . 171 Protecting GDG data sets using generic profiles . . . . . . . . . . . . . 178 Access authorities for DASD data sets 181 RACF commands used with general resource profiles . . . . . . . . . . . . . 207 Choosing among generic profiles, resource group profiles, and RACFVARS profiles. . . 211 Sample general resource profile names in order from most specific to least specific . . 214 ALTER, NONE, and CONTROL, UPDATE, and READ access authorities for general resources . . . . . . . . . . . . . 216 Comparison of GRPACC attribute with &RACGPID.** entry in global access checking table . . . . . . . . . . . . . . 222 Fields in RACF profile segments that correspond to RACF command operands . . 228 Delegating authority in the FACILITY class 233 RACF classes used to authorize operator commands . . . . . . . . . . . . 273 RACF operator command profiles: Naming conventions . . . . . . . . . . . . 277 RACF TSO commands entered as operator commands: Naming conventions . . . . . 278 Automatic command direction: Resource names . . . . . . . . . . . . . . 282 KEYSMSTR class profiles . . . . . . . 298 Processing options controlled simultaneously for classes sharing a POSIT value . . . . . 306 ICHERCDE macro operands and the corresponding operands for the RDEFINE and RALTER commands . . . . . . . . 317 Correlation of record type, record name, and DB2 table name . . . . . . . . . . . 404 Return codes for the remove ID utility (IRRRID00) . . . . . . . . . . . . 415 RRSFDATA resources to control propagation of certificate information . . . . . . . . 457 NODES class operands and the UACC meaning for inbound jobs . . . . . . . 493 31. NODES class operands, UACC, and SYSOUT ownership when node is not defined to &RACLNDE . . . . . . . . . . . . TSO command usage when RACF protection is enabled. . . . . . . . . . . . . The UNIXMAP class and VLF: Effects on performance for installations that have not reached stage 3 of application identity mapping . . . . . . . . . . . . . Subject's and issuer's distinguished names Summary of access authorities required for PKI Services requests . . . . . . . . . LDAP event notification of RACF profile changes . . . . . . . . . . . . . Resource classes for z/OS systems . . . . Resource classes for z/VM systems . . . . Functions of RACF commands . . . . . . Commands and operands you can issue if you have the SPECIAL or group-SPECIAL attribute . . . . . . . . . . . . . Commands and operands you can issue if you have the AUDITOR or group-AUDITOR attribute . . . . . . . . . . . . . Commands and operands you can issue if you have the OPERATIONS or group-OPERATIONS attribute . . . . . . Commands and operands you can issue if you have the CLAUTH attribute . . . . . Commands and operands you can issue if you have a group authority . . . . . . . Commands and operands you can issue if you have an access authority . . . . . . Commands and operands you can issue if you own a profile . . . . . . . . . . Commands and operands you can issue for miscellaneous reasons. . . . . . . . . UACC values for system data sets . . . . Required relationship between security levels for each MAC checking type . . . . . . Security label authorization checking when SECLABEL class is active and either SETROPTS MLS(FAILURES) or MLS(WARNING) is in effect . . . . . . Security label authorization checking when SECLABEL class is active and either SETROPTS NOMLS is in effect or the user is in "writedown" mode.. . . . . . . . . Effects of MLACTIVE settings on security label authorization . . . . . . . . . . Relationships among the SECLABEL class, SETROPTS MLS(FAILURES), SETROPTS MLACTIVE(FAILURES), and SETROPTS MLQUIET . . . . . . . . . . . . Resource classes checked for logon and job initialization requests . . . . . . . . . 497 534
32. 33.
729
41.
730
42.
17.
772
51.
773 774
52. 53.
774 777
54.
xv
xvi
Readers should be familiar with RACF concepts and terminology. The readers of this document should also be familiar with z/OS systems. RACF overview information can be obtained from the RACF home page:
http://www.ibm.com/servers/eserver/zseries/zos/racf/
Softcopy documents
The RACF library is available on the following DVD softcopy collection in both BookManager and Portable Document Format (PDF) files. The collection includes
Copyright IBM Corp. 1994, 2011
xvii
Preface
Softcopy Reader, which is a program that enables you to view the BookManager files. You can view or print the PDF files with an Adobe Reader. SK3T-4271 z/OS Version 1 Release 13 and Software Products DVD Collection This collection contains the documents for z/OS Version 1 Release 13 and the libraries for multiple releases of more than 400 z/OS-related software products, on DVDs. The following CD softcopy collection includes books related to RACF: SK3T-7876 IBM System z Redbooks Collection This softcopy collection contains a set of documents called IBM Redbooks that pertain to System z subject areas ranging from e-business application development and enablement to hardware, networking, Linux, solutions, security, Parallel Sysplex and many others.
RACF courses
The following RACF classroom courses are available in the United States: H3917 H3927 ES885 ES840 Basics of z/OS RACF Administration Effective RACF Administration Exploiting the Advanced Features of RACF Implementing RACF Security for CICS
IBM provides a variety of educational offerings for RACF. For more information about classroom courses and other offerings, do any of the following: v See your IBM representative v Call 1-800-IBM-TEACh (1-800-426-8322)
xviii
Preface
Internet sources
The following resources are available through the Internet to provide additional information about the RACF library and other security-related topics: v Online library To view and print online versions of the z/OS publications, use this address:
http://www.ibm.com/systems/z/os/zos/bkserv/
v Redbooks The documents known as IBM Redbooks that are produced by the International Technical Support Organization (ITSO) are available at the following address:
http://www.redbooks.ibm.com
v Enterprise systems security For more information about security on the S/390 platform, OS/390, and z/OS, including the elements that comprise the Security Server, use this address:
http://www.ibm.com/systems/z/advantages/security/
v RACF home page You can visit the RACF home page on the World Wide Web using this address:
http://www.ibm.com/systems/z/os/zos/features/racf/
v RACF-L discussion list Customers and IBM participants may also discuss RACF on the RACF-L discussion list. RACF-L is not operated or sponsored by IBM; it is run by the University of Georgia. To subscribe to the RACF-L discussion and receive postings, send a note to:
[email protected]
Include the following line in the body of the note, substituting your first name and last name as indicated:
subscribe racf-l first_name last_name
To post a question or response to RACF-L, send a note, including an appropriate Subject: line, to:
[email protected]
v Sample code You can get sample code, internally-developed tools, and exits to help you use RACF. This code works in our environment, at the time we make it available, but is not officially supported. Each tool or sample has a README file that describes the tool or sample and any restrictions on its use. To access this code from a Web browser, go to the RACF home page and select the Resources file tab, then select Downloads from the list, or go to http://www-03.ibm.com/systems/z/os/zos/features/racf/goodies.html. The code is also available from ftp.software.ibm.com through anonymous FTP. To get access: 1. Log in as user anonymous. 2. Change the directory, as follows, to find the subdirectories that contain the sample code or tool you want to download:
cd eserver/zseries/zos/racf/
About this document
xix
Preface
An announcement will be posted on the RACF-L discussion list whenever something is added. Note: Some Web browsers and some FTP clients (especially those using a graphical interface) might have problems using ftp.software.ibm.com because of inconsistencies in the way they implement the FTP protocols. If you have problems, you can try the following: Try to get access by using a Web browser and the links from the RACF home page. Use a different FTP client. If necessary, use a client that is based on command line interfaces instead of graphical interfaces. If your FTP client has configuration parameters for the type of remote system, configure it as UNIX instead of MVS.
Restrictions Because the sample code and tools are not officially supported, There are no guaranteed enhancements. No APARs can be accepted.
xx
xxi
xxii
Summary of changes
This document contains terminology, maintenance, and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. You might notice changes in the style and structure of some content in this documentfor example, headings that use uppercase for the first letter of initial words only, and procedures that have a different look and format. The changes are ongoing improvements to the consistency and retrievability of information in our documents.
xxiii
Preface
Deleted information: v The information presented in the chapter previously entitled RACF and DCE is removed from this document. Beginning in z/OS Version 1 Release 13, z/OS Distributed Computing Environment (DCE) and Distributed Computing Environment Security Server (DCE Security Server) are no longer available.
xxiv
Preface
Changed information: v The following topics are updated to describe automatic assignment of unique UIDs and GIDs through z/OS UNIX services: Controlling the use of shared UNIX identities on page 541 Enabling automatic assignment of unique UNIX identities on page 543 Enabling default OMVS segments processing on page 550 v The following topics are updated to support distributed identity filters and the new RACMAP command: Summary of Steps for Deleting Users on page 96 Using the Database Unload Utility Output with DB2 on page 400 Using the RACF remove ID (IRRRID00) utility on page 410 Preparing to Use Automatic Direction on page 441 Using Automatic Direction of Application Updates on page 454 v Field-level access checking on page 225 is updated to support new command operands and new fields in RACF profiles. v RACF and ICSF on page 292 is updated to support the new ICSF segment. v DB2 table names on page 403 is updated to support new output records from the database unload (IRRDBU00) utility. v LDAP event notification on page 642 is updated to describe LDAP change logging for general resources. v Appendix A, Supplied RACF resource classes, on page 715 includes new classes. v Appendix B, Summary of RACF commands and authorities, on page 725 includes information about the functions and authorities related to the new RACMAP command. v Appendix C, Listings of RACF supplied certificates, on page 735 includes information about a new IBM certificate that is supplied to support program verification for the modules of z/OS Cryptographic Services System SSL. v Support for the following APARs is added: OA26109 OA26110 OA26302 OA26468
Summary of changes
xxv
Preface
v The following topics were added or updated based on comments from readers: Special Considerations for Global Access Checking on page 223 Defining RACF Variables on page 238 IRRRID00 utility: Running the output CLIST as a batch job on page 420 Translating Security Information on page 498 Examples of deleting digital certificates on page 590 RACF and key rings on page 593 Moved information: v The information presented in the chapter previously entitled Configuring z/OS to participate in an EIM domain is removed from this document. The information is now presented in z/OS Integrated Security Services EIM Guide and Reference.
xxvi
Chapter 1. Introduction
How RACF Meets Security Needs . . . . . . . . . . . . . . . User Identification and Verification . . . . . . . . . . . . . . Authorization Checking . . . . . . . . . . . . . . . . . Logging and Reporting . . . . . . . . . . . . . . . . . . User Accountability . . . . . . . . . . . . . . . . . . . RACF Users . . . . . . . . . . . . . . . . . . . . RACF Groups . . . . . . . . . . . . . . . . . . . . What RACF Controls . . . . . . . . . . . . . . . . . How Users and Groups Are Authorized to Access Resources . . . . RACF Profiles . . . . . . . . . . . . . . . . . . . . Flexibility . . . . . . . . . . . . . . . . . . . . . . RACF Transparency . . . . . . . . . . . . . . . . . . Implementing Multilevel Security . . . . . . . . . . . . . . Multilevel Security . . . . . . . . . . . . . . . . . . . . Characteristics of a Multilevel-Secure Environment . . . . . . . . Mandatory Access Control (MAC) . . . . . . . . . . . . . Security Labels . . . . . . . . . . . . . . . . . . . Discretionary Access Control (DAC) . . . . . . . . . . . . Resource Reuse . . . . . . . . . . . . . . . . . . . Identification and Authentication . . . . . . . . . . . . . Auditability of Security-Related Events . . . . . . . . . . . Administering Security . . . . . . . . . . . . . . . . . . Delegating Administration Tasks . . . . . . . . . . . . . . Administering Security When a z/VM System Shares the RACF Database Using RACF Commands or Panels . . . . . . . . . . . . . Choosing between using RACF TSO commands and ISPF panels . . RACF Group and User Structure . . . . . . . . . . . . . . . Defining Users and Groups . . . . . . . . . . . . . . . . Assigning Optional User Attributes . . . . . . . . . . . . Assigning Group Authorities . . . . . . . . . . . . . . Profiles Associated with Users and Groups . . . . . . . . . . Protecting Resources . . . . . . . . . . . . . . . . . . Protecting Data Sets . . . . . . . . . . . . . . . . . Protecting General Resources . . . . . . . . . . . . . . Installation-Defined Classes . . . . . . . . . . . . . . . Authority to Create Resource Profiles. . . . . . . . . . . . Authority to Modify or Delete Resource Profiles . . . . . . . . Owners of Resource Profiles . . . . . . . . . . . . . . . Setting Up the Global Access Checking Table . . . . . . . . . Security Classification of Users and Data . . . . . . . . . . . Selecting RACF Options . . . . . . . . . . . . . . . . . Using RACF Installation Exits to Customize RACF . . . . . . . . . The RACROUTE REQUEST=VERIFY, VERIFYX, AUTH, and DEFINE exits The RACROUTE REQUEST=LIST exits . . . . . . . . . . . . The RACROUTE REQUEST=FASTAUTH exits. . . . . . . . . . The RACF command exits . . . . . . . . . . . . . . . . The RACF password processing exits . . . . . . . . . . . . . The RACF password authentication exits . . . . . . . . . . . Tools for the Security Administrator . . . . . . . . . . . . . . Using RACF utilities . . . . . . . . . . . . . . . . . . RACF database initialization utility (IRRMIN00) . . . . . . . . RACF database split/merge/extend utility (IRRUT400) . . . . . . RACF database unload utility (IRRDBU00) . . . . . . . . . . RACF database verification utility (IRRUT200). . . . . . . . . RACF cross-reference utility (IRRUT100). . . . . . . . . . .
Copyright IBM Corp. 1994, 2011
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
. 2 . 2 . 3 . 4 . 5 . 6 . 6 . 6 . 7 . 9 . 9 . 10 . 10 . 10 . 11 . 11 . 11 . 11 . 12 . 12 . 12 . 12 . 12 . 13 . 13 . 14 . 15 . 16 . 17 . 19 . 19 . 20 . 21 . 22 . 22 . 22 . 22 . 23 . 23 . 24 . 24 . 24 . 24 . 25 . 25 . 25 . 25 . 26 . 26 . 26 . 26 . 26 . 27 . 27 . 27
Introduction
RACF remove ID utility (IRRRID00) . . . . . RACF SMF data unload utility (IRRADU00) . . RACF block update command (BLKUPD) . . . . Using the RACF report writer . . . . . . . . Using the data security monitor . . . . . . . Recording statistics in RACF profiles . . . . . . Listing information from RACF profiles . . . . . Searching for RACF profile names . . . . . . . Using the LIST and SEARCH commands effectively . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 28 28 28 29 29 29 32 32
This topic introduces you to using RACF to administer security on your system. Over the past several years, it has become much easier to create and access computerized information. No longer is system access limited to a handful of highly skilled programmers; information can now be created and accessed by almost anyone who takes a little time to become familiar with the newer, easier-to-use, high-level inquiry languages. As a result of this improved ease of use, the number of people using computer systems has increased dramatically. More and more people are becoming increasingly dependent on computer systems and the information they store in these systems. As the general computer literacy and the number of people using computers has increased, the need for data security has taken on a new level of importance. No longer can the installation depend on keeping data secure simply because no one knows how to access the data. Further, making data secure does not mean just making confidential information inaccessible to those who should not see it; it means preventing the inadvertent destruction of files by people who might not even know that they are improperly manipulating data. As the security administrator, it is your job to ensure that your installation's data is properly protected. RACF can help you do this.
Introduction
The temporary password permits initial entry to the system, at which time the person is required to choose a new password. Unless the user divulges it, no one else knows the user ID-password combination. During terminal processing, RACF allows the use of an operator identification card (OIDCARD) in place of, or in addition to, the password or password phrase. (The OIDCARD information is also encrypted.) By requiring a user to know both the correct password and the correct OIDCARD, you have increased assurance that the proper user has entered the user ID. The secured signon function provides an alternative to the RACF password called a PassTicket, which allows workstations and client machines to communicate with a host without using a RACF password or password phrase. Using this function can enhance security across a network. For more information, see Using the Secured Signon Function on page 252.
Authorization Checking
Having identified a valid user, the software access control mechanism must next control interaction between the user and the system resources. It must authorize not only what resources that user can access, but also in what way the user can access them, such as for reading only, or for updating as well as reading. This controlled interaction, or authorization checking, is shown in Figure 1 on page 4. Before this activity can take place, however, someone with the proper authority at the installation must establish the constraints that govern those interactions. With RACF, you are responsible for protecting the system resources (data sets, tape and DASD volumes, IMS and CICS transactions, TSO logon information, and terminals) and for issuing the authorities by which those resources are made available to users. RACF records your assignments in profiles stored in the RACF database. RACF then refers to the information in the profiles to decide if a user should be permitted to access a system resource.
Chapter 1. Introduction
Introduction
Operating System
(2) (1) (3)
User Request
(7)
Resource Manager
(6)
RACROUTE Interface
RACF (5)
(1) User requests access to a resource using a resource manager (such as TSO/E, CICS, or IMS). (2) The resource manager issues a RACF request to see if the user can access the resource. In most cases, this is a RACROUTE macro. In other cases, this is an independent RACF macro. (3) RACF refers to the RACF database (or profiles copied into storage from the RACF database) and...
(4) ...checks the appropriate resource profile. (5) Based on the information in the profile... (6) ...RACF passes the status of the request (the user can or cannot access the resource as intended) to the resource manager. (7) The resource manager grants (or denies) the user request.
Introduction
With the SMF data unload utility, you can translate the RACF SMF records into a format you can browse or upload to a database, query, or reporting package, such as DB2. With the report writer, you can select RACF SMF records to produce the reports. Because the RACF report writer was stabilized at the RACF 1.9.2 level, it cannot produce reports for all records beyond that release. You should keep in mind that, for each logging activity that RACF performs, there is a corresponding increase in RACF and SMF processing. For more information on logging and auditing, see z/OS Security Server RACF Auditor's Guide.For information on how to specify logging and auditing functions, see z/OS Security Server RACF Command Language Reference. v Sending Messages: RACF sends messages to the security console for detected, unauthorized attempts to enter the system and for detected, unauthorized attempts to access RACF-protected resources or modify profiles on the RACF database. As well as sending resource access violation messages only to the security console, RACF allows you to send a message to a RACF-defined TSO user. Each resource profile can contain the name of a user to be notified when RACF denies access to the resource. If the user is not logged on to the system at the time of the violation, the user receives the message when logging on. If you are auditing access attempts, and you have selected the RACF function that issues a warning message instead of failing an invalid access attempt (to allow for a more orderly migration to a RACF-protected system), RACF records each attempted access. For each access attempt that would have failed, RACF sends a warning message (ICH408I) to the accessor, but allows the access. If a notify user is specified in the resource profile, RACF also sends a message to that user. v Keeping Statistical Information: Optionally, RACF can keep selected statistical information, such as the date, time, and number of times that a user enters the system and the number of times a single user accesses a specific resource. This information can help the installation analyze and control its computer operations more effectively. In addition, to allow the installation to track and maintain control over its users and resources, RACF provides commands that enable the installation to list the contents of the profiles in the RACF database.
User Accountability
Individual accountability should probably be one of your installation's prime security objectives. A user who can be held individually accountable for actions is less likely to make mistakes or take other actions that might disrupt or compromise operations at your installation. When an individual user accesses the system through a terminal, the concept of individual user identity is fairly obvious. With a group of production programs, however, it might be less clear just who the user is. (Is it the application owner, the job scheduling person, or the console operator?) RACF offers you the ability to assign each user a unique identifier. (Of course, whether you establish this degree of accountability in all cases is an installation decision.) In addition, RACF permits you to assign each user to one or more groups, which are simply collections of users having common access requirements.
Chapter 1. Introduction
Introduction
RACF Users
A RACF user is identified by an alphanumeric user ID that RACF associates with the user. Note, however, that a RACF user need not be an individual. For example, a user ID can be associated with a started procedure. In addition, in many systems today a user" is equated with a function, rather than an individual. For example, a service bureau customer might comprise several people who submit work as a single user. Their jobs are simply charged to a single account number. From the security standpoint, as mentioned before, equating a user ID with anything other than an individual can be undesirable because individual accountability is lost. However, it is up to the installation, through you, to decide how much individual accountability is required.
RACF Groups
A RACF group is normally a collection of users with common access requirements. As such, it is an administrative convenience, because it can simplify the maintenance of access lists in resource profiles. By adding a user to a group, you can give that user access to all of the resources that the group has access to. Likewise, by removing a user from a group, you can prevent the user from accessing those resources. You can also use groups as holding groups or data control groups. For more information, see Defining RACF Groups on page 52. The group concept is very flexible; a RACF group can be equated with almost any logical entity, such as a project, department, application, service bureau customer, operations group, or systems group. Further, individual users can be connected to several groups. Membership and authority in these groups can be used to control the scope of a user's activity.
Introduction
v CICS files, journals, and so forth v Installation-defined resources v APPC transactions and other resources For more information, see Protecting General Resources on page 22.
Chapter 1. Introduction
Introduction
If a user is added to a RACF group (via the CONNECT command) after that user has already logged on, that user will have to log off and log back on to have authority based on that group when accessing resources in classes that have been RACLISTed. If a user is deleted from a RACF group (via the REMOVE command) after that user is already logged on, that user will have to log off and log back on to not have authority based on that group when accessing resources in classes that have been RACLISTed. Security classification: Each user and each resource can have a security classification specified in its profile. The security classification can be a security level, one or more security categories, or both. A security label is an installation-defined name that refers to a combination of a security level and zero or more security categories. A security level is an installation-defined name that corresponds to a numerical security level (the higher the number, the higher the security level). A security category is an installation-defined name corresponding to a department or an area within an organization that has similar security requirements. When a user requests access to a resource that has a security classification, RACF compares the security classification of the user with the security classification of the resource. For more information on security classifications, see Chapter 4, Classifying Users and Data, on page 101. Access authority: The access authority determines to what extent the specified user or group can use the resource. The owner of a profile protecting a data set or general resource (such as a tape volume or terminal) can grant or deny a user or group access to that resource by including the user ID or group name in the resource profile's access list. Associated with each user ID or group name is an access authority that determines whether the user or group can access the resource, and if they can access the resource, how they can use it. The access authorities are NONE, EXECUTE, READ, UPDATE, CONTROL, and ALTER (see Table 45 on page 732). For data set profiles and profiles in the SERVAUTH class, an entry in the access list might also contain the name of a program that is associated with the user ID and the access authority. In this case, the user must be executing that program to access the resource. For more information, see Program access to data sets (PADS) in BASIC mode on page 333 and Program access to SERVAUTH resources in BASIC or ENHANCED mode on page 338. For general resource profiles, an entry in the access list might also contain the name of a RACF-defined terminal, console, JES input device, partner LU, SERVAUTH resource (representing the name of a network security zone), or CRITERIA that is associated with the user ID and the access authority. In this case, the user must be using the terminal, console, JES input device, partner LU name, SERVAUTH, or CRITERIA to access the resource. For more information, see Conditional Access Lists for General Resource Profiles on page 217. Each resource also has a universal access authority (UACC) associated with it. The UACC can be NONE, EXECUTE, READ, UPDATE, CONTROL, or ALTER. The UACC is the access authority allowed to any group or non-restricted user who is not authorized in the access list. UACC applies to all users, whether or not they
Introduction
are RACF-defined, unless they are defined with the RESTRICTED attribute. For information about assigning the RESTRICTED attribute, see Defining restricted user IDs on page 91. Using ID(*) on the Access List: If you have some users who are not defined to RACF, you can use the ID(*) entry on the access list instead of UACC to ensure that only RACF-defined users, except those with the RESTRICTED attribute, can access the resource. The following examples illustrate the difference between UACC(READ) and ID(*) ACCESS(READ): v To allow all users on the system to use a terminal, specify UACC(READ) for the profile, as follows:
RDEFINE TERMINAL profile-name UACC(READ)
v To allow only RACF-defined users on the system to use a terminal, specify UACC(NONE) for the profile, then issue the PERMIT command with ID(*) and ACCESS(READ) specified:
RDEFINE TERMINAL profile-name UACC(NONE) PERMIT profile-name CLASS(TERMINAL) ID(*) ACCESS(READ)
Neither the ID(*) entry on the access list nor the UACC is used to allow a restricted user to access a RACF-protected resource.
RACF Profiles
As the security administrator or a delegate defines authorized users, groups, and protected resources, RACF builds profiles, which contain the information RACF uses to control access to the protected resources. Each profile is owned by a user or group. (By default, the owner of a profile is the user who creates it.) You can work with the following types of profiles: v User profiles v Group profiles v Data set profiles v General resource profiles User and group profiles contain descriptions of the authorized users of a RACF-protected system. Data set and general resource profiles contain descriptions of the resources and the levels of authority that are necessary to access these resources.
Flexibility
Because the security requirements at every installation differ, RACF is flexible enough to assist each installation in meeting its own security objectives. There are a number of ways RACF accomplishes this: v Administrative control: RACF allows you a wide range of choices in controlling access to your installation's resources. RACF allows you to use either centralized or decentralized administration techniques by permitting you to delegate authority, establish appropriate group ownership structures, and specify various group-related user attributes. In addition, RACF provides a wide range of processing options and installation exits. Most RACF command functionsexcept those performed by RACMAP, RVARY, SET, TARGET, the RACF report writer command (RACFRW), and the block update command (BLKUPD)have Interactive System Productivity Facility (ISPF) entry panels and associated help panels. These panels make it easy to enter command options on TSO.
Chapter 1. Introduction
Introduction
v Generic profiles: RACF generic profiles allow you, your group administrators, and other users to define profiles that consolidate the security requirements of several similarly named resources that have the same access requirements. v Protection of installation-defined classes: RACF allows you to protect your own installation-defined resource classes. To do this, you can add entries to the class descriptor table (CDT) for the new classes, create profiles in the class, and, when a user requests access to a resource (or takes an action you want to control), issue the RACROUTE REQUEST=AUTH macro from your application to check authorization. You can control which users and groups can access each resource in the class by defining profiles in the class. The profiles can include access lists and other information such as auditing, security labels, and so forth, as with profiles in the CDT classes supplied by IBM. See Appendix A, Supplied RACF resource classes, on page 715 for a description of each CDT class supplied by IBM. See Chapter 8, Administering the Dynamic Class Descriptor Table (CDT), on page 301 for details about creating installation-defined resource classes. v Installation exits: RACF installation exits allow you to tailor RACF to specific needs of your installation. For more information, see Using RACF Installation Exits to Customize RACF on page 24. Because of RACF's flexible design, you and your technical support personnel can tailor RACF to operate smoothly within the local operating environment.
RACF Transparency
No users want their data destroyed or altered by other individuals (or themselves) except when they specifically intend it. Unfortunately, users of all types are often reluctant to take steps to protect what they have created. It is not uncommon to see live data used as test data, or to see data deliberately under-classified to avoid having to use the security procedures that the appropriate classification would demand. In many cases, people find it easier to ignore security procedures than to use them. Even conscientious users can forget to protect a critical piece of data. The solution to implementing effective security measures, then, is to provide a security system that is transparent (painless) to the user. With RACF, end users need not be aware that their data is being protected for them. Security and group administrators can use generic profiles to make using RACF transparent to the majority of the installation's end users. Administrators can also use profile modelling to enhance RACF's transparency.
Multilevel Security
The United States Department of Defense (DoD) has established security criteria for its computer systems and for those systems that perform government work under contract. Each system is evaluated and awarded a security rating, depending on the extent the system protects resources and its own processing. Although IBM does not claim compliance with any particular criteria, the multilevel security (MLS) functions of a z/OS Version 1 Release 5 system and
10
Introduction
higher are designed to provide a high level of security. See z/OS Planning for Multilevel Security and the Common Criteria for details.
Security Labels
Security labels can be associated with all users and resources in the system. The system uses these labels to determine if access to a resource is allowed under the mandatory access control (MAC) rules. Security labels, maintained in the RACF database, are usually defined by the security administrator and can be changed only by that person. When a resource is exported to a device attached to a system, the security label of the resource remains in effect. Whether the resource resides on a single-level device, such as a tape drive that does not process information at different levels of security concurrently, or a multilevel device, which is able to process data at different security levels concurrently, the system continues to associate the security label with the resource. The system provides security labels on each page of print output as a default. The system allows a user to request that no security labels be printed; however, the system is able to audit all such requests.
11
Introduction
Resource Reuse
Resource reuse is a practice that ensures all system resources (such as tape data sets) that are reused, reassigned, or reallocated are purged of all residual data, including encrypted data, belonging to the former owner.
Administering Security
The security administrator's job can range from helping high-level management initially define corporate security policy to authorizing individual end users to access RACF-protected resources. As security administrator, you are responsible for implementing RACF at your installation. You have the authority to review and approve all implementation phases, select the resources to be protected, and plan the order in which protection is implemented. You are the authority for all RACF implementation questions. You decide the degree to which decentralization of security controls takes place. You create profiles for the implementation team, select the team members, and direct their efforts.
12
Introduction
In some installations, there might be much delegation of authority, and there might be more than one technical support person or more than two levels of group administrators. Similarly, other roles might differ somewhat from the way they are described in this document. For details about defining profiles to delegate administration tasks, see Planning for Profiles in the FACILITY Class on page 232.
13
Introduction
As an alternative to using RACF commands to perform administration tasks, you can use RACF's ISPF panels if the ISPF product is installed at your location. If you use the panels, you do not need to memorize command or operand names; you only need to complete the appropriate information on the proper panels.
To limit the information displayed, specify operands on the HELP command. For example, to see only the syntax of the PERMIT command, enter:
HELP PERMIT SYNTAX
Restriction: TSO online help is not available when RACF commands are entered as RACF operator commands. v Getting message ID information If a RACF TSO command fails, you will receive a message. If you do not get a message ID, enter:
PROFILE MSGID
Reenter the RACF TSO command that failed. The message appears with the message ID. See z/OS Security Server RACF Messages and Codes for help if the message ID starts with ICH or IRR. Restriction: PROFILE MSGID cannot be entered as a RACF operator command. The ISPF panels provide the following advantages: v When you use the panels, you avoid having to memorize a command and type it correctly. Panels can be especially useful if the command is complex or you perform a task infrequently. v ISPF creates in the ISPF log a summary record of the work that you do. Unless you use the TSO session manager, the RACF commands do not create such a record. v From the panels, you can press the HELP key to display brief descriptions of the fields on the panels. v The options chosen when installing the RACF panels determine whether output (for example, profile listings, search results, and RACF options) is displayed in a scrollable form. v The ISPF panels for working with password rules allow you to enter all of the password rules on one panel. Figure 2 on page 15 shows one of these panels. v When you use the ISPF panels to update a custom field definition in the CFDEF segment, the current values are displayed. You can then overtype the values to make changes.
14
Introduction
v When you use the ISPF panels to add, update, or delete custom field information (CSDATA segment fields) in a user or group profile, the panels are primed with the custom field names and values. You can then make additions, changes, and deletions. Limitations: The following limitations apply to the use of the ISPF panels: v The ISPF panels do not support all options of all commands. For example, the SETROPTS PASSWORD option to activate and deactivate mixed-case password support is not available through the RACF panels. v The ISPF RACF panels are limited to 32000 lines of command output. If the output listing for a command (most commonly, the RLIST command) exceeds 32000 lines, the output is truncated at the 32000 line limit and an error is likely to occur. To avoid this limitation, use one of the following alternate methods: Issue the command using a batch execution of the terminal monitor program (TMP) and use the SDSF XD command to print the output to a data set. Create a report using ouput from the RACF database unload (IRRDBU00) utility.
| | | | | | | |
RACF - SET PASSWORD FORMAT RULES COMMAND ===> Enter PASSWORD FORMAT RULES: MINIMUM MAXIMUM LENGTH LENGTH FORMAT RULE 1: __ __ ________ RULE 2: __ __ ________ RULE 3: __ __ ________ RULE 4: __ __ ________ RULE 5: __ __ ________ RULE 6: __ __ ________ RULE 7: __ __ ________ RULE 8: __ __ ________ To cancel an existing rule, enter NO for MINIMUM LENGTH. To specify FORMAT, use the following codes for each character position: * = Any Character $ = National V = Vowel N = Numeric C = Consonant A = Alphabetic v = Mixed Vowel m = Mixed Numeric c = Mixed Consonant L = Alphanumeric W = No Vowel
Additional authorization for using the ISPF panels: You must authorize general users to use ISPF panels to add data to custom fields in user and group profiles. For details, see Authorizing users to update data in a custom field on page 673.
Chapter 1. Introduction
15
Introduction
At the top of the RACF group-user structure is a group called SYS1. When you install RACF, it defines this group for you. The SYS1 group is the highest group in the total RACF group-user structure. You can define your system administrator and system auditor as members of this group. The system administrator has the SPECIAL attribute and the system auditor has the AUDITOR attribute. The significance of SPECIAL and group-SPECIAL and AUDITOR and group-AUDITOR, and the differences between them, are described in later sections.
PASSWORD or PHRASE Change a password or password phrase. In addition to defining individual users, you can define groups of users. Group members can share common access authorities to a protected resource. One benefit of grouping users is that you can authorize the entire group, as a single unit, to access a protected resource. Another benefit is that attributes such as OPERATIONS can be assigned so that a given user has that attribute only when connected to a specific group, and the attribute is only effective for resources within the scope of that group. The following are some of the commands you might use in your group-definition tasks. Commands for group administration: ADDGROUP Define a new group (a subgroup of an existing group). ALTGROUP DELGROUP LISTGRP CONNECT Assign a subgroup to a new superior group. Delete one or more groups. Display the contents of a group profile. Connect a user to a group.
16
Introduction
REMOVE PERMIT Remove a user from a group and assign a new owner for group data sets owned by the removed user. Permit a group of users to access a resource (or deny them access to a resource).
GROUP1
GROUP2
GROUP3
USER1
GROUP4
GROUP5
Figure 3 shows a group ownership structure. In this figure, GROUP1 owns GROUP2, GROUP2 owns GROUP3 and USER1, and so on. A user who is connected to GROUP1 with the group-SPECIAL attribute has an explicit scope of
Chapter 1. Introduction
17
Introduction
control as shown in the figure. That is, the user cannot modify any profiles owned by GROUP5. Table 1 lists and describes attributes that can be assigned at the user and group level. For a more complete description, see Chapter 3, Defining Groups and Users, on page 51.
Table 1. User attributes User attribute SPECIAL Description When you assign it at the system level, the SPECIAL attribute gives the user full control over all of the RACF profiles in the RACF database. At the system level, the SPECIAL attribute allows the user to issue all RACF commands. When you assign the SPECIAL attribute at the group level, the group-SPECIAL user has full control over all of the resources that are within the scope of the group but cannot issue RACF commands that would have a global effect on RACF processing. AUDITOR When you assign it at the system level, the AUDITOR attribute gives the user full responsibility for auditing the security controls and use of system resources across the entire system. With the AUDITOR attribute at the system level, the user can specify logging options on the RACF commands and list the auditing options of any profiles using the RACF commands. In addition, the user can control additional logging to SMF for detecting changes and attempts to change the RACF database and for detecting accesses and attempts to access RACF-protected resources. When you assign the AUDITOR attribute at the group level (that is, when you assign the group-AUDITOR attribute), auditing authority is limited to resources that are within the scope of the group. OPERATIONS When you assign the OPERATIONS attribute at the system level, the user can perform any maintenance operations on RACF-protected resources, such as copying, reorganizing, cataloging, and scratching data. At the group-OPERATIONS level, authority to perform these operations is limited to resources that are within the scope of the group. CLAUTH The CLAUTH (class authority) attribute allows the user to define profiles in a specific RACF class. A user can have class authority for the USER class and any of the classes that are defined in the class descriptor table (CDT). Examples of classes that IBM supplies in the CDT are the TERMINAL class (for terminals) and the TAPEVOL class (for tape volumes). For a list of valid class names, see Appendix A, Supplied RACF resource classes, on page 715. If the SETROPTS GENERICOWNER option is in effect, this authority is limited. See Restricting the Creation of General Resource Profiles (GENERICOWNER Option) on page 121. GRPACC When a user with the GRPACC attribute creates a data set profile for a group data set, RACF gives UPDATE access authority to other users in the group (if the user defining the profile is a member of that group). A group data set is a data set whose high-level qualifier, or the qualifier derived from the RACF naming convention table, is a RACF-defined group name. The ADSP attribute establishes an environment in which all permanent DASD data sets created by this user are automatically defined to RACF and protected with a discrete profile. ADSP can be assigned at the group level, in which case it is effective only when the user is connected to that group. The REVOKE attribute prevents the RACF-defined user from entering the system. REVOKE can be assigned at the group level, in which case the user cannot enter the system and connect to that group.
ADSP
REVOKE
18
Introduction
Table 1. User attributes (continued) User attribute RESTRICTED Description The RESTRICTED attribute prevents a user from gaining access to a protected resource, other than a z/OS UNIX file system resource, unless the user is specifically authorized on the access list. Global access checking, the ID(*) entry on the access list, and the UACC will not be used to allow a restricted user to access a protected resource. To prevent a restricted user from gaining access to a z/OS UNIX file system resource unless specifically authorized, see Controlling access to file system resources for restricted users on page 560. Guideline: You and your delegates should assign the SPECIAL, AUDITOR, and OPERATIONS attributes to the minimum number of people necessary to administer security at your installation.
19
Introduction
v A TSO segment, which contains TSO logon information v A DFP segment, which contains default DFP information for the user v An OPERPARM segment, which contains initial information used when the user enters an extended MCS console session v A CICS segment, which contains initial information used when the user signs on to CICS v For z/OS UNIX, an OMVS segment, which contains z/OS UNIX information about the user v For OpenExtensions for z/VM, an OVM segment, which contains OpenExtensions for z/VM information about the user The group profile: The group profile defines a group. Some of the things the group profile can contain are: v Information about the group, such as who owns it and what subgroups it has v Whether the group is a universal group v For non-universal groups, a list of all connected users (members) Note: Member lists for universal groups do not contain information about all connected users, only those users with group authorities higher than USE, and those with the group-SPECIAL, group-OPERATIONS, or group-AUDITOR attributes. For more information, see Defining Large Groups with the UNIVERSAL Attribute on page 56. v For non-universal groups, the group authorities of each member Note: Information about members with group authority of USE is not available for universal groups. v The name of an optional model profile RACF uses when a user creates new group data set profiles v A DFP segment, which contains default DFP information for the group v For z/OS UNIX, an OMVS segment, which contains z/OS UNIX information about the group v For OpenExtensions for z/VM, an OVM segment, which contains OpenExtensions for z/VM information about the group
Protecting Resources
In the early releases of RACF, the only resources that were protected were data sets. Over the years, enhancements to RACF, applications have broadened the meaning of the term resource to include the following: v Places in the system where data resides (such as data sets) v Places in the system through which data passes during processing (such as terminals) v The functions by which users work with data (such as commands) Using RACF, you can protect resources so that only authorized users can access the resource in approved ways. In general, you control access to a protected resource by creating a discrete or generic profile. Discrete profiles protect only one resource. The name of the profile identifies to RACF which resource is protected. For example, a profile called SMITH.REXX.EXEC in class DATASET would protect the data set named SMITH.REXX.EXEC.
20
Introduction
Generic profiles protect one or more resources that have the same security requirements. In many cases, some of the characters in the resource names are the same. For example, a profile called SMITH.** in class DATASET would protect all of SMITH's data sets that did not have a more specific profile defined. In most general resource classes, you can also provide a top generic profile that protects all of the resources that are not otherwise protected. Tip: A top generic profile for a class should have a profile name of ** (rather than *) so that you can issue the RLIST command to display the profile itself. Using generic profiles can greatly reduce the amount of RACF profile maintenance done by a RACF administrator. Examples of discrete and generic profiles are shown throughout this document.
Chapter 1. Introduction
21
Introduction
Installation-Defined Classes
You can dynamically add new class descriptor table (CDT) entries or modify or delete existing entries that you have added in the dynamic installation-defined CDT by administering resources in the CDT resource class. See Chapter 8, Administering the Dynamic Class Descriptor Table (CDT), on page 301 for details. If you need to administer installation-defined entries in the static CDT (module ICHRRCDE), see z/OS Security Server RACF System Programmer's Guide and consult your system programmer. When you define a new resource class, you can optionally designate that class as either a resource group class or a resource member class. For a resource group class, each user or group of users that is permitted access to that resource group is permitted access to all members of the resource group. Note that for each resource group class you create, you must also create a second class that represents the members of the group. RACF refers to the class descriptor table (CDT) when it needs to make a class-related decision (such as, What is the maximum length of profile names?). With the CDT and appropriate use of RACF authorization checking services, you can extend RACF protection to any part of your system. For more information on creating installation-defined classes, see Chapter 8, Administering the Dynamic Class Descriptor Table (CDT), on page 301.
22
Introduction
v Own the profile or, for data set profiles, have a user ID that matches the high-level qualifier of the profile name v Have the SPECIAL attribute (or group-SPECIAL attribute, if applicable) To modify a discrete profile, you must meet at least one of the following criteria: v Own the profile or, for data set profiles, have a user ID that matches the high-level qualifier of the profile name v Have the SPECIAL attribute (or group-SPECIAL attribute, if applicable) v Have ALTER authority to the profile For complete descriptions of the required authorizations to any RACF command, or if adding members, see the description of the command in z/OS Security Server RACF Command Language Reference.
Chapter 1. Introduction
23
Introduction
If an entry in the global access checking table allows a requested access to a resource, no auditing is done for the request. For information on planning and setting up the global access checking table, see Setting Up the Global Access Checking Table on page 218.
24
Introduction
Chapter 1. Introduction
25
Introduction
26
Introduction
Chapter 1. Introduction
27
Introduction
1. Find all residual references to user IDs and group names that no longer exist in the RACF database. 2. Find all references to a list of user IDs and group names that you specify in the SYSIN file. For information about how to run IRRRID00 and use its output see Using the RACF remove ID (IRRRID00) utility on page 410.
28
Introduction
See z/OS Security Server RACF Auditor's Guide for complete information on using the report writer.
29
Introduction
As an alternative to the LIST commands, you can obtain this information from the output of the database unload utility, IRRDBU00. See Using the Database Unload Utility Output Effectively on page 393.
Table 2. Commands to list profile contents Command LISTDSD Function Lists the contents of data set profiles and lets you determine which generic profile applies to a particular data set. The listing shows: v Owner of the profile v UACC v Date the profile was created v Users and groups that are authorized to access the data set v Your highest access authority to the data set the security label (if there is one), and other information v Other information See z/OS Security Server RACF Command Language Reference for a complete description of this listing. LISTGRP Lists the contents of group profiles. The listing shows: v Owner of the group profile v Superior group name v Users connected to the group v Subgroup names v Other information See z/OS Security Server RACF Command Language Reference for a complete description of this listing. LISTUSER Lists the contents of user profiles. The listing shows: v Owner of the profile v User name v Default group name v Groups that a user is connected to v Group authorities v Date the password or password phrase was last changed v Default security label v Other information See z/OS Security Server RACF Command Language Reference for a complete description of this listing.
30
Introduction
Table 2. Commands to list profile contents (continued) Command RACDCERT LIST Function Lists digital certificate information. For each digital certificate, the listing shows: v Serial number v Issuer's distinguished name v Status information v Up to 256 bytes of the subject's name v Label v Validity information v Key information v Other information For an example of this listing, see Figure 47 on page 584. RACDCERT LISTRING Lists key ring information. For each digital certificate in the ring, the listing shows: v Ring name v Label assigned to the certificate v Owner of the certificate (ID(name), CERTAUTH or SITE) v Usage within the ring v Other information For an example of this listing, see Figure 48 on page 585. RACDCERT LISTMAP Lists certificate name filter information. For each filter, the listing shows: v Label assigned to the certificate name filter v Trust status v Issuer's name filter, if applicable v Subject's name filter, if applicable v Criteria information, if applicable For examples of this listing, see Figure 54 on page 601 and Figure 61 on page 608. RACLINK LIST Lists user ID associations. For each association, the listing shows: v Type of association v Node and user ID v Whether password synchronization is enabled v Status of the association For an example of this listing, see Listing User ID Associations on page 434. RACMAP LIST Lists distributed identity filter information. For each filter, the listing shows: v Label assigned to the distributed identity filter v The distributed identity's user name v Registry name For examples of this listing, see Chapter 24, Distributed identity filters, on page 701.
Chapter 1. Introduction
31
Introduction
Table 2. Commands to list profile contents (continued) Command RLIST Function Lists the contents of profiles for general resources such as tape volumes, DASD volumes, IMS transactions, and terminals. The listing shows: v Owner of the profile v UACC v Date the profile was created v Users and groups that are authorized to access the resource v Your highest access authority to the resource v Security label v Other information See z/OS Security Server RACF Command Language Reference for a complete description of this listing.
The search criteria can include one or more of the following: v Profile names that contain a specific character string v Profiles for resources that have not been referenced for more than a specific number of days v Profiles that contain a level equal to the level you specify v Profiles with the WARNING indicator v Profiles that contain a specific security level, category, or label v Profiles to which another user has access Rule: Unless you have the SPECIAL attribute, you must have at least READ access authority for each profile whose name is listed as the result of your request.
32
Introduction
v Using the SEARCH command might slow the system's performance. Therefore, avoid using the SEARCH command during busy system times. v Investigate using the database unload utility for some of your profile searches. The database unload utility need not slow the system's performance and, in some cases, provides the same information as the SEARCH command. Question: Answer: How can I tell whether (or how) a data set is protected? The answer is complicated by a number of factors, including the presence of discrete and generic data set profiles, whether the data set is RACF-indicated, and the setting of such system-wide options as SETROPTS GENERIC(DATASET) and SETROPTS PROTECTALL. For more information, see Protecting Data Sets on page 162. How can I tell if (or how) a resource (other than a data set) is protected? Use the RLIST command, omitting both the GENERIC and NOGENERIC operands:
RLIST classname resource-name
Question: Answer:
For resources that have grouping classes (such as terminals, DASD volumes, and certain IMS and CICS classes), specify the related member class and the RESGROUP operand on the RLIST command:
RLIST member-class resource-name RESGROUP
This lists the profiles in the GTERMINL class that protect terminal T1. This example does not work for terminals protected by a generic member in the GTERMINL class. Question: Answer: How can I find the data sets that a user can access? Perform the following steps: 1. Find the names of the profiles the user has access to:
SEARCH USER(userid) NOMASK
The name of a discrete profile identifies which data set it protects. 2. For each generic profile listed in Step 1, list the cataloged data sets protected by the profile (assumes that the SETROPTS CATDSNS option is in effect):
LISTDSD DATASET(generic-profile-name) DSNS NORACF
Note: To find out how a user can access a particular data set (READ, UPDATE, and so forth), analyze the profile protecting the data set to determine how RACF authorization processing would respond to an access request. 3. Find the entries in the global access checking table for the DATASET class:
RLIST GLOBAL DATASET
Chapter 1. Introduction
33
Introduction
These entries allow all users access to data sets that match. Question: Answer: How can I find the general resources that a user can access? This must be done one class at a time. For each class, perform the following steps (which are similar to the steps for data sets): 1. Find the names of the profiles the user has access to:
SEARCH CLASS(classname) USER(userid)
The name of a discrete profile identifies which resource it protects. Tips: a. If the resource is in a class for which there can be resource group profiles (such as GTERMINL, GDASDVOL, and so forth), issue the SEARCH command twice, once for the member class and once for the grouping class. For example, for terminals:
SEARCH CLASS(TERMINAL) USER(userid) SEARCH CLASS(GTERMINL) USER(userid)
b. If the SEARCH command shows a profile that contains a RACF variable (indicated by one or more ampersands (&) in the name), you must list the RACFVARS profile that defines the variable. For example, if you see a profile named SAMPLE.&X.DATA, use the RLIST command to list the RACFVARS profile that defines the variable:
RLIST RACFVARS &X
2. RACF provides no direct way to determine which resources a particular general resource profile protects, as in issuing the LISTDSD command with the DSNS operand. This is because there is not generally a list, stored on the system, of the various existing resources that RACF can check. There would have to be such a list for each general resource classand there are well over 50 resource classes (from terminals to JES input devices to tape volumes). Thus, for any particular class, an auditor or administrator would have to consult with the profile owners (or system support) to determine exactly which resources a generic profile protects. 3. Find the entries in the global access checking table for the class:
RLIST GLOBAL classname
These entries allow all users access to data sets that match. Question: Answer: How can I find the user or group profiles a user can list or alter? Enter one of the following commands.
SEARCH CLASS(USER) USER(userid) SEARCH CLASS(GROUP) USER(userid)
How can I find out the members of a RACF group? Enter the following command.
LISTGRP groupname
How can I find out what groups a user belongs to? Enter the following command.
LISTUSER userid
34
Introduction
See z/OS Security Server RACF Command Language Reference for more detail on the output of these commands.
Chapter 1. Introduction
35
36
This topic outlines the planning that your installation should do before you install RACF. This document describes the security administrator's tasks as they relate to RACF. A successful security program, however, goes well beyond the relationship of the security administrator to the software security program your company has chosen to protect its computerized data. This topic discusses some of the early work you and other people must do before installing RACF.
37
The resultant security policy helps to ensure that a security implementation team can prepare a RACF implementation plan that is both realistic and consistent with the installation's security policy.
Auditor
38
Table 4. Participants of the security implementation team (continued) User type User Representative Other Users Responsibility The user representative should be a prospective group administrator who represents a major application areaperhaps a user support services or liaison function. Other users might be considered as members of the implementation team if appropriate. For example, other users who are involved with security include CICS, TSO, and database administrators and JES, MVS, and PSF system programmers.
The rest of this topic discusses some of the major responsibilities of the security implementation team.
39
implementation team does a risk evaluation of the installation's data to determine which data needs what level of protection. The task of protecting large quantities of data can take on significant proportions unless you can acquire this protection automatically. In the case of RACF, protecting data is quite simple and, after the controls are in place, practically free from administrative overhead.
You must determine the appropriate UACC, access lists, and other information (such as security classification, if used) for each profile. For resources that have unique security requirements, you must create discrete profiles. v You can also protect existing general resources (such as tape volumes or terminals) by using the RDEFINE command. If several resources in the same class have the same access requirements, you can use one profile to protect them. Not only does this save space, but it also saves administrative time. If the names of the resources contain some identical characters, you can usually create generic profiles whose names contain the *, **, or % character to protect the resources. For certain classes, such as terminals, DASD volumes, and others, you can create resource grouping profiles to protect resources whose names do not lend themselves to the use of the *, **, or % character. For any general resource class, you can define a RACF variable that can be used in the profile names in general resource classes. For more information about how to select the type of profile to protect a resource, see Choosing Among Generic Profiles, Resource Group Profiles, and RACFVARS Profiles on page 211. You must determine the appropriate UACC, access lists, and other information (such as security classification, if used) for each profile. For resources that have unique security requirements, you must create discrete profiles.
40
(See Choosing between Discrete and Generic Data Set Profiles on page 169 and Protection through Generic Profiles on page 167.) v Automatically-Created Discrete Profiles: RACF automatically protects new data sets by creating a discrete profile for each data set when the user creating them has the ADSP attribute or has specified the PROTECT=YES operand on the JCL DD statement that creates the data set. This automatic definition of discrete data set profiles occurs when the resource manager issues RACROUTE REQUEST=DEFINE. Notes: 1. ADSP and PROTECT=YES always cause the creation of a discrete profile, which is desirable for data sets that have unique access-authorization requirements. If your data sets do not have unique access-authorization requirements, consider using generic profiles. 2. By themselves, ADSP and PROTECT=YES allow only the creator of the data set to access the protected data. One way to allow other users access to the protected data set is to use the PERMIT command to place them (or groups of which they are members) on the access list of the profile with the desired access authority. Also, if the data set being created is a group data set, and the user creating it has the GRPACC attribute in that group, all members of the group are given UPDATE access authority to the group data set. v Automatic Profile Modeling: One way you can allow other users to access protected data is by using automatic profile modeling. When you use automatic profile modeling, the profile that protects a new user or group data set automatically has an access list copied from the model profile. Therefore, users defined in the access list of the model can access the newly created user or group data set. Automatic modeling is thus valuable for establishing the initial access list for newly created generic data set profiles. You can use automatic profile modeling for profiles that are created by the user's ADSP attribute, the PROTECT=YES operand of the JCL DD statement, or the ADDSD command.
Profile Modeling
Profile modeling enables RACF or an installation exit routine to copy information (such as the access list, owner, and logging options) from an existing (model) profile when defining a new profile. (The copied profile is not necessarily identical to the model profile. For a description of the differences, see Possible Changes to Copied Profiles When Modeling Occurs on page 42.) This copying greatly reduces the effort needed to create new profiles. Some examples of using profile modeling are: v A user can copy information from an existing profile into a new profile by using the FROM operand (and related operands) on the ADDSD or RDEFINE commands. RACF uses the specified profile as a model when creating the new profile. However, profile segment information (CICS, DFP, DLFDATA, LANGUAGE, OPERPARM, SESSION, TSO, WORKATTR, and so on) is not copied to the new profile. v A user can copy the access list from an existing profile into another existing profile using the FROM operand (and related operands) on the PERMIT command. v For data sets, an installation can use automatic profile modeling. A user with the SPECIAL attribute can specify MODEL(USER), MODEL(GROUP), or MODEL(GDG) on the SETROPTS command. These operands specify that RACF is to use a model data set profile for selected users, groups, or GDG data sets.
41
If the SETROPTS MODEL options are in effect, the MODEL operands of the ADDUSER, ADDGROUP, ALTUSER, and ALTGROUP commands specify the data set profile that is to be used as a model from which to copy information into new data set profiles. For more information on this topic, see Automatic Profile Modeling for Data Sets on page 175. v If the preceding methods are not sufficient, an installation can also use a REQUEST=DEFINE exit routine to supply either the name of a model profile or the profile itself.
42
43
Batch Users: Batch users might not already have user IDs. Here, you might consider assigning user IDs based on personnel number or, if appropriate, group name. If it is not clear what to use as a user ID, start by considering group names. Again, examine what already exists: 1. Is there an existing organizational structure that has groups with suitable abbreviations? Can the existing structure be used as is, or modified to suit? 2. What conventions already exist in job statements? It is common for the first few characters of the job names to be meaningful in terms of an application name, project, department, or some other such functional group. Could these be used as group names, or even a user ID? Are there any other fields in the job statement (for example, the account number or programmer name) that could be used? That is, could you determine from a job statement to whom or to what functional group the job belongs? (Note: The ability to derive a user ID or group from existing job statement information can be a significant migration aid. It could help you avoid the administrative effort of adding the USER= operands to existing job statements.) 3. Look at data set names to determine the local naming conventions for data sets. Can you determine to which functional group a data set belongs by looking at the name? Can you say This is an IMS database, or This data set belongs to the payroll group? It is likely that several naming conventions already exist. RACF options enable you to handle most existing variations. Whatever you choose, consider carefully the longer term security objectives. Adding new groups and users to an existing structure presents few administrative problems. Even deleting users and groups can be done without much difficulty. However, a major reassignment of user IDs and group names, although possible, is best avoided by careful initial selection.
44
Organizing
SYS1
GROUP3 USER2 USER2.DATA Y .DATA USER3 USER3.DATA U3A in class TIMS GROUP2.DATA USER4 Z.DATA USER4.DATA
Figure 4. User and group relationships
GROUP2
In Figure 4: v The users' default groups are their owning groups. v Groups X and Y exist and are owned by GROUP1. v Group Z exists and is owned by GROUP2. v The highest level group, SYS1, owns subgroups GROUP1 and GROUP3 and the user IBMUSER. v GROUP1 owns subgroup GROUP2 and the users USER1 and USER2. v USER1 is connected to GROUP1 with group-SPECIAL authority. This gives USER1 (who is a RACF administrator) control over GROUP1's resources and resources in GROUP1's scope, but not over GROUP3's resources. Note: If you run with list-of-groups checking inactive (that is, with the SETROPTS NOGRPLIST option in effect), the scope of USER1's group-SPECIAL
Chapter 2. Organizing for RACF Implementation
45
Organizing
attribute is limited to his default group or the group he specified when logging on, and the groups below that group in the hierarchy. For more information on list-of-groups checking, see Activating List-of-Groups Checking (GRPLIST Option) on page 120.
v If you want them to be able to reduce their change intervals (for passwords and password phrases), how to use the PASSWORD (or PHRASE) command. v How to use the LISTUSER command to list their own profile information. Users of RRSF Functions: RRSF users need to understand RRSF network concepts and know RRSF node names. Depending on your security plan, some RRSF users might also need to know how to: v Direct commands v Synchronize passwords v Establish and approve user ID associations using the RACLINK command. Users Who RACF-Protect General Resources: Depending on your security plan, users might work with profiles in the TAPEVOL, JESSPOOL, or other general resource classes. These users must know: v How to define and modify profiles in the general resource class, including whether generic profiles are allowed in the class v What user IDs and group names they can use when giving access to the profiles v The meaning of the access authorities (such as NONE, READ, and WRITE) in the general resource class v What your installation's security policy is towards specific security enhancements like security levels, categories, and security labels
46
Organizing
In addition to the education needed for administrators who are using generic profiles, even more education is required on generic profiles for those who are switching to enhanced generic naming (that is, from the SETROPTS NOEGN to the SETROPTS EGN option). For more information, see Defining Profiles for General Resources on page 207 and the topics of this document that describe how to use the class. Technical Support Personnel: Users who install the RACF component of the Security Server must be familiar with migration planning considerations and the steps that are required to install or reinstall RACF. For complete RACF information, see all of the following z/OS documents: v z/OS Migration v z/OS Planning for Installation v z/OS Summary of Message and Interface Changes. Users who maintain the RACF database must be familiar with the RACF utilities, which are described in z/OS Security Server RACF System Programmer's Guide. Group Administrators: Group administrators either have one of the group authorities, have a group attribute (such as group-SPECIAL), or own group resources. These users need to use the information in this document and z/OS Security Server RACF Command Language Reference. RACF Auditors: Users with the AUDITOR attribute should see z/OS Security Server RACF Auditor's Guide for information on using RACF for auditing. Note that if ISPF and TSO/E are installed, the user can use the RACF ISPF panels to perform most of the same functions as the RACF commands. Using the RACF ISPF panels frees users from the need to know the details of command syntax. (The ISPF panels cannot be used to activate or deactivate mixed-case passwords.) Note: You can ask a user with the AUDITOR attribute to issue the SETROPTS command with the CMDVIOL operand. This causes RACF to log all of the RACF command violations that it detects. The auditor can then use the RACF report writer to produce a printed audit trail of command violations. From the report, you can determine how many command violations are occurring and which users are causing the violations. A significant number of command violations, especially when RACF is first installed, might mean users need more education. The report can also help you to identify any specific users who are persistently trying to alter profiles without the proper authority. z/OS Security Server RACF Command Language Reference contains detailed information on the RACF commands used. Programmers Writing Unauthorized Applications: Programmers writing unauthorized applications can use the RACROUTE macro to request many security-related services, including controlling access to protected resources (RACROUTE REQUEST=AUTH). Note: Your installation can create installation-defined resource classes. If your installation creates profiles in those classes, an application can issue a RACROUTE REQUEST=AUTH to check if a user has sufficient authority to complete a user action. How much authority is needed for any particular user action is defined by the way in which the application invokes the
Chapter 2. Organizing for RACF Implementation
47
Organizing
RACROUTE REQUEST=AUTH macro. For more information on creating installation-defined classes, see z/OS Security Server RACF System Programmer's Guide. Programmers Writing Authorized Applications: Programmers writing authorized applications (that is, APF-authorized programs) can use the RACROUTE macro to request security-related services, including: v Identifying and verifying users (RACROUTE REQUEST=VERIFY) v Replacing or retrieving fields in RACF profiles (RACROUTE REQUEST=EXTRACT) For more information on using the RACROUTE macro, see z/OS Security Server RACROUTE Macro Reference.
Summary
As an overall strategy in organizing for RACF implementation, the implementation team should strive for a policy of security by evolution, rather than revolution. Wherever transparency can be used, it should be. In some cases, you must actively solicit management support. You should examine organizational structures to establish the most efficient profile ownership structures, educate users with the level of information they need to perform their assigned functions, and prepare guidelines for the various administrators. Finally, you and the implementation team should prepare an implementation plan to guide the work of the team. Table 5 provides a checklist for the implementation team to use while preparing the implementation plan. Note that this checklist represents only a starting point; it is not meant to be exhaustive.
Table 5. Checklist for implementation team activities Item Objectives Comments h What are the installation's security objectives? h Over what time frame are they to be achieved? h Is the position of management clear on all objectives? h Is the statement of security policy clear and complete for all objectives? Protection h What resource classes are to be protected? h What resources within these classes are to be protected? h Can protection be phased in? h Which resources must be protected, and when? Naming conventions h What installation data set or general resource naming conventions already exist? h Are changes necessary? h Does implementing RACF provide an opportunity to enforce naming conventions? h If so, can they be enforced across the entire installation or only over a subset of the installation? h Immediately or eventually?
48
Organizing
Table 5. Checklist for implementation team activities (continued) Item Organization Comments h Can the definition of RACF groups (and their associated users) be mapped to the existing organizational structure? h What changes to the organizational structure, if any, are necessary? h How is RACF to be controlled and administered? h Which functions are to be retained centrally? h Which functions are to be delegated, wholly or in part? h Which users should have what RACF attributes? User and group names h What names are to be established for groups and user IDs? h Which groups and users are to be defined to RACF? h Which user verification technique is to be used? Transparency h Try to make RACF transparent to your users wherever possible. h Which resources can be protected by generic profiles? h Which resources require discrete profiles? h Which users and groups should be placed in the access lists, and with what access authorities? h What deviations from strict user accountability are to be allowed, and for how long? RACF tailoring Authorizations Recovery Violation procedures Subsystems Storage Management Subsystem (SMS) h Which RACF exits are to be used, if any, and under what conditions? h What authorizations are required for the program properties table (PPT), APF libraries, and similar items? h What recovery procedures must be established? h What security procedures for logging, reporting, and auditing must be established? h What are the security requirements for IMS, CICS, and other subsystems? h Is your data managed by SMS? h If it is, what is required for your SMS constructs, application IDs, and data set owners? h What is the plan for testing the RACF implementation? h What is the plan for preparing user documentation and other educational material? h Should there be a newsletter for most users and more detailed education for group administrators? Install RACF h What RACF options are to be used? h What is the plan for installing RACF? Monitor h After beginning to define groups, users, generic profiles, and data for a pilot group, how will progress against your implementation plan be monitored? h What procedures will be established to ensure that future applications receive the appropriate security considerations?
49
Organizing
50
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52 52 53 53 53 53 54 54 54 55 55 55 56 56 56 57 57 58 58 58 59 59 59 60 61 61 61 62 63 64 66 67 68 68 68 69 69 70 70 70 70 71 72 73 73 74 75 75 76 76 76 76 76 76 77
51
Types of Groups
When you define a group, you should consider the basic purpose of the group. Is it an administrative group, a holding group, a data control group, a functional group, or a user group? When setting up RACF groups, keep in mind that the maximum number of users that you can connect to any one group is approximately 5900. See the topic on determining storage requirements for profiles in z/OS Security Server RACF Macros and Interfaces for information about how to determine the exact maximum number. For groups that might become large, and for which a quick listing of members is not needed, you might want to consider defining the groups using the UNIVERSAL operand of the ADDGROUP command. Universal groups might be appropriate for holding groups and other types of groups. See Defining Large Groups with the UNIVERSAL Attribute on page 56.
52
Administrative Groups
You can create a group simply as an administrative convenience. For example, you might create a group to represent an organizational entity, such as a region or a division. With RACF delegation, you can create this kind of group for each group administrator. Operating from such groups, the group administrators can then define other groups needed by their local users.
Holding Groups
A popular technique that retains user definition centrally, yet allows the effective use of group administrators, is to establish a holding group. You define all users centrally and initially connect them to a group named HOLD with the minimum of authorities. HOLD does not appear in any access lists, and therefore has no real significance to the user. Group administrators, to whom you give CONNECT (but not JOIN) authority, can connect the appropriate users to the groups under their control and change the users' default group name as appropriate. This technique allows the installation to assign correct account numbers and control other installation considerations while allowing flexibility in the grouping of the user population. Note: A group cannot contain more than approximately 5900 users. Therefore, if you have more than this number of users, you cannot assign them to a single holding group. Also, you should be aware that extremely large groups can have performance implications for the RACF database. For more information, see z/OS Security Server RACF System Programmer's Guide.
Functional Groups
A group can represent a functional area of the installation for the purpose of data sharing. For example, a financial analyst might need to access a variety of resources across many groups, such as accounting, payroll, marketing, and others. Of course, the owners of each resource could permit the financial analyst to access their resources by placing the analyst's user ID on an access list. But if a new financial analyst takes over the job, it is then necessary to add the new user ID to each RACF profile. Likewise, the RACF profiles must be updated when the analyst no longer has a need to access the data. This arrangement involves a great deal of unnecessary activity by the resource owners. Instead, you can create a group that represents the financial analyst function and permits access to the data defined to the group. Access to the entire range of data can then be managed by controlling the user population in the defined group. For those cases involving one-time access, owners of the needed data would simply PERMIT access by the defined group. Where appropriate, the group name could be included in profile access lists to ensure automatic availability of needed data to the financial analyst group. New financial analysts could be connected to the
Chapter 3. Defining Groups and Users
53
User Groups
You can define a group to serve as an anchor point for users who otherwise have no common access requirements. For example, engineers and scientists, as well as other problem-solving users, might have no need to access application-related data in the system. Their only interest might be in their own personal data. You can place this set of users in a single group that has no access to other data. Also, you can define groups based on access level. For example, if PAY.DATA is a RACF-defined data set, two groups could be defined, PAYREAD and PAYUPDTE, both of which would appear in the PAY.DATA access list, but with READ and UPDATE access, respectively. Any users requiring access would be connected, as appropriate, by the group administrator.
Group Profiles
When you define a group to RACF, you create a group profile in the RACF database. A group profile consists of segments: a base segment and optionally, CSDATA, DFP, OMVS, OVM, and TME segments. Each segment of a group profile consists of fields. When you define a group's profile (using the ADDGROUP command) or change a group's profile (using the ALTGROUP command), you can specify the information contained in each field of each segment. To define or change information in a non-base segment of a group profile, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access control. You can list the contents of an entire group profile or the contents of individual segments of the group profile using the LISTGRP command. To display information in a non-base segment of a group profile, you must have the SPECIAL or AUDITOR attribute or at least READ authority to the segment through field-level access control. For more information, see Field-level access checking on page 225 and Controlling Access to the DFP Segment on page 524. For information on how to use the ADDGROUP, ALTGROUP, and LISTGRP commands, see z/OS Security Server RACF Command Language Reference.
TERMUACC or NOTERMUACC For RACF-protected terminals: Indicates whether to allow access based on the UACC of the terminal profile DATA Installation-defined data
54
See z/OS Security Server RACF Command Language Reference for information about the authorization required to create, change, or view information in the base segment.
MGMTCLAS Group's default management class for attributes used in managing a data set after it is allocated STORCLAS Group's default storage class for logical storage attributes
To define or change information in the DFP segment of a group profile, you must have the SPECIAL attribute or at least UPDATE authority to the segment by way of field-level access control. To display information in the DFP segment of a group profile, you must have the SPECIAL attribute or at least READ authority to the segment by way of field-level access control. For more information, see Controlling Access to the DFP Segment on page 524.
To define or change information in the OMVS segment of a group profile, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access control.
55
To define or change information in the OVM segment of a group profile, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access control. To display information in the OVM segment of a group profile, you must have the SPECIAL attribute or at least READ authority to the segment through field-level access control.
To define or change information in the TME segment of a group profile, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access control. To display information in the TME segment of a group profile, you must have the SPECIAL attribute or at least READ authority to the segment through field-level access control. The TME segment fields are intended to be updated only by the Tivoli product, which manages updates, permissions, and cross references. Security administrators should directly update TME fields only on an exception basis.
56
57
58
Attention If the user's membership in the group allows the user to create profiles, and the user becomes the OWNER of such profiles, the user might still have access to the profiles after the revoke date.
59
Group Authorities
Each user in a group requires a level of group authority for that group. If a user is connected to several groups, the user has a level of group authority for each group. The group authorities are described in Table 6.
Table 6. Group authorities Authority USE Functions permitted A user with the USE group authority can enter the system under control of that group, and can access resources (such as data sets, terminals, and others) to which the group is authorized. A user with the CREATE group authority can allocate new group data sets, RACF-protect group data sets, and control access to the profiles he or she has created. However, unless the user has access other than the CREATE group authority itself, the user cannot delete the data sets. CREATE group authority includes the privileges of USE group authority. CONNECT All of the above, A user with CONNECT group authority can connect users who are already defined to ALTUSER RACF to the group and assign USE, CREATE, or CONNECT group authority to users in the group. CONNECT CONNECT group authority includes the privileges of both the USE and CREATE group authorities. plus: GROUP, AUTHORITY, or UACC operands only All operands except SPECIAL/NOSPECIAL, OPERATIONS/NOOPERATIONS, and AUDITOR/NOAUDITOR Groupname operand only All operands RACF commands permitted LISTDSD, RLIST
CREATE
ADDSD command for group data set profiles (all operands except NOSET)
LISTGRP REMOVE
JOIN
A user with JOIN group authority can define new users and groups to RACF and assign any level of group authority to new users (including the JOIN authority). To define new users, the user with JOIN authority must also have the CLAUTH user attribute for the USER class. When a user defines a new group, it becomes a subgroup of the group in which the user has JOIN authority. JOIN authority includes the privileges of the USE, CREATE, and CONNECT group authorities.
All of the above, plus: ADDGROUP ADDUSER All operands All operands except OPERATIONS, SPECIAL, and AUDITOR SUPGROUP operand only (to change the superior group of a group, a user must have JOIN authority in one group and be the owner of or be connected with the group-SPECIAL attribute to another group) All operands Groupname operand only
ALTGROUP
DELGROUP LISTGRP
60
61
3. Connect appropriate users to the new group. v Most users should have USE group authority. v A few users might need a group authority higher than USE group authority (such as CONNECT). For example, to connect department members SUE, LIZ, and GENE to the DEPTA group and also give LIZ and SUE authority to add new users to the group, enter:
CONNECT (SUE LIZ) GROUP(DEPTA) OWNER(DEPTA) AUTHORITY(CONNECT) CONNECT GENE GROUP(DEPTA) OWNER(DEPTA)
These commands assign ownership of each connection to group DEPTA rather than to the issuer of the CONNECT command (the default). Because GENE's authority defaults to USE, GENE can use any of the resources (for example, data sets) that belong to group DEPTA. 4. If the group is to own group data sets, do the following: v Create a top generic profile for the group data sets in the DATASET class. For example:
ADDSD DEPTA.** UACC(NONE)
v If appropriate, assign the GRPACC user attribute to a member of the group. (However, before assigning the GRPACC user attribute, see Table 17 on page 222.) 5. If the group requires access to RACF-protected resources, give the group the required access using the PERMIT command. For example:
PERMIT RACF.PROTECT.DATA ID(DEPTA) ACCESS(READ)
6. If the group requires access to z/OS UNIX resources, alter the profile to include an OMVS segment with an z/OS UNIX group identifier (GID). For example:
ALTGROUP DEPTA OMVS(GID(100))
62
As specified, the CLIST operand generates a CLIST that you can run to list all of the information in the data set profiles. This can help you assess whether to use the profiles as models. 2) You can use the FROM operand on the ADDSD command to create new profiles modeled on the old profiles. 5. To research the following steps, use the IRRRID00 utility to list the occurrences of the group name in the RACF database. For information, see Using the RACF remove ID (IRRRID00) utility on page 410. 6. For each subgroup of the group to be deleted, change the subgroup's superior group to an existing group.
ALTGROUP subgroupname SUPGROUP(new-superior-groupname)
7. If the group is the owner of any profiles (the group's group name was specified on the OWNER operand), change the owner of the profiles to a new group or user. Tip: Use the appropriate command for changing profiles, such as ALTUSER, ALTGROUP, ALTDSD, or RALTER. 8. Remove the group from any access lists in which the group's group ID is specified. Tip: Use the DELETE operand on the PERMIT command. 9. After all occurrences of the group name are deleted from the RACF database, use the DELGROUP command to delete the group profile.
Defining Users
As a general objective, all users should be defined to RACF. Users who are not defined to RACF can use the system virtually unimpeded, unless, of course, they attempt to access data to which they are unauthorized. The users you must initially define are those you have selected for the pilot project and the central core of personnel who maintain and operate the system itself. Other users can then be defined as determined by convenience and the priority of their security needs.
63
User Profiles
When you define a user to RACF, you create a user profile in the RACF database. A user profile consists of a base segment and, optionally, any of the following segments: CICS, CSDATA, DCE, DFP, KERB, LANGUAGE, LNOTES, NDS, NETVIEW, OMVS, OPERPARM, OVM, PROXY, TSO, and WORKATTR. Each segment of a user profile consists of fields. When you define a user's profile (using the ADDUSER command) or change a user's profile (using the ALTUSER command), you can specify the information contained in each field of each segment of the profile. To define or change information in a non-base segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking.
64
To issue this command, you must have one of the following authorities: v The SPECIAL attribute v Sufficient authority to resource IRR.DIGTCERT.LIST in the FACILITY class: READ access to IRR.DIGTCERT.LIST to list this information for yourself UPDATE access to IRR.DIGTCERT.LIST to list this information for others When you use the RACDCERT command to add a certificate name filter and associate it with a specified RACF-defined user ID, information about the definition is added to the user profile. To see the certificate name filter definitions, enter:
RACDCERT LISTMAP
To issue this command, you must have one of the following authorities: v The SPECIAL attribute v Sufficient authority to resource IRR.DIGTCERT.LISTMAP in the FACILITY class: READ access to IRR.DIGTCERT.LISTMAP to list this information for yourself UPDATE access to IRR.DIGTCERT.LISTMAP to list this information for others When you use the RACDCERT command to add a certificate key ring and associate it with a specified RACF-defined user ID, information about the definition is added to the user profile. To see the ring definitions, enter:
RACDCERT LISTRING
To issue this command, you must have one of the following authorities: v The SPECIAL attribute v Sufficient authority to resource IRR.DIGTCERT.LISTRING in the FACILITY class: READ access to IRR.DIGTCERT.LISTRING to list this information for yourself UPDATE access to IRR.DIGTCERT.LISTRING to list this information for others When you use the RACLINK command to establish a user ID association, information about the association is added to the user profile. To see the user ID associations, enter:
Chapter 3. Defining Groups and Users
65
For more information on how to use the ADDUSER, ALTUSER, LISTUSER, RACDCERT, and RACLINK commands, see z/OS Security Server RACF Command Language Reference.
NOPASSWORD Gives the user the PROTECTED attribute when the user has the NOPHRASE and NOOIDCARD attributes PHRASE NOPHRASE User's password phrase Indicates that the user cannot enter the system using a password phrase and when the user also has the NOPASSWORD and NOOIDCARD attributes, gives the user the PROTECTED attribute Date on which RACF prevents the user from having access to the system Date on which RACF lets the user have access to the system again Default universal access authority for resources that the user defines Days of the week and hours of the day during which the user has access to the system
ADDCATEGORY User's installation-defined security category SECLEVEL CLAUTH SPECIAL AUDITOR OPERATIONS Gives the user the system-wide OPERATIONS attribute DATA ADSP GRPACC MODEL Installation-defined data Indicates that all permanent data sets the user creates are to be RACF-protected with discrete profiles Indicates that other group members can have access to any group data set the user protects with a data set profile Name of the data set model profile to be used when creating new data set profiles, either generic or discrete User's installation-defined security level Classes in which the user can define profiles Gives the user the system-wide SPECIAL attribute Gives the user the system-wide AUDITOR attribute
66
RESTRICTED Indicates that global access checking, the ID(*) entry on the access list, and the UACC will not be used to allow this user access to a protected resource. To prevent a restricted user from gaining access to a z/OS UNIX file system resource unless specifically authorized, see Controlling access to file system resources for restricted users on page 560. SECLABEL CERTNAME CERTLABL CERTPUBK CERTSJDN User's default security label The names of the profiles in the DIGTCERT class that are associated with this RACF user ID The certificate labels for the profiles in the DIGTCERT class that are associated with this RACF user ID The public key associated with a public key certificate. This is the BER-encoded public key as specified in the certificate. The subject name of the entity to whom the certificate is issued. This is the BER-encoded format of the subject's distinguished name as contained in the certificate. Note: You can only add or delete the data in the CERTNAME, CERTLABL, CERTPUBK and CERTSJDN fields by using the RACDCERT command. The ADDUSER or ALTUSER commands have no effect on these fields. NMAPNAME The names of the profiles in the DIGTNMAP class containing certificate name filters that are associated with this RACF user ID NMAPLABL The labels for the certificate name filters that are associated with this RACF user ID
See z/OS Security Server RACF Command Language Reference for information about the authorization required to create, change, or view information in the base segment.
67
To define or change information in the CICS segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the CICS segment of a user profile, you must have the SPECIAL attribute or at least READ authority to the segment through field-level access checking. For more information, see Field-level access checking on page 225.
AUTOLOGIN Single signon processing (YES or NO) As RACF administrator, you need to work with the DCE administrator to define RACF profiles to use these features correctly.
MGMTCLAS User's default management class for attributes used in managing a data set after it is allocated STORCLAS User's default storage class for logical storage attributes
To define or change information in the DFP segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to
68
MAXTKTLFE User's maximum ticket life To define or change information in the KERB segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the KERB segment of a user profile, you must have the SPECIAL attribute, the AUDITOR attribute, or at least READ authority to the segment through field-level access checking. For more information, see z/OS Integrated Security Services Network Authentication Service Administration.
SECONDARY User's alternate national language, if different from the installation default To define or change information in the LANGUAGE segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the LANGUAGE segment of a user profile, you must have the SPECIAL attribute or at least READ authority to the segment through field-level access checking. For more information, see Field-level access checking on page 225.
69
To define or change information in the LNOTES segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the LNOTES segment of a user profile, you must have the SPECIAL attribute, the AUDITOR attribute, or at least READ authority to the segment through field-level access checking. For more information, see RACF Support for NDS and Lotus Notes for z/OS on page 293.
To define or change information in the NDS segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the NDS segment of a user profile, you must have the SPECIAL attribute, the AUDITOR attribute, or at least READ authority to the segment through field-level access checking. For more information, see RACF Support for NDS and Lotus Notes for z/OS on page 293.
NGMFADMN Indicates whether this operator can use the NetView graphic monitor facility OPCLASS Class of the operator
70
CPUTIMEMAX User's z/OS UNIX RLIMIT_CPU (maximum CPU time) FILEPROCMAX User's z/OS UNIX maximum number of files per process HOME MEMLIMIT User's z/OS UNIX initial directory path name User's z/OS UNIX non-shared memory size
MMAPAREAMAX User's z/OS UNIX maximum memory map size PROCUSERMAX User's z/OS UNIX maximum number of processes per UID PROGRAM User's z/OS UNIX program path name, such as a default shell program
SHMEMMAX User's z/OS UNIX maximum shared memory size THREADSMAX User's z/OS UNIX maximum number of threads per process UID User's z/OS UNIX user identifier
To define or change information in the OMVS segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To allow authorization to the entire OMVS segment of a user profile, the user would need authority to the USER.OMVS.* profile in the FIELD class. Individual fields in the OMVS segment can be defined such as USER.OMVS.UID. You can allow users to change their own HOME or PROGRAM values by creating USER.OMVS.HOME and USER.OMVS.PROGRAM in the FIELD class and permitting &RACUID to the profiles. For more information, see Defining user identifiers (UIDs) on page 539.
AUTH CMDSYS
71
LOGCMDRESP Indicates whether command responses received by the operator are to be recorded on the hardcopy log MFORM MIGID Format in which messages are displayed Indicates whether the operator is to receive a migration console ID. Ignored when each system sharing the RACF database runs z/OS Version 1 Release 8 or higher. Events that the operator can monitor Name of the system from which the operator receives unsolicited messages Routing codes that the operator receives Maximum amount of virtual storage in megabytes for message queuing Indicates whether the operator should receive messages that are considered undeliverable. Ignored when each system sharing the RACF database runs z/OS Version 1 Release 8 or higher. Indicates whether a console is to receive messages directed to unknown console IDs
UNKNIDS
To define or change information in the OPERPARM segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the OPERPARM segment of a user profile, you must have the SPECIAL attribute or at least READ authority to the segment through field-level access checking. For more information, see Field-level access checking on page 225.
72
HOLDCLASS Default value for the user's hold class SYSOUTCLASS Destination ID for the user's SYSOUT data sets PROC MAXSIZE SIZE SECLABEL UNIT USERDATA User's default logon procedure User's maximum region size User's default region size Security label specified when the user previously logged on to TSO Default device used for allocations Optional user data
If a user logs on to TSO and you have defined a TSO segment in the user's profile, TSO checks the user's authority to use certain TSO resources such as account numbers and logon procedures. If the user is authorized to use a resource such as an account number, TSO continues building a session for the user. Otherwise, TSO prompts the user for a valid account number. If a user logs on to TSO and you have not defined a TSO segment for that user, TSO checks the SYS1.UADS data set for the information it needs to build a session. If TSO does not find an entry for the user in SYS1.UADS, the user is denied access to the system. You can move TSO user attribute information from SYS1.UADS to the RACF database. (SYS1.UADS contains an entry for each TSO user that describes the attributes that regulate the user's access to the system.) When you move this TSO information into the RACF database, it is stored in the TSO segment of the user's profile. When a user logs on to TSO, it uses the information contained in the TSO segment to build a session for the user.
73
74
To define or change information in the WORKATTR segment of a user profile, including your own, you must have the SPECIAL attribute or at least UPDATE authority to the segment through field-level access checking. To display information in the WORKATTR segment of a user profile, you must have the SPECIAL attribute or at least READ authority to the segment through field-level access checking. For more information, see Field-level access checking on page 225.
75
User Attributes
User attributes are extraordinary capabilities, limitations, or environments that can be assigned to a user either all of the time or when the user is connected to a specific group or groups. When an attribute is to apply all of the time, it is specified at the system level and is called a user attribute. When an attribute is to apply only to a specified group or groups, it is specified at the group level and is called a group-related user attribute. For example, user attributes that you specify in an ADDUSER or ALTUSER command are stored in the user's profile and are in effect regardless of the group to which the user is connected. The user attributes are: SPECIAL
76
77
78
To reduce the number of users who have the OPERATIONS attribute at the system level (and therefore have the attribute for all resources in the system), you can assign the OPERATIONS attribute at the group level. When you do, the group-OPERATIONS user's authority is limited to resources within the scope of the group. For more information, see The Scope of Authority for the Users with Group-Level Attributes on page 83 and User Attributes at the Group Level on page 82. OPERATIONS and DASDVOL Authority: If a person needs to perform maintenance activities on DASD volumes, it is more efficient (for RACF processing) and better (for limiting the resources the person can access) to give the person authority to those volumes using the PERMIT command than to assign the person the OPERATIONS or group-OPERATIONS attribute. To give the person authority to those DASD volumes, define the volumes to RACF and add the person to the access list with the access authority required by the particular resource manager (such as DFSMSdss). For more information, see DASD Volume Authority on page 185. If you use DFSMSdss, you can designate the user as a DFSMSdss storage administrator. This method has certain advantages over both OPERATIONS and DASDVOL authorization. For more information, see DFSMSdss Storage Administration on page 186.
79
80
Only the owner of a user's profile (or a user who has the SPECIAL attribute) can assign the REVOKE attribute.
81
Attention A DASD data set is defined to RACF at allocation. If the data set disposition is changed at deallocation (through dynamic deallocation), the change is not reflected in the RACF database. For example, if the data set disposition is DELETE at allocation and KEEP at deallocation, the data set is not automatically RACF-protected. However, RACF performs generic profile checking if you have activated this option for the DATASET class by specifying GENERIC(DATASET) on the SETROPTS command.
82
83
The following two figures show the scope of authority of a group-SPECIAL user. Figure 5 on page 86 shows a typical authority structure containing three major groups: Groups 1, 2, and 3.
84
85
SYS1
GROUP1
IBMUSER
GROUP1.DATA
GROUPX
GROUPX.DATA
GROUP3
USER2
USER2.DATA
GROUPY
GROUPY .DATA Connect
USER3
USER3.DATA GROUP2.CLIST
USER4
USER4.DATA U4A in class TIMS
GROUP2
GROUP2.DATA
USER5
GROUPZ
GROUPZ.DATA
USER5.DATA
USER6
USER6.DATA
Figure 5. Group-level authority structure
86
SYS1
Group-SPECIAL USER1
Connect
GROUP1
IBMUSER
GROUP1.DATA
GROUPX
GROUPX.DATA
GROUP3
USER2
USER2.DATA
GROUPY
GROUPY .DATA Connect
USER3
USER3.DATA GROUP2.CLIST
USER4
USER4.DATA U4A in class TIMS
GROUP2
GROUP2.DATA
USER5
GROUPZ
GROUPZ.DATA
USER5.DATA
USER6
USER6.DATA
Figure 6. Scope of authority for a group-SPECIAL user
87
88
89
Note that on the RDEFINE command, TIME(ANYTIME) is the default. The WHEN operand on these commands (for both users and terminals) allows you to specify individual days and specific times within these days. RACF also provides support for installations that have terminals in different time zones by associating with each terminal its location relative to the local time where the processor complex on which RACF is executing is located. Note: RACF does not provide any specific support for daylight savings time. If the installation changes the value of the local time (as given by the TIME macro) to accommodate daylight savings time, RACF automatically adjusts its time calculations accordingly. However, if any terminals are located in an area that does not follow the same time adjustment, you must adjust the terminal information. For more information on the WHEN operand, see the command descriptions in z/OS Security Server RACF Command Language Reference.
90
A protected user ID will have the PROTECTED attribute displayed in the output of the LISTUSER command. To remove the PROTECTED attribute from an existing user ID, use the ALTUSER command to assign a password:
ALTUSER SERVER8 PASSWORD(password)
91
A restricted user ID has the RESTRICTED attribute displayed in the output of the LISTUSER command.
92
93
Users can still use their passwords on both uplevel and downlevel systems, and use their password phrases on uplevel systems. The passwords of users with a password phrase can be successfully changed on uplevel systems, or in the following ways on downlevel systems: Users change their own passwords at logon time, depending on the application. An authorized user can change the passwords by issuing the ALTUSER command from the uplevel system.
94
95
6. Create a top generic profile for the user in the DATASET class using the ADDSD command. For example, if the user's user ID is STEVEH, enter:
ADDSD STEVEH.** UACC(NONE)
7. If users at your installation manage their own resource profiles, give them the information they need. For example, they might need to use portions of z/OS Security Server RACF Command Language Reference. 8. If the user is to define general resource profiles, (as, for example, an administrator might), give the user the CLAUTH attribute in the appropriate classes and the information needed for working with those profiles, for example, the JESSPOOL class. Note: If the SETROPTS GENERICOWNER option is in effect, you must create a top profile for the user in the JESSPOOL class, make the user the owner of the profile, and give the user CLAUTH(JESSPOOL). For more information, see Letting Users Create Their Own JESSPOOL Profiles on page 507 and Defining Profiles for SYSIN and SYSOUT Data Sets on page 505. 9. If needed, give the user access to RACF-protected resources. This can be done using one or both of the following: v Connect the user to groups that have the same access requirements as this user, using the CONNECT command. For example, to allow user STEVEH to have access to his department's resources (that is, to resources belonging to group DEPTA), enter:
CONNECT STEVEH GROUP(DEPTA) OWNER(DEPTA)
By default, the command gives USE authority to STEVEH. v If the user requires specific access to RACF-protected resources (beyond that permitted by connecting the user to groups), give the user the access required, using the PERMIT command. Consider the following: If the user is a TSO user, remember the necessary TSO resources (such as TSOPROC). If data sets are managed by SMS, remember the MGMTCLAS and STORCLAS classes. For example, to give user STEVEH permission to use a customized TSO logon procedure called CUSTPROC (whose profile in the TSOPROC general resource class has already been defined with a universal access of NONE), enter:
PERMIT CUSTPROC CLASS(TSOPROC) ID(STEVEH) ACCESS(READ)
96
As specified, the CLIST operand generates a CLIST that you can run to list all of the information in the data set profiles. This can help you assess whether to use the profiles as models. 2) You can use the FROM operand on the ADDSD command to create new profiles modeled on the old profiles. If the user has profiles in other classes (such as the JESSPOOL, JESJOBS, and NODES classes) that might have the user's user ID in their profile names, use the FILTER operand on the SEARCH command. For example:
SEARCH CLASS(classname) FILTER(**.userid.**) CLIST(RDELETE classname)
6. To research the following steps, use the IRRRID00 utility to list the occurrences of the user ID in the RACF database. For information, see Using the RACF remove ID (IRRRID00) utility on page 410. 7. If the user is the owner of group data set profiles (the user's user ID was specified on the OWNER operand on the ADDSD or ALTDSD command for the group data set profile), decide which user or group is to be the new owner of the group data set profiles. Tip: If the user is the owner of any group data set profiles, specify the new owner on the OWNER operand of the REMOVE command. 8. If the user is a TSO user and has a SYS1.UADS entry, work with the TSO administrator to delete the entry. 9. If the user is a CICS user and has an entry in the CICS signon table, work with the CICS administrator to delete the entry.
Chapter 3. Defining Groups and Users
97
11. If the user owns any RACF profiles, change the OWNER field of the profile. Tip: To do this, use the appropriate command for changing profiles, such as ALTUSER or RALTER. 12. After all occurrences of the user ID are deleted from the RACF database, use the DELUSER command to delete the user profile. For example, to delete the profile for user ELVIS, enter: DELUSER ELVIS
98
In order to:
AND
)
CLAUTH (USER)
OR
SystemSPECIAL
Create new RACF users Connect or remove existing RACF users Modify grouprelated fields in a user profile List in a user profile Modify most fields in a user profile Delete a user profile
GroupSPECIAL
CONNECT
A user with the SPECIAL attribute has full authority over all users and groups. By contrast, a user without the SPECIAL attribute might require a combination of authorities to complete the same tasks with limited scope. For example, to create a new RACF user, the creating user without the SPECIAL attribute must have at least one of the following and have the CLAUTH(USER) attribute: v JOIN group authority in the new user's default group or v Be the owner of the new user's default group or v Have group-SPECIAL in the new user's default group or v Have SPECIAL For detailed information about the authorities required for the following administrative tasks related to user ID delegation, see the Authorization required topic for the associated RACF command in z/OS Security Server RACF Command Language Reference.
User ID delegation tasks Create a new RACF user Connect or remove an existing RACF user Reset passwords or modify fields in a user profile List user profile information Delete a user Associated RACF command ADDUSER CONNECT or REMOVE ALTUSER LISTUSER DELUSER
For details about the group-SPECIAL attribute, see User Attributes at the Group Level on page 82 and The SPECIAL or group-SPECIAL Attribute on page 729.
99
100
This topic contains an overview of using security levels, categories, and labels to classify users and data. Reference: For detailed information and procedures for implementing security levels, categories, and labels to achieve a multilevel-secure environments, see z/OS Planning for Multilevel Security and the Common Criteria.
101
Security classification
Attention Because RACF performs global access checking before many of the other kinds of access authority checks, such as security label checking or access list checking, global access checking might allow access to a resource you are otherwise protecting. To avoid a security exposure to a sensitive resource, do not create an entry in the global access checking table for a resource protected by a profile that contains a security level, security category, or security label (if the security label in the profile is SYSLOW, a global access checking table entry with an access authority of READ can be created). See Authorization Checking for RACF-Protected Resources on page 753.
Security Labels
Security label authorization checking is dependent on the concept of controlling user access to resources on the basis of three factors: 1. The sensitivity of the data that the resource contains 2. The user's authorization to access information at that level of sensitivity 3. The purpose for which the user is attempting to access the resource The security administrator indicates the sensitivity of the data in the resource as well as the authorization of the user by assigning appropriate security labels in the resource or user profile.
102
Security classification
Security label authorization checking involves comparing the user's security label with the security label of the resource. A user who lacks sufficient authorization is prevented from accessing information in the resource. Three requested access levels are supported for security label authorization checking: Read-only A user is attempting to read information from a resource. Examples: v TSO LISTBC command v OPEN macro for READ Write-only A user is attempting to write information to a resource (with no reading). Examples: v TSO SEND command (when the recipient of the message has a lower security classification than the sender) v Writing a new entry in a z/OS UNIX directory Read-write A user is attempting to access a resource for the purpose of both reading and writing. Example: v OPEN macro for WRITE For detailed information, see Security Label Authorization Checking on page 770.
103
Security classification
Attention Before converting from the use of LEVEL to SECLEVEL, all user profiles must have the appropriate SECLEVEL values (if the SECDATA class is activated).
104
Security classification
105
Security classification
2. All of the categories (if any) used to define the security label of the resource are the same as the categories used to define the user's current security label. To have equivalence, the names of the security labels do not have to be the same. When security labels are equivalent, each security label can be said to dominate and be dominated by the other. To be considered disjoint, the user's current security label and the resource security label must not be equivalent and neither one can dominate the other. When a disjoint occurs, both of the following conditions are true: 1. The set of security categories that defines the user's current security label includes only a subset, or none, of the security categories that define the security label of the resource. 2. The set of security categories that defines the security label of the resource includes only a subset, or none, of the security categories that define the user's current security label. Note that a disjoint can occur in the relationship between the security labels of two users.
106
Security classification
option. See Activating Compatibility Mode For Security Labels (COMPATMODE Option) on page 147. If your installation uses the SETROPTS MLFSOBJ option, all files and directories must have security labels. No users (except trusted and privileged started tasks) will be able to access files and directories that do not have security labels. See Restricting Access to z/OS UNIX Files and Directories (MLFSOBJ Option) on page 150. If your installation uses the SETROPTS MLIPCOBJ option, all resources related to interprocess communication must have security labels. No users (except trusted and privileged started tasks) will be able to access interprocess communication resources that do not have security labels. See Restricting Access to Interprocess Communication Objects (MLIPCOBJ Option) on page 150. If your installation uses the SETROPTS MLNAMES option, users cannot view the names of data sets, files, and directories that cannot be read from their current user security labels. Users are similarly restricted from seeing authorized resource names when they list catalogs and directories. This option is also called name-hiding. Note that if the SECLABEL class is not active while MLNAMES is active, data set names will still be hidden from users who do not have at least READ access to the data sets. See Using Name-hiding (MLNAMES Option) on page 151. If your installation uses the SETROPTS SECLBYSYSTEM option, certain security labels can be activated on certain systems, based on the system identifiers specified in the SECLABEL class profile for each security label. See Activating Security Labels by System Image (SECLBYSYSTEM Option) on page 151.
7.
8.
9.
10.
107
Security classification
When you are migrating from security levels and security categories to security labels, consider setting the SECLABEL field using the ADDUSER and ALTUSER commands as follows:
ADDUSER userid SECLABEL(security-label) ALTUSER userid SECLABEL(security-label)
When you issue the LISTUSER command with any operand, such as the user ID, the default security label will be displayed.
When RACF displays a user's security label, RACF also displays the security level and any security categories that define it.
Note: The SECLABEL class must be active when you execute this command.
For example:
SEARCH CLASS(TERMINAL) SECLABEL(EAGLE)
This command displays all of the terminal profiles that have security label EAGLE specified.
SEARCH CLASS(USER) SECLABEL(EAGLE)
This command displays all of the user profiles in which security label EAGLE is the default security label. Restrictions: 1. Your results will be different if SECLBYSYSTEM is active. 2. You can search only one class at a time. If you do not specify a class, the DATASET class is searched by default.
108
Security classification
3. To list all profiles, you must have SPECIAL or AUDITOR authority. Otherwise, RACF lists only those profiles that you own, that have high-level qualifiers matching your user ID, or to which you have at least READ access authority. 4. If the SECLABEL class is active, RACF lists only the names of profiles that have security labels that are equal or lower level to that of the user's current security label.
1.
Define a resource called IRR.WRITEDOWN.BYUSER in the FACILITY class with UACC(NONE). To prevent all users from gaining the writedown privilege, do not permit any users or groups. Example:
RDEFINE FACILITY IRR.WRITEDOWN.BYUSER UACC(NONE)
______________________________________________________________________
2.
Identify which users require the writedown privilege and determine which level of access they require: READ or UPDATE authority. Both access authorities allow users to query, set and reset the writedown mode of their address spaces by executing a user command. The following user commands are available for this purpose: For TSO/E users RACF RACPRIV command. (See z/OS Security Server RACF Command Language Reference for syntax information.)
Chapter 4. Classifying Users and Data
109
Security classification
For z/OS UNIX users z/OS UNIX writedown command. (See z/OS UNIX System Services User's Guide for syntax information.)
______________________________________________________________________
3.
Authorize users for the writedown privilege by adding those users, or one of their groups, to the access list with either READ or UPDATE authority, based on the users' requirements. Example:
PERMIT IRR.WRITEDOWN.BYUSER CLASS(FACILITY) ID(users or groups) ACCESS(READ) PERMIT IRR.WRITEDOWN.BYUSER CLASS(FACILITY) ID(users or groups) ACCESS(UPDATE)
______________________________________________________________________
4.
When SETROPTS MLS is active, refreshing the FACILITY class also causes ACEEs to be purged from the VLF. ______________________________________________________________________
For example, if SMITH needs to use security labels EAGLE and THRUSH, create profiles like:
SMITH.EAGLE.* UACC(NONE) SECLABEL(EAGLE) SMITH.THRUSH.* UACC(NONE) SECLABEL(THRUSH)
110
Security classification
Some services create new data sets based on the user's user ID. If the SETROPTS MLS option is in effect, authorization failures occur whenever the user uses a security label that is different from the security label that was in use when the data set was created. Applications that create such data sets should consider using the REXX RACVAR function package to determine the current security label for inclusion in the names of such data sets. v Read-only In general, these resources pose no problem if they are protected by a profile with the lowest security label that is used. By being protected in this manner, they can be accessed any time the user is logged on. For example, system resources that are read by all users should be protected with the SYSLOW security label. v Read mostly These resources must also be protected by a profile at the lowest security label that is used. This allows the user to access them for read any time the user is logged on. If the resource needs to be updated (for example: new names being added to the nickname file userid.NAMES.TEXT), the user must log on at his or her lowest security label in order to update the file. v Read/write but able to be preallocated Data sets such as the ISPF list and log data sets fall into this category. These data sets can be allocated from within a logon CLIST with a different data set used for each security label. It should be noted, however, that due to multiple data sets being used, updates to a data set at one security label would not cause updates to occur to a data set that is used for the same purpose at a different security label (for example, an SPF profile data set). v Data sets written to from multiple levels An example of this type of data set is the SPF EDIT recovery data sets. The CLIST ISREDRTI that creates the ISPF edit recovery table sets the default data set names for the recovery data sets to:
&ZUSER.&ZAPPLID&ZEROS&I.BACKUP
RACF has provided sample exits in SYS1.SAMPLIB that show how to solve the problem (data sets written to from multiple levels) for ISPF and PDF data sets. A data set profile would cause a security label authorization failure when an attempt was made to write to the data set while logged on with a security label that was different from the one in the profile. Applications that create data sets in this manner can be used only if each user has access to only one security label. When RACF checks a user's authority to use a terminal or console, or the authority of outbound work to use a JES writer, RACF uses reverse MAC (mandatory access checking). That is, the security label of the profile protecting the writer must be equal to or greater than the security label of the user or outbound work.
111
112
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114 115 116 116 117 117 118 119 120 121 121 121 123 123 124 124 125 126 127 128 128 129 129 131 131 132 132 132 133 133 133 135 136 136 137 137 138 138 138 139 139 140 140 141 141 142 142 143 143 143 144 144 145 145 146
113
RACF options
Quiescing RACF Activity (MLQUIET Option) . . . . . . . . . . . . . Preventing the Copying of Data to a Lower Security Label (SETROPTS MLS Option) Activating Compatibility Mode For Security Labels (COMPATMODE Option) . . . Enforcing Multilevel Security (MLACTIVE Option) . . . . . . . . . . . . Restricting Access to z/OS UNIX Files and Directories (MLFSOBJ Option) . . . . Restricting Access to Interprocess Communication Objects (MLIPCOBJ Option) . . Using Name-hiding (MLNAMES Option) . . . . . . . . . . . . . . . Activating Security Labels by System Image (SECLBYSYSTEM Option) . . . . . SETROPTS Options for Automatic Control of Access List Authority . . . . . . . Automatic Addition of Creator's User ID to Access List . . . . . . . . . . Automatic Omission of Creator's User ID from Access List . . . . . . . . . Specifying the Encryption Method for User Passwords . . . . . . . . . . . Using Started Procedures . . . . . . . . . . . . . . . . . . . . . Assigning RACF User IDs to Started Procedures . . . . . . . . . . . . Protected User IDs . . . . . . . . . . . . . . . . . . . . . Undefined User IDs . . . . . . . . . . . . . . . . . . . . . Authorizing Access to Resources . . . . . . . . . . . . . . . . . . Setting Up the STARTED Class . . . . . . . . . . . . . . . . . . Defining Profile Data . . . . . . . . . . . . . . . . . . . . . Specifying STARTED Class Profile Names . . . . . . . . . . . . . . Using the Started Procedures Table (ICHRIN03) . . . . . . . . . . . . . Started Procedure Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 147 147 148 150 150 151 151 152 152 152 152 153 154 154 154 155 155 155 156 157 158
This topic describes the RACF options you can specify to control how RACF operates on your system.
114
RACF options
Guidelines for using selected SETROPTS options v If you are installing RACF for the first time, activate enhanced generic naming:
SETROPTS EGN
v Do not issue the SETROPTS TERMINAL(NONE) command unless you have RACF-protected enough terminals so that users can log on. SETROPTS TERMINAL(NONE) prevents users from logging on to unprotected terminals. To recover from such a situation, submit a batch job that runs under a user ID with the SPECIAL attribute and that issues SETROPTS TERMINAL(READ). v Some classes have a default return code of 8. If such a class is activated, but no profiles are defined, user activity that requires access in that class is prevented. Do not activate a class with a default return code of 8, either explicitly (by name) or implicitly (by means of a shared POSIT value), unless you have defined profiles for that class. RACF prevents you from accidentally activating all classes by misusing the SETROPTS CLASSACT(*) operand. If security labels have been assigned to resource profiles, do not activate the SECLABEL class by using SETROPTS CLASSACT(SECLABEL) unless you have assigned appropriate security labels to appropriate users. To recover from such a situation, log on as a user with the SPECIAL attribute, specifying SYSHIGH as the current security label. Then either assign security labels, or issue SETROPTS NOCLASSACT(SECLABEL). v Do not issue the following SETROPTS commands unless you have assigned appropriate security labels to all users and to the resources that they must access: SETROPTS MLACTIVE(FAILURES) SETROPTS MLFSOBJ(FAILURES) SETROPTS MLIPCOBJ(FAILURES). To recover from such a situation, log on as a user with the SPECIAL attribute, specifying SYSHIGH as the current security label. Then, either assign security labels, or issue one of the following SETROPTS commands, as appropriate: SETROPTS NOMLACTIVE SETROPTS MLFSOBJ(ACTIVE) SETROPTS MLIPCOBJ(ACTIVE). v Restriction: The ISPF panels do not support all options of the SETROPTS command. For example, the SETROPTS option to activate and deactivate mixed-case password support is not available through the RACF panels. For information about using the SETROPTS command to implement mixed-case passwords, see Allowing Mixed-Case Passwords (PASSWORD Option) on page 116.
115
RACF options
Restriction: The ISPF panels do not support the SETROPTS option to activate and deactivate mixed-case password support. For this, you must use the SETROPTS command with the PASSWORD option. By default, NOMIXEDCASE is in effect and mixed-case passwords are not supported. If you want to allow mixed-case passwords, be sure that mixed-case content is permitted by your password syntax rules. (See Establishing Password Syntax Rules (PASSWORD Option) on page 117.) When SETROPTS PASSWORD(MIXEDCASE) is in effect, the RACF commands ALTUSER, ADDUSER, PASSWORD, and RACLINK no longer translate passwords to upper case, nor do applications that provide mixed-case password support, such as TSO/E and z/OS UNIX. User considerations: When you activate the MIXEDCASE option, users should be aware of the following considerations. v Mixed-case passwords are more secure and harder to guess than uppercase passwords. Users are encouraged to select mixed-case passwords. v Users with existing, uppercase passwords need not supply their passwords in upper case. However, once the MIXEDCASE option is activated, any password that is set or changed to a value containing a lowercase character must thereafter be supplied exactly as it was created. In other words, the user must then supply every character of the password using exactly the same case used when the password was created. v Users are prevented from entering new passwords that differ from their current passwords by only the case in which they are entered. For example, if a user's current password is IM4JUVE, the user cannot change it to a new password of Im4Juve.
116
RACF options
The command establishes syntax rule RULE1. Syntax rule RULE1 specifies that new passwords must be 8 characters in length, must contain vowels in positions 1, 3, 5, 6, 7, and 8, and must contain numbers in positions 2 and 4. Thus, the password A2E2EAEE follows the rule, and C3DMIER5 does not. If you do not define a value for every position specified by the LENGTH value, the undefined positions can contain any combination of alphanumeric characters. Tip: If the RACF ISPF panels are installed, you might find them easier to use for setting up password syntax rules.
These values become effective immediately as: v The default values for new users whom you define to RACF through the ADDUSER command v The upper limit for users who specify the INTERVAL operand on the PASSWORD command
117
RACF options
The initial system default is 30 days for the maximum change interval (INTERVAL) and 0 days for minimum change interval (MINCHANGE). The value MINCHANGE(0) allows users to change their passwords and password phrases more than once each day. When users are defined to RACF and have access to the system, they can use the INTERVAL operand of the PASSWORD command to set their own change interval to a value less than 30 or to a value less than that which you specified on the INTERVAL operand of the SETROPTS command (if you did so). Restrictions: 1. When you change the SETROPTS PASSWORD(INTERVAL) value, the password interval set in each user's profile is not changed. If a user's INTERVAL value in the user's profile (as set using the PASSWORD command) is different than the SETROPTS value, RACF expires the password or password phrase at the shorter interval of the two values. 2. Avoid setting the MINCHANGE value higher than any individual user's INTERVAL value (as set using the PASSWORD command). If you do, RACF expires the user's password or password phrase when the MINCHANGE period elapses, not when the user's INTERVAL elapses. Users cannot change their own passwords or password phrases until the MINCHANGE period elapses, even when the user's INTERVAL value defines a shorter period than the MINCHANGE value. User consideration: Users who attempt to change their passwords or password phrases before the minimum change interval elapses are notified of their change failures but are not notified of the reason. The reason for the failure is withheld in the event of unethical user behavior, particularly by outside users or hackers who might exploit the information.
If NOWARNING is in effect, RACF does not issue a warning message before a password or password phrase expires. v HISTORY: The HISTORY suboperand enables you to specify the number of previous passwords and password phrases (132) that RACF saves for each user and compares with an intended new value. When RACF finds a match with a previous value, or with the current password or password phrase, RACF rejects the new intended value.
118
RACF options
For passwords, RACF stores only previous passwords in each user's history. For password phrases, RACF saves the user's current password phrase in addition to the user's previous password phrases. Therefore, for password phrases, RACF saves one fewer previous value than the number you specify for history. Example: If you specify 12 for your HISTORY number, RACF saves up to 12 previous passwords and up to 11 previous password phrases for each user.
SETROPTS PASSWORD(HISTORY(12))
If you increase the HISTORY number, RACF saves and compares that number of passwords and password phrases to the new intended value. If you subsequently reduce the HISTORY number, any previous passwords and password phrases stored in the user profile in excess of the newly specified HISTORY number are not deleted and continue to be used for comparison. For example, if you specify 12 for your HISTORY number and subsequently reduce it to 8, RACF compares the old passwords and password phrases 912 with the new intended value. NOHISTORY specifies that new passwords and password phrases are compared only to the current password or password phrase. Any prior history information in the user profile is neither deleted nor changed. v REVOKE: The REVOKE suboperand enables you to specify how many consecutive attempts to use incorrect passwords and password phrases RACF permits before it revokes the user ID on the next attempt. Example: If you specify 4 for your REVOKE number, RACF allows four consecutive attempts to use incorrect passwords or password phrases to access the system. For example, three incorrect passwords followed by one incorrect password phrase is allowed. But a fifth attempt, with either an incorrect password or incorrect password phrase, revokes the user ID.
SETROPTS PASSWORD(REVOKE(4))
After RACF revokes the user ID, you can activate the user ID with the RESUME operand of the ALTUSER command if you have the SPECIAL or group-SPECIAL attribute or are the owner of the profile. If SETROPTS NOREVOKE is in effect, consecutive incorrect passwords and password phrases are ignored. Protected user IDs are not revoked based on consecutive incorrect passwords and password phrases. See Defining protected user IDs on page 90 for more information.
If you issue the SETROPTS INACTIVE(30) command and a user has not done any of the following in 31 days: v v v v v Logged on Submitted a job Changed their password or password phrase by any method Attempted an unsuccessful logon Received a directed command or output from RACF
Chapter 5. Specifying RACF Options
119
RACF options
that user is considered revoked. However, the user is not actually revoked and the output of the LISTUSER command does not show that the user is revoked until the user next attempts to log on or submit a job. When you allow the user to start using the system again (using the RESUME operand on the ALTUSER command), RACF resets the effective date with which the period of inactivity starts. When you define a new user ID, the user's last access date is set to the user ID's creation date. If the user ID is not used within the number of days specified by SETROPTS INACTIVE, the user ID will be revoked. When you issue the LISTUSER for a new user ID that has never been used, the last access date will be listed as UNKNOWN. If NOINACTIVE is in effect, RACF does not check the user ID against an unused user ID interval. If NOINITSTATS is in effect, the INACTIVE, REVOKE, HISTORY, and WARNING options cannot be used.
120
RACF options
group-SPECIAL authority to GROUP3 resources. Likewise, if list-of-groups checking is active and USER1 logs on to GROUP1, USER1 has group-SPECIAL authority to GROUP1 resources, but not GROUP3 resources. If you have the SPECIAL attribute, you can specify list-of-groups checking by using the GRPLIST option of the SETROPTS command as shown in the following example:
SETROPTS GRPLIST
To use current connect group checking, specify the NOGRPLIST option on the SETROPTS command. Guideline: Use the GRPLIST option because it eases administration and minimizes the number of times the user might have to log off and log back on to access resources.
Password names must conform to the following rules: v Passwords can be up to 8 characters in length. v Valid characters for passwords are alphabetic uppercase AZ, numeric (09), and national (#, @, and $). When RACF is first initialized, the switch password and the status password are both set to YES.
121
RACF options
2. Define a ** profile for the class, with yourself as owner. (This prevents users lacking special authority from being able to define profiles in the class.) 3. Define a top profile for each user, covering the subset of resources in the class which the user is allowed to create. Each user should be the owner of this top profile. You have created an environment where the user can create only profiles that are more specific than the user's top profile. The only other users who can create profiles in the user's subset of the class are: v A user with SPECIAL authority v A user who has group-SPECIAL authority over a user who owns the top profile For example, assume that neither JOE nor RONN have the SPECIAL or group-SPECIAL attribute. If the GENERICOWNER option is in effect, and user RONN is the owner of a JESSPOOL profile called NODEA.RONN.**, JOE cannot create profile NODEA.RONN.DATA.**, even though JOE has the CLAUTH(JESSPOOL) attribute. Note: The GENERICOWNER operand does not affect the DATASET class. It cannot be activated for individual classes. When active, GENERICOWNER affects all general resource classes except the PROGRAM class and general resource grouping classes. For example, when working with general resource grouping classes, assume that profile A* exists in the TERMINAL class and is owned by a group that user ELAINE does not have group-SPECIAL authority to. If the GENERICOWNER option is in effect, it will prevent user ELAINE from defining a more specific profile in the member class (for example, by using the command RDEF TERMINAL AA*). However, having the GENERICOWNER option in effect will not prevent user ELAINE from defining a profile if specified on the ADDMEM operand for the grouping class profile (such as with the command RDEF GTERMINL profile-name ADDMEM(AA*)). You can alternatively choose to make a group the owner of the top profile for a given subset in the class. In this case, only a user with group-SPECIAL authority for the group, or with SPECIAL authority, can create profiles in the subset. The top profile must end in a single asterisk (*), double asterisks (**), or one or more percent signs (%). More specific profiles are profiles that match the less specific top profile name character for character, up to the ending asterisks or percent signs in the less specific name. In a search for the less specific profile, a match is found if all of the following are true: v The profile name ends in a single asterisk (*), double asterisks (**), or one or more percent signs (%). v All characters preceding the asterisks or percent signs (* or ** or %) match the corresponding characters in the resource name exactly. v The characters matching the percent signs (%) in the less-specific profile are not an asterisk (*) or period (.) in the resource name. The length of the profile must be the same for this case. For example, to allow USERX to RDEFINE A.B in the JESSPOOL class, you need profile A.* in the JESSPOOL class, which is owned by USERX.
122
RACF options
To cancel this option, specify NOGENERICOWNER on the SETROPTS command.
Attention Issuing SETROPTS GENERICOWNER can prevent users with the CLAUTH attribute in general resource classes from creating profiles as they are accustomed to. Therefore, make these users OWNER of appropriate top generic profiles in the class. For an example, see Delegating authority to profiles in the FACILITY class on page 233.
RACF prevents you from activating all classes using the SETROPTS CLASSACT(*) operand. Guideline: Do not activate all RACF classes. Activate only the classes that are important to your installation. This is because some classes have a default return code of 8. For those classes, activate them only after you define the resource profiles to allow needed access. For information on activating protection for specific general resource classes, check the index of this document for the class name. If you have the SPECIAL attribute, you can also specify the NOCLASSACT operand on the SETROPTS command. This operand indicates that RACF performs no access authorization checking for selected general resource classes. If you specify NOCLASSACT(*), RACF does not perform access authorization checking for any of the classes in the class descriptor table (CDT). However, you can still define resource profiles to RACF through the RDEFINE command.
Guidelines: v When possible, use generic profiles to protect multiple resources and reduce administrative effort. Consider issuing SETROPTS GENERIC(classname) for the classes you use, so that generic profiles are usable in those classes. v If you already have general resource profiles defined in your database, avoid issuing the SETROPTS GENERIC(*) command. This command activates generic profile checking for all classes except resource grouping classes and classes defined with the GENERIC(DISALLOWED) attribute. Some classes, such as
123
RACF options
DIGTCERT and DIGTRING, do not support generic profile checking. These and other classes might already have profile names that contain generic characters (*, &, and %). v If a general resource class already has discrete profiles with names that contain generic characters (*, &, and %), enabling generic profile checking for the class prevents RACF from using those discrete profiles for authorization checking. If you enable SETROPTS GENERIC for a class that has a discrete profile name containing generic characters, the profile will be marked UNUSABLE in RLIST and SEARCH output listings. Tip: Use the RDELETE command with the NOGENERIC option to delete this profile. v In general, once you activate generic profile checking for a class and define generic profiles, avoid deactivating it with the NOGENERIC operand. RACF will not use your previously defined generic profiles for authorization checking while NOGENERIC is in effect. If you want to perform maintenance on the generic profiles in the RACF database, you might want to temporarily deactivate generic profile checking but allow RACF command processors to update generic profiles. You can specify this environment with the NOGENERIC and GENCMD operands of the SETROPTS command. The following example shows how to specify this environment for the DATASET class.
SETROPTS NOGENERIC(DATASET) GENCMD(DATASET)
NOGENERIC and NOGENCMD are in effect when a RACF database is first initialized using IRRMIN00. If there is a global access checking table entry of $RACUID.**/ALTER for data sets, users can create unprotected data sets even if PROTECTALL is in effect. However, other users are not allowed to access those data sets.
STATISTICS example
To help you understand how RACF maintains statistics, consider the following: v USER1.DATA is a data set profile. v USER1.DATA has a universal access (UACC) of READ. v USER2 is in the access list with READ authority. v USER3 is in the access list with UPDATE authority. v GROUP1 is in the access list with READ authority. v GROUP2 is in the access list with UPDATE authority.
124
RACF options
v USER4 belongs to both groups, GROUP1 and GROUP2. v There is no entry for &RACUID.* in the global access checking table. If USER1 reads USER1.DATA, the overall READ count in the profile increases by one. No counts in the access list are changed, because access lists are not used when users process their own data. If USER2 reads the data set, two counts are updated: the overall READ count and the count in USER2's access list entry. If USER3 reads the data set, two counts are updated: the overall READ count and the count in USER3's access list entry (even though the entry says UPDATE). The counts in the access list merely record that access was granted by that entry. The access granted can be as specified by the entry, or a lower level, as in this example. If list-of-groups processing is active (through SETROPTS GRPLIST) and USER4 reads the data set, RACF examines the access list to see if any of USER4's groups are in the list. If any of the groups is found, the entry with the highest authority is used. In this case, the access list entry for GROUP2 (UPDATE) increases, along with the overall READ count for the profile. If any other user or group reads the data set, it gains access because of the universal access of READ, and the overall READ count increases. If any user with OPERATIONS authority updates the data set, the overall UPDATE count increases.
125
RACF options
Note: Being enabled for sysplex communication might reduce the overhead associated with INITSTATS.
1. Determine the name of the application. See your programmer or refer to the
documentation for the application to determine the application name specified on its RACROUTE REQUEST=VERIFY requests. ______________________________________________________________________
2. Create or modify a profile in the APPL class for the application name and
specify daily logon statistics, as follows. v If not already defined, create a new APPL profile for this application name and specify daily logon statistics. Example:
RDEFINE APPL applname UACC(NONE) APPLDATA(RACF-INITSTATS(DAILY))
Tip: If similarly named applications have the same requirements, create a generic APPL profile. Example:
RDEFINE APPL CICSREG* UACC(NONE) APPLDATA(RACF-INITSTATS(DAILY))
_________________________________________________________________ v If an APPL class profile for this application is already defined, modify the profile to specify daily logon statistics:
RALTER APPL applname APPLDATA(RACF-INITSTATS(DAILY))
_________________________________________________________________ v If the APPL class profile for this application already contains a value in the APPLDATA field, modify the existing APPLDATA value to include the RACF-INITSTATS(DAILY) text string. Examples:
RALTER APPL applname APPLDATA(existing application data RACF-INITSTATS(DAILY)) RALTER APPL applname APPLDATA(RACF-INITSTATS(DAILY) existing application data)
______________________________________________________________________
3. If you created a new APPL profile for the application in Step 2 and you
specified UACC(NONE), authorize appropriate users and groups to access the application. Example:
PERMIT applname CLASS(APPL) ID(userid-or-group) ACCESS(READ)
______________________________________________________________________
RACF options
v If the APPL class is not already active, activate the APPL class. Guideline: Activate RACLIST processing for the APPL class for improved performance, especially for high usage applications that issue RACROUTE REQUEST=VERIFY requests for every user. Example:
SETROPTS CLASSACT(APPL) RACLIST(APPL)
v If the APPL class is already active and RACLISTed, refresh the APPL class. Example:
SETROPTS RACLIST(APPL) REFRESH
______________________________________________________________________ You have now specified recording of daily logon statistics for a selected application. Considerations for using daily logon statistics: When RACF-INITSTATS(DAILY) is in effect for an application that uses the RACROUTE REQUEST=EXTRACT request to extract the LJDATE and LJTIME fields from user profiles, the LJDATE and LJTIME fields represent the last recorded date and time that the user entered the system using the RACROUTE REQUEST=VERIFY request. The last recorded date and time might be different from the last date and time that the user entered the system. Similarly, when RACF-INITSTATS(DAILY) is in effect, the USBD_LASTJOB_DATE and USBD_LASTJOB_TIME fields in record type 200 (user basic data) from the output of the RACF database unload (IRRDBU00) utility represent the last recorded date and time the user entered the system.
127
RACF options
If you specify GLOBAL(*), you activate global access checking for all valid classes. Valid classes you can specify are: v The DATASET class v The NODE grouping class v The SECLABEL grouping class v All other classes defined in the class descriptor table, except for the remaining grouping classes When you use the SETROPTS command to activate (or reactivate) global access checking for a class, RACF builds (or updates) the in-storage global access checking tables. However, you can use the RDEFINE and RALTER commands to maintain profiles on the database, regardless of whether the global access checking option is active for a class. NOGLOBAL is in effect when RACF is first initialized. Note: The SETROPTS GLOBAL(classname) command is propagated when the system is enabled for sysplex communication.
Notes: 1. PROTECTALL requires that you RACF-protect all data sets. This protection includes tape data sets if your installation specifies TAPEDSN on the SETROPTS command. 2. After defining, altering, or deleting a generic profile, the following command ensures that the profile is in effect during authorization checking:
SETROPTS GENERIC(DATASET) REFRESH
3. Started procedures with the privileged or trusted attribute and users with the SPECIAL attribute can access a data set that has no RACF profile, even if PROTECTALL is in effect. These exceptions allow recovery if a critical profile is accidentally deleted. 4. If there is a global access checking table entry of &RACUID.**/ALTER for data sets, users can create unprotected data sets even if PROTECTALL is in effect. However, other users cannot access those data sets.
128
RACF options
PROTECTALL also has a warning option that allows the request even though the data set is not protected, but sends a warning message to the user and the MVS console. For example:
SETROPTS PROTECTALL(WARNING)
Guideline: Before using PROTECTALL(WARNING), perform the following actions to reduce the number of messages generated: v Ensure that a RACF user or group profile is defined for all catalog aliases. v Ensure that all RACF users and groups have a generic data set profile of the form:
high-level-qualifier.*
Note: PROTECTALL applies to all data sets that do not have system-generated temporary names and that do not have names that begin with **SYSUT. You can extend PROTECTALL to include temporary data sets with system-generated names by using the naming conventions table to modify the name that RACF uses to look like a permanent name. If your installation uses nonstandard names for temporary data sets, you must also predefine entries in the global access checking table that allow these data sets to be created and accessed. If you have the SPECIAL attribute, you can also deactivate PROTECTALL processing by using the NOPROTECTALL operand. NOPROTECTALL is in effect when RACF is first initialized.
129
RACF options
is in effect, such users cannot read or write to temporary or uncataloged DASD data sets, and (unless the following restriction applies) they cannot read uncataloged tape data sets. Restriction: If you use DFSMSrmm to manage your tape data sets and the TAPEAUTHF1 option is active (in the DEVSUPxx member of SYS1.PARMLIB), an uncataloged tape data set might be accessible to a user who has access to the first file on the tape volume when the first file is cataloged. (See z/OS DFSMSrmm Implementation and Customization Guide.) If you use a different tape management system, refer to your product documentation. When the CATDSNS option is in effect, uncataloged data sets that are protected, for example by a generic profile, cannot be accessed by users who are unauthorized by the generic profile, even if they are authorized to access uncataloged data sets because they have READ access to ICHUNCAT.data-set-name. Access to the ICHUNCAT.data-set-name resource does not provide access to uncataloged data sets where other RACF authorization checking denies it. The CATDSNS option provides an additional point of failure in the RACF authorization sequence, not a point of success. For a detailed view of the sequence of RACF checking, see Pictorial View of RACF Authorization Checking on page 759. The CATDSNS processing is covered in Step 29. There are some exceptions. For example, CATDSNS processing does not fail the request: v If the user has READ access to a resource called ICHUNCAT.data-set-name in the FACILITY class v If the data set is protected by a discrete profile v If the data set is created and used within the same job or TSO session. If this data set is not cataloged before job termination or TSO logoff, it is not accessible to any other job or TSO session. To activate the CATDSNS option, enter:
SETROPTS CATDSNS
In addition, if SETROPTS MLACTIVE is in effect, RACF produces one or more type 83 SMF records whenever a data set profile is added, changed, or deleted. This record contains the list of the cataloged data sets that are affected by the change, addition, or deletion of the profile. If the SETROPTS CATDSNS option is not in effect, the list of the affected data sets might not be complete. Therefore, using the SETROPTS CATDSNS option allows you to list and audit the data sets affected by the change in a particular profile. Because the SETROPTS CATDSNS option prevents users without the SPECIAL attribute from accessing uncataloged data sets (except as noted above), the list of data set names provided by the DSNS operand on the LISTDSD command is identical to the list of all data sets affected by the profile change. You can also specify CATDSNS(WARNING), which allows accesses, but sends a warning message to the user and the security administrator. To cancel the CATDSNS option, specify NOCATDSNS on the SETROPTS command.
130
RACF options
Activating Enhanced Generic Naming for the DATASET Class (EGN Option)
If you have the SPECIAL attribute, you can activate enhanced generic naming for the DATASET class by issuing the SETROPTS command with the EGN operand:
SETROPTS EGN
When you activate this option, RACF allows you to specify the generic character ** (in addition to the generic characters * and %) when you define any of the following: v A generic profile in the DATASET class v An entry in the global access checking table for the DATASET class Note that enhanced generic naming changes the meaning of the generic character * for generic data set profiles. (SETROPTS EGN has no effect on general resource profiles.) In addition, a generic profile such as hlq.* defined while SETROPTS NOEGN is in effect, will appear as hlq.*.** when listed after EGN is activated. For information on specifying profile names with enhanced generic naming, see z/OS Security Server RACF Command Language Reference. To deactivate enhanced generic naming for the DATASET class, issue the SETROPTS command with the NOEGN operand. Guideline: Do not deactivate enhanced generic naming after data set profiles have been created while enhanced generic naming was active. NOEGN is in effect when a RACF database is first initialized using IRRMIN00.
To specify this option, you must have the SPECIAL attribute. Note: The FROM(profile-name) operand on the ADDSD command overrides any specifications from the MODEL(USER) or MODEL(GROUP) operands. If you specify MODEL(NOGDG), MODEL(NOUSER), or MODEL(NOGROUP), RACF does not use a model data set profile for new GDG, USER, or GROUP data sets, respectively. For more information, see Automatic Profile Modeling for Data Sets on page 175. If you specify NOMODEL, RACF does not use automatic model processing for GDG, group, or user data sets. NOMODEL is in effect when a RACF database is first initialized using IRRMIN00.
131
RACF options
With the SETROPTS NOADSP operand in effect, RACF does not automatically create discrete data set profiles when users who have the ADSP attribute create new data sets. IBM recommends the NOADSP option because it reduces the number of data set profiles in the RACF database. Using generic data set profiles is generally more efficient. You can reinstate normal ADSP processing with the ADSP operand. ADSP is in effect when a RACF database is first initialized using IRRMIN00.
Putting the REALDSN option into effect ensures that log printouts and operator messages identify data sets by their real names rather than by the data set names that are created by installation exit routines to conform to RACF naming conventions. To specify this option, you must have the SPECIAL attribute. Note: This option has no effect on single-qualifier data set names (unless they have been modified by the naming conventions table or an exit routine), whose real data set names continue to be the prefixed ones. For more information, see z/OS Security Server RACF System Programmer's Guide. NOREALDSN is in effect when a RACF database is first initialized using IRRMIN00.
132
RACF options
Attention If you do not issue the SETROPTS command with the PREFIX operand, a system ABEND occurs if a discrete profile is created when a user tries to create a data set with a single-qualifier name. To specify the PREFIX or NOPREFIX operands, you must have the SPECIAL attribute.
If you have the SPECIAL attribute, you can also deactivate tape data set protection by using the NOTAPEDSN operand on the SETROPTS command. NOTAPEDSN is in effect when a RACF database is first initialized using IRRMIN00. Guideline: If you use a tape management system, such as DFSMSrmm, do not enable TAPEDSN. For more information, see Using DFSMSrmm with RACF on page 187.
If you have the SPECIAL attribute, you can also deactivate tape volume protection by using the NOCLASSACT(TAPEVOL) operand on the SETROPTS command. Guideline: If you use a tape management system, such as DFSMSrmm, do not enable TAPEVOL. For more information, see Using DFSMSrmm with RACF on page 187.
Establishing a Security Retention Period for Tape Data Sets (RETPD Option)
The RACF security retention period is the number of days that RACF protection remains in effect for a tape data set. For example, to select tape volumes to return to the scratch pool, a tape librarian can issue the SEARCH command with the EXPIRES operand. When the librarian issues this command, RACF uses the
Chapter 5. Specifying RACF Options
133
RACF options
security retention period to check if RACF protection for all data sets on a tape volume has expired. If RACF protection has expired, the tape volume can be returned to the scratch pool. If you use a tape management system, such as DFSMSrmm, you need not enable RETPD. For more information, see Using DFSMSrmm with RACF on page 187. If you define a tape volume with a TVTOC, RACF uses the security retention period when checking the authority to overwrite a data set on the volume with a data set of a different name. Before opening the tape data set for output, RACF ensures that the security retention periods for all of the following data sets on the volume have expired. Users can specify a security retention period on the ADDSD and ALTDSD commands, or, for data sets covered by a discrete profile, by the use of the EXPDT/RETPD JCL operands. If a user does not specify a retention period with RACF commands or JCL, RACF selects a retention period through profile modeling, an installation exit, or a system default set with the RETPD operand on the SETROPTS command. If you have the SPECIAL attribute, you can establish a system default number of days with the RETPD operand. With this operand, you can specify a one to five digit number in the range of 065533. To set a default retention period for a data set that never expires, specify 99999. The following example shows how to specify a RACF security retention period of 365 days:
SETROPTS RETPD(365)
RACF uses the default security retention period for a tape data set in the following situations: v When a user defines a data set (using ADDSD) without specifying a retention period v When a user defines a data set (using ADDSD) or changes a data set profile (using ALTDSD) and specifies RETPD(0) v When a user specifies RETPD=0 on the JCL statement v When a user specifies EXPDT=today's date on the JCL statement v When a user omits the RETPD and EXPDT parameters on the JCL statement For example, if a user specifies RETPD=0 on the JCL statement and your installation has established a default retention period of 365 using SETROPTS RETPD, RACF uses 365 as the retention period for the user's data set. The default security retention period when RACF is installed is RETPD(0), to indicate no retention period. Notes: 1. The RACF security retention period is independent of the data set retention period specified by the EXPDT/RETPD JCL operands. However, the two retention periods are the same initially if the data set has a discrete profile. You can modify the security retention period by using the ALTDSD command, but you cannot change the data set retention period in the tape label of tape data sets. 2. The security retention period tape data sets has meaning only when both the TAPEVOL class and TAPEDSN are active.
134
RACF options
If you specify the ERASE operand without the ALL suboperand, erase-on-scratch processing applies only to data sets that do not have system-generated temporary names and do not have names that begin with **SYSUT. You can extend erase-on-scratch to include temporary data sets with system-generated names by using the naming conventions table to modify system-generated names to look like permanent names. In this case, you need not specify ALL. If you have the SPECIAL attribute, you can also deactivate erase-on-scratch processing by using the NOERASE operand on the SETROPTS command. NOERASE is in effect when a RACF database is first initialized using IRRMIN00.
Chapter 5. Specifying RACF Options
135
RACF options
You must specify a 3-character language code unless RACF is running with the MVS message service active. LANGUAGE(PRIMARY(ENU) (SECONDARY(ENU)), which means American English, is in effect when a RACF database is first initialized using IRRMIN00.
Restriction: You cannot activate SETROPTS GENLIST and SETROPTS RACLIST processing for the same general resource class. There is no need to respecify your GENLIST or RACLIST options for each class following a system IPL. Each time you IPL, RACF automatically reactivates GENLIST and RACLIST processing for your requested classes and recopies the applicable profiles into storage. Guidelines for choosing between GENLIST and RACLIST processing for a class: v Generally, when you do not share the RACF database with RACF on a VM system, RACLIST provides the best performance with the lowest usage of common storage. v When you share your RACF database with RACF on a VM system, avoid activating RACLIST processing for classes such as VMMDISK or TERMINAL when these classes contain numerous discrete profiles. RACF on VM has limited storage available for in-storage profiles and the storage is located below 16 megabytes on systems using 24-bit addressing. v When a class contains numerous discrete profiles, activating GENLIST, rather than RACLIST, significantly reduces your common storage requirements. However, GENLIST processing might degrade performance, particularly for a z/OS system sharing the RACF database, because needed profiles might be unavailable in storage and require physical access to the RACF database. For details about RACF virtual storage requirements, see z/OS Security Server RACF System Programmer's Guide. For information on in-storage profile processing with shared systems, see: v SETROPTS GENLIST Processing on Shared Systems on page 138
136
RACF options
v SETROPTS RACLIST Processing on Shared Systems on page 140.
After you activate SETROPTS GENLIST processing for a general resource class, RACF copies a generic profile in that class from the RACF database into common storage the first time an authorized user requests access to a resource protected by it. The profile is retained in common storage and is available to all authorized users, thereby saving real storage because the need to retain multiple copies of the same profile (one copy for each requesting user) in common storage is eliminated. Also, because RACF does not have to retrieve the profile each time a user requires access to it, this function saves processing overhead. Note that a general resource class must be active before you can activate SETROPTS GENLIST processing for that class. If the class is not active, issue the SETROPTS command with both the GENLIST and CLASSACT operands and specify the desired class. The following example shows how to activate the TERMINAL class and SETROPTS GENLIST processing for that class on the same command.
SETROPTS CLASSACT(TERMINAL) GENLIST(TERMINAL)
For more information on activating protection for specific general resource classes, check the index of this document for the class name.
137
RACF options
Notes: 1. If the system is enabled for sysplex communication and a command is successful on the system on which it was issued, RACF propagates the command to the other members of the data sharing group. 2. If the command fails on any of the peer systems and the system is in data sharing mode, RACF stops processing the command and backs it out of all the member systems, including the system on which it was issued. 3. In non-data sharing mode, the command can fail on a peer system without backing out of the other systems. 4. If the system is not enabled for sysplex communication, the command does not take effect on the other systems sharing the database until you issue it on those systems or the systems are IPLed. When you activate SETROPTS RACLIST processing for a general resource class, RACF loads both discrete and generic profiles for the class into a data space. These
138
RACF options
profiles are available to all authorized users, thereby eliminating the need for RACF to retrieve a profile each time a user requests access to a resource protected by it. As a result, when you activate this function, you reduce processing overhead. If the RACGLIST class is active and has a profile with the same name as the RACLISTed class, RACF saves the results on the database as classname_nnnnn profiles in the RACGLIST class, in addition to loading them into a data space. For example, RACF would save the RACLISTed data for the TERMINAL class as TERMINAL_00001, TERMINAL_00002, and so forth. For more information on RACGLIST, see The RACGLIST Class on page 271. If RACROUTE REQUEST=LIST,GLOBAL=YES was previously issued for the class, issuing SETROPTS RACLIST deletes the data space created by the RACROUTE request and replaces it with a new one. The SETROPTS RACLIST overrides the GLOBAL=YES RACLIST. Output from a SETR LIST command displays the class in the SETR RACLIST CLASSES = line rather than in the GLOBAL=YES RACLIST ONLY = line. For more information, see Using RACROUTE REQUEST=LIST,GLOBAL=YES Support on page 271. Note that a general resource class must be active before you can activate SETROPTS RACLIST processing for that class. If the class is not active, issue the SETROPTS command with both the RACLIST and CLASSACT operands and specify the desired class. The following example shows how to activate the TERMINAL class and SETROPTS RACLIST processing for that class on the same command.
SETROPTS CLASSACT(TERMINAL) RACLIST(TERMINAL)
For more information on activating protection for specific general resource classes, check the index of this document for the class name.
SETROPTS RACLIST processing for resources Chapter 8, Administering the Dynamic in the CDT class (dynamic classes) Class Descriptor Table (CDT), on page 301
139
RACF options
Notes: 1. You should issue a SETROPTS NORACLIST command for classes RACLISTed by RACROUTE REQUEST=LIST,GLOBAL=YES only after all classes that issued RACROUTE REQUEST=LIST,ENVIR=CREATE,GLOBAL=YES have given up their access to the RACLIST data space by issuing RACROUTE REQUEST=LIST,ENVIR=DELETE. 2. If the system is enabled for sysplex communication and a command is successful on the system on which it was issued, RACF propagates the command to the other members of the data sharing group. 3. If the command fails on any of the peer systems RACF does not back it out of the member systems. 4. If the system is not enabled for sysplex communication, the command does not take effect on the other systems sharing the database until you issue it on those systems or the systems are IPLed. NORACLIST is the default and is in effect for all eligible classes that are defined in the class descriptor table (CDT) when a RACF database is first initialized using IRRMIN00. See z/OS Security Server RACF System Programmer's Guide for more information about SETROPTS RACLIST processing.
140
RACF options
Issuing the SETROPTS RACLIST REFRESH command has no effect on which line of SETROPTS LIST output displays a RACLISTed class. If the class were RACLISTed solely by RACROUTE REQUEST=LIST, ENVIR=CREATE, GLOBAL=YES the class will be listed in the GLOBAL=YES RACLIST ONLY = line. Regardless of whether the class was RACLISTed by that means, if it was RACLISTed by SETR RACLIST classname, the class will be listed only in the SETR RACLIST CLASSES = line. If the RACGLIST class is active and contains a profile named classname, RACF rebuilds or creates the RACGLIST classname_nnnnn profiles to hold the new contents of the new data space. For more information, see The RACGLIST Class on page 271 and Using RACROUTE REQUEST=LIST,GLOBAL=YES Support on page 271. Note that you must issue this command each time you want RACF to perform the refresh process. The following example shows how to activate refreshing of SETROPTS RACLIST processing for the DASDVOL and TERMINAL classes.
SETROPTS RACLIST(DASDVOL TERMINAL) REFRESH
For information about SETROPTS REFRESH processing on shared systems, see Refreshing Shared Systems (REFRESH Option) on page 142.
If you use SETROPTS GENLIST to activate shared in-storage generic profiles for a general resource class, RACF refreshes the profiles as well as the profile lists for
141
RACF options
that class when you specify the class with GENERIC and REFRESH. For more information, see SETROPTS Options to Activate In-Storage Profile Processing on page 136. If you specify SETROPTS GENERIC(*) REFRESH, RACF refreshes profile lists for the DATASET class and all active classes except resource grouping classes and classes defined with the GENERIC(DISALLOWED) attribute. If you specify NOGENERIC on the SETROPTS command, RACF stops using in-storage generic profile lists but does not immediately delete them. RACF deletes the profile lists at the end of the job or TSO session, or when you again specify GENERIC. When you specify GENERIC, RACF rebuilds the profile lists. Note: You must have the SPECIAL attribute to issue the SETROPTS GENERIC command by itself. However, to issue SETROPTS GENERIC (classname) REFRESH, you do not need the SPECIAL attribute. However, you must have the group-SPECIAL, group-AUDITOR, group-OPERATIONS, AUDITOR, or OPERATIONS attribute. For information about SETROPTS REFRESH processing on shared systems, see Refreshing Shared Systems (REFRESH Option).
If you specify GLOBAL(*), RACF refreshes access checking lists for the DATASET class and all active classes in the class descriptor table (CDT). If you specify NOGLOBAL, you disable global access checking for the class that you specify. For information about SETROPTS REFRESH processing on shared systems, see Refreshing Shared Systems (REFRESH Option).
142
RACF options
processing on all of the systems. If you do not issue the SETROPTS REFRESH command on one of the shared systems, REFRESH is performed for that system when the system re-IPLs. On systems that are enabled for sysplex communication, issue the REFRESH command only once. If the command is successful, it is propagated to the other members of the data sharing group. If the command fails on any of the peer systems and the system is in data sharing mode, RACF stops processing the command and backs it out of all the member systems, including the system on which it was issued. In non-data sharing mode, the command can fail on a peer system without backing out of the other systems.
Attention Before you specify NONE, be sure that you define your terminals to RACF and give the appropriate users and groups proper authorization to use them. Otherwise, users cannot access the terminals. When you specify READ or NONE, you establish a default UACC for all users to undefined terminals on your system. If you specify READ, all users can access all terminals on your system (if allowed to by the security classifications of the terminals). If you specify NONE, only users and groups that you authorize to use a terminal through its access list can use it. If you do not specify either READ or NONE, the default value is READ. For more detailed information, see Protecting Terminals on page 247. For undefined terminals, READ access authority is in effect when a RACF database is first initialized using IRRMIN00.
143
RACF options
SETROPTS CLASSACT(SECDATA) SETROPTS CLASSACT(SECLABEL)
Security classification of users and data allows an installation to impose additional access controls on resources by defining security levels, security categories, and security labels for both users and resources. Note: You can create profiles in the SECDATA and SECLABEL classes, and specify security classifications in resource and user profiles, without actually activating the SECDATA and SECLABEL classes. When authorization checking occurs, the security classifications are ignored by RACF. This allows you to label the profiles without enforcing the security classifications. If you have the SPECIAL attribute, you can also deactivate security classification of users and data by specifying NOCLASSACT(SECDATA) or NOCLASSACT(SECLABEL), as appropriate, on the SETROPTS command. NOCLASSACT(SECDATA) and NOCLASSACT(SECLABEL) are in effect when a RACF database is first initialized using IRRMIN00.
where n is the maximum number of days that can be specified and must be between 1 and 32767. To remove the system-wide maximum (allowing any value in the profiles to take effect), enter:
SETROPTS NOSESSIONINTERVAL
Access control to load modules allows only authorized users to load and execute specified load modules (programs). RACF uses profiles in the PROGRAM general resource class to control access to programs. Program access to data sets allows an authorized user or group of users to access specified data sets in conjunction with the user's authority to execute a certain program. That is, some users can access specified data sets at a specified access level only while executing a certain program.
144
RACF options
Program access to SERVAUTH class resources allows an authorized user or group of users to access certain IP addresses in conjunction with the user's authority to execute a certain program. That is, some users can access specified IP addresses at a specified access level only while executing a certain program. If you have the SPECIAL attribute, you can also deactivate program control by using the NOWHEN(PROGRAM) operand on the SETROPTS command. NOWHEN(PROGRAM) is in effect when a RACF database is first initialized using IRRMIN00. Notes: 1. If the system is enabled for sysplex communication and a command is successful on the system on which it was issued, RACF propagates the command to the other members of the data sharing group. 2. If the command fails on any of the peer systems and the system is in data sharing mode, RACF stops processing the command and backs it out of all the member systems, including the system on which it was issued. 3. If the system is not enabled for sysplex communication, the command does not take effect on the other systems sharing the database until you issue it on those systems or the systems are IPLed. 4. In non-data sharing mode, the command can fail on a peer system without backing out of the other systems. For more information, see Chapter 9, Protecting Programs, on page 321.
145
RACF options
When the SECLABELCONTROL option is in effect, only certain users can specify the SECLABEL operand on RACF commands: v Users with the SPECIAL attribute can specify the SECLABEL operand on any RACF command. v Users with the group-SPECIAL attribute can specify the SECLABEL operand only on the ADDUSER and ALTUSER commands when they add a user to a group within their scope of control. Also, group-SPECIAL users must be permitted to the SECLABEL profiles with at least READ access authority. v Users without the SPECIAL attribute cannot specify the SECLABEL operand. To cancel this option, specify NOSECLABELCONTROL on the SETROPTS command.
Restriction: This option cannot be activated when the SECLABEL class is inactive. To cancel this option, specify NOMLSTABLE on the SETROPTS command. Note: If you must change security labels while the system is in multilevel stable state, you can issue SETROPTS MLQUIET before making the changes. See Quiescing RACF Activity (MLQUIET Option).
To cancel this option, specify NOMLQUIET on the SETROPTS command. Restriction: If SETROPTS MLSTABLE is not in effect, the SETROPTS MLQUIET command is ignored. Note: Do not specify SETROPTS MLQUIET if any system sharing the RACF database is not at the necessary software level for multilevel security support. For details, see z/OS Planning for Multilevel Security and the Common Criteria.
146
RACF options
Use of the MLQUIET option can prevent a successful IPL of these systems. In addition, if no systems sharing the RACF database are capable of multilevel security, you might have to IPL with RACF inactive and update the database with the block update command (BLKUPD) in order to turn off the MLQUIET option.
Preventing the Copying of Data to a Lower Security Label (SETROPTS MLS Option)
If you have the SPECIAL attribute, and if the SECLABEL class is active, you can prevent unauthorized users from copying data from a resource with one security label to a resource with a lower security label. This protection is also called controlling writedown. To do this, enter:
SETROPTS MLS(FAILURES)
Restrictions: v You cannot activate this option when the SECLABEL class is inactive. v The resource you want to protect must be in a resource class that is defined in the CDT with neither the RVRSMAC nor EQUALMAC attribute. (If the class has the RVRSMAC attribute, users are prevented from writing-up. If the class as EQUALMAC, users are not restricted in their write actions.) You can authorize certain users to copy data from a resource with one security label to a resource with a lower security label by defining and controlling the writedown privilege. (For more information, see Controlling the Writedown Privilege on page 109.) You can specify MLS(WARNING), rather than MLS(FAILURES), to allow the user request, but to send a warning message to the user and the security administrator. If you do not specify the FAILURES option with the SETROPTS MLS command, then MLS(WARNING) will be activated. Restriction: SETROPTS MLS(WARNING) does not apply to resources controlled by the SETROPTS MLFSOBJ option (z/OS UNIX files and directories) and the SETROPTS MLIPCOBJ option (interprocess communication objects). To cancel the SETROPTS MLS option, specify NOMLS on the SETROPTS command.
147
RACF options
To establish COMPATMODE, enter:
SETROPTS COMPATMODE
Restriction: This option cannot be activated when the SECLABEL class is inactive. To investigate the source of a security label failure, obtain a copy of the RACF audit records using output from the SMF data unload utility (IRRADU00). (See z/OS Security Server RACF Auditor's Guide.) Examine the records for the call to see if the failure occurred because of insufficient security label authority. Next, examine the token information for the caller. If the caller's token is identified as being created by a pre-RACF 1.9 protocol that either did not, or was unable to, specify a security label, RACF failed the security label authorization check. NOCOMPATMODE is in effect when a RACF database is first initialized using IRRMIN00.
148
RACF options
GDSNUF and MDSNUF SERVAUTH SERVER TAPEVOL TERMINAL USER VMDEV VMLAN VMMAC VMMDISK VMSEGMT WRITER
Restriction: This option cannot be activated when the SECLABEL class is inactive. You can also specify MLACTIVE(WARNING), which allows the users to log on or submit jobs. MLACTIVE(WARNING) sends a warning message to the user and to the security administrator when the user attempts to: Enter the system without a security label Access a resource in one of the previously mentioned classes but the resource has not been assigned a security label If you do not specify the FAILURES option with the SETROPTS MLACTIVE command, then MLACTIVE(WARNING) will be activated. To cancel the MLACTIVE option, specify NOMLACTIVE on the SETROPTS command. Attention: Do not issue the SETROPTS MLACTIVE(FAILURES) command unless you have assigned appropriate security labels to users and to the resources they must access. To recover from such a situation, logon as a user with the SPECIAL attribute, specifying SYSHIGH as the current security label. Then, either assign security labels or issue SETROPTS NOMLACTIVE. If you turn on MLACTIVE and do not correctly define all profiles that need SECLABELs, IPL failures, or other serious problems can occur. Guidelines: Back up your RACF database with a database that you know you can use to IPL. Define new system profiles (including classes such as DATASET, TERMINAL, TAPEVOL, APPL or any other active class that has SLBLREQ=YES in the class descriptor table) and ensure they have the correct security labels. Turn MLACTIVE on in WARNING mode. Watch out for relevant warning messages. Data set and general resource profiles in WARNING mode: A user or task can access a resource that is in WARNING mode and has no security label even when MLACTIVE(FAILURES) is in effect and the class requires security labels. The user or task receives a warning message and gains access. (A data set or general resource is in WARNING mode when you define or modify the profile that protects it and you specify the WARNING operand.)
149
RACF options
Restriction: This option cannot be activated when the SECLABEL class is inactive. To cancel the MLFSOBJ option, specify MLFSOBJ(INACTIVE) on the SETROPTS command. Note: Do not specify SETROPTS MLFSOBJ(ACTIVE) if any system sharing the RACF database is not at the necessary software level for multilevel security support. Use of the SETROPTS MLFSOBJ option should not cause problems on these systems, but it does not provide full protection on these systems. For details, see z/OS Planning for Multilevel Security and the Common Criteria.
Restriction: This option cannot be activated when the SECLABEL class is inactive. To cancel the MLIPCOBJ option, specify MLIPCOBJ(INACTIVE) on the SETROPTS command. Guideline: Assign security labels to all users before activating MLIPCOBJ to ensure that all interprocess communication objects in progress are assigned security labels. One way to ensure this is to activate MLIPCOBJ at IPL time. Note: Do not specify SETROPTS MLIPCOBJ(ACTIVE) if any system sharing the RACF database is not at the necessary software level for multilevel security support. Use of the SETROPTS MLIPCOBJ option should not cause problems on these systems, but it does not provide full protection on these systems. For details, see z/OS Planning for Multilevel Security and the Common Criteria.
150
RACF options
To cancel the MLNAMES option, specify NOMLNAMES on the SETROPTS command. When MLNAMES is active, users who list catalogs and directories will not see the names of data sets and files they cannot currently access. If the SECLABEL class is not active while MLNAMES is active, data set names will still be hidden from users who do not have at least READ access to the data sets. For details about name-hiding, see z/OS Planning for Multilevel Security and the Common Criteria. Note: Do not specify SETROPTS MLNAMES if any system sharing the RACF database is not at the necessary software level for multilevel security support. Use of the SETROPTS MLNAMES option should not cause problems on these systems, but it does not provide full protection on these systems.
151
RACF options
To cancel the SECLBYSYSTEM option, specify NOSECLBYSYSTEM on the SETROPTS command. Then, issue the SETROPTS RACLIST(SECLABEL) REFRESH. Note: Do not specify SETROPTS SECLBYSYSTEM if any system sharing the RACF database is not at the necessary software level for multilevel security support. Use of the SETROPTS SECLBYSYSTEM option should not cause problems on these systems, but it does not provide full protection on these systems. For details, see z/OS Planning for Multilevel Security and the Common Criteria.
152
RACF options
v Use MLPA to cause RACF to find the exit. This is the recommended method because you only need to do it once. v Create SMP/E USERMOD to claim ownership of ICHDEX01 and move it to LPALIB. This is not recommended because you need to perform this operation with each installation. RACF performs two different encoding functions: v Password/OIDCARD data encoding v Password/OIDCARD data comparison Encoding means that, given data in clear text and given an encryption key (which RACF constructs), the equivalent data is produced in encrypted form. RACF provides a one-way encoding. That is, data encrypted by RACF can only be decoded if the data is already known. For additional details, see z/OS Security Server RACF System Programmer's Guide. Comparison means that, given a password (or OIDCARD data) as entered by a user (in clear text form) and given a password (or OIDCARD data) as stored in the RACF database in encoded form, an indication as to whether they are equal or not is returned. RACF performs password comparison in the following way: v RACF encrypts the user-entered data using the DES algorithm and compares it against the stored version. If they are equal, RACF returns to the caller with an equal indication. v RACF encodes the user-entered data using the current masking algorithm and compares it against the stored version. If they are equal, RACF returns to the caller with an equal indication. By encoding the user-entered data against both the DES algorithm and the masking algorithm, RACF allows the use of existing masked passwords and OIDCARD data until they can be replaced by the DES forms. For compatibility with previous versions of RACF, a dummy ICHDEX01 exit routine is supplied with RACF. You should delete the dummy exit routine on all systems that share the RACF database after all of these systems have been converted to a version of RACF that supports the DES algorithm.
153
RACF options
you can allow JES to access spool data sets. To associate the names of started procedures with specific RACF group names and user IDs, you and your RACF system programmer can do one of the following: 1. Set up the STARTED class (the preferred method). 2. Create a started procedures table (ICHRIN03).
If you do not specify NOPASSWORD for a user ID assigned to a started procedure, you should specify a password and change the password periodically. If you do not specify a password and do not specify NOPASSWORD, RACF uses the default group name as the password. Anyone who knows this user ID and password combination can gain access to any resource that the started procedure can access. See Using Protected User IDs for Batch Jobs on page 478 for more information. Note: If the associated user ID is revoked for any reason, the started procedure might have problems allocating new SMS-managed data sets, submitting batch jobs, and obtaining printed output.
154
RACF options
155
RACF options
Attention Be sure to specify a group name (not =MEMBER) as the GROUP value of the STDATA segment, if both of the following are true: 1. The profile name contains generic characters (*, %, or &). 2. The USER value of the STDATA segment is the character string =MEMBER. If you do not specify a group name, a new started procedure or job could be assigned on execution to a user ID that matches an existing user ID on your system. Consider defining a special group (for example, STCGROUP) for started procedures and job user IDs, and using this group name as the GROUP value of the STDATA segment. In addition, be careful which libraries your started procedures come from and do not let your users update them. Refer to the JES customization manuals for information on specifying procedure libraries.
job
For system address spaces, resource names are of the form job.job, or (if your system programmer used the JOBSPACE option of the ATTR parameter of the ASCRE macro to create the address space), member.job. To determine which form to use for a procedure associated with a system address space, refer to the documentation for the application or consult the programmer. For programming details about creating address spaces, see Creating address spaces in z/OS MVS Programming: Extended Addressability Guide. For each sample START command issued for a started procedure (job) address space, Table 8 on page 157 shows the resource name that will be used for STARTED class processing, and a list of names for STARTED class profiles that could be defined for each STARTED class resource.
156
RACF options
Table 8. Sample profile names for STARTED class resources START command S CICS STARTED class resource name CICS.CICS STARTED class profile name CICS.CICS CICS.* CICS.** S CICSP CICSP.CICSP CICSP.CICSP CICSP.* CICSP.** CICS*.** CICS* S CICST CICST.CICST CICST.CICST CICST.* CICST.** CICS*.** CICS* S IMS,JOBNAME=IMSPROD IMS.IMSPROD IMS.IMSPROD IMS.IMSP* IMS.* IMS.** S IMS,JOBNAME=IMSTEST IMS.IMSTEST IMS.IMSTEST IMS.IMST* IMS.* IMS.**
157
RACF options
158
RACF options
started procedures table, and issues message IRR813I or IRR814I if the STARTED class is active but one of the following occurs: a. RACF cannot find a matching profile in the STARTED class. b. RACF finds a matching profile but the profile does not assign a user ID.
159
RACF options
160
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
162 162 163 163 164 164 165 165 166 167 167 167 168 168 169 169 169 172 172 173 173 174 175 175 176 177 177 178 179 179 179 179 179 179 180 180 180 180 181 181 181 182 182 183 183 183 184 184 185 186 186 187 187 187 188
161
Data sets
Tape Volume Protection (TAPEVOL Active and TAPEDSN Inactive) . . . . . . . . . . . No Tape Volume or Tape Data Set Protection (TAPEVOL Inactive and TAPEDSN Inactive) . . . Protecting Existing Data on Tape (SETROPTS TAPEDSN in Effect) . . . . . . . . . . . . Protecting New Data on Tape . . . . . . . . . . . . . . . . . . . . . . . . . Protecting Tape Volumes . . . . . . . . . . . . . . . . . . . . . . . . . Security Levels and Security Categories for Tapes . . . . . . . . . . . . . . . . . . Security Labels for Tapes . . . . . . . . . . . . . . . . . . . . . . . . . . Tape Volume Profiles That Contain a TVTOC. . . . . . . . . . . . . . . . . . . . Tape Volume Table of Contents (TVTOC) . . . . . . . . . . . . . . . . . . . . Automatic TVTOC Tape Volume Profiles . . . . . . . . . . . . . . . . . . . . Nonautomatic Tape Volume Profiles . . . . . . . . . . . . . . . . . . . . . . Predefining Tape Volume Profiles for Tape Data Sets . . . . . . . . . . . . . . . . . RACF Security Retention Period Processing (TAPEDSN Must Be Active) . . . . . . . . . . Authorization Requirements for Tape Data Sets When Both TAPEVOL and TAPEDSN Are Active . . Authorization Requirements for Tape Data Sets When TAPEVOL Is Inactive and TAPEDSN Is Active . Authorization Requirements for Tape Data Sets When TAPEVOL Is Active and TAPEDSN Is Inactive . JCL Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installations with DFSMShsm . . . . . . . . . . . . . . . . . . . . . . . . . IEC.TAPERING Profile in the FACILITY Class . . . . . . . . . . . . . . . . . . . Password-Protected Tape Data Sets . . . . . . . . . . . . . . . . . . . . . . . Using the PROTECT Parameter for Tape Data Set or Tape Volume Protection . . . . . . . . . Multivolume Tape Data Sets . . . . . . . . . . . . . . . . . . . . . . . . . RACF Authorization of Bypass Label Processing (BLP) . . . . . . . . . . . . . . . . Authorization Requirements for Labels . . . . . . . . . . . . . . . . . . . . . . Tape Data Set and Tape Volume Protection with Nonstandard Labels (NSL) . . . . . . . . . Tape Data Set and Tape Volume Protection for Nonlabeled (NL) Tapes . . . . . . . . . . . Opening an Unlabeled Tape for Input . . . . . . . . . . . . . . . . . . . . . Opening an Unlabeled Tape for Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 189 189 190 191 193 194 194 194 195 196 196 197 199 200 200 200 200 201 201 201 202 202 203 203 203 203 204
This topic contains in-depth information on protecting data sets on DASD and tape.
162
Data sets
163
Data sets
Important If you do not issue the SETROPTS command with the PREFIX operand, a system ABEND occurs when a user attempts to create a data set with a single-qualifier name. This abend occurs only when creating a discrete profile as part of data set allocation. Note: The real data set names option (specified by the REALDSN operand on the SETROPTS command) applies only to name conversions made by the naming conventions table or installation exit routines. This option has no effect on single-qualifier data set names (unless they have been modified by the naming conventions table or an exit routine), whose real data set names continue to be the prefixed ones. For more information on specifying the prefix, see Protecting Data Sets with Single-Qualifier Names (PREFIX Option) on page 132.
164
Data sets
- By specifying the PROTECT=YES OR SECMODEL=profile-name operands on the JCL DD statement that creates the data set v The REQUEST=DEFINE preprocessing exit routine allows RACF protection.
165
Data sets
v The data set name is protected by an existing generic profile and the user does not have ADSP. The creation is allowed if at least one of the following is true: The user has ALTER authority to the data set through the generic profile or global access checking. The user has CREATE authority in the group. RACF does not create a profile. v The data set name is not covered by an existing generic profile and the user does not have ADSP. If PROTECTALL is not in effect, the creation is allowed, but RACF does not create a profile. See Note 2. v The user has ADSP and the data set belongs to a group of which the user is a member. The creation is allowed only if the user has CREATE authority in the group. If the creation is allowed, RACF creates a discrete profile for the data set. v The REQUEST=DEFINE preprocessing exit routine allows RACF protection. v The user has the OPERATIONS attribute except when both of the following are true: 1. The user is connected to the group with less than CREATE authority. 2. The user has less than ALTER access to the data set if it protected by a generic profile. If the user has the group-OPERATIONS attribute (that is, the user is connected to a superior group with the OPERATIONS attribute), the group for which the new data set is being created must be within the scope of that superior group. If PROTECTALL is not in effect, any user without ADSP can create a data set whose high-level qualifier is neither a RACF user ID (user data set) nor a RACF group name (group data set), but the data set cannot be RACF-protected. Note that a dummy group (a group that has no users connected to it) can be defined for the high-level qualifier of these data sets so that they can then be RACF-protected. Notes: 1. In all cases, if the user specifies the PROTECT=YES or SECMODEL parameter on the JCL DD statement, or the PROTECT or SECMODEL operand on the TSO ALLOCATE command (these operands request that RACF create a discrete profile), RACF treats the user the same as a user with ADSP. However, because the use of these operands is voluntary, an installation cannot use the operands to control the creation of data sets. 2. If PROTECTALL is in effect at your installation, a user cannot create a new data set unless the data set is RACF-protected by either a discrete or generic profile. However, instead of rejecting all creation requests for unprotected data sets, PROTECTALL also allows installations to issue warning messages. For more information on the PROTECTALL option, see RACF-Protecting All Data Sets (PROTECTALL Option) on page 128.
166
Data sets
Ownership of data set profiles is assigned when the profiles are defined to RACF. Note that ownership of a data set profile does not mean that the owner can automatically access that data set. To access a data set, the owner must still be authorized in the profile's access list, unless the high-level qualifier of the profile name is the owner's user ID. In some cases, the OWNER field of a discrete data set profile can be changed simply by renaming the data set. For details, see z/OS Security Server RACF System Programmer's Guide.
167
Data sets
You can define a generic profile to protect data sets in one of the following ways: v By issuing the ADDSD command and specifying the generic characters *, %, or, if enhanced generic naming is active, ** in the profile name. Profile names that contain generic characters can protect a number of similarly named data sets. v By issuing the ADDSD command and specifying the GENERIC operand. Use this operand when the profile name you specify does not contain any generic characters, in which case it is a fully qualified generic profile. A fully qualified generic profile protects only those data sets whose name matches the profile name exactly. For example, you might define a fully qualified generic profile to protect data sets with the same name that reside on different volumes.
Note: You might see data set names with the high-level qualifiers of &&TEMP and **SYSUT. These data sets are created internally by the IEHMOVE program and should not be used for any other reason.
168
Data sets
RACF enforces the rule that data set qualifiers can be no longer than eight characters. Therefore, in generic data set profiles, the generic characters * and ** cannot be used to match qualifiers that are longer than eight characters.
Guideline: Once you activate generic profile checking for the DATASET class and define generic data set profiles, avoid deactivating it with the NOGENERIC operand. RACF will not use your previously defined generic profiles for authorization checking while NOGENERIC is in effect. v If generic profile checking is in effect for the DATASET class, RACF examines the profiles as follows: For a discrete profile (if the caller indicates that the data set is RACF-indicated).
Chapter 6. Protecting Data Sets on DASD and Tape
169
Data sets
For a fully qualified generic profile. For other generic profiles in the order of most specific to least specific profile name. See Table 9 and Table 10 on page 171. v After a profile is found, RACF uses information in the profile to do authorization checking. For a complete description, see Authorization Checking for RACF-Protected Resources on page 753. If the data set is RACF-indicated, RACF first checks for a discrete profile. If a discrete profile does not exist, RACF examines the generic profiles in the order of most specific to least specific profile name. Therefore, if a discrete profile does not exist, RACF uses the most specific matching generic profile. If the data set is not RACF-indicated, RACF examines the generic profiles in the order of most specific to least specific, and uses the most specific matching generic profile. Note: To determine which generic profile is the most specific match to a particular data set name, you can use the LISTDSD command with the GENERIC option. Table 9 and Table 10 on page 171 list some generic profiles from the DATASET class. This figure represents the order in which RACF checks the generic profiles when it performs access-authorization checking. (This order is also the order that RACF commands such as SEARCH would list these generic profiles.)
Table 9. Sample data set profile names in order from most specific to least specific (EGN off)
Data sets being accessed Profile name SALES.A SALES.DATA SALES.DATA SALES.DATA.% SALES.DATA.* SALES.DATA% SALES.DATA* SALES.DAT% SALES.DAT* SALES.DISK.* SALES.YEARLY.QUOTA SALES.YEARLY.QUOTA SALES.YEARLY.* SALES.%ATA SALES.*.QUOTA SALES.*.QUOTA* SALES.* Profile type Fully qualified generic Discrete Fully qualified generic Generic Generic Generic Generic Generic Generic Generic Discrete Fully qualified generic Generic Generic Generic Generic Generic X X X X X X X X X X X X X X X X X SALES.DATA SALES.DATA.TEST SALES.YEARLY.QUOTA
Note: RACF ignores a discrete profile if a data set is not RACF-indicated. Any data set that has a discrete profile must be RACF-indicated.
170
Data sets
Table 10. Sample data set profile names in order from most specific to least specific (EGN on)
Data sets being accessed Profile name SALES.A SALES.DATA SALES.DATA SALES.DATA.% SALES.DATA.* SALES.DATA.** SALES.DATA% SALES.DATA* SALES.DAT% SALES.DAT* SALES.DISK.* SALES.YEARLY.QUOTA SALES.YEARLY.QUOTA SALES.YEARLY.* SALES.%ATA SALES.* SALES.*.QUOTA SALES.*.QUOTA* SALES.**.DATA SALES.**.QUOTA SALES.** Profile type Fully qualified generic Discrete Fully qualified generic Generic Generic Generic Generic Generic Generic Generic Generic Discrete Fully qualified generic Generic Generic Generic Generic Generic Generic Generic Generic X X X X X X X X X X X X X X X X X X X X SALES.DATA SALES.DATA.TEST SALES.YEARLY.QUOTA
Note: RACF ignores a discrete profile if a data set is not RACF-indicated. Any data set that has a discrete profile must be RACF-indicated.
To find out which profiles could protect a data set, perform the following steps: 1. Find out if there is a discrete profile protecting the data set:
LISTDSD DATASET(data-set-name)
If a discrete profile exists for the data set, this command lists the contents of the profile. 2. If no discrete profile protects the data set, issue the LISTDSD command again with the GENERIC option:
LISTDSD DATASET(data-set-name) GENERIC
If a generic profile exists for the data set, this command lists the contents of the profile. 3. There might well be other generic profiles that have the potential to protect the data set. These profiles are listed by the SEARCH command in the order that RACF would use them. Because all data set profiles begin with a user ID or group name, you can use the FILTER operand to show only those profiles that could protect a data set, as shown in the following examples:
SEARCH CLASS(DATASET) FILTER(userid.**) SEARCH CLASS(DATASET) FILTER(groupname.**)
To see which of two generic profiles is more specific, compare the profile names, character by character. Where they first differ, if one has a discrete character and
Chapter 6. Protecting Data Sets on DASD and Tape
171
Data sets
the other has a generic character, the one with the discrete character wins. If both have a generic character where they differ, then: v If one has a % and the other has a * or **, the one with % wins. v If one has a * and the other has a **, the one with * wins. If two profile names fit except for one character position, the following is the order in which RACF examines them:
blank . $ (X'5B') # (X'7B') @ (X'7C') AZ 09 % *
Tip: The characters $, #, and @ might be displayed differently on terminals outside the United States. Therefore, use the characters with the hexadecimal equivalents shown above. For example, the following profile names all fit in the first three character positions (A.B), and are shown in the order RACF examines them:
A.B A.B.B A.BA A.BZ A.B0 A.B9 A.B% A.B*
When in doubt about the search order, create sample profiles and check the order of profile names shown by the SEARCH command.
172
Data sets
If PROTECTALL is in effect and generic profile checking is not, only users who have ADSP or specify PROTECT=YES can create new data sets. After defining, altering, or deleting a generic profile, the following command ensures that the profile is in effect during authorization checking:
SETROPTS GENERIC(DATASET) REFRESH
RACF is invoked whenever a data set is accessed (whether or not the data set is RACF-indicated) and whenever DASD space is allocated for a data set (whether or not the user has the ADSP attribute or has specified PROTECT=YES on the JCL statement). When RACF is invoked for a data set that is not RACF-indicated, RACF checks only predefined generic profiles and the global access checking table. If PROTECTALL is not in effect and RACF cannot find an appropriate generic profile or a matching entry in the global access checking table, RACF accepts the access request by default.
Important Data sets that are not RACF-indicated but are protected by a generic profile are not protected if they are transferred (in any way) or available (such as through shared DASD) to another system that does not have RACF and appropriate predefined generic profiles.
173
Data sets
For this support to take effect, the SERVAUTH class must be active. Note: If an access list contains more than one condition, any of the conditions allows the specified access. For example, if you enter the PERMIT command with WHEN(CONSOLE(01) TERMINAL(20)) specified, you allow the access when either console 01 or terminal 20 is used.
v To allow only RACF-defined users on the system to use a data set, specify UACC(NONE) for the profile, and then issue the PERMIT command with ID(*) and ACCESS(READ) specified:
RDEFINE profile-name UACC(NONE) PERMIT profile-name ID(*) ACCESS(READ)
174
Data sets
Note: When specifying the MODEL operand, do not specify the user's user ID on the model profile name. 2. If necessary, create a model data set profile:
ADDSD userid.model-profile-name MODEL ...other appropriate operands such as UACC and AUDIT... PERMIT userid.model-profile-name ID(appropriate-users-or-groups) ACCESS(access-authority)
Notes: a. With the MODEL operand specified, no actual data set need exist with the specified profile name. A generic profile cannot be a model profile. b. A profile created with the MODEL operand is not intended to actually protect a data set (and does not cause an existing data set to be RACF-indicated). However, if a data set with the same name exists, the model profile might be used to protect that data set. Therefore, choose a profile name such that the profile does not match any data sets. 3. When you are ready to start using model profiles for user data sets, issue the SETROPTS command with MODEL(USER) specified:
SETROPTS MODEL(USER)
4. After the SETROPTS command has been issued, if a user creates a user data set profile for another user, and that profile had the MODEL operand specified, information from the model profile is always copied into the new user data set profile. Example: The following commands set up a model profile named SUE.SAMPMOD for user SUE. The model specifies a UACC of NONE and gives READ access to SAM, JOE, and GROUP1.
(1) (2) (3) (4) ALTUSER SUE MODEL(SAMPMOD) ADDSD SUE.SAMPMOD MODEL UACC(NONE) PERMIT SUE.SAMPMOD ID(SAM JOE GROUP1) ACCESS(READ) SETROPTS MODEL(USER)
175
Data sets
(5) ADDSD SUE.DATA UACC(READ)
In this example: (1) indicates to RACF that automatic profile modeling is to be used for new profiles beginning with SUE. (2) creates a profile named SUE.SAMPMOD. With the MODEL operand specified, no actual data set named SUE.SAMPMOD needs to exist. However, if a data set named SUE.SAMPMOD does exist, it is protected by the profile named SUE.SAMPMOD. (3) specifies an access list for profile SUE.SAMPMOD. (4) turns on automatic profile modeling for all of the users who have the MODEL operand set in their user profiles. (5) creates profile SUE.DATA with UACC(READ). RACF copies the access list from SUE.SAMPMOD (SAM, JOE, and GROUP1 have READ access). With UACC(READ) specified on the ADDSD command, the UACC(NONE) value from SUE.SAMPMOD is not used. Note that the copied information can be changed during the copy. See Possible Changes to Copied Profiles When Modeling Occurs on page 42.
Note: When specifying the MODEL operand, do not specify the group's group name on the model profile name. 2. If necessary, create a model data set profile:
ADDSD groupname.model-profile-name MODEL ...other appropriate operands such as UACC and AUDIT... PERMIT groupname.model-profile-name ID(appropriate-users-or-groups) ACCESS(access-authority)
Notes: a. With the MODEL operand specified, no actual data set need exist with the specified profile name. b. A profile created with the MODEL operand is not intended to actually protect a data set (and does not cause an existing data set to be RACF-indicated). However, if a data set with the same name exists, the model profile might be used to protect that data set. Therefore, choose a profile name such that the profile does not protect any data sets. 3. When you are ready to start using model profiles for group data sets, issue the SETROPTS command with MODEL(GROUP) specified:
SETROPTS MODEL(GROUP)
4. After the SETROPTS command has been issued, if a user creates a group data set profile for a group for which the MODEL operand has been specified, information from the model profile is always copied into the new group data set profile.
176
Data sets
Example: The following commands set up a model profile named GROUP1.SAMPMOD for group GROUP1. The model specifies a UACC of NONE and gives READ access to SAM, JOE, and GROUP1.
(1) (2) (3) (4) ALTGROUP GROUP1 MODEL(SAMPMOD) ADDSD GROUP1.SAMPMOD MODEL UACC(NONE) PERMIT GROUP1.SAMPMOD ID(SAM JOE GROUP1) ACCESS(READ) SETROPTS MODEL(GROUP)
In this example: (1) indicates to RACF that automatic profile modeling is to be used for new profiles beginning with GROUP1. (2) creates a profile named GROUP1.SAMPMOD. With the MODEL operand specified, no actual data set named GROUP1.SAMPMOD needs to exist. However, if a data set named GROUP1.SAMPMOD does exist, it is protected by the profile named GROUP1.SAMPMOD. (3) specifies an access list for profile GROUP1.SAMPMOD. (4) turns on automatic profile modeling for all groups that have the MODEL operand set in their group profiles. (5) creates profile GROUP1.DATA with UACC(READ). RACF copies the access list from GROUP1.SAMPMOD (SAM, JOE, and GROUP1 have READ access). With UACC(READ) specified on the ADDSD command, the UACC(NONE) from GROUP1.SAMPMOD is not used. Note that the copied information can be changed during the copy. See Possible Changes to Copied Profiles When Modeling Occurs on page 42.
177
Data sets
Note: For GDG profiles, with enhanced generic naming active, you can no longer define a profile name such as GDG.ABCDEFGH* whose last qualifier contains an asterisk as the ninth character. Externally, an existing profile name of this format is shown as GDG.ABCDEFGH.**. Internally, no conversion is required because the two names are equivalent. However, you should examine existing CLISTs that generate commands to ensure that any profile names that appear in those commands are in the correct format. v You can define discrete profiles to protect GDG data sets in the same way that you define discrete profiles to protect non-GDG data sets. Note: Catalog management also checks authority to the GDG base name. You should create a discrete profile for the GDG base with the unit and volume of the catalog on which the GDG base resides. This protects the GDG for catalog and uncatalog functions. v You can use the MODEL(GDG) operand on the SETROPTS command to specify that each member of a GDG can use a common profile identified by the GDG base name. The owner of the GDG data set can establish a base (index) name profile containing an access list that is accessible by all related users and groups. When MODEL(GDG) is in effect and REQUEST=AUTH processes a RACF-indicated GDG data set, RACF first looks for a profile with the base name, and, if one exists, uses this common profile. If you want individual access lists, do not create the profile for the base name. If the GDG base name is not defined in the RACF database, RACF uses the profile for the individual GDG name (which is the same as the RACF-processing for non-GDG data sets). Notes: 1. To use GDG modeling, each generation must be RACF-indicated. 2. Catalog management also checks authority to the GDG base name. You should create a discrete profile for the GDG base with the unit and volume of the catalog on which the GDG base resides. This protects the GDG for catalog and uncatalog functions.
178
Data sets
179
Data sets
the JCL DD statement that identifies the data set (or for DASD data sets, the PROTECT or SECMODEL operand on the TSO ALLOCATE command). Note that the normal reason for a user to use PROTECT or SECMODEL instead of ADSP is that most of the user's data sets do not require discrete profiles because they are covered by generic profiles.
180
Data sets
Note: Anyone who has READ, UPDATE, CONTROL, or ALTER authority to a protected data set can create a copy of it. As owner of the copied data set, that user has control of the security characteristics of the copied data set and can downgrade it. For this reason, you should assign a UACC of NONE, and then selectively permit a small number of users to access your data set, as their needs become known. (For information on how to permit selected users or groups to access a data set, see z/OS Security Server RACF Command Language Reference.) READ Allows users to access the data set for reading only. (Note that users who can read the data set can copy or print it.)
181
Data sets
Table 12. Access authorities for DASD data sets (continued) UPDATE Allows users to read from, copy from, or write to the data set. However, UPDATE does not authorize a user to delete, rename, move, or scratch the data set. Allows users to perform normal VSAM I/O (not improved control interval processing) to VSAM data sets. CONTROL For VSAM data sets, it allows users to perform improved control interval processing. This is control-interval access (access to individual VSAM data blocks), and the ability to retrieve, update, insert, or delete records in the specified data set. For non-VSAM data sets, CONTROL is equivalent to UPDATE. ALTER Allows users to read, update, delete, rename, move, or scratch the data set. When specified in a discrete profile, ALTER allows users to read, alter, and delete the profile itself including the access list. Note: ALTER does not allow users to change the owner of the profile using the ALTDSD command. However, if a user with ALTER access authority to a discrete data set profile renames the data set, changing the high-level qualifier to his or her own user ID, then both the data set and the profile are renamed, and the OWNER of the profile is changed to the new user ID. When specified in a generic profile, ALTER gives users no authority over the profile itself, but allows users to create new data sets that are covered by that profile.
182
Data sets
The SETROPTS command has several options on the ERASE operand that allow an installation to override user specifications. These erase-on-scratch options allow an installation to: v Specify that all DASD data set extents are always erased when scratched or released, regardless of the erase indicator in the profile. (This includes temporary data sets.) When this option is selected, installation exit routines cannot prevent any data set from being erased by overriding this option. v Specify a security level (SECLEVEL) at which all data sets at this security level or higher are always erased when scratched or released, regardless of the erase indicator in the profile. v Specify that only data sets that have the erase indicator in their profiles are erased when scratched or released. v Specify that no data sets under RACF control are erased when scratched or released. Notes: 1. RACF does not perform the actual erasure, but maintains an indicator for data management. 2. If you have not specified that you want all data sets erased, you can still provide for the erasing of sensitive temporary data sets by using the naming conventions table or RACF exit routines to conditionally convert the temporary data set names to the form of a permanent name that is covered by a profile that specifies erase-on-scratch. 3. In addition to the RACF-controlled erasure, any VSAM data set with a catalog entry that specifies erase is erased.
Protecting Catalogs
You can protect many catalog functions including catalog locking and SMS-related functions, by creating profiles in the FACILITY class. For information on creating these profiles and authorizing users to perform catalog operations on protected catalogs, see the following documents: v z/OS DFSMS Managing Catalogs v z/OS DFSMS Access Method Services for Catalogs v z/OS DFSMS Using Data Sets
183
Data sets
v The level of protection you want for the data set The system data sets can be divided into two categories: data sets for which RACF protection is bypassed when the system accesses them, and data sets for which RACF protection is enforced when the system accesses them.
184
Data sets
Note: SYS1.PARMLIB is in both lists of examples because there are some system functions for which RACF protection is bypassed when accessing SYS1.PARMLIB, and some for which it is enforced. For example, TCAS requires access to SYS1.PARMLIB. See Appendix D, Security for system data sets, on page 745 for guidelines about setting appropriate UACC values for system data sets.
| | | | | |
185
Data sets
186
Data sets
If you have already implemented RACF tape volume security, DFSMSrmm supports RACF tape volume security with any combination of RACF TAPEVOL and TAPEDSN options. To support your migration to the NOTAPEDSN and NOCLASSACT(TAPEVOL) environment, DFSMSrmm provides the TPRACF(CLEANUP) option to delete TAPEVOL profiles and discrete tape DATASET profiles during the recycling of scratch tapes. Beginning with z/OS Version 1 Release 8, DFSMSrmm supports the TAPEAUTHDSN and TAPEAUTHF1 options specified in DEVSUPxx member of SYS1.PARMLIB. (See z/OS MVS Initialization and Tuning Reference for information about using these options to enable tape authorization checking.) TAPEAUTHDSN Enables RACF authorization checking in the DATASET class for tape data. This allows authorized users to overwrite tape volumes using RACF erase-on-scratch processing. (See Erasing Scratched or Released Data (ERASE Option) on page 135.) TAPEAUTHF1 Enables RACF authorization checking in the DATASET class for the first file on a tape volume when any file on the same tape volume is opened. This allows a common authorization for all data sets on the volume. For details, see z/OS DFSMSrmm Implementation and Customization Guide.
Tape Data Set and Tape Volume Protection (TAPEDSN Active and TAPEVOL Active)
Using the ADDSD command for a tape data set results in two discrete profiles: an automatic tape volume profile that contains a tape volume table of contents (TVTOC) and a tape data set profile. This means that RACF provides: v Checking of the RACF security retention period (the number of days that must elapse before the data set can be deleted or overwritten). v Verification for the full 44-character data set names. v Protection for multiple data sets on a volume if all of the data sets have the same access requirements. v Multivolume data set protection. v RACF protection for the volume.
187
Data sets
v Automatic deletion of the data set and tape volume profiles when the data set or tape volume is overwritten and discrete protection for the data set has expired. Normally, you use the SET operand (which is the default) on the ADDSD command. If the tape volume and data set profiles get out of synchronization (that is, if the tape volume profile refers to a data set profile that does not exist or vice versa), use either the NOSET or SETONLY operand. Use NOSET if you have a data set profile but no tape volume profile. Use SETONLY if you have a tape volume profile but no data set profile. v Having ADSP or specifying PROTECT=YES on the JCL DD statement also results in two discrete profiles, just as the ADDSD command does. v Data management calls RACF in the DATASET class. For tapes being opened for input, data management issues a RACROUTE REQUEST=AUTH, CLASS=DATASET, DSTYPE=T macro. For tapes being opened for output, data management issues a RACROUTE REQUEST=DEFINE, CLASS=DATASET, DSTYPE=T macro. RACF authorizes access to protected tape data sets through RACF authorization checking. RACF bypasses any tape data set password protection. If the tape data set is not RACF-protected or the tape protection option is not active, data management authorizes access to tape data sets by password protection. | | | | | | | | | | | | | The following notes apply to ICH408I messages when you use generic TAPEVOL profiles: v The WARNING option does not provide the expected ICH408I warning messages when added to a generic TAPEVOL profile. v The ICH408I message that is issued when access to a tape data set is denied includes incorrect information when the data set is protected by both a DATASET profile and a generic TAPEVOL profile (without the WARNING option). When the data set is protected by only a TAPEVOL profile and access is denied, the ICH408I message correctly indicates the ACCESS ALLOWED level based on the TAPEVOL profile. However, when the data set is protected by both profiles and the DATASET profile would allow access, access is denied but the ICH408I message incorrectly indicates the ACCESS ALLOWED level based on the DATASET profile instead of the TAPEVOL profile.
188
Data sets
No Tape Volume or Tape Data Set Protection (TAPEVOL Inactive and TAPEDSN Inactive)
v You have no RACF protection for data on tape, either by volume or by data set. v Using the ADDSD command for a tape data set results in an error message. However, you can use the RDEFINE, RALTER, RDELETE, and RLIST commands for tape volume profiles, which provide protection if TAPEVOL or TAPEDSN are activated. v Data management does not call RACF.
If the cataloged tape data set resides on more than one volume (a multivolume tape data set), RACF uses the data set name specified on the ADDSD command and the information supplied in the catalog to protect the data set on all of the volumes on which it resides. To protect an existing tape data set that is uncataloged, issue the ADDSD command with the TAPE operand and specify: v The data set name v The tape volume on which the data set resides v The unit name v The file sequence number of the data set on the tape
Chapter 6. Protecting Data Sets on DASD and Tape
189
Data sets
For example, suppose you want to protect an uncataloged tape data set named USER03.TEST.DATA with a discrete RACF profile. The data set resides on a tape volume labeled 123456 and has a file sequence of 1. To protect this data set, enter:
ADDSD USER03.TEST.DATA TAPE UNIT(TAPE) VOLUME(123456) FILESEQ(1)
From this information, RACF builds a discrete profile for both the data set and the tape volume. When you issue the ADDSD command to protect an existing tape data set, RACF creates an automatic tape volume profile. For more information, see Tape Volume Profiles That Contain a TVTOC on page 194. Note that when you issue the ADDSD command to RACF-protect an uncataloged tape data set, you protect that data set only on the volume that you specify. If you have an uncataloged tape data set that resides on more than one volume, you can RACF-protect this data set with a discrete profile using several commands. For example, suppose you want to RACF-protect a tape data set named USER02.TEST.DATA that resides on volumes 111111 and 222222. 1. To protect that portion of the data set residing on volume 111111, issue the ADDSD command:
ADDSD USER02.TEST.DATA TAPE UNIT(TAPE) VOLUME(111111) FILESEQ(1)
2. To protect that portion of the data set residing on volume 222222, issue the ALTDSD command with the ADDVOL operand as follows:
ALTDSD USER02.TEST.DATA ADDVOL(222222)
Notes: a. You can protect only one volume at a time with the ALTDSD command and the ADDVOL operand. If your data set resides on more than two volumes, issue the ALTDSD command and specify the appropriate volume on the ADDVOL operand for each additional volume. For a tape data set with an entry in the TVTOC, the maximum number of volumes the data set can span is 42. b. Before you can use the ALTDSD command to protect a portion of a multivolume data set, at least one other portion of that data set must already be RACF-protected. c. RACF ignores this command if you specify a generic profile name for the data set.
190
Data sets
When the user creates a new tape data set, RACF automatically builds a discrete profile for the data set as well as the tape volume on which the data set resides (unless the tape volume is already defined with the TVTOC option).
After you define a tape volume with a TVTOC, you can use generic profiles to protect data sets that reside on that volume. To define a generic profile for data sets, use the ADDSD command and specify the profile name. The following example shows how to define the generic profile USER03.*.
ADDSD USER03.*
Notes: 1. The user ID of the issuer of RDEFINE is placed automatically on the access list with ALTER only if SETROPTS ADDCREATOR is in effect. 2. The TAPEVOL class must be active for the RDEFINE command to succeed. For more information, see Activating Tape Volume Protection (TAPEVOL Option) on page 133. 3. The TVTOC operand applies only to discrete tape volume profiles. 4. When you issue the RDEFINE command with the TVTOC operand, you create a nonautomatic tape volume profile. For more information, see Tape Volume Profiles That Contain a TVTOC on page 194. 5. When you issue the ADDSD command, you can predefine a generic data set profile, or define a generic profile after the data set and TVTOC entry have been created. You can also use existing generic profiles that were created to protect DASD data sets. If you are using generic data set profiles for tape data sets, you should specify a retention period in those profiles because the SETROPTS retention period is not used. 6. The access authorities that apply to tape volume profiles are as follows:
191
Data sets
NONE READ UPDATE CONTROL ALTER Allows no access to data on the tape volume. Allows users to read from the tape volume. Allows users to read from the tape volume, and to write additional data sets to the volume. Is equivalent to UPDATE. Allows users to read from the tape volume, to write additional data sets to the volume, and to create or destroy tape volume labels through OPEN or end-of-volume operations. For discrete tape volume profiles, allows users to change the profile, including the access list.
Authorizing Access to a Data Set on a Tape Volume with a TVTOC: RACF maintains an entry in the TVTOC for each data set that a user writes to a scratch pool volume. The data set can be: v Protected by a discrete profile, an appropriate generic profile, or both v Not protected by any profile When a user requests access to a data set on the tape volume, RACF performs access checking as follows: 1. RACF checks the user's authority to the volume on which the data set resides. If the user has sufficient authority to the volume, RACF grants access to the data set. If the user does not have sufficient authority to the volume, access checking proceeds with Step 2. 2. RACF checks to see if the data set is RACF-indicated. (For more information on RACF-indicated data sets, see Protection Through Discrete Profiles on page 167.) If the data set is RACF-indicated, access checking proceeds with Step 3. If the data set is RACF-indicated, RACF checks for a discrete profile that protects the data set. If RACF finds a discrete profile and the user has sufficient authority to the data set, RACF grants access. If the user does not have sufficient authority to the data set, RACF denies access. If RACF does not find a discrete profile, access checking proceeds with Step 3. 3. If the data set is RACF-indicated but RACF does not find a discrete profile, RACF searches for an appropriate generic profile. If RACF finds a generic profile, RACF grants or denies access based on the user's authority. If RACF does not find a generic profile, RACF fails the request. 4. If the data set is not RACF-indicated, RACF searches for an appropriate generic profile that protects the data set. If RACF finds a generic profile and the user has sufficient authority to access the data set, RACF grants the request. If the user does not have sufficient authority to access the data set, RACF fails the request. If RACF does not find a generic profile, the data set is not RACF-protected and, therefore, any user can access the data set. Defining Tape Volumes Without a TVTOC: You can also define tape volumes without using the TVTOC operand. When you define a tape volume in this manner, RACF does not maintain a TVTOC to control access to data sets on the volume. Instead, RACF controls access to data sets on the tape volume using only the access list in the volume's profile. Users with at least READ authority to the volume can read any data on the tape. Users with at least UPDATE authority to the volume can write data on the tape. The following sequence of commands shows how to define a tape volume without a TVTOC and how to control access to the data sets on that volume.
192
Data sets
1. To define and protect a tape volume, issue the RDEFINE command with the appropriate operands and assign a UACC of NONE to the volume.
RDEFINE TAPEVOL profile-name UACC(NONE)
For example, to define a tape volume labeled 123456 and assign it a UACC of NONE, issue the following command.
RDEFINE TAPEVOL 123456 UACC(NONE)
The RDEFINE command adds a profile for the tape volume to the RACF database. 2. To allow a user access to the volume for the purpose of creating data sets, issue the PERMIT command with the appropriate operands and give the user UPDATE access authority. For tape volume 123456, enter the command as follows.
PERMIT 123456 CLASS(TAPEVOL) ID(userid or groupname) ACCESS(UPDATE)
UPDATE access authority allows a user to read and write data sets to the tape volume. You should not assign ALTER access authority to a general user because ALTER allows a user to overwrite the tape label. 3. If other users want to access the data on the tape volume, issue the PERMIT command with the appropriate operands and access authority. For example, to give another user READ access authority to tape volume 123456, issue the following command.
PERMIT 123456 CLASS(TAPEVOL) ID(userid or groupname) ACCESS(READ)
Note that a user must have sufficient authority to issue the PERMIT command. Because you gave the user who requested the tape volume UPDATE access authority, that user does not have sufficient authority to allow other users to access the tape volume. 4. When a user has finished working with the tape volume, issue the PERMIT command and specify the RESET(ALL) operand. RESET(ALL) deletes the entire current standard and conditional access lists from the tape volume's profile. For tape volume 123456, enter the command as follows.
PERMIT 123456 CLASS(TAPEVOL) RESET(ALL)
If you delete only the access lists from a tape volume profile, you retain RACF protection for data on the volume. (In this case, no users can access the data.) If you delete the tape volume profile itself, you have no RACF protection for data on the volume. (Any user can access the data.)
When a user creates data sets on tape volume 123456, the user should ensure that each data set has the same security level and security categories as specified on the RALTER command. To delete the security level and all of the security categories from the volume's profile (for example, when a user has finished working with a tape volume), issue the RALTER command with the NOSECLEVEL and DELCATEGORY(*) operands. For tape volume 123456, enter the command as follows:
Chapter 6. Protecting Data Sets on DASD and Tape
193
Data sets
RALTER TAPEVOL 123456 NOSECLEVEL DELCATEGORY(*)
When a user creates data sets on tape volume 123456, the user should ensure that each data set has the same security label (LABEL1) as was specified on the RALTER command that defined the tape volume. Note: When the SECLABEL class is active, and both the SETROPTS MLS(FAILURES) and SETROPTS MLACTIVE options are in effect, the security label of the tape volume profile is used for all data sets on the volume. For tape volume profiles without TVTOCs, the security label is assigned when the tape volume profile is defined. Tape volume profiles with TVTOCs are assigned a security label when the first data set is written to the tape. To delete the security label from the volume's profile (for example, when a user has finished working with a tape volume), issue the RALTER command rather than the RDELETE command with the NOSECLABEL operand. For tape volume 123456, enter the command as follows:
RALTER TAPEVOL 123456 NOSECLABEL
194
Data sets
You can list the information in the TVTOC of a tape volume profile by using the RLIST command. For more information, see z/OS Security Server RACF Command Language Reference. RACF makes entries in the TVTOC when a user: v Opens a new data set on a predefined tape volume, or v Protects a new or existing tape data set using RACF RACF then uses the information during access checking. Notes: 1. The maximum number of entries for data sets that a TVTOC can contain is 500.
Important Processing that creates large numbers of TVTOC entries and large access lists might result in an attempt to exceed the maximum profile size. 2. The maximum number of volumes that any data set on the tape with an entry in the TVTOC can span is 42. 3. The maximum number of volumes that any data set on tape without a TVTOC can span is limited only by the maximum profile size. When both TAPEDSN and TAPEVOL are active, RACF can create two different types of TVTOC profiles: v An automatic TVTOC tape volume profile v A nonautomatic TVTOC tape volume profile v The NOSET option on the DELDSD command can be used to remove a discrete tape data set profile without deleting the tape volume profile. For more information, see z/OS Security Server RACF Command Language Reference. The sections that follow describe these profiles.
195
Data sets
v TVTOC: The tape volume table of contents You can change any of these fields by using the RALTER or PERMIT command. (The most likely change is adding other users to the access list so that they can define data sets on the tape volume.) When the security retention periods for all data sets on a volume that is protected by an automatic tape volume profile have expired and a user uses the volume for output, RACF deletes the volume's profile. When a user creates a new data set on such a tape volume and specifies PROTECT=YES on the JCL DD statement or has the ADSP attribute, RACF creates a new discrete tape volume profile with a TVTOC and generates a discrete profile for the data set. If the user does not specify PROTECT=YES on the JCL DD statement or have the ADSP attribute, RACF does not create new profiles for the volume or the data set. Therefore, the volume and any data sets on it are no longer RACF-protected and any user can read or write data on the volume.
196
Data sets
control over the profile and the tape volume. RACF puts the user ID in the access list with ALTER authority only if SETROPTS ADDCREATOR is in effect. If SETROPTS NOADDCREATOR is in effect, the tape librarian needs to ensure that they are the owner of the profile and should issue the PERMIT command to give themselves ALTER authority if they need to have complete control over the profile and the tape volume. When the first user creates a tape data set on a predefined tape volume, RACF builds a TVTOC in the tape volume profile and places the user ID of this person in the access list with ALTER authority. If the volume is defined with the SINGLEDSN operand, no one can write additional data sets on the volume. If the volume is not defined with the single-data-set option, only this user (and the tape librarian) can add additional data sets to the volume without further authorization. Other users can add data sets to the volume only if they have been placed in the volume's access list with at least UPDATE authority. When the tape librarian needs more tape volumes for the scratch pool, the librarian can issue the SEARCH command with the EXPIRES operand to find tape volumes for which the security retention period for all of the data sets is expired (or close to expiring). The librarian can then use the RDELETE and RDEFINE commands to redefine these tape volumes. Unlike DASD data sets, tape data sets are not deleted. A tape data set exists until it is overwritten by another program or by a utility such as IEHINITT. Specifying DISP=DELETE for a tape data set only causes the data set to be uncataloged if it was cataloged. DISP=DELETE does not remove RACF protection from the data set or delete the data on the tape volume.
197
Data sets
If the user has sufficient authority to a tape volume or tape data set, the user can overwrite an existing data set using one of the following: v The same data set name v A data set name defined to RACF to which the user has authority v A data set name not defined to RACF If the RACF security retention period for an existing tape data set has not expired and the user does not have sufficient authority to overwrite it, RACF issues a message indicating that the user does not have sufficient authority to the volume or data set. When a user specifies PROTECT=YES on the JCL DD statement, RACF updates the TVTOC to reflect the creation of the new data set. RACF also generates a discrete profile to protect the new data set and deletes any existing discrete profile that protected the overwritten data set. A user can specify the security retention period for a tape data set by one of the following methods: v For a data set protected by either a discrete or generic profile, by using the RETPD operand on the ADDSD or ALTDSD command v For a data set protected by a discrete profile, by specifying the EXPDT or RETPD operand on the JCL DD statement For discrete profiles, if a user does not specify a security retention period for a tape data set, the retention period can be provided by one of the following: v Profile modeling v An installation exit routine v A system-wide default set by the RETPD operand on the SETROPTS command For generic profiles that protect tape data sets, the user must assign a security retention period to the profile by specifying the RETPD operand on the ADDSD or ALTDSD command. (If the security retention period is omitted, a zero value is used and the profile is treated as if it expired.) When RACF is installed, the default security retention period is RETPD(0). If your installation specifies a different default security retention period for tape data sets, RACF uses the specified value in any of the following situations: v When a user specifies RETPD=0 on the JCL DD statement v When a user specifies EXPDT=current-date on the JCL DD statement v When a user does not specify the EXPDT/RETPD JCL operands Note: The RACF security retention period is independent of the data set retention period specified by the EXPDT/RETPD JCL operand. However, the two retention periods are initially the same if the user who creates the data set has ADSP or specifies PROTECT=YES on the JCL DD statement. You can modify the security retention period in the data set profile by using the ALTDSD command. If a tape volume contains more than one data set, RACF protects each data set independently. RACF achieves this protection by not allowing users with UPDATE authority to one or more of the data sets to rewrite any data set until one of the following occurs: v The profiles for all of the data sets that sequentially follow that data set on the tape volume have been deleted.
198
Data sets
v The security retention periods for all of the data sets that sequentially follow that data set on the tape volume have expired. Note, however, that users who have at least UPDATE authority to the volume can write to the volume unconditionally. In response to RDELETE or DELDSD commands, RACF deletes tape volume profiles and the discrete tape data set profiles for all data sets residing on tapes when all of the data sets that the TVTOC points to have expired. For generation data groups (GDGs), RACF does not automatically delete RACF protection of the volumes containing the oldest generation when a new generation is defined. Because residual data remains on a tape volume even after the security retention period of the RACF profiles has expired, installations should consider degaussing tape volumes on which all of the data sets have an expired security retention period. The librarian can then redefine these tape volumes to RACF using the RDEFINE command with the TVTOC operand and, thereby, reenter the volumes into the common scratch pool.
Authorization Requirements for Tape Data Sets When Both TAPEVOL and TAPEDSN Are Active
When TAPEVOL is active, users with ALTER authority to a tape volume have full control over the volume profile, including the volume's access list. ALTER authority gives the user the ability to create and delete data sets on the volume and rewrite the tape volume label. To open a RACF-protected tape data set for input (for reading), the user must have at least READ authority to the data set or the volume. When a RACF-protected volume is opened for input and the user does not have the authority necessary to write to the data set, a message might be issued to the system operator to remove the write-enable ring (file protect ring). (The authority necessary to open a RACF-protected tape data set for output is described below.) For more information, see IEC.TAPERING Profile in the FACILITY Class on page 201. To open a RACF-protected tape data set for output (for writing), the user must have UPDATE authority to the tape volume, or the following authority: v To rewrite or add to a data set without changing the data set name, the user requires UPDATE authority to the data set. If the data set is not the last data set on the tape volume, all of the subsequent data sets must have passed their security retention periods or be explicitly deleted using the DELDSD or RDELETE command. v To overwrite an existing data set on a tape with a data set of a different name, the security retention periods for the data set and any subsequent data sets must have expired. The user must also have authority to create a data set with the specified name (the authority checks are the same as for DASD data sets). v To add a new data set to the end of a tape, the user requires UPDATE authority to the tape volume, and the volume profile must allow more than a single data set. The user must also have authority to create a data set with the specified name (the authority checks are the same as for DASD data sets). Note: If a data set is in the TVTOC of a tape volume profile, but is not covered by a discrete profile, a generic profile, or an entry in the global access checking table, the data is not RACF-protected.
199
Data sets
Authorization Requirements for Tape Data Sets When TAPEVOL Is Inactive and TAPEDSN Is Active
To open a RACF-protected tape data set for input (for reading), the user must have at least READ authority to the data set. When a RACF-protected tape data set is opened for input and the user does not have the authority necessary to write to the data set, a message might be issued to the system operator to remove the write-enable ring (file protect ring). (The authority necessary to open a RACF-protected tape data set for output is described below.) For more information, see IEC.TAPERING Profile in the FACILITY Class on page 201. To open an existing RACF-protected tape data set for output (for writing), the user must have at least UPDATE authority to the data set. To create a new tape data set for output or, to catalog an existing tape data set after opening it for output, the user must have ALTER authority to the data set.
Authorization Requirements for Tape Data Sets When TAPEVOL Is Active and TAPEDSN Is Inactive
When TAPEVOL is active, users with ALTER authority to a tape volume have full control over the volume profile, including the volume's access list. ALTER authority gives the user the ability to create and delete data sets on the volume and to rewrite the tape volume label. To open a tape data set on a RACF-protected tape volume for input (for reading), the user must have at least READ authority to the tape volume. When a data set on a RACF-protected tape volume is opened for input and the user does not have the authority necessary to write to the data set, a message might be issued to the system operator to remove the write-enable ring (file protect ring). (The authority necessary to open a tape data set on a RACF-protected volume for output is described below.) For more information, see IEC.TAPERING Profile in the FACILITY Class on page 201. To open a tape data set on a RACF-protected tape volume for output (for writing), the user must have at least UPDATE authority to the volume.
JCL Changes
To protect tape data sets, installations should provide generic profiles or code PROTECT=YES (when TAPEVOL is active) for each data set that requires protection. Data management allows you to specify PROTECT=YES for each data set on a tape volume.
200
Data sets
Important You should only allow access to the IEC.TAPERING resource for users who can be trusted not to abuse the authority to write to tapes they are allowed to read. For IBM 3490 tape drives and for IBM 3480 tape drives with the IDRC feature, this profile is not checked. Instead, the tape device cannot use WRITE operations when the user has only READ authority. See the following example for setting up an IEC.TAPERING profile: 1. Create a profile to protect the IEC.TAPERING resource:
RDEFINE FACILITY IEC.TAPERING UACC(NONE)
Note: If you want to allow this for all users on your system, specify UACC(READ) and omit the following PERMIT command. 2. Permit users or groups, as appropriate:
PERMIT IEC.TAPERING CLASS(FACILITY) ID(userid or groupname) ACCESS(READ)
Using the PROTECT Parameter for Tape Data Set or Tape Volume Protection
To define a tape data set or a tape volume to RACF for protection by a discrete profile, specify the PROTECT parameter on the JCL DD statement that identifies a tape data set on the volume. If generic profile checking is active, do not use the
201
Data sets
PROTECT parameter unless a discrete profile is required for the data set. If the data set is also password-protected, the password must be supplied before the tape volume is RACF-protected.
202
Data sets
RACF checks the user's authority to the ICHBLP resource when the user attempts to access a tape with an IBM standard or ANSI label (even if BLP is specified on the LABEL operand of the DD statement for the tape volume). RACF performs BLP authorization checking only if the TAPEVOL class is active. If TAPEVOL is not active, data management does not call RACF to perform BLP or tape access checking. If RACF finds an ICHBLP profile, RACF verifies that the user has sufficient authority to use bypass label processing. If the user does not have sufficient authority, RACF fails the request. If RACF does not find an ICHBLP profile or if the user has sufficient authority to use bypass label processing, RACF performs authorization checking on the volume. If the user has sufficient authority to the volume, RACF grants the request. Otherwise, RACF fails the request. Note: RACF performs authorization checking on a volume based on the volume serial number specified on the JCL statement. Proper authorization checking, therefore, depends on the operator mounting the correct volume.
Tape Data Set and Tape Volume Protection with Nonstandard Labels (NSL)
Data management does not do authorization checking for nonstandard labeled tapes. However, if the user is going to destroy standard labels, data management calls RACF to determine whether the tape volume is protected. If the tape is RACF-protected and TAPEDSN is active, the user must have ALTER authority to the volume and to the data sets on the volume. For more detailed information, consult the DFSMS documents.
Tape Data Set and Tape Volume Protection for Nonlabeled (NL) Tapes
The following topics describe the authorization requirements for opening unlabeled tapes.
203
Data sets
volume, RACF does not automatically create or maintain TVTOC data set entries. However, TVTOC data set entries can be manually created and maintained with the ADDSD command. If data management finds a labeled tape when opening the volume for input, it rejects the request.
204
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207 207 210 210 211 211 211 212 212 213 215 216 216 217 218 219 219 219 222 222 222 223 223 223 225 232 232 233 233 235 235 235 235 236 236 237 238 238 239 239 239 239 240 240 241 242 243 245 246 246 247 247 248 249 249
205
General resources
Limiting the Times That a Terminal Can Be Used . . . . . . . Using Security Labels to Control Terminals . . . . . . . . . Using the TSO LOGON Command with the RECONNECT Operand . Protecting Consoles . . . . . . . . . . . . . . . . . . Using Security Labels to Control Consoles. . . . . . . . . . Using the Secured Signon Function . . . . . . . . . . . . . The RACF PassTicket. . . . . . . . . . . . . . . . . Activating the PTKTDATA Class . . . . . . . . . . . . . Defining Profiles in the PTKTDATA Class . . . . . . . . . . Determining PTKTDATA Profile Names . . . . . . . . . Protecting the Secured Signon Application Keys . . . . . . . Example of Defining a PTKTDATA Class Profile. . . . . . . When the Profile Definitions Are Complete . . . . . . . . . How RACF Processes the Password or PassTicket . . . . . . . Bypassing PassTicket Replay Protection . . . . . . . . . Enabling the Use of PassTickets . . . . . . . . . . . . . Verifying the Secured Signon Environment . . . . . . . . Preventing Errors . . . . . . . . . . . . . . . . . Protecting the Vector Facility . . . . . . . . . . . . . . . Controlling Access to Program Dumps . . . . . . . . . . . . Using RACF to Control Access to Program Dumps . . . . . . . Protecting Program Dumps Using a Data Set Profile . . . . . Protecting Program Dumps Using the FACILITY Class . . . . Using Non-RACF Methods to Control Access to Program Dumps . . Controlling the Allocation of Devices . . . . . . . . . . . . Protecting LLA-Managed Data Sets . . . . . . . . . . . . . Controlling Data Lookaside Facility (DLF) Objects (Hiperbatch) . . . Using RACROUTE REQUEST=LIST,GLOBAL=YES Support . . . . . The RACGLIST Class. . . . . . . . . . . . . . . . . Administering the Use of Operator Commands . . . . . . . . . Authorizing the Use of Operator Commands . . . . . . . . . Command Authorization in an MCS Sysplex . . . . . . . . . Controlling the Use of Operator Commands . . . . . . . . . Controlling the Use of Remote Sharing Functions . . . . . . . . Controlling Access to the RACLINK Command . . . . . . . . Controlling the Use of the RACLINK DEFINE Operand . . . . Controlling the Use of the RACLINK PWSYNC Operand. . . . Controlling Password Synchronization . . . . . . . . . . . Controlling the Use of the AT Operand. . . . . . . . . . . Controlling the Use of the ONLYAT Operand. . . . . . . . . Controlling Automatic Direction . . . . . . . . . . . . . Controlling Automatic Direction of Commands . . . . . . . Controlling Automatic Direction of Passwords . . . . . . . Controlling Automatic Direction of Application Updates . . . . Establishing Security for the RACF Parameter Library . . . . . . . Controlling Message Traffic. . . . . . . . . . . . . . . . Controlling the Opening of VTAM ACBs . . . . . . . . . . . RACF and PSF (Print Services Facility) . . . . . . . . . . . . Auditing When Users Receive Message Traffic . . . . . . . . . RACF and APPC . . . . . . . . . . . . . . . . . . . User Verification during APPC Transactions . . . . . . . . . Partner LU as Port of Entry (POE) . . . . . . . . . . . Local LU Name as Application (APPL) . . . . . . . . . . Protection of APPC/MVS Transaction Programs (TPs) . . . . . . LU Security Capabilities . . . . . . . . . . . . . . . . Conversation Security Options . . . . . . . . . . . . Origin LU Authorization . . . . . . . . . . . . . . . Protection of APPC Server IDs (APPCSERV) . . . . . . . . . RACF and CICS . . . . . . . . . . . . . . . . . . . RACF and DB2 . . . . . . . . . . . . . . . . . . . . RACF and IMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 250 250 251 252 252 253 253 253 254 257 259 259 259 261 261 262 262 263 263 263 263 264 265 265 268 269 271 271 272 273 274 274 279 279 279 280 280 281 281 282 282 284 285 286 287 288 288 289 289 289 290 290 290 291 291 291 292 292 292 292
206
General resources
RACF and ICSF . . . . . . . . . . . . . . . . . RACF and z/OS UNIX . . . . . . . . . . . . . . . RACF Support for NDS and Lotus Notes for z/OS . . . . . . Administering Application User Identities . . . . . . . . Adding Application Identity Segments . . . . . . . . Modifying User Identity Segments . . . . . . . . . Removing User Identity Segments . . . . . . . . . System Considerations . . . . . . . . . . . . . . Mapping Profiles in the NOTELINK and NDSLINK Classes . Authorizing Applications to Use Identity Mapping . . . . . Defining Applications as RACF Users . . . . . . . . Permitting Access to the IRR.RUSERMAP Resource . . . Activating Identity Mapping . . . . . . . . . . . Considerations for Application User Names . . . . . . . Storing encryption keys using the KEYSMSTR class . . . . . Steps for storing a key in a KEYSMSTR profile . . . . . . Defining delegated resources . . . . . . . . . . . . . Steps for authorizing daemons to use delegated resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 293 293 293 294 294 294 294 295 296 296 296 297 297 297 298 299 300
This topic provides in-depth information on protecting general resources. RACF-protected resources can be divided into two categories: data sets and general resources. General resources are all of the resources that are defined in the class descriptor table. For example, general resources include DASD and tape volumes, load modules (programs), terminals, and others. See Chapter 9, Protecting Programs, on page 321 for information about controlling programs, program libraries, and program access to data.
Note: For the authority needed to issue any of these commands, see z/OS Security Server RACF Command Language Reference.
207
General resources
If you specify a generic profile name, the profile can protect more than one resource. Using generic profiles instead of discrete profiles can greatly reduce the effort of maintaining the profiles. In general, you should create generic profiles to cover the majority of resources, using discrete profiles only for exceptions. Also, you should consider creating a profile to be used as a model, especially if you are specifying complex access lists. Models can be used when creating any kind of resource profile (discrete or generic), and modeling can be done across classes. To model, specify the FROM operand on the RDEFINE command. To model across classes, you should also specify the FCLASS operand. Before using modeling, see Possible Changes to Copied Profiles When Modeling Occurs on page 42. Note: To specify generic profile names, either generic command processing or generic profile checking (the SETROPTS GENCMD or SETROPTS GENERIC option) must be in effect for the class. For example, for the TERMINAL class:
SETROPTS GENERIC(TERMINAL)
If you specify a discrete profile name, the profile can protect only one resource. The rules for specifying profile names for most supplied general resource classes are described elsewhere in this document. Notes: a. For some kinds of resources, (such as terminals, DASD volumes, and CICS, IMS, and SDSF classes), you should consider using resource group profiles instead of generic profiles. Creating resource group profiles can save a significant amount of work. See Creating Resource Group Profiles on page 233 for more information. b. You can use RACFVARS profiles to specify values for variables (indicated by an ampersand &) in profile names. For more information, see Using RACF Variables in Profile Names (RACFVARS Class) on page 237. v Decide which access is to be allowed to all users on the system who are not otherwise limited. In RACF, this is called the universal access authority (UACC). This has the same meaning as the access authority on access lists (see Step 3 on page 209). In most cases, the UACC should be NONE or READ. v Decide which user or group is to be the owner of the new resource profile. By default, this is the user who creates the profile. If the owner is a user, the owner can list, modify, or delete the resource profile. Note that being the owner of a resource profile does not, by itself, allow a user to have access to the resource or resources that are protected by the profile. For more information, see Step 16 on page 756 in Authorizing Access to RACF-Protected Resources on page 754. If the owner is a group, the authority of a user who has a group-level attribute in that group (such as group-SPECIAL or group-AUDITOR) extends to resources that are protected by this profile. v Decide which user, if any, should be notified by a message when users make unsuccessful attempts to access resources that are protected by the profile (NOTIFY operand). v Decide whether RACF should log access attempts to resources that are protected by the profile (AUDIT operand).
208
General resources
Note: To see the results of the logging done by RACF, use the RACF report writer. For more information, see z/OS Security Server RACF Auditor's Guide. v If your installation is using some form of security classification, do one of the following: If security labels are used on your system, decide which security label (if any) to assign to the profile. When security labels are being used on your system, be aware that security levels and categories are ignored. If security levels are used on your system, decide which security level (if any) to assign to the profile. If security categories are used on your system, decide which security categories (if any) to assign to the profile. If your installation has written RACF installation exits to use the LEVEL operand, decide which value to specify for LEVEL. v Depending on the class of the resource, the profile might have additional fields for which you should assign values. For example: Profiles in the APPCLU class have SESSION segments Profiles in the TAPEVOL class have the SINGLEDSN and TVTOC operands Profiles in the TERMINAL and GTERMINL classes have the WHEN and TIMEZONE operands (both optional). WHEN determines the times and days a terminal can be used. Note: This WHEN is not the same as the WHEN operand in a conditional access list. See the appropriate topic of this document or the description of the RDEFINE command in z/OS Security Server RACF Command Language Reference for specific information on these operands. v To copy an existing profile, specify the name of the existing profile on the FROM operand. If the existing profile is in a different class, specify FCLASS also. 2. Create the general resource profile using the RDEFINE command:
RDEFINE classname profile-name other-operands
Note: To change a general resource profile, use the RALTER command. 3. If specific users or groups are to have specific access to the resource, use the PERMIT command to create one or both of the access lists: v Each entry in the standard access list states which access (such as NONE or READ) a specific user or group has:
PERMIT profile-name CLASS(classname) ID(userid or group) ACCESS(access-authority)
v Each entry in the conditional access list states which access (such as NONE or READ) a specific user or group has, and also states which condition a user must meet to get the specified access:
PERMIT profile-name CLASS(classname) ID(userid or group) ACCESS(access-authority) WHEN(condition)
209
General resources
Notes: a. Access authorities that you can specify with UACC or specifically assign to users vary from class to class, and are described in the topics of this document that describe the specific classes. b. Not all classes are described in this document. (For example, the DSNR class is not described in this document.) Also, in some classes (notably the FACILITY class), the access required by some resource managers to specific profiles is described in the documentation of the resource manager. Therefore, go to that resource manager to find the descriptions of that class. (In the case of DSNR, which is used by DB2, see RACF and DB2 on page 292.) c. The profile creator might be automatically added to the access list with ALTER authority. For more information, see Automatic Addition of Creator's User ID to Access List on page 152. 4. If you have not already done so, activate the resource class:
SETROPTS CLASSACT(classname)
5. For performance benefits, consider doing one of the following: v Allow all users on the system to have access to the resource at some level (such as READ or UPDATE) by creating a global access checking table entry that has a name similar to the new resource profile. See Setting Up the Global Access Checking Table on page 218. v Reduce I/O to the RACF database by requesting that RACF keep all profiles in the class in storage:
SETROPTS RACLIST(classname)
210
General resources
executing the ICHERCDE macro using the GENERIC=DISALLOWED parameter. (See z/OS Security Server RACF Macros and Interfaces for information about using the ICHERCDE customization macro.) Before you request a static class defined with GENERIC=DISALLOWED, determine if the new class shares a POSIT value with other classes. If so, ensure that all other classes sharing the POSIT value also have GENERIC=DISALLOWED for static classes or GENERIC(DISALLOWED) for dynamic classes. Rule: If you share the RACF database with downlevel systems (z/OS Version 1 Release 7 and earlier) and you want to disallow generics, always administer profiles in classes where generics are disallowed from systems running z/OS V1R8 and higher. If you administer profiles in the class where generics are disallowed from a downlevel system that shares the RACF database, you might inadvertently activate generic profile processing for that class because generics cannot be disallowed on downlevel systems. This would allow generic profiles to be added in this class from any system sharing the RACF database. For information about disallowing generics with dynamic classes when you share the RACF database, see Shared system rules for disallowing generics with dynamic classes on page 319.
Choosing Among Generic Profiles, Resource Group Profiles, and RACFVARS Profiles
Table 14 gives some considerations for choosing among generic profiles, resource group profiles, and RACFVARS profiles.
Table 14. Choosing among generic profiles, resource group profiles, and RACFVARS profiles How to choose Use generic profiles when the names of the resources have logically matching characters. Use resource group profiles if the names of the resources do not have logically matching characters and there is a resource grouping class (such as GTERMINL or GDASDVOL). Use RACFVARS profiles if the names of the resources do not have logically matching characters and there is no resource grouping class. Reference Rules for Generic Profile Names and z/OS Security Server RACF Command Language Reference. Creating Resource Group Profiles on page 233.
211
General resources
v The SETROPTS GENCMD option is in effect. In this case, generic profiles can be created and modified, but RACF does not use them during authorization checking. This is intended for use when migrating from discrete profiles to generic profiles.
Generic Naming
You can specify an asterisk (*) within a profile name to represent one qualifier of a resource name. You can also use a double asterisk (**) to represent zero or more qualifiers within a general resource generic profile or at the end of such a profile. Use of the double asterisk (**) in general resource generic profiles is not controlled by the SETROPTS EGN option which applies only to the data set profiles. Some of the rules for generic characters are different between general resource and data set generic profiles. See z/OS Security Server RACF Command Language Reference for more information.
Limited Use of %* in General Resource Profile Names The %* combination requires special attention. New profiles with an ending %* are not allowed nor are profiles named %*. The RDEFINE command returns an error message. Existing profiles with an ending %* are usable, but they should be deleted before creating any new profiles with a middle or beginning * or **. The RALTER and RDELETE commands accept %* to enable you to make the changes. Instead of using an ending %*, create new profiles ending with * for similar function (change AB.C%* to AB.C*). If you have an existing profile whose entire name is %*, you should create a new profile whose new name is **. Notes: 1. The above considerations also apply to generic members of grouping classes. 2. When creating the new profiles, consider using the FROM operand for continued use of the same access list. v For any particular general resource class, the profile naming conventions are defined by how the resource name is specified on the call to RACF. When your application programmers are designing the resource names for use in their invocations of the security product, they should be aware of the problems
212
General resources
involved with using *, %, or & in resource names. For more information, see z/OS Security Server RACROUTE Macro Reference. As you define general resource profiles, users must observe the naming conventions for that particular class. For some classes, the naming conventions are described in this document. However, both IBM and other vendor products can issue RACROUTE REQUEST=AUTH. You must check the documentation produced for those products for authoritative information on how those products call RACF. You should gather the following information from the calling product's documentation: When the call to RACF is done. In other words, what user action causes the call to RACF? Some further questions to ask: Also, are there settings in the product that cause the call to occur? Are there installation exits that can prevent the call, or change the results of the call? What is the class name used on the call to RACF? What is the resource name used on the call to RACF? If you are using discrete profiles, this is the profile name. If you are using generic profiles, you need to know how many qualifiers (portions of the name that are separated by periods) there are, and what the qualifiers mean, so that you can specify meaningful profile names. Note: If you do not follow the resource naming convention established by the caller of RACF, you could create profiles that are never used. For example, if you create a discrete profile with less than the correct number of qualifiers, the profile is never used during RACF authorization checking. What do the access authorities (READ, UPDATE, CONTROL, ALTER) mean? Remember, these values are hierarchical (UPDATE is higher than READ, and so forth), and do not necessarily mean what the English word means. For example, for terminals, READ means allowed to logon, not allowed to read information.
Guideline: Once you activate generic profile checking for a class and define generic profiles in it, avoid deactivating generics with the NOGENERIC operand. RACF will not use your previously defined generic profiles for authorization checking while NOGENERIC is in effect. v If the class is not active, RACF does not check for profiles. RACF returns the default return code of the class to the resource manager. For a complete description, see Authorization Checking for RACF-Protected Resources on page 753. v If more than one profile covers a particular resource, RACF searches for profiles in the following order: Discrete profile Matching generic profiles (see Table 15 on page 214)
213
General resources
Table 15. Sample general resource profile names in order from most specific to least specific
Resources being accessed Profile name COPY.A COPY.WEB.FINAL COPY.WEB.* COPY.PAPER COPY.PAPER.TEST COPY.PAPER.% COPY.PAPER.* COPY.PAPER.** COPY.PAPER% COPY.PAPER* COPY.PAPE% COPY.PAP* COPY.PRINT.* Profile type Discrete Discrete Generic Discrete Discrete Generic Generic Generic Generic Generic Generic Generic Generic X X X X X X X X X X X X X COPY COPY.PAPER COPY.PAPER.TEST COPY.WEB.FINAL
Generic COPY.&X (where: &X = PAPER in RACFVARS profile) COPY.&Y (where: &Y = WEB.FINAL in RACFVARS profile) COPY.%APER COPY.*.FINAL COPY.*.FINAL* COPY.**.FINAL COPY.**.PAPER COPY.* COPY.** COPY*.** *.* *.** * ** Generic
Generic Generic Generic Generic Generic Generic Generic Generic Generic Generic Generic Generic X X X X X
X X X X X X X X X X X X X X X X X X X X X X X X X X
To determine which profiles have the potential to protect any particular resource, use the FILTER or MASK operands on the SEARCH command to generate a list of profiles that might match the resource. For example, you might specify the user's user ID on the FILTER operand to limit the list of profiles displayed. Some examples follow:
SEARCH CLASS(TAPEVOL) FILTER(**.userid.**) SEARCH CLASS(JESSPOOL) FILTER(**.userid.**)
In general, the list of profiles generated by the SEARCH command is the order in which RACF searches for a matching profile. To review the list: 1. Find all profiles that match the resource name. 2. If no profile names match, check for profile names that include an ampersand (&) (RACF variables). You must list the RACFVARS profile to determine the value of a RACF variable:
RLIST RACFVARS variable-name
214
General resources
Also, the SEARCH command does not list grouping profiles (such as GTERMINL) that protect the resource. To do this, use the RESGROUP operand on the RLIST command.
RLIST member-class resource-name RESGROUP
See Which Profiles Protect a Particular Resource? on page 235. If these methods do not find a profile, the resource is not protected. 3. If only one profile matches, it protects the resource. 4. Otherwise, find two profiles that both match the resource name. Then, compare them character by character. Where they first differ, if one has a discrete character and the other has a generic character, the one with the discrete character wins. If both have a generic character where they differ and: v If one has an & and the other has a %, *, or **, the & wins. v If one has a % and the other has an * or **, the one with % wins. v If one has an * and the other has a **, the one with * wins. Note: The following is generally true: Given two generic profiles that match a resource, the one whose first generic character is farther from the beginning of the name is used. If two profile names match except for one character position, the following is the order in which RACF examines them:
blank . $ (X'5B') # (X'7B') @ (X'7C') AZ 09 & (X'50') % *
For example, the following profile names all match in the first three character positions (A.B), and are shown in the order RACF examines them:
A.B A.B.B A.BA A.BZ A.B0 A.B9 A.B&X A.B% A.B*
When in doubt about the search order, create sample profiles and check the order of profile names shown by the SEARCH command.
215
General resources
216
General resources
single in-storage profile is limited to 65535 bytes. Each entry in the access list uses 9 bytes in storage. Therefore, the maximum number of access list entries is 7273, a larger number than the same profile can contain on the database. However, because the in-storage profile includes other information in addition to the access list, such as installation data, application data, and the conditional access list, the maximum number of entries in the access list might be fewer than 7273. If you use resource member and grouping profiles, you should define a given member name only once. If you define the same member name more than once, for example, in multiple grouping profiles using the ADDMEM command or in both a member profile and a grouping profile, it will be difficult to determine the resulting security attributes for that member after RACLIST processing merges the profiles. RACF also merges the access lists of each profile, making it difficult for you to determine the number of access-list entries you have used. In addition, the combined number of access-list entries might cause the profile to become too large to be processed, and RACLIST processing might fail.
217
General resources
command with WHEN(CONSOLE(01) TERMINAL(20)) specified, you allow the access when either console 01 or terminal 20 is used. Examples: To ensure that an operator (or group of operators) can issue certain operator commands only when logged on at a particular console, enter:
PERMIT profile-name CLASS(OPERCMDS) ID(user or group) ACCESS(READ) WHEN(CONSOLE(console-id))
v By SMF System ID: You can require a user to access a program from a particular system by specifying WHEN(SYSID(system-identifier)) on the PERMIT command:
PERMIT profile-name CLASS(PROGRAM) ID(user or group) ACCESS(READ) WHEN(SYSID(system-identifier))
This conditional access list entry is only valid for the PROGRAM class. See Program control by SMFID in BASIC or ENHANCED mode on page 327 for more information. By CRITERIA: A user or job can be allowed to use a resource through the use of a CRITERIA by specifying WHEN(CRITERIA(criteria-name(criteria-value))) on the PERMIT command. The criteria-name and criteria-value must match the criteria-name and criteria-value passed to RACF on the RACROUTE REQUEST=FASTAUTH authorization check. The resource manager issuing the authorization check is responsible for the criteria-name and criteria-value. See the resource manager's documentation for further information. The class you specify on the PERMIT command must be RACLISTed for this support to take effect. Example: To allow members of group STUDENT to SELECT from the table USER01.HOMEWORK_GRADES in the DB2 DSND subsystem when they run with the DB2 role TEACHING ASSISTANT, enter:
PERMIT DSND.USER01.HOMEWORK_GRADES.SELECT CLASS(MDSNTB) ID(STUDENT) WHEN(CRITERIA(SQLROLE(TEACHING ASSISTANT))) ACCESS(READ)
218
General resources
Important Because RACF performs global access checking before many of the other kinds of access authority checks, such as security label checking or access list checking, global access checking might allow access to a resource you are otherwise protecting. To avoid a security exposure to a sensitive resource, do not create an entry in the global access checking table for a resource that is protected by a profile containing a security level, security category, or security label. (If the security label in the profile is SYSLOW, a global access checking table entry with an access authority of READ can be created.)
Note: User IDs with the RESTRICTED attribute that require access to resources like these must be specifically authorized in the access list for each required resource with sufficient access authority.
219
General resources
specified in the entry would generally match the UACC of the profile. Do not add a global access checking table entry if any of the following are true: v The profile has a security level, security category, or security label (other than SYSLOW). Note: If the profile has a security label of SYSLOW, the global access checking table entry can have an access of READ. v The profile has an entry in the standard access list that is lower than the access level of the global access checking table entry. v The profile has an entry in a conditional access list that is more restrictive than the access level of the global access checking table entry. v The profile requests auditing of successful access attempts at or below the level specified in the corresponding global access checking table entry. For example, if you have a data set profile PHONE.DIRECT with UACC(READ) and AUDIT(FAILURES(UPDATE)) specified, you might create a global access checking table entry for it as follows:
RALTER GLOBAL DATASET ADDMEM(PHONE.DIRECT/READ)
However, if there are users or groups in the standard access list of profile PHONE.DIRECT with an access authority of NONE (which is lower than the UACC), do not create a global access checking table entry. A global access checking table entry would allow these users and groups to read the phone directory. c. If you have resources that are protected by a generic profile with UACC other than NONE, and others that are protected by a more specific (generic or discrete) profile that has specific access requirements such as an access list, consider adding two entries: one for the larger set of resources (with access authority equal to the UACC of the profile) and the other for the smaller set of resources (with access authority of NONE). For example, if you have a profile of SYS1.** with a UACC(READ), but you also have some specific profiles with more restrictive entries, such as SYS1.XYZ with UACC(READ) and an access list with JOE/NONE, create two entries:
SYS1.XYZ/NONE SYS1.**/READ
The entry with /NONE does not fail any attempts but stops requests for SYS1.XYZ from being granted by the SYS1.** entry. See the examples later in this topic for other possible entries. 2. Add the resource class to the global access checking table using the RDEFINE command with the GLOBAL operand and the class name:
RDEFINE GLOBAL classname
3. To allow global access checking for a specific resource, add an entry to the global access checking table using the RALTER command as follows:
RALTER GLOBAL classname ADDMEM(resource-name/access-level)
where: resource-name is the equivalent of a profile name in the class specified. If generic command processing is in effect for classname (through the SETROPTS GENCMD command), resource-name on the ADDMEM operand can include the generic characters *, **, or %. In general, the rules for specifying these characters are the same as the rules for specifying
220
General resources
these characters in generic profile names except that generic characters are allowed in any qualifier (even if not allowed in certain qualifiers of the profile names). After they have been added, generic entries in the global access checking table are used in global access checking even if generic profile checking is turned off (through the SETROPTS NOGENERIC command). The resource name can include the name qualifiers &RACUID (RACF user ID) or &RACGPID (current connect group). For example, the following entry allows users to have ALTER access to data sets that begin with their own user IDs.
RALTER GLOBAL DATASET ADDMEM(&RACUID.**/ALTER)
Note: This entry does not change a user's access to his or her own data sets, but speeds the process by which RACF grants the access. (It also prevents any auditing of such access attempts.) The resource name can also include variables defined in the RACFVARS class. Note that when defining a resource name for a profile in a mixed-case class, you must enter the character strings &RACUID, &RACGPID, and any RACFVARS variable names in upper case. For more information on RACFVARS usage, see Using RACFVARS with Mixed-Case Classes on page 242. The qualifier &RACGPID allows the user's current connect group to be used in the same way. For example, the following allows all users to have READ access to group data sets for their current connect group:
RALTER GLOBAL DATASET ADDMEM(&RACGPID.**/READ)
Note: If the current connect group is found in the global access table and list-of-groups processing is in effect, list-of-groups checking is ignored. access-level can be NONE, READ, UPDATE, CONTROL, or ALTER. For more information on specifying the ADDMEM operand, see z/OS Security Server RACF Command Language Reference. 4. When you are finished updating the global access checking table, issue the SETROPTS command with the GLOBAL operand for each class affected.
SETROPTS GLOBAL(classname)
Guidelines: v Save a listing of the global access checking table. This can help you recover from the accidental deletion or alteration of the global access checking table or its entries. You can use the RLIST command to make this listing quickly. v Write an EXEC that contains the commands you use to create the global access checking table. The EXEC should include the RLIST command to provide an independent record of the actual table created. Also, if the global access checking table is accidentally deleted (using the RDELETE command), the EXEC can readily be used to regenerate the table. 5. Important: For each entry in the global access checking table, create a similar resource profile. Such a matched pair approach can help ensure the continuation of protection if global access checking becomes disabled. For example:
RDEFINE classname resource-name UACC(access-level)
Chapter 7. Protecting General Resources
221
General resources
At the end-of-volume (EOV) processing, RACROUTE REQUEST=AUTH is issued with OLDVOL specified for authority checking with the DATASET and TAPEVOL classes. This check bypasses the global access table checking and uses resource profile definitions for authority checking. By not having a matched pair approach, you might get different results.
Important Do not use the RDELETE command unless you intend to delete the entire global access checking table for that class.
Example 2: Group Data Sets: To specify that all users are to have UPDATE access authority to data sets whose high-level qualifier is the user's current connect group, enter:
RDEFINE GLOBAL DATASET ADDMEM(&RACGPID.**/UPDATE)
Note: The &RACGPID entries provide more flexibility than the GRPACC attribute. Table 17 shows some points of comparison.
Table 17. Comparison of GRPACC attribute with &RACGPID.** entry in global access checking table GRPACC attribute Applies only to group data set profiles created by the user while the user has the GRPACC attribute. &RACGPID.** entry Applies to all group data sets for all users.
222
General resources
Table 17. Comparison of GRPACC attribute with &RACGPID.** entry in global access checking table (continued) GRPACC attribute Always allows UPDATE access. Works by changing access lists in group data set profiles. These can be changed individually later. Applies only to resources in the DATASET class. &RACGPID.** entry Can allow READ, UPDATE, CONTROL, or ALTER access. Works the same way for all users in all connect groups. Changes affect all users. Can apply to any class that might include a group name in profile names (such as TAPEVOL).
Example 3: The Master Catalog and User Catalogs: With the exception of a very select group, users should only be allowed to READ the master catalog. To allow this, enter:
RALTER GLOBAL DATASET ADDMEM(CATALOG.MASTER.**/READ) ADDSD CATALOG.MASTER.** UACC(READ) PERMIT CATALOG.MASTER.** ID(SYSGROUP) ACCESS(CONTROL)
Notes: 1. The exact form of the names specified on these commands depends on the naming conventions at your installation. This example assumes that catalog names take the form:
CATALOG.MASTER.MVSESA.Vvvvvvv for a master catalog and CATALOG.applic.Vvvvvvv for application-specific catalogs (for example, TSO or DB2)
2. The access authority that is required to update and maintain the catalog depends on the DFP release that is installed on your system. For user catalogs, most users should be allowed to add entries as they create data sets. To allow this, enter:
RALTER GLOBAL DATASET ADDMEM(CATALOG.**/UPDATE) ADDSD CATALOG.** UACC(UPDATE)
This shows the entries in the order in which they are searched by RACF. v See the DSMON report that lists the global access checking table described in z/OS Security Server RACF Auditor's Guide for a list that shows all entries in the table.
223
General resources
v Global access checking is used for authorization processing invoked by the RACROUTE REQUEST=AUTH macro. It is not used for authorization processing invoked by the RACROUTE REQUEST=FASTAUTH macro. v Global access checking is bypassed for access requests by users with the RESTRICTED attribute. See Defining restricted user IDs on page 91. v RACF authorization checking via RACROUTE REQUEST=AUTH searches the global access checking table for a matching entry, ignoring profiles in the class. If no global access checking table entry matches the search, or if the access specified in the entry is less than the access being requested, RACF then searches for a matching profile in the class. This processing occurs regardless of whether or not the class is RACLISTed (by either SETROPTS RACLIST or RACROUTE REQUEST=LIST). v RACF searches the global access checking table for an entry that best matches the name of the resource, much as RACF searches for a matching profile. The output from the RLIST command shows the order used. v The group resource classes (such as GTERMINL) are ineligible for global access checking. v When global access checking allows a request to access a data set, that data set is considered to be protected by RACF, and therefore any OS password processing and prompting that would otherwise have occurred is bypassed. v When global access checking allows a request, RACF maintains no statistics. v When global access checking allows a request, RACF performs no logging other than that requested by the SETROPTS LOGOPTIONS command. v RACF bypasses global access checking if the PROFILE, CSA, or PRIVATE operand is specified on the request for RACF authorization checking (RACROUTE REQUEST=AUTH). v Updated global access checking table entries become effective with the next IPL or after execution of the SETROPTS command with the GLOBAL(classname) operand (with or without the REFRESH operand). v The only use for an access of NONE in the global access table is to force RACF to look for a profile. This would typically be used when you have access list entries which have a lower access level than a data set's UACC, or when you want to ensure that auditing or security classification checking takes place for a specific data set. v When RACF is enabled for sysplex communication, the SETROPTS GLOBAL and SETROPTS GLOBAL(classname) REFRESH commands are propagated to the other members of the sysplex data sharing group. v A global access table entry for JESSPOOL suppresses logging based on the AUDIT options set in the resource profile. However, this entry might or might not suppress other types of logging, depending on the application accessing the resource and details of the application's design. For example, you might define a global access table entry for JESSPOOL containing the ADDMEM operand with the &RACUID value in the second qualifier to allow user's to access to their own spool data sets without logging. However, RACF might log accesses depending on the application that users use to access their spool data sets.
224
General resources
where: profile-type is one of the following: v DATASET for data set profiles v GROUP for group profiles v USER for user profiles v class-name for general resource profiles segment-name is one of the following: v BASE for BASE segments (this is supported only by user-written code) v CDTINFO for CDTINFO segments v CFDEF for CFDEF segments v CICS for CICS segments v CSDATA for CSDATA segments v DCE for DCE segments v DFP for DFP segments v DLFDATA for DLFDATA segments v ICSF for ICSF segments v ICTX for ICTX segments v LANGUAGE for LANGUAGE segments
Chapter 7. Protecting General Resources
225
General resources
v v v v v v v v v v v v v v LNOTES for LNOTES segments NDS for NDS segments NETVIEW for NETVIEW segments OMVS for OMVS segments OPERPARM for OPERPARM segments OVM for OVM segments SESSION for SESSION segments SIGVER for SIGVER segments SSIGNON for SSIGNON segments STDATA for STDATA segments SVFMR for SystemView segments TME for TME segments TSO for TSO segments WORKATTR for WORKATTR segments
Note: This is also the operand used on RACF commands to work with the segment. field-name is the name associated with the field in the RACF profile segment to be controlled. Each field is administered by a RACF command operand. To find the field name that corresponds to a command operand, see Table 18 on page 228. Example: To control access to all fields in the TSO segment of all user profiles, issue the RDEFINE command and specify USER.TSO.* as the profile name. Before issuing this command, however, see the following note.
RDEFINE FIELD USER.TSO.* UACC(NONE)
Note: The profile name USER.TSO.* is a generic profile name. Before you issue the above command, generic profile checking for the FIELD class must be active. If it is not active, issue the SETROPTS GENERIC(FIELD) command before you define the generic profile. When you specify a UACC of NONE, you prevent all users from accessing the TSO segment in all user profiles, including their own. Likewise, if you specify a UACC of READ, you allow all users to read the information contained in all fields of the TSO segment for all user profiles. To control access to a specific field in the TSO segment of user profiles, issue the RDEFINE command and specify the name associated with the field as the third qualifier in the profile name. Example: Based on Table 18 on page 228, to control access to the ACCTNUM field, create a profile specifying TACCNT as the field-name qualifier:
RDEFINE FIELD USER.TSO.TACCNT UACC(NONE)
Note: A user with UPDATE access to this profile is authorized to change the account number field in a TSO segment by specifying the ACCTNUM operand on the TSO option of the ALTUSER command:
ALTUSER userid TSO(ACCTNUM(account-number))
2. Allow specific users or groups to have the appropriate access to the field. For example:
PERMIT USER.TSO.TLPROC CLASS(FIELD) ID(TSOADM) ACCESS(UPDATE)
This example shows how to authorize user ID TSOADM to change the logon procedure (TLPROC field) in the profiles of all TSO users.
226
General resources
Note: You can also specify the value &RACUID with the ID operand on the PERMIT command for FIELD profiles. When you enter this value on the PERMIT command, you allow all users access to the specified field or segment of their own user profiles. For example, if you issue the following command, you allow all users to read the TLPROC field in the TSO segment of their own user profiles.
PERMIT USER.TSO.TLPROC CLASS(FIELD) ID(&RACUID) ACCESS(READ)
3. When you are ready to start using the protection defined in the profiles, activate the FIELD class:
SETROPTS CLASSACT(FIELD)
Note: If you do not activate the FIELD class and you activate SETROPTS RACLIST processing for the FIELD class, only SPECIAL users can access fields in segments (other than the base segment) of RACF profiles. 4. You must activate SETROPTS RACLIST processing for the FIELD general resource class. For a complete description of this function, see SETROPTS RACLIST Processing on page 138.
SETROPTS RACLIST(FIELD)
Note: Once you activate SETROPTS RACLIST processing for the FIELD class, any time you make a change to a FIELD profile, you must refresh SETROPTS RACLIST processing for the FIELD class for the change to take effect.
SETROPTS RACLIST(FIELD) REFRESH
227
General resources
Table 18. Fields in RACF profile segments that correspond to RACF command operands. Specify the field-name as the third qualifier of the profile name for field-level access checking. To control the use of this operand:
1
CDTINFO segment in general resource profiles (CDT class): CASE DEFAULTRC DEFAULTUACC FIRST GENERIC GENLIST GROUP KEYQUALIFIERS MACPROCESSING MAXLENGTH MAXLENX MEMBER OPERATIONS OTHER POSIT PROFILESALLOWED RACLIST SECLABELSREQUIRED SIGNAL CDTCASE CDTDFTRC CDTUACC CDTFIRST CDTGEN CDTGENL CDTGROUP CDTKEYQL CDTMAC CDTMAXLN CDTMAXLX CDTMEMBR CDTOPER CDTOTHER CDTPOSIT CDTPRFAL CDTRACL CDTSLREQ CDTSIGL
CFDEF segment in general resource profiles (CFIELD class): TYPE MAXLENGTH MAXVALUE MINVALUE FIRST OTHER MIXED HELP LISTHEAD CICS segment in user profiles: OPCLASS OPIDENT OPPRTY RSLKEY TIMEOUT TSLKEY XRFSOFF OPCLASS and OPCLASSN OPIDENT OPPRTY RSLKEY and RSLKEYN 2 TIMEOUT TSLKEY and TSLKEYN 2 XRFSOFF
2
CSDATA segment in user and group profiles: custom-field-name DCE segment in user profiles: AUTOLOGIN DCENAME HOMECELL HOMEUUID UUID DFP segment in data set profiles: RESOWNER RESOWNER DCEFLAGS DCENAME HOMECELL HOMEUUID UUID custom-field-name
228
General resources
Table 18. Fields in RACF profile segments that correspond to RACF command operands (continued). Specify the field-name as the third qualifier of the profile name for field-level access checking. To control the use of this operand:
1
DFP segment in user and group profiles: DATAAPPL DATACLAS MGMTCLAS STORCLAS DATAAPPL DATACLAS MGMTCLAS STORCLAS
DLFDATA segment in DLFCLASS class profiles: RETAIN JOBNAMES RETAIN JOBNAMES and JOBNMCNT
2
ICSF segment in CSFKEYS, GCSFKEYS, XCSFKEY, and GXCSFKEY class profiles: ASYMUSAGE SYMEXPORTABLE SYMEXPORTCERTS SYMEXPORTKEYS SYMCPACFWRAP CSFAUSE CSFSEXP CSFSCLBS and CSFSCLCT CSFSKLBS and CSFSKLCT CSFSCPW
2 2
ICTX segment in LDAPBIND class profiles: USEMAP DOMAP MAPREQUIRED MAPPINGTIMEOUT LANGUAGE segment in user profiles: PRIMARY SECONDARY LNOTES segment in user profiles: SNAME NDS segment in user profiles: UNAME NETVIEW segment in user profiles: IC CONSNAME CTL MSGRECVR OPCLASS DOMAINS NGMFADMN NGMFVSPN OMVS segment in group profiles: GID OMVS segment in user profiles: GID IC CONSNAME CTL MSGRECVR OPCLASS and OPCLASSN 2 DOMAINS and DOMAINSN NGMFADMN NGMFVSPN UNAME SNAME USERNL1 USERNL2 USEMAP DOMAP MAPREQ MAPTIMEO
229
General resources
Table 18. Fields in RACF profile segments that correspond to RACF command operands (continued). Specify the field-name as the third qualifier of the profile name for field-level access checking. To control the use of this operand: ASSIZEMAX CPUTIMEMAX FILEPROCMAX HOME MEMLIMIT MMAPAREAMAX PROCUSERMAX PROGRAM SHMEMMAX THREADSMAX UID OPERPARM segment in user profiles: ALTGRP 3 AUTH AUTO CMDSYS DOM KEY HC INTIDS LEVEL LOGCMDRESP MFORM MIGID 3 MONITOR MSCOPE ROUTCODE STORAGE UD 3 UNKNIDS OVM segment in group profiles: GID OVM segment in user profiles: FSROOT HOME PROGRAM UID FSROOT HOME PROGRAM UID GID OPERALTG OPERAUTH OPERAUTO OPERCMDS OPERDOM OPERKEY OPERHC OPERINT OPERLEVL OPERLOGC OPERMFRM OPERMGID OPERMON OPERMSCP and OPERMCNT OPERROUT OPERSTOR OPERUD OPERUNKN
1
Specify this value as the field-name qualifier: ASSIZE CPUTIME FILEPROC HOME MEMLIMIT MMAPAREA PROCUSER PROGRAM SHMEMMAX THREADS UID
SESSION segment in APPCLU class profiles: CONVSEC INTERVAL LOCK SESSKEY CONVSEC KEYINTVL SLSFLAGS SESSKEY
SIGVER segment in PROGRAM class profiles: SIGREQUIRED FAILLOAD SIGAUDIT SIGREQD FAILLOAD SIGAUDIT 4
230
General resources
Table 18. Fields in RACF profile segments that correspond to RACF command operands (continued). Specify the field-name as the third qualifier of the profile name for field-level access checking. To control the use of this operand:
1
STDATA segment in STARTED class profiles: USER GROUP PRIVILEGED TRACE TRUSTED STUSER STGROUP FLAGPRIV FLAGTRAC FLAGTRUS
SVFMR segment in SYSMVIEW class profiles: PARMNAME SCRIPTNAME TME segment in group profiles: ROLES TME segment in data set profiles: ROLES TME segment in general resource profiles: ROLES GROUPS RESOURCE CHILDREN PARENT TSO segment in user profiles: ACCTNUM COMMAND DEST HOLDCLASS JOBCLASS PROC MAXSIZE MSGCLASS SECLABEL SIZE SYS UNIT USERDATA WORKATTR segment in user profiles: WANAME WABLDG WADEPT WAROOM WAADDR1 WAADDR2 WAADDR3 WAADDR4 WAACCNT WANAME WABLDG WADEPT WAROOM WAADDR1 WAADDR2 WAADDR3 WAADDR4 WAACCNT TACCNT TCOMMAND TDEST THCLASS TJCLASS TLPROC TMSIZE TMCLASS TSOSLABL TLSIZE TSCLASS TUNIT TUDATA ROLES and ROLEN 2 GROUPS and GROUPN 2 RESOURCE and RESN 2 CHILDREN and CHILDN PARENT ROLES and ROLEN
2
PARMN SCRIPTN
2
231
General resources
Table 18. Fields in RACF profile segments that correspond to RACF command operands (continued). Specify the field-name as the third qualifier of the profile name for field-level access checking. To control the use of this operand: Notes: 1. Many operands in this table have corresponding versions that include a prefix of NO. In addition, several operands have corresponding versions that include prefixes of ADD and DEL. See the z/OS Security Server RACF Command Language Reference to identify these. 2. For operands that are listed with two field-name qualifiers: v To authorize READ access, define one FIELD profile specifying the first value as the field-name qualifier. Permit users READ access. v To authorize UPDATE access, define two FIELD profiles. Define one profile for each of the two field-name qualifiers listed. Permit users UPDATE access to both profiles. 3. This setting is ignored when each system sharing the RACF database runs z/OS Version 1 Release 8 or higher. 4. The SIGAUDIT field controls the audit policy related to digital signature verification of programs. Users with the AUDITOR attribute can list the SIGAUDIT field but they cannot update it unless they have UPDATE authority through field-level access checking.
1
If you activate SETROPTS RACLIST processing for the FACILITY class, any time you make a change to a FACILITY profile, you must also refresh SETROPTS RACLIST processing for the FACILITY class for the change to take effect.
SETROPTS RACLIST(FACILITY) REFRESH
232
General resources
To allow users to open tape data sets for IEC.TAPERING Profile in the FACILITY input without removing the write-enable ring Class on page 201 (or equivalent), using the IEC.TAPERING resource To allow users to access DFP-controlled Preventing Access to Uncataloged Data Sets DASD or tape data sets when those data sets (CATDSNS Option) on page 129 are neither cataloged nor system temporary data sets, using ICHUNCAT.data-set-name and CATDSNS To allow migration of security functions from Understanding NODES Profiles on page JES into RACF, using the RJE, RJP, and NJE 487 NODES profiles
233
General resources
GTERMINL class. Depending on the class, RACLISTing is accomplished using the SETROPTS command or RACROUTE REQUEST=LIST. Example: The following command protects three terminals that have unlike names, M01RF267, M03RF168, and M04GG148:
RDEFINE GTERMINL DEPT35 UACC(NONE) ADDMEM(M01RF267 M03RF168 M04GG148)
Several resource group classes and related member classes are supplied with RACF. Each one is marked in Appendix A, Supplied RACF resource classes, on page 715 as a member class or a grouping class, as appropriate. Restriction: Certain member classes listed in Appendix A, Supplied RACF resource classes, on page 715 cannot be used with RACF commands because they are associated with resource grouping classes that have special uses. These classes are marked with this restriction. To use resource group profiles, perform the following steps (terminals are used as a readily understood example): 1. Create the resource group profile:
RDEFINE GTERMINL profile-name UACC(NONE) ADDMEM(resource-name-with-or-without-generic-character...)
where: GTERMINL profile-name is the resource group class for terminals. is a discrete profile name of your choice (generic characters are not allowed).
resource-name... is the name of the resource to be protected, for example, a terminal ID or DASD volume serial number. If you first activate generic profile checking for the related member class, you can include a generic character (*, **, or %) in the resource name. 2. Grant the appropriate access to the appropriate users and groups. In the following example, READ access is given to users in group GROUPA:
PERMIT DEPT35 CLASS(GTERMINL) ID(GROUPA) ACCESS(READ)
3. When you are ready to start using the protection defined in the profiles, activate the member class. For classes other than the CICS1 and IMS-related classes, you must also activate SETROPTS RACLIST processing for the member class. For example, for terminals, issue the following command
SETROPTS CLASSACT(TERMINAL) RACLIST(TERMINAL)
Note: Any time you make a change to a GTERMINL profile, you must also refresh SETROPTS RACLIST processing for the TERMINAL class for the change to take effect.
SETROPTS RACLIST(TERMINAL) REFRESH
For CICS1 and IMS-related classes, you only need to activate the class (you cannot request RACLIST processing using the SETROPTS command).
SETROPTS CLASSACT(TIMS)
Note: If an application uses RACROUTE REQUEST=LIST,GLOBAL=YES to RACLIST a class, you can use SETROPTS RACLIST (classname) REFRESH
1. The FCICSFCT class is an exception. You can use SETROPTS RACLIST with that class.
234
General resources
to refresh the class. This includes the CICS and IMS classes that can't be RACLISTed with the SETROPTS RACLIST command.
Make sure to specify the member class (such as TERMINAL or DASDVOL) on the RLIST command. The profiles that protect the terminal appear in the RLIST output under the RESOURCE GROUPS heading. For example, assume that the following commands is issued.
RDEFINE GTERMINL DEPT20 ADDMEM(T1 T2 T3) RDEFINE GTERMINL DEPT22 ADDMEM(T3)
Note: If a member class profile exists for the resource (in this example, if RDEFINE TERMINAL T3 had been issued), the RLIST output includes both the resource groups and the listing of the TERMINAL profile.
235
General resources
Rule The most restrictive UACC is used. For any particular user, the least restrictive of the access list entries is used. The lowest security level is used. Auditing is done if requested by any of the profiles. Category lists are combined. Example If one profile has a UACC of NONE and another has a UACC of UPDATE, the UACC of NONE is selected. For user STEVEH, if one profile has an access list entry of STEVEH(NONE) and another has an access list entry of STEVEH(UPDATE), the access list entry of STEVEH(UPDATE) is selected. If one profile has a security level of CONFIDENTIAL and another has the lower security level of ROUTINE, the security level of ROUTINE is selected. If one profile requests auditing and another does not, auditing is selected. If one profile has a security category of ACCTG and another profile has a security category of PAYROLL, both the ACCTG and PAYROLL security categories are selected. RACF chooses the security label of the first profile it encounters during RACLIST processing and ignores the security labels for subsequent profiles that must be merged. Therefore, the value of the merged security label depends on the order in which the profiles are processed.
If you do not want to use the default rules for merging the information from multiple profiles, you can use the REQUEST=LIST exit routines to change them. For more information about RACLIST processing and the REQUEST=LIST exit routines, see z/OS Security Server RACF System Programmer's Guide and z/OS Security Server RACROUTE Macro Reference. Guideline: Because of the way in which profiles are merged, it can be difficult to determine exactly what protection any one resource has. Although the profile owner or a user with the SPECIAL attribute has authority to create identically named generic profiles, do not specify the same resource in more than one profile.
236
General resources
v Do not issue the SETROPTS RACLIST command for the resource group class (for example, GTERMINL or GDASDVOL). Instead, specify the related member class (for example, TERMINAL or DASDVOL). When you RACLIST the TERMINAL class, RACF RACLISTs the GTERMINL class for you. v You cannot use the SETROPTS command to RACLIST resource classes for these resources: CICS resources (except FCICSFCT) All IMS resources. These CICS and IMS resources issue RACROUTE REQUEST=LIST at initialization time. To refresh CICS classes that are not RACLISTed with RACROUTE REQUEST=LIST,GLOBAL=YES or SETROPTS RACLIST, issue this CICS command from the operator console:
CEMT PERFORM SECURITY REBUILD
When IMS is refreshed, the IMS classes are refreshed as well. v You cannot specify generic profile names in the resource group class. v You can specify generic names on the ADDMEM operand. However, you should consider defining your generics in the MEMBER class so that the RLIST command can be used to find the generic profile that produces a resource. v A resource group profile, which is associated with only one resource class, cannot be used to group resources from two different classes. v If you use resource grouping profiles, consider avoiding the use of the related member class. For example, if you use GTERMINL profiles, convert entirely to using GTERMINL profiles, and delete all TERMINAL profiles. This can ease the administration of terminal authorizations. For example, the SEARCH command lists profile names for only one class at a time: GTERMINL or TERMINAL. Note: Remember that you can use RLIST to find the generic that matches a name only if you use member class profiles. RLIST does not provide this support for members of grouping class profiles. Therefore, you must decide which approach is easier to administer. It might be better to define all discrete names as members of grouping profiles and all generic names as member class profiles. That allows you to use multiple SEARCH or RLIST commands when necessary. When converting generic TERMINAL profiles to GTERMINL profiles, you can specify generic characters on the ADDMEM operand to obtain the same coverage.
237
General resources
cannot use them in data set profile names. A profile that contains a RACF variable in its name is considered a generic profile.
Any time a change is made to a RACFVARS profile, the in-storage profiles for the RACFVARS class must be refreshed for the changes to take effect. To refresh the in-storage profiles for the RACFVARS class, enter:
SETROPTS RACLIST(RACFVARS) REFRESH
The class containing the profile names that are affected by your RACFVARS profile need not be RACLISTed. However, if the class is already RACLISTed or GENLISTed, you must also refresh the in-storage generic profiles for that class to activate your change to the RACFVARS profile. Examples:
SETROPTS RACLIST(class) REFRESH -orSETROPTS GENERIC(class) REFRESH
238
General resources
Suppose you want to protect several tape volumes called TAP111, A22222, and B33OLD, and give ALTER access to them only to a group called PAYGRP. There is no resource grouping class for the TAPEVOL class and the names of the tape volumes are unlike, so you choose the RACFVARS method to protect the tape volumes. To do this, enter:
RDEFINE RDEFINE PERMIT SETROPTS RACFVARS &PAYTAPE UACC(NONE) ADDMEM(TAP111 A22222 B33OLD) TAPEVOL &PAYTAPE UACC(NONE) &PAYTAPE CLASS(TAPEVOL) ID(PAYGRP) ACCESS(ALTER) CLASSACT(TAPEVOL RACFVARS) RACLIST(RACFVARS)
If you later need to add a tape volume called C44TAP to the list of protected tape volumes, enter:
RALTER RACFVARS &PAYTAPE ADDMEM(C44TAP) SETROPTS RACLIST(RACFVARS) REFRESH
239
General resources
240
General resources
Example 1
RDEFINE RACFVARS &CTM ADDMEM(TEST TESTA) RDEFINE SURROGAT &CTM.SUBMIT UACC(NONE) PERMIT &CTM.SUBMIT CLASS(SURROGAT) ID(USER1) ACCESS(READ)
The job TESTA1 submitted by USER1 on system PLPSC, with USER=TESTA on the job card, results in a failure and the following error message.
$HASP165 TESTA1 ENDED AT PLPSC - SECURITY VIOLATION
The failure occurs because RACF checking stops when the first four characters of the specified resource name, TESTA, match the first RACFVARS member, TEST, leaving the letter A. The remaining letter A is considered a specific part of the resource name and there is no corresponding specific part in the profile name to which it can be matched. As a precaution, when adding RACFVARS members, order the member names. The member names that are a subset of other names should follow the names of which they are a subset. In the preceding example, TEST is a subset of TESTA. Therefore, to obtain the expected result, reverse the members in the RACFVARS member list.
RDEFINE RACFVARS &CTM UACC(NONE) ADDMEM(TESTA TEST)
Note: Ordering the members solves the problem in the previous example. However, this might not be the desired order in all cases.
Example 2
RDEFINE RACFVARS &R ADDMEM(AB A) RDEFINE ACCTNUM &R%.X UACC(NONE) PERMIT &R%.X CLASS(ACCTNUM) ID(USER1) ACCESS(READ)
In this example, TSO user USER1 attempts to log on with account number AB.X, but profile &R%.X does not match. This results in the following error message:
IKJ56486I THE ACCOUNT NUMBER AB.X HAS NOT BEEN DEFINED FOR USE
The AB matches appropriately. However, no characters remain in the resource name to match with the generic character, %. To obtain the expected result, reverse the members in the RACFVARS member list as follows:
RDEFINE RACFVARS &R ADDMEM(A AB)
241
General resources
When you use any of the following to define a profile name, unexpected results can occur: v Multiple RACFVARS v A combination of RACFVARS and generic characters v A combination of RACFVARS and specific names
Example 3
RDEFINE PERMIT RDEFINE RDEFINE SURROGAT &A&B.SUBMIT UACC(NONE) &A&B.SUBMIT CLASS(SURROGAT) ID(USER1) ACCESS(READ) RACFVARS &A UACC(NONE) ADDMEM(AB A) RACFVARS &B UACC(NONE) ADDMEM(B C)
The job AB1 submitted by USER1 on system PLPSC, with USER=AB on the job card, results in a failure and the following error message:
$HASP165 AB1 ENDED AT PLPSC - SECURITY VIOLATION
The failure occurs because RACF checking for the resource name AB matches the first member of &A which is AB. Because there is no part of the resource name to match the second part of the profile name specified by &B, the compare fails. The resource name must match with a member of each of the RACFVARS used to define a profile. To obtain the expected results, reverse the members in the RACFVARS member list of &A:
RDEFINE RACFVARS &A UACC(NONE) ADDMEM(A AB)
However, the set of resource names that was valid has now changed. For example, the specific resource name, ABB, was valid and is no longer valid. Guideline: To avoid unexpected results, reduce the complexity of profiles. If you decide to remove a member from a RACFVARS member list, be sure to issue the SETROPTS RACLIST REFRESH or GENERIC REFRESH commands for any classes that contain profiles that use the RACFVARS value affected by your change.
242
General resources
Because the &VAR profile can contain only members with uppercase names (CAT, DOG, and FISH), a resource named My.Pet.FISH is covered by these profiles, but My.Pet.Fish is not. Note: Do not enter profile name My.Pet.&var because, although RACF will accept the name, the character string &var will not match the RACFVARS profile name &VAR and will not be recognized as a RACF variable.
On the other system, enter one of the following RDEFINE commands. If network-qualified names support is not enabled, enter:
RDEFINE APPCLU local-netid.luid2.luid1 UACC(NONE)
where: local-netid, remote-netid are the network IDs (NETID) of the partners. These IDs are specified on the VTAM start option NETID, which is in the ATCSTRxx member of SYS1.VTAMLST. luid1, luid2 are the LU names of the partners. In each case, the first LU name specified is the local LU name, and the second LU name is the partner LU name. For each profile created, the first LU name specified (luid1) is the primary LU on that system. Rule: Do not specify an asterisk (*) or any other generic character for the first two qualifiers (netid and luid).
Chapter 7. Protecting General Resources
243
General resources
3. Define the attributes of the sessions between the partners of each LU pair. You do this by defining a SESSION segment for each APPCLU profile using the SESSION option of the RDEFINE and RALTER commands. You can specify the following information in each SESSION segment: CONVSEC INTERVAL LOCK Specifies the level or levels of security checking performed for each conversation between the partners of the LU pair. Specifies the maximum number of days the session key is valid before it must be changed. Indicates that a session between the partners of the LU pair cannot be established.
SESSKEY(session-key) Specifies the password used to verify sessions between the partners of this LU pair. If specified, the SESSKEY value must be the same in both APPCLU profiles for this LU pair. A session key might be required based on the VERIFY option specified on the VTAM APPL statement for this LU pair. Note: Session keys are 64-bit data encryption standard (DES) keys. With 64-bit DES encryption, 8 of the 64 bits are reserved for use as parity bits. This means that those 8 bits are not part of the 56-key. In hexadecimal notation, the DES parity bits are: X'0101 0101 0101 0101'. Therefore, any two 64-bit keys are equivalent if their only difference is in one or more of these parity bits. For example, the following SESSKEY values, although appearing to be quite different, are equivalent because they differ only in the last bit of each byte:
BDF0KM4Q (X'C2C4 C6F0 D2D4 F4D8' CEG1LN5R (X'C3C5 C7F1 D3D5 F5D9'
For detailed information about using the RDEFINE and RALTER commands to define options in the SESSION segment, see z/OS Security Server RACF Command Language Reference. 4. Optionally, for maintenance purposes, give users and groups appropriate access authority:
PERMIT profile-name CLASS(APPCLU) ID(userid or groupname) ACCESS(access-authority)
where access-authority is one of the following: NONE READ UPDATE CONTROL Allows no access to the profile Allows users to list the profile (for example, using the RLIST and SEARCH commands) Is the same as READ Is the same as READ
ALTER Allows users to change the profile (if the profile is discrete) 5. When you are ready to start using the protection defined in the profiles, activate the APPCLU class on every system on which you want to use the APPCLU profiles:
SETROPTS CLASSACT(APPCLU)
Note: You cannot issue the SETROPTS RACLIST command for the APPCLU class. VTAM does this for you (using RACROUTE REQUEST=LIST).
244
General resources
To activate your APPCLU profile changes for an active application, issue the VTAM MODIFY PROFILES command to refresh the RACF profiles in storage. For syntax and usage information about the MODIFY PROFILES command, see z/OS Communications Server: SNA Operation. Example: Suppose there are two large nodes, one in New York and the other in Tokyo. Network-qualified names support is not enabled.
New York node Fully qualified LU name: MVSNET1.NEWYORK Locally known name of the Tokyo node: TOKYOREM (Tokyo remote) Tokyo node Fully qualified LU name: MVSNET2.TOKYO Locally known name of the New York node: NYREM (New York remote)
On the New York node, perform the following steps: 1. Define a profile for the Tokyo LU partner:
RDEFINE APPCLU MVSNET1.NEWYORK.TOKYOREM SESSION(SESSKEY(KEY1)) UACC(NONE)
On the Tokyo node, perform the following steps: 1. Define a profile for the New York LU partner:
RDEFINE APPCLU MVSNET2.TOKYO.NYREM SESSION(SESSKEY(KEY1)) UACC(NONE)
Protecting Applications
For applications that specify the APPL operand on the RACROUTE REQUEST=VERIFY macro, you can use a profile in the APPL class to control which users can access the application. To do this, perform the following steps: 1. Determine the name of your application. 2. Verify with your programmer that the name of the application is specified on the APPL operand of the RACROUTE REQUEST=VERIFY macro. 3. Create a profile in the APPL class:
RDEFINE APPL applname UACC(NONE)
5. If you have not already done so, activate the APPL class:
SETROPTS CLASSACT(APPL)
6. For performance reasons, request SETROPTS RACLIST or SETROPTS GENLIST processing for the APPL class.
245
General resources
Note: This might be important if many users enter the system under control of your application (where your application issues the RACROUTE REQUEST=VERIFY macro for each user). For information on how authorization checking takes place, see Authorizing Access to RACF-Protected Applications on page 770. For details about how CICS uses APPL profiles to control access to CICS regions, see "Authorizing access to the CICS region" in CICS RACF Security Guide.
v If you have not already done so, activate the LFSCLASS class:
SETROPTS CLASSACT(LFSCLASS)
Note: RACF supports the backslash (\) character for use with the LFSCLASS class. However, you might need to change your VTAM translation table to support the backslash (\). For more information, refer to z/OS TSO/E Programming Guide for your operating system.
246
General resources
Protecting Terminals
There are several methods of controlling the use of terminals that are connected to your system. The following sections describe these methods: v Creating Profiles in the TERMINAL and GTERMINL Classes. You must give users at least READ access authority in order to allow them to use protected terminals. You must do this before using any of the other methods for controlling terminals. v Controlling the Use of Undefined Terminals on page 248. By specifying TERMINAL(NONE) on the SETROPTS command, you can prevent users from logging on to terminals unless the terminals are protected by profiles in the TERMINAL or GTERMINL classes.
Important Do not protect undefined terminals unless you have created profiles that allow users to access the terminals they currently use. v Limiting Specific Groups of Users to Specific Terminals on page 249. By specifying NOTERMUACC on the ADDGROUP or ALTGROUP command, you can restrict users in those groups to terminals whose access lists specifically allow the user or the user's group to use the terminal. v Limiting the Times That a Terminal Can Be Used on page 250. By specifying the WHEN operand on the RDEFINE and RALTER commands for profiles in the TERMINAL and GTERMINL classes, you can specify the days and times that users can log on to terminals. v Using Security Labels to Control Terminals on page 250. If the SECLABEL class is active, you can control access to terminals by specifying security labels for profiles in the TERMINAL and GTERMINL classes. v Using the TSO LOGON Command with the RECONNECT Operand on page 250. TSO allows verification and checking so that a user can resume an interrupted session from a new terminal. For a description of authorization checking for terminals, see Authorizing Access to RACF-Protected Terminals on page 766.
On systems using VTAM, the terminal's node name is the RACF resource name. See your systems programmer for node name information. 2. Use the PERMIT command to allow users and groups to use the terminal. You must give a user at least READ access authority to the terminal. Otherwise, the user is not authorized to use the terminal. For example, the following command grants users SMITH and JONES READ access authority to terminal M01RF627.
PERMIT M01RF267 CLASS(TERMINAL) ID(SMITH JONES) ACCESS(READ)
Chapter 7. Protecting General Resources
247
General resources
Important After you define a terminal and protect it with a UACC of NONE, no one can use the terminal until you grant users or groups READ access authority to the resource. 3. When you are ready to start using the protection defined in the profiles, activate the TERMINAL class. You should also consider activating SETROPTS RACLIST processing for the class. SETROPTS RACLIST processing helps ensure high performance when access authorities are checked. Also, if you are using GTERMINL profiles, you must request RACLIST processing for the TERMINAL class. You can do these two actions in one command:
SETROPTS CLASSACT(TERMINAL) RACLIST(TERMINAL)
Note: When you activate the TERMINAL class, RACF also activates the GTERMINL class. Creating a Profile in the GTERMINL Class: If you want to protect several terminals in the same way, but their names do not allow you to create a generic profile, you can create a profile in the GTERMINL class for them. For example, to protect terminals M01RF267, M03RF168, and M04GG148 with one profile, you could create a profile with a name you choose, such as DEPT35:
RDEFINE GTERMINL DEPT35 UACC(NONE) ADDMEM(M01RF267 M03RF168 M04GG148)
Note: After creating or changing a GTERMINL profile, you must request SETROPTS RACLIST processing for the TERMINAL class to make the changes effective on the system. To protect another terminal, named M01RF299, with the same profile, change the DEPT35 profile as follows:
RALTER GTERMINL DEPT35 ADDMEM(M01RF299) SETROPTS RACLIST(TERMINAL) REFRESH
To stop protecting terminal M03RF168 with this profile, change the DEPT35 profile as follows:
RALTER GTERMINL DEPT35 DELMEM(M03RF168) SETROPTS RACLIST(TERMINAL) REFRESH
To prevent undefined terminals from being used for logging on, enter:
248
General resources
SETROPTS TERMINAL(NONE)
Important Before you specify NONE, be sure that you define some terminals to RACF and give the appropriate users and groups proper authorization to use them. Otherwise, no one can log on to your system.
Important Before you specify NONE, be sure that you define some terminals to RACF and give the appropriate users and groups proper authorization to use them. Otherwise, no one can log on to your system.
This prevents users in group PAYROLL from logging on to another terminal just because the profile protecting that terminal has a UACC of READ. Note: If the list-of-groups option (SETROPTS GRPLIST) is in effect, RACF uses the TERMUACC/NOTERMUACC option from the user's current connect group, but RACF can grant terminal access through any of the user's connect groups.
Chapter 7. Protecting General Resources
249
General resources
Tip: When a user is connected to multiple groups and the application he uses to logon allows him to specify a group name in addition to a user ID, define NOTERMUACC on each of his group connections to ensure that the user can logon only to terminals that he or one of his connect groups is explicitly authorized to access.
250
General resources
Protecting Consoles
You can require operators to log on to and log off from MCS-managed consoles by specifying options in the CONSOLxx member of the SYS1.PARMLIB data set. For more information, see: v z/OS MVS Initialization and Tuning Reference v z/OS MVS System Commands v z/OS MVS Planning: Operations When the CONSOLE class is active and a console being used is protected by a profile in the CONSOLE class, RACF ensures that the person attempting to logon has the proper authority to do so. Using RACF, you can control the use of JES and MCS system consoles on your system. This topic describes how to protect MCS consoles. See also Remote Workstations (RJP/RJE Consoles) on page 512. Notes: 1. The SETROPTS TERMINAL command does not apply to consoles. 2. The TERMUACC operand on the ADDGROUP and ALTGROUP commands does not apply to consoles. 3. You cannot specify the WHEN operand on the RDEFINE and RALTER commands for profiles in the CONSOLE class. For a description of authorization checking for consoles, see Authorizing Access to Consoles, JES Input Devices, APPC Partner LUs, or IP Addresses on page 767. To control the use of MCS consoles, perform the following steps: 1. Ask your system programmer for the following information: v The name or ID of the console to be protected Sysplex consideration: If you share the RACF database with downlevel systems, the console might have a 2-byte console ID rather than a console name. To protect a console ID, define the resource using the console ID in place of the console name. v The universal access authority (UACC) to specify for the console v The user ID or group name of the operator or operators to whom you want to grant access v The security label to be assigned to that console (if security labels are being used) 2. Create a profile for each console using the RDEFINE command.
RDEFINE CONSOLE console-name UACC(NONE)
For example, the following command defines a profile for console CON1 and specifies a UACC of NONE.
RDEFINE CONSOLE CON1 UACC(NONE)
3. Use the PERMIT command to allow users and groups to use the console. You must give a user at least READ access authority to the console. Otherwise, the user is not authorized to use the console. For example, the following command grants READ access authority to group OPRGRP1 and user JONES for CON1.
PERMIT CON1 CLASS(CONSOLE) ID(OPRGRP1 JONES) ACCESS(READ)
251
General resources
Important After you define a console and protect it with a UACC of NONE, no one can log on to the console until you grant users access authority to the console profile. For consoles, the valid access authorities are: NONE READ Allows no access
Authorizes RACF-defined users to LOGON to the specified console 4. When you are ready to start using the protection defined in the profiles, activate the CONSOLE class and activate SETROPTS RACLIST processing for the class. SETROPTS RACLIST processing helps ensure high performance when access authorities are checked. You can do these two actions in the following command.
SETROPTS CLASSACT(CONSOLE) RACLIST(CONSOLE)
If the CONSOLE class is already active and RACLISTed, issue the following command to activate your CONSOLE profile changes.
SETROPTS RACLIST(CONSOLE) REFRESH
252
General resources
For information about the programming that is needed for an application to generate a PassTicket, see z/OS Security Server RACF System Programmer's Guide.
After you activate the PTKTDATA class, you can define the necessary profiles. Note: After you define or change the profiles, you need to refresh the class by entering SETROPTS RACLIST (PTKTDATA) REFRESH.
where: PTKTDATA specifies the PassTicket key class. profile-name is the name of the profile (see Determining PTKTDATA Profile Names on page 254). For the PTKTDATA class, the profile must be a discrete profile. Because each application must be uniquely defined, you cannot specify a generic profile in
2. Because it only gives one user access to a specific application for approximately 10 minutes, a RACF PassTicket is resistant to reuse. For most applications, once a particular PassTicket is used, the same user cannot use it again for the same application during the same 10-minute interval. By keeping a copy of all used valid PassTickets for the duration of the 10-minute interval during which they might possibly be used again, RACF provides another level of protection against reuse. For performance reasons, RACF uses main memory for this storage. If an application can run on more than one computer with individual memory at the same time, this level of reuse protection might not be available. Chapter 7. Protecting General Resources
253
General resources
the PTKTDATA class. If you specify a generic profile, it is ignored during PassTicket processing for the application, and PassTickets cannot be used to authenticate users for that application. key-description defines the secured signon application key and specifies the method RACF is to use to protect it in the RACF database on the host. You can specify either masking or encryption for the method (see Protecting the Secured Signon Application Keys on page 257). Secured signon keys are 64-bit Data Encryption Standard (DES) keys. With DES, eight of the 64 bits are reserved for use as parity bits, so those eight bits are not part of the 56-bit key. In hexadecimal notation, the DES parity bits are: X'0101 0101 0101 0101'. Any two 64-bit keys are equivalent DES keys if their only difference is in one or more of these parity bits. access-authority is the universal access authority to be associated with the resource protected by this profile. By default, the UACC is NONE for the PTKTDATA class. After a profile in the PTKTDATA class has been created, you can change it with the RALTER command, which is similar in syntax to the RDEFINE command:
RALTER PTKTDATA profile-name SSIGNON(key-description) UACC(access-authority)
254
General resources
1. Assuming there is at least one qualified profile, RACF selects one qualified profile name according to the precedence shown in the previous list (items 1, 2, and 3). The first qualified profile found using this search precedence is selected and RACF evaluates the PassTicket using this key. Any other profiles with qualified names are ignored. 2. If no qualified name is found, or the evaluation using the key within the qualified profile is not successful because the key is not correct, RACF searches for a profile using only the application name. If such a profile exists, RACF evaluates the PassTicket using the key contained within this profile. Depending on the application (APPC, CICS, IMS, MVS batch, TSO, or VM), the secured signon function uses a specific method for determining profile names in the PTKTDATA class. If your application is other than those listed, see Other applications on page 257. Note: Check with your system programmer to see if your installation is using RACF exit ICHRIX01 to modify the application name that RACF uses during user verification processing. If so, the application name used to determine the PTKTDATA class profile name for APPC, CICS, IMS, MVS batch, TSO, or VM applications must match the application name ICHRIX01 selects. For example, if the ICHRIX01 exit places the character string TSO1234 in the application name position of the exit parameter list, the application name position of the PTKTDATA class profile must also be TSO1234. APPC, CICS, or IMS: To define a profile for an APPC, CICS, or IMS application, define the profile in the PTKTDATA class with a high-level qualifier that matches the standard naming conventions you use to define these applications to the APPL class. v For general information on the APPL class, see Protecting Applications on page 245. v For APPC information, see RACF and APPC on page 289. v For information about using IMS with RACF, see the appropriate IMS System Administration Guide for your installation. v For information about using CICS with RACF, see CICS RACF Security Guide. MVS batch jobs: For MVS batch jobs that include RACF passwords in the job control language (JCL), you can replace the password with a PassTicket. To define the PTKTDATA profile for an MVS batch job, do the following: 1. Ask the system programmer for the SMF system identifier of the MVS system where the application runs. The SMF identifier is located in SMFPRMxx member of SYS1.PARMLIB and is specified by the SID value. 2. Determine the high-level qualifier of the PTKTDATA class profile for the MVS batch job by using the characters MVS as a prefix to the system's SMF identifier. Example of a profile name for an MVS batch job: If the SMF identifier of the system where the application runs is SYS2, the resulting profile name is MVSSYS2. If the profile applies only to RACF users connected to the RACF group PROD, the resulting profile name is MVSSYS2.PROD.
255
General resources
Notes: 1. If the SMF identifier contains blanks or characters that are not alphanumeric, omit them before specifying the profile name. For example, if the SMF identifier is SY*6, specify the high-level qualifier of the PTKTDATA class profile as MVSSY6. 2. Beginning in z/OS V1R13, certain batch jobs that are submitted from online TSO sessions can be defined in the PTKTDATA class profile using either the characters MVS or TSO as the prefix to the system's SMF identifier. Guideline: Use MVS as the prefix to help administrators distinguish between a batch job and a non-batch job. TSO: Ask the system programmer if a VTAM generic resource name for TSO is being used, then reference the appropriate information below. Creating a TSO profile name (when a VTAM generic resource name for TSO is used): If VTAM generic resource naming is used for TSO application names, ask the system programmer for the generic name for TSO, and use it as the high-level qualifier of the PTKTDATA profile name. The VTAM generic resource name for TSO is located in: v The GNAME value in the TSOKEYxx member of SYS1.PARMLIB. v The GNAME= operand of the START command issued to start TSO. Example: The VTAM generic resource name for TSO on your system is TSOGR, and a PTKTDATA profile needs to be created for the TSO application. Use the VTAM generic resource name as the profile name. The resulting profile name is TSOGR. If the profile applies only to RACF users connected to the RACF group PROD, the resulting profile name is TSOGR.PROD. Notes: 1. A VTAM generic resource name allow the name by which an application is known to its end users to be different from the actual application name on a given execution system. This allows multiple real application servers to be used by large numbers of users who request the services of the application name by its generic name, while the requested service is actually provided by multiple backend application servers. With VTAM generic resources, the real backend application name does not need to be exposed to end users, since they refer to the application only by its generic name. 2. During TSO signon PassTicket evaluation, RACF checks the VTAM terminal address space control table (TCAST) for a VTAM generic resource name for each TSO application environment. If a VTAM generic resource name exists for this particular TSO application, it is used as the application name by RACF for the evaluation process. This results in consistency of application names between PassTicket generation time and evaluation time. Creating a TSO profile name (when a VTAM generic resource name for TSO is not used): If VTAM generic resource naming is not used for TSO, you should: 1. Ask the system programmer for the SMF system identifier of the MVS system where the application is running. The SMF system identifier is located in the SMFPRMxx member of SYS1.PARMLIB and is specified by the SID value. 2. Determine the high-level qualifier of the profile name to represent the TSO application in the PTKTDATA class using the characters TSO as a prefix to the system's SMF identifier.
| | | | |
256
General resources
Example: The SMF identifier of the system the TSO application is running on is SYS2. To create the profile name, use TSO as the prefix. The resulting profile name is TSOSYS2. If the profile applies only to RACF users connected to the RACF group PROD, the resulting profile name is TSOSYS2.PROD. Note: If the SMF identifier contains blanks or characters that are not alphanumeric, they cannot be specified in the profile name. For example, if the SMF identifier is SY-5, you must specify the profile defined in the PTKTDATA class as TSOSY5. z/VM logon: If you are sharing the RACF database with a z/VM system, you can define a profile for z/VM: 1. Ask the system programmer for the system ID of the z/VM system. It can be located by examining the CPU-ID (system ID) field in the RACF SMF CONTROL file. 2. Determine the high-level qualifier name of the profile to represent z/VM in the PTKTDATA class using the characters VM as a prefix to the CPU-ID field. Example of a z/VM profile name: The system ID of the z/VM system is ISGR8. To create the profile name, use VM as the prefix. The resulting profile name is VMISGR8. If the profile applied only to RACF users connected to the RACF group PROD, the resulting profile name would be VMISGR8.PROD. Note: If the CPU-ID field contains blanks or characters that are not alphanumeric, they cannot be specified in the profile name. For example, if the CPU-ID field contains VM7, you must specify the profile defined in the PTKTDATA class as VMVM7. z/OS UNIX applications: For the z/OS LDAP server, use the job name associated with the LDAP server's started procedure as the name of your PTKTDATA profile. For other UNIX-based applications, such as the z/OS HTTP Server and the FTP server, that authenticate using the z/OS UNIX __passwd() service, the default application name is OMVSAPPL. Therefore, in most cases, use OMVSAPPL as the name of your PTKTDATA profile. However, because an application might change the default value or use the __passwd_applid() service to specify an explicit value, see your programmer for the correct application name to specify as the name of your PTKTDATA profile. Other applications: If your application is other than APPC, CICS, IMS, MVS batch, TSO or z/VM, define the application name that your application passes to RACF in the APPL parameter of the RACROUTE REQUEST=VERIFY as the name of your PTKTDATA profile. If your application does not pass an application name, follow the instructions for creating an MVS batch job profile name. See MVS batch jobs on page 255.
257
General resources
universal access authority (UACC) of the RACF database is NONE. This prevents unauthorized users from listing or copying the RACF data set that contains these sensitive keys. Masking the Secured Signon Application Key: If the system using the secured signon function does not use a cryptographic product, RACF masks the key with a proprietary masking algorithm when you define or alter it. The masking algorithm that masks the secured signon application keys while they reside in the RACF database is an IBM proprietary algorithm. It is designed to provide protection against casual viewing of the secured signon masked keys. The algorithm is not a cryptographic algorithm and cannot provide the level of security for the secured signon application keys that the use of cryptography can provide. To mask the secured signon application key when you define or alter it, use the SSIGNON operand and KEYMASKED value with the RDEFINE or RALTER command. Encrypting the Secured Signon Application Key: You can encrypt the secured signon application keys when a common cryptographic architecture (CCA) cryptographic product is installed on the systems where the secured signon function is installed. Using a cryptographic product ensures the maximum possible security for the secured signon application keys. With a cryptographic product, RACF can store the keys on the RACF database in a form in which they are encrypted under the cryptographic product's master key. RACF uses the functions of the cryptographic product to ensure that the encrypted keys do not exist in clear-text form within system main storage for RACF processing, except when they are being defined. Therefore, if a system storage dump occurs, they are not exposed in the dump.
Sharing a RACF Database v If you want to encrypt the secured signon application keys when a cryptographic product is installed on one or more of the systems that share a RACF database, but is not installed on all of the systems, you must ensure that the applications requiring the encrypted keys run only on the systems on which the cryptographic product is installed. v If there is a possibility that an application might run on a system that does not have a cryptographic product installed, you must mask the secured signon application keys. When using the secured signon facilities with encryption, the following Integrated Cryptographic Service Facility (ICSF) modules must be installed as follows so they can be accessed by RACF. v The CSNBENC module must reside in the link pack area (LPA) if not already there. It can be dynamically loaded, or added to PLPA or MLPA with the respective PARMLIB members. v The following modules must reside in APF-authorized link-listed data sets: CSNBCKI CSNBDEC CSNBKRC CSNBKRD
258
General resources
CSNBKRW Depending on the release of ICSF, some of these modules might not exist. RACF checks ICSF and uses only existing modules. To encrypt the secured signon application key when you define or alter it, use the SSIGNON operand and KEYENCRYPTED value with the RDEFINE or RALTER command.
3. RACF sends a message to the SYSLOG and to the security console. The application rejects the logon request the same way it rejects an incorrect password. The text of the message the user receives depends on the application. Chapter 7. Protecting General Resources
259
General resources
Be sure that your MVS system and the evaluating computer use clock values that are within that time range. RACF uses the value stored for coordinated universal time (UTC), formerly called Greenwich mean time (GMT), in the algorithms that process PassTickets. One way to ensure that reasonably synchronized values are used is to set UTC in the GMT value of the MVS time of day (TOD) clock and to set a similar value in each of the other systems with which RACF shares PassTicket information. You can still use the MVS local time for local timestamp information, and resetting the local time does not affect the GMT value kept in the TOD clock.
Important Before setting the TOD clock's GMT value to UTC, make sure that the subsystems and applications you use are not affected. To be sure the MVS system clock is set properly, the system console operator should issue:
DISPLAY T
The system displays the time with information similar to the following:
IEE136I LOCAL: TIME=14.06.18 DATE=1997.309 GMT: TIME=19.06.18 DATE=1997.309
Important If the MVS DISPLAY T command indicates that your system clock is not set correctly for GMT, you need to analyze the consequences of resetting the clock. It is possible that other programs that execute on the system have been adjusted to tolerate an incorrect GMT setting. You might need to readjust those programs before resetting the system clock. See z/OS MVS Initialization and Tuning Reference and z/OS MVS System Commands for more information on setting clocks. See z/OS Security Server RACF Macros and Interfaces for more information on the algorithms. v If the value was used before, and if PassTicket replay protection has not been bypassed, the user receives a message from the application4 indicating that the password is not valid. v If the value was not used before, the PassTicket is considered valid and processing continues. Determines whether the value is a valid PassTicket. v If the PassTicket is valid, RACF gives the user access to the desired application. v If the value is not valid, the host application sends a message5 to the user indicating that the password is not valid. Note: If the secured signon application key is encrypted, the cryptographic product must be active when RACF tries to authenticate the PassTicket. If it
4. RACF sends a message to the SYSLOG and to the security console. The application rejects the logon request the same way it rejects an incorrect password. The text of the message the user receives depends on the application. 5. See the previous footnote.
260
General resources
is not active, RACF cannot validate the PassTicket. The resulting message indicates that the logon attempt failed.
Notes: 1. The option to bypass PassTicket replay protection should only be used in secure environments where access to generated PassTickets is limited within a secure or internal network. 2. Other than the APPLDATA (application data) field of the application profile containing the text string, NO REPLAY PROTECTION, there is no other external indication that replay protection is bypassed.
261
General resources
As a result, the RACF database contains all the information necessary to validate PassTickets for each application that has a PTKTDATA class profile defined.
Preventing Errors
The following checklist describes the errors that might cause a PassTicket to fail. To prevent these errors from occurring: 1. Read the list before you use the PassTicket. 2. Review your process to ensure that you have entered all of the information correctly. 3. Verify the information by using the procedures described in Verifying the Secured Signon Environment.
Use this checklist to prevent or correct errors: h The PTKTDATA class is activated. h You issued the SETROPTS RACLIST(PTKTDATA) command. h You issued the SETROPTS RACLIST(PTKTDATA) REFRESH command after defining the profile. h A PTKTDATA class profile exists for the application. h You issued the RDEFINE command correctly. Even if you have followed the proper procedures, it is still possible to receive a message stating that a password is incorrect and be denied access to the application. This can occur if: v PassTicket replay protection is not being bypassed, and the PassTicket was used previously for this user, application, and time range. In this case, RACF generates an SMF record that logs an attempt to replay a PassTicket. v The GMT clock on the evaluating computer is outside the valid time range for the PassTicket. This can be caused by one of the following: The GMT clock on the generating computer and the clock on the evaluating computer are not reasonably synchronized. The PassTicket was not used within approximately ten minutes of being generated. The system clock on the evaluating computer might not be set correctly in relation to GMT. See Time Considerations on page 259 for more information.
262
General resources
This command specifies that no users can use the vector facility. 2. Give READ access authority to appropriate users or groups.
PERMIT IEAVECTOR CLASS(FACILITY) ID(user or group) ACCESS(READ)
If your installation does not need to control the use of the vector facility, you can define an entry for IEAVECTOR in the global access checking table. Global access checking allows your installation to bypass normal RACF authorization checking and, thereby, minimize processing. To define an entry for the vector facility in the global access checking table, issue the following commands.
RDEFINE GLOBAL FACILITY RALTER GLOBAL FACILITY ADDMEM(IEAVECTOR/READ) SETROPTS GLOBAL(FACILITY)
For more information, see Setting Up the Global Access Checking Table on page 218.
2. Permit selected users to access the data sets protected by the SYS1.DUMP%% profile by adding them to the access list with READ access authority. Enter:
PERMIT SYS1.DUMP%% ID(userid) ACCESS(READ)
263
General resources
2. If you want to give a user an access authority that is different from the one you specified on the RDEFINE command (in this example, an access authority of NONE), enter:
PERMIT IEAABD.DMPAUTH CLASS(FACILITY) ID(ASMITH) ACCESS(NONE)
When you specify an access authority on either the RDEFINE command or PERMIT command, RACF allows access to program dumps as follows: v A user who has UPDATE or greater authority to the IEAABD.DMPAUTH resource can always obtain program dumps. v A user who has READ authority to the IEAABD.DMPAUTH resource can obtain program dumps unless a program has been fetched from a library to which the user has only EXECUTE authority. The user cannot obtain a dump of a program to which he or she has only EXECUTE authority. See Using EXECUTE access for programs and libraries in ENHANCED mode on page 339 for more information. v A user who has less than READ authority to the IEAABD.DMPAUTH resource can never obtain program dumps of address spaces that contain controlled programs. Example of Defining the IEAABD.DMPAKEY Profile: 1. Define a profile protecting a resource called IEAABD.DMPAKEY in the FACILITY class:
RDEFINE FACILITY IEAABD.DMPAKEY UACC(NONE)
2. If you want to give a user an access authority that is different from the one you specified on the RDEFINE command (in this example, an access authority of READ), enter:
PERMIT IEAABD.DMPAKEY CLASS(FACILITY) ID(ASMITH) ACCESS(READ)
When you specify an access authority on either the RDEFINE command or PERMIT command, RACF allows access to program dumps as follows: v A user who has READ or greater authority to the IEAABD.DMPAKEY resource can obtain program dumps, even when the program is running in a TCB key that is less than 8. v A user who has less than READ authority to the IEAABD.DMPAKEY resource can never obtain program dumps when the program is running in a TCB key that is less than 8.
264
General resources
Activating the FACILITY Class: 1. If the FACILITY class is not active, activate it as follows:
SETROPTS CLASSACT(FACILITY)
You only need to issue this command once. When a general resource class is active, it remains active until your installation deactivates it. 2. To avoid possible deadlocks, issue a SETROPTS RACLIST command for the FACILITY class. Example of a Deadlock: There are several types of deadlocks. This example describes one way a deadlock can occur. v Task A of a job is abending. z/OS needs to check the user's authority to produce a dump of the task and issues RACROUTE REQUEST=AUTH. RACF needs to do I/O to the RACF database to respond to the RACROUTE request. v Task B of the same job is already performing a RACF function and has ENQed the RACF database. v Task A must wait until task B releases the ENQ. v Dump processing for task A has set all other tasks in the job non-dispatchable. Under normal circumstances, task A could wait for task B to release the ENQ. However, because dump processing for the abending task prevents task B from completing, task A cannot proceed. Task B cannot complete until task A proceeds. This causes a deadlock.
265
General resources
v The information that is necessary to specify the name of the profile that is to protect the device, such as the device class, unit name, and device number. These terms are described in more detail in Step 3. v The RACF-defined users that can allocate the device that is protected by the profile. Note: With this information, you can plan whether to use generic profiles, discrete profiles, or a combination, to protect the devices on your system. If you decide to use generic profiles, you must activate generic processing for this class before you define the profiles.
SETROPTS GENERIC(DEVICES)
where: sysid is the system identifier, which is defined on the SYSNAME value in the IEASYSxx member of SYS1.PARMLIB. Note: The system identifier is necessary only if different devices with the same device class, unit name, and device address can be attached to multiple systems and have different security requirements. In most cases, you should specify an asterisk (*) for this qualifier. device-class is one of the following UCB device classes: TP UR GRAPHIC Teleprocessing or communication devices Unit record devices Graphic devices
Note: These device classes are consistent with the class names used on the DISPLAY U operator command. unit-name is an esoteric device group (as defined by the installation) or a generic name (such as 3800) that identifies the device or devices. Note: Because a user can allocate a device using either an esoteric or generic name, you must define profiles that would protect the device in either case. For telecommunication devices, use the following list to determine what unit name should be used. The unit name that MVS uses for these devices is based on the transmission control unit (TCU) value of the IODEVICE statement. TCU Value TCU=2701 TCU=2702 TCU=2703 Unit Name 2701 2702 2703
For all other devices, see z/OS HCD Planning for unit name information.
266
General resources
Note: For any device for which MVS does not have a unit name, MVS uses eight character zeros (for example, 00000000). Use this as the unit name in the profile name to provide security for these devices. device-number is a 4-byte field that supplies the number of a specific device. For information about I/O device numbers, see z/OS HCD Planning. Note: If unit-name identifies an esoteric device group, specify an asterisk (*) in this qualifier. Here are some sample profile names for the DEVICES class:
SYS01.GRAPHIC.3277-2.B40 SYS01.TP.3705.3FA SYS01.UR.3800.00E SYS01.UR.PRINTER1.*
Specifying UACC(NONE) means that only users who are specifically permitted to the profile can allocate the device. 4. Give users the appropriate access authority:
PERMIT profile-name CLASS(DEVICES) ID(userid or groupname) ACCESS(access-authority)
where access-authority is one of the following: NONE READ Does not allow the allocation of the device Allows the allocation of the device.
5. When you are ready to start using the security provided by these profiles, activate both the DEVICES class and SETROPTS RACLIST processing for the class. SETROPTS RACLIST processing helps ensure high performance when access authorities are checked. You can do these two actions in the following command.
SETROPTS CLASSACT(DEVICES) RACLIST(DEVICES)
Note: Any time you make a change to a DEVICES profile, you must also refresh SETROPTS RACLIST processing for the DEVICES class for the change to take effect. For example:
SETROPTS RACLIST(DEVICES) REFRESH
Example 2: The following commands allow only group DESIGN1 to allocate graphics devices.
RDEFINE DEVICES SYS01.GRAPHIC.** UACC(NONE) PERMIT SYS01.GRAPHIC.** CLASS(DEVICES) ID(DESIGN1) ACCESS(READ)
267
General resources
where data-set-name is the name of the LLA-managed data set. Because of the CSVLLA prefix used on the resource names, and because the FACILITY class profiles can only be 39 characters long, the data-set-name portion of this profile is limited to 32 characters. If your data set name is longer than 32 characters, use generics so that the FACILITY class profile stays within the 39-character limit. Notes: a. You should consider creating the same FACILITY profiles as you did data set profiles in Step 1. b. To have this protection, you must create profiles in the FACILITY class as well as the DATASET class if you do not have access to the data set already. c. The LLA facility first checks the user's access through the FACILITY class profile and, unless this access is allowed, then checks for access through a data set profile. 3. Give users and groups the appropriate access authority:
PERMIT CSVLLA.data-set-name CLASS(FACILITY) ID(userid or groupname) ACCESS(access-authority)
This PERMIT command allows users or groups to issue LLA commands for the specified LLA-managed library. This access authority (access-authority) can be one of the following: NONE UPDATE ALTER Allows no access. Allows users to work with the data sets using the LLA START and LLA MODIFY commands.
For discrete profiles, allows same access as UPDATE, plus the ability to change the profile itself. For generic profiles, equivalent to UPDATE. 4. If you have not already done so, activate the FACILITY class:
SETROPTS CLASSACT(FACILITY)
Example:
268
General resources
For example, to control all LLA-managed data sets whose high-level qualifier is CICS, enter:
ADDSD CICS.* UACC(NONE) PERMIT CICS.* ID(CICS) ACCESS(READ) RDEFINE FACILITY CSVLLA.CICS.* UACC(NONE) PERMIT CSVLLA.CICS.* CLASS(FACILITY) ID(CICS) ACCESS(UPDATE) SETROPTS CLASSACT(FACILITY)
This command sequence allows CICS to issue the LLA MODIFY command for the LLA-managed data sets whose high-level qualifier is CICS.
where profile-name is the fully qualified name of the data set. (Do not specify quotes.) The profile must be a discrete profile. For example, for a data set named PAYROLL.SALARY.DATA, the profile name would be:
PAYROLL.SALARY.DATA
Chapter 7. Protecting General Resources
269
General resources
UACC and DLFDATA are optional. Possible options to support a DLF object are: UACC Controls access to the DLF object. Access authorities are as follows: NONE READ UPDATE CONTROL ALTER DLFDATA v If the DLF object is to be retained, specify RETAIN(YES) in the DLFDATA operand. Note: If you do not specify DLFDATA, or if you do not specify the RETAIN value in the DLFDATA operand, RETAIN(NO) is defaulted. v If access to the DLF object is to be limited to specific jobs, include the JOBNAMES value in the DLFDATA operand and list all of the applicable job names, as:
DLFDATA(JOBNAMES(jobname1...))
Allows no access to the DLF object. Allows the job to read from the DLF object. Is equivalent to READ Is equivalent to READ Allows READ access, and also allows users to change the profile (if it is a discrete profile).
See z/OS Security Server RACF Command Language Reference for more details and other options. 2. Give users and groups the appropriate access authority. For example:
PERMIT profile-name CLASS(DLFCLASS) ID(userid or groupname) ACCESS(access-authority)
3. When you are ready to start using the protection defined in the profiles, activate the DLFCLASS class as follows:
SETROPTS CLASSACT(DLFCLASS)
4. For enhanced performance related to the DLFCLASS profiles themselves, activate SETROPTS RACLIST processing as follows:
SETROPTS RACLIST(DLFCLASS)
Example 1: Limiting Access by Job Name Users AHLEE and SMITH can both access a DLF object that corresponds to a data set named SALES.DATA, but they can do this only by submitting jobs whose job names begin with TAX, or jobs named TOTALS. Create a profile for the DLF object:
RDEFINE DLFCLASS SALES.DATA DLFDATA(JOBNAMES(TOTALS TAX*)) UACC(NONE)
270
General resources
An interactive application is invoked many times during the day by many users. This application makes many I/O operations to data set PAY.DATA. At the end of the day, the application ends and the need for the DLF object ends. To improve performance when the application is in use, create a DLFCLASS profile for the data set with RETAIN(NO) specified. Create a profile for the DLF object:
RDEFINE DLFCLASS PAY.DATA DLFDATA(RETAIN(NO)) UACC(NONE)
After all applications have given up their access to the RACLIST data space by issuing RACROUTE REQUEST=LIST,ENVIR=DELETE, you can delete the data space by issuing SETROPTS NORACLIST(classname). Remember that the SETROPTS RACLIST REFRESH and SETROPTS NORACLIST commands process both the class specified by the command and all valid classes sharing the same POSIT value as the specified class. Additionally, if the system is enabled for sysplex communication, the command is propagated to the other members of the sysplex data sharing group. For a detailed comparison of the RACROUTE and SETROPTS processes, see z/OS Security Server RACF Diagnosis Guide.
271
General resources
example, if the RACGLIST class name profile is TCICSTRN, RACF creates additional profiles named TCICSTRN_00001, TCICSTRN_00002, and so forth. RACF uses these RACGLIST profiles to build the RACLIST data space in any of the following cases: v For a subsequent RACROUTE REQUEST=LIST,GLOBAL=YES request on a different system sharing the RACF database v For SETROPTS RACLIST processing during a system IPL v After a system IPL by RACROUTE REQUEST=LIST,GLOBAL=YES processing v During the processing of a propagated SETROPTS RACLIST or SETROPTS RACLIST classname REFRESH command The RACGLIST class provides a single-system image for security when you use RACROUTE REQUEST=LIST,GLOBAL=YES or SETROPTS RACLIST on multiple systems that are enabled for sysplex communication. All systems and regions using a class whose RACLIST results have been saved as classname_nnnnn profiles use the same data to make security decisions. Any system that performs a RACROUTE REQUEST=LIST,GLOBAL=YES retrieves the same profiles. When several changes are required for profiles in that class, other systems continue to access the stored profiles until the administrator completes the changes and tells RACF to refresh the profiles by issuing SETROPTS RACLIST(classname) REFRESH. Restrictions: 1. You should use the RACGLIST class only if all systems sharing the RACF database belong to the same global resource serialization (GRS) complex. See the appropriate level document of z/OS MVS Planning: Global Resource Serialization for information about defining a GRS complex. 2. Using RACGLIST class requires more space for the RACF database. However it ensures that results of any of the following requests are consistent across all systems sharing the database: v RACROUTE REQUEST=LIST,GLOBAL=YES v Propagated SETROPTS RACLIST command v Propagated SETROPTS RACLIST REFRESH command 3. Depending on how your installation's database is set up, it might take less processing time and I/O to read the stored RACLIST results from the RACGLIST profiles than to retrieve the original discrete and generic profiles for the class name. RACGLIST processing might improve startup time and system availability during restarts. 4. If you are using RACGLIST support and your database is being shared by two or more MVS systems, be sure that SYSZRAC2 is not in the SYSTEMS exclusion list in SYS1.PARMLIB. 5. The RACGLIST class cannot be used to create copies of profiles in the CDT class. See z/OS Security Server RACF Diagnosis Guide for a detailed description of RACLIST processing when the RACGLIST class is active.
272
General resources
v For MCS consoles, you can authorize individual commands, as well as command groups, to individual operators, groups of operators, or to the consoles. v For commands issued from NJE nodes and RJE workstations, you can authorize the node or workstation to individual commands or groups of commands. In addition, the installation can use generic profiles to define groups of commands. If RACF is not used, the system defines the groups of commands. For more information on using MVS and JES to perform command authority checking, see one of the following documents: v For MVS system commands, see z/OS MVS Planning: Operations. v For JES2 commands, see z/OS JES2 Initialization and Tuning Guide. v For JES3 commands, see z/OS JES3 Initialization and Tuning Guide. You can use RACF to perform authority checking for all commands. However, commands issued from locally attached JES3 consoles are checked using JES3's authority, not the operator's authority. In practice, that would probably limit you to just auditing those commands. Authorizing the Use of Operator Commands describes how you can use RACF to provide command authority checking. z/OS JES3 Initialization and Tuning Guide describes how to use JES to provide command authority checking. Note: If SDSF is installed on your system, OPERCMDS profiles control which action characters and overtypeable fields users can enter on SDSF panels. For complete information on creating OPERCMDS profiles for use with SDSF, see z/OS SDSF Operation and Customization.
Commands from remote workstations OPERCMDS, FACILITY (require additional setup) Commands from NJE nodes (require additional setup) Commands entered through, or generated by, SDSF OPERCMDS, FACILITY OPERCMDS, CONSOLE
273
General resources
274
General resources
RDEFINE OPERCMDS RACF.SIGNOFF.** UACC(NONE) PERMIT RACF.SIGNOFF.** CLASS(OPERCMDS) ID(DJONES) ACCESS(UPDATE) RDEFINE OPERCMDS RACF.DISPLAY.SIGNON.** UACC(NONE) PERMIT RACF.DISPLAY.SIGNON.** CLASS(OPERCMDS) ID(DJONES) ACCESS(READ)
The base command or resource names are SIGNOFF and DISPLAY.SIGNON. Although SIGNON is not required at the console (because it is the default), it must be specified in the resource name to protect the DISPLAY command. The RVARY command cannot be protected by profiles in the OPERCMDS class. This is intentional during recovery; RACF must not be allowed to attempt to access the database. The RVARY command is always protected by an operator prompt, regardless of whether it is entered from TSO or as an operator command. b. The UACC to be associated with the command. c. The user IDs of the operators or the group names of the groups of operators to whom you want to grant authority. d. For each operator or group of operators: v The access authority to be assigned to the operator or group of operators. For RACF operator commands (shown in Table 21 on page 277), the required access authority is READ, except for the SIGNOFF command which requires UPDATE authority. For RACF TSO commands entered as operator commands (shown in Table 22 on page 278). See Note 3 on page 279. v Any restrictions on which consoles the operators must be using when issuing certain commands. To do this, create profiles for consoles in the CONSOLE class and then specify the WHEN(CONSOLE) operand on the PERMIT command. See Conditional Access Lists for General Resource Profiles on page 217. Note: To authorize a console to a command or group of commands, create a RACF user profile for the console and place the console's user ID (or a RACF group to which the user ID is connected) in the access list of the OPERCMDS profile. 2. Use the RDEFINE command to create profiles for the commands:
RDEFINE OPERCMDS profile-name UACC(NONE)
where: subsystem-name is the name of the processing environment of the command (such as MVS, JES2, JES3, or RACF) is the name of the command
command qualifier
is the type of object the command specifies (JOB or SYS, for example) or an operand of the command (LIST, for example) In these examples, you would first issue SETROPTS GENERIC(OPERCMDS) to turn generics on for the OPERCMDS class and then issue SETROPTS REFRESH:
RDEFINE OPERCMDS JES3.CALL.** UACC(NONE) RDEFINE OPERCMDS RACF.TARGET.LIST UACC(NONE)
275
General resources
Notes: a. When an operator issues a command that the subsystem doesn't recognize, the subsystem checks for a profile named subsystem-name.UNKNOWN. To handle these commands, create a profile named: v MVS.UNKNOWN with UACC(READ) for MVS v JES2.UNKNOWN or JES3.UNKNOWN with UACC(NONE) for JES v RACF.UNKNOWN with UACC(NONE) for RACF Your security policy might require auditing of all commands issued, even if they are not valid on your system. You can audit these commands by specifying AUDIT(ALL) on these profiles. 3. For each controlled command, grant access to the users or groups who need to use it:
PERMIT profile-name CLASS(OPERCMDS) ID(user or group ACCESS(access-authority)
For example:
PERMIT JES3.CALL.DSP.** CLASS(OPERCMDS) ID(OPER7 OPER24) ACCESS(UPDATE)
4. When you are ready to start controlling access to commands based on the profiles you have defined, activate the OPERCMDS class:
SETROPTS CLASSACT(OPERCMDS) RACLIST(OPERCMDS)
Example of Controlling Who Can Issue MVS Commands The following example shows how to use the OPERCMDS class to control who can display and cancel jobs in your installation. Suppose you want to let anyone display jobs but you want to restrict the task of cancelling jobs to a group of MVS operators. All of the MVS operators you want to authorize have RACF-defined user IDs connected to a group called OPERGRP. According to z/OS MVS Planning: Operations, to authorize a user to issue the MVS DISPLAY JOBS command, you must give the user READ access to a resource named MVS.DISPLAY.JOB in the OPERCMDS class. To authorize a user to issue the MVS CANCEL command for all jobs, you must give the user UPDATE access to a resource named MVS.CANCEL.JOB.** in the OPERCMDS class. To grant these authorizations, enter:
SETROPTS GENERIC(OPERCMDS) REFRESH RDEFINE RDEFINE PERMIT OPERCMDS MVS.DISPLAY.JOB UACC(READ) OPERCMDS MVS.CANCEL.JOB.** UACC(NONE) MVS.CANCEL.JOB.** CLASS(OPERCMDS) ID(OPERGRP) ACCESS(UPDATE)
Now, anyone can display a job, but only the operators in OPERGRP can cancel a job.
276
General resources
Table 21. RACF operator command profiles: Naming conventions Command DISPLAY Resource name subsystem-name.DISPLAY.SIGNON Any profile in the OPERCMDS class covering this resource name protects the DISPLAY command, for example: RDEFINE OPERCMDS RACF.DISPLAY.SIGNON Note: No OPERCMDS authority check is performed when the DISPLAY command is issued from a RACF parameter library member. RESTART subsystem-name.RESTART Any profile in the OPERCMDS class covering this resource name protects the RESTART command, for example: RDEFINE OPERCMDS RACF.RESTART Note: The RESTART command cannot be issued from a RACF parameter library member. SET subsystem-name.SET.AUTOAPPL subsystem-name.SET.AUTODIRECT subsystem-name.SET.AUTOPWD subsystem-name.SET.GENERICANCHOR subsystem-name.SET.INCLUDE subsystem-name.SET.JESNODE subsystem-name.SET.LIST subsystem-name.SET.PWSYNC subsystem-name.SET.TRACE To protect the SET LIST command, for example: RDEFINE OPERCMDS RACF.SET.LIST Note: No OPERCMDS authority check is performed when the SET command is issued from a RACF parameter library member. SIGNOFF subsystem-name.SIGNOFF Any profile in the OPERCMDS class covering this resource name protects the SIGNOFF command, for example: RDEFINE OPERCMDS RACF.SIGNOFF Note: No OPERCMDS authority check is performed when the SIGNOFF command is issued from a RACF parameter library member. STOP subsystem-name.STOP Any profile in the OPERCMDS class covering this resource name protects the STOP command, for example: RDEFINE OPERCMDS RACF.STOP Note: The STOP command cannot be issued from a RACF parameter library member.
277
General resources
Table 21. RACF operator command profiles: Naming conventions (continued) Command TARGET Resource name subsystem-name.TARGET.DESCRIPTION subsystem-name.TARGET.LIST Note: TARGET.LIST also protects the LISTALL and LISTPROTOCOL operands. subsystem-name.TARGET.LOCAL subsystem-name.TARGET.NODE subsystem-name.TARGET.OPERATIVE Note: TARGET.OPERATIVE also protects the DELETE and DORMANT operands. subsystem-name.TARGET.PREFIX subsystem-name.TARGET.PROTOCOL subsystem-name.TARGET.PURGE subsystem-name.TARGET.WDSQUAL subsystem-name.TARGET.WORKSPACE To protect the TARGET LIST command, for example: RDEFINE OPERCMDS RACF.TARGET.LIST Note: No OPERCMDS authority check is performed when the TARGET command is issued from a RACF parameter library member. Table 22. RACF TSO commands entered as operator commands: Naming conventions Command ADDGROUP or AG ADDSD or AD ADDUSER or AU ALTDSD or ALD ALTGROUP or AG ALTUSER or ALU CONNECT or CO DELDSD or DD DELGROUP or DG DELUSER or DU LISTDSD or LD LISTGRP or LG LISTUSER or LU PASSWORD or PW or PHRASE PERMIT or PE RACLINK RALTER or RALT RDEFINE or RDEF RDELETE or RDEL REMOVE or RE RLIST or RL SEARCH or SR SETROPTS or SETR Resource name subsystem-name.ADDGROUP subsystem-name.ADDSD subsystem-name.ADDUSER subsystem-name.ALTDSD subsystem-name.ALTGROUP subsystem-name.ALTUSER subsystem-name.CONNECT subsystem-name.DELDSD subsystem-name.DELGROUP subsystem-name.DELUSER subsystem-name.LISTDSD subsystem-name.LISTGRP subsystem-name.LISTUSER subsystem-name.PASSWORD subsystem-name.PERMIT subsystem-name.RACLINK subsystem-name.RALTER subsystem-name.RDEFINE subsystem-name.RDELETE subsystem-name.REMOVE subsystem-name.RLIST subsystem-name.SEARCH subsystem-name.SETROPTS
| |
278
General resources
Table 22. RACF TSO commands entered as operator commands: Naming conventions (continued) Command Notes: 1. RACF first checks that the operator issuing the TSO command is defined to RACF and if not, an error message is issued. If the operator is defined to RACF, a check is made to a profile in the OPERCMDS class to determine if the user ID has authority to issue the TSO command as an operator command. If the OPERCMDS class is not active, or if no OPERCMDS profile exists, the user will be allowed to issue the command as an operator command. 2. Existing command authorization is still enforced. For example, you must be a SPECIAL user to issue the SETROPTS INITSTATS command. 3. READ access is required to all the resource names shown in Table 22 on page 278 with the exception of SETROPTS. If SETROPTS LIST is issued with no other operands, READ access is sufficient. However, if any other SETROPTS option is issued, with or without also specifying LIST, UPDATE access is required. 4. If your installation renames any RACF TSO commands, they are still protected under the resource names shown in Table 22 on page 278. For example, if you renamed ADDGROUP as ADDBUNCH, RACF would still use subsystem-name.ADDGROUP as the resource name. Resource name
279
General resources
2. There is no RRSFDATA profile protecting RACLINK.DEFINE.node for the specified node. 3. The command issuer is not properly authorized to the resource.
v The PHRASESYNC resourceto authorize users for password phrase synchronization. Example:
RDEFINE RRSFDATA PHRASESYNC UACC(NONE) PERMIT PHRASESYNC CLASS(RRSFDATA) ID(*) ACCESS(READ)
Important: When you define the PWSYNC or PHRASESYNC resources, you do not initiate synchronization for authorized users. For synchronization to occur, each user must have an approved RACLINK PEER association with password synchronization (PWSYNC) enabled and have sufficient authority for either the PWSYNC resource, the PHRASESYNC resource, or both resources. For more information, see Password Synchronization on page 431.
280
General resources
To be authorized for synchronization, a user must be permitted with at least READ access to the appropriate RRSFDATA resource. This allows PWSYNC requests for the user to be processed successfully. Alternatively, you can define a UACC of READ for the PWSYNC resource or the PHRASESYNC resource, or both, to authorize synchronization for all users who have approved PEER associations with PWSYNC enabled. Examples:
RALTER RRSFDATA PWSYNC UACC(READ) RDEFINE RRSFDATA PHRASESYNC UACC(READ)
Important: If the RACF RRSFDATA class is not active or the PWSYNC resource is not defined, password synchronization will not occur even for users with established associations. Similarly, if the RACF RRSFDATA class is not active or the PHRASESYNC resource is not defined, password phrase synchronization will not occur even for users with established associations. To enable synchronization for users with RACLINK PEER PWSYNC associations and disable automatic password direction, issue:
SET PWSYNC NOAUTOPWD
You can also use the RRSFDATA resources to control synchronization at a system level. For example, you can turn off synchronization without having to delete all of the existing user ID associations by deleting the PWSYNC or PHRASESYNC resource, or by changing the UACC to NONE with no users on the access list. Examples:
RALTER RRSFDATA PWSYNC UACC(NONE) RDELETE RRSFDATA PHRASESYNC
281
General resources
v The command issuer and the target user ID must be SPECIAL. v No user ID association is required if the target user ID is the same as the command issuer. The user IDs can be on different nodes. v If the target user ID is different from the command issuer, a user ID association between the command issuer and the target user ID is required. This prevents a SPECIAL user from unauthorized use of another remote SPECIAL user ID. For information on implementing command direction using the AT operand, see Directing Commands Using the ONLYAT Option on page 437.
where: target-node classname Is the remote node where the command is to be directed. Is the class name associated with the command issued. The class name can be USER, GROUP, DATASET, or any general resource class defined in the class descriptor table (CDT).
command-name Is the name of the command issued. The use of these profiles provides security for automatic command direction. An authorization check is made against these resource names to determine if the user is allowed to automatically direct the specified command. The command is directed to the remote node if: v v v v The RRSFDATA class has been activated. SET AUTODIRECT is in effect. There is a profile for the resource name associated with the command. The command issuer has at least READ access to that resource.
Table 23 lists the resource name for each RACF command that can be used with automatic command direction.
Table 23. Automatic command direction: Resource names Command Class Resource name AUTODIRECT.target-node.USER.ADDUSER AUTODIRECT.target-node.USER.ALTUSER AUTODIRECT.target-node.USER.CONNECT AUTODIRECT.target-node.USER.DELUSER AUTODIRECT.target-node.USER.PASSWORD
ADDUSER or AU USER ALTUSER or ALU CONNECT or CO DELUSER or DU PASSWORD or PW or PHRASE USER USER USER USER
282
General resources
Table 23. Automatic command direction: Resource names (continued) Command REMOVE or RE ADDGROUP or AG ALTGROUP or ALG DELGROUP or DG ADDSD or AD ALTDSD or ALD DELDSD or DD PERMIT or PE Class USER GROUP GROUP GROUP DATASET DATASET DATASET any general resource class or DATASET Resource name AUTODIRECT.target-node.USER.REMOVE AUTODIRECT.target-node.GROUP.ADDGROUP AUTODIRECT.target-node.GROUP.ALTGROUP AUTODIRECT.target-node.GROUP.DELGROUP AUTODIRECT.target-node.DATASET.ADDSD AUTODIRECT.target-node.DATASET.ALTDSD AUTODIRECT.target-node.DATASET.DELDSD AUTODIRECT.target-node.classname.PERMIT
RALTER or RALT any general resource class RDEFINE or RDEF RDELETE or RDEL SETROPTS or SETR any general resource class any general resource class none (use RACF)
Notes: 1. To activate automatic command direction, issue the SET AUTODIRECT command. See Automatic direction on page 439 and z/OS Security Server RACF Command Language Reference for more information. 2. Automatic command direction occurs only at the command level. You cannot direct a command operand or segment information for a command. For example, if you direct the ADDUSER command, you direct all ADDUSER commands, including the TSO, DFP, and OPERPARM segment information. You cannot specify automatic command direction for only the TSO segment information in the ADDUSER command. 3. You can use generic profiles to define these profiles. No commands will be directed if the RRSFDATA class is inactive or if no RRSFDATA profiles that protect AUTODIRECT exist. 4. These profiles are only checked on the node where the command was issued. Once the command is directed to another node, no authorization check is made against these profiles on the receiving node. 5. Profiles for turning on automatic direction of passwords and application updates are similar. Therefore, using * for the command names will turn on these functions, too. 6. If your installation renames any RACF TSO commands, they are still protected under the resource names shown in Table 23 on page 282. For example, if you renamed ADDGROUP as ADDBUNCH, RACF would still use AUTODIRECT.target-node.GROUP.ADDGROUP as the resource name. Sample Automatic Command Direction Profiles: You can activate automatic direction of commands without activating automatic direction of application updates by using SET AUTODIRECT NOAUTOAPPL. You can also turn off
Chapter 7. Protecting General Resources
283
General resources
password propagation by issuing the SET AUTODIRECT NOAUTOPWD command. See z/OS Security Server RACF Command Language Reference for details. Some examples of using profiles to control automatic command direction follow. For each example, assume that no other profiles beginning with AUTODIRECT are present in the RRSFDATA class. v To disable automatic command direction for TAPEVOL profiles and direct all other commands to all remote nodes:
AUTODIRECT.*.TAPEVOL.* AUTODIRECT.** AUTODIRECT.*.USER.ADDUSER UACC(NONE), no users on access list UACC(READ), no users on access list UACC(NONE), BOB on access list with READ access
v To direct ADDUSER commands issued by BOB to all remote nodes: v To disable automatic command direction for TAPEVOL and RRSFDATA profiles and direct all other commands to all remote nodes:
AUTODIRECT.*.TAPEVOL.* AUTODIRECT.*.RRSFDATA.* AUTODIRECT.** UACC(NONE), no users on access list UACC(NONE), no users on access list UACC(READ), no users on access list
v To enable automatic command direction only to NODE1 for the USER and GROUP classes:
AUTODIRECT.NODE1.USER.* AUTODIRECT.NODE1.GROUP.* AUTODIRECT.** UACC(READ), no users on access list UACC(READ), no users on access list UACC(NONE), no users on access list
These profiles provide security for automatic password direction. An authorization check is made against these resource names to determine if the user's password and password phrase can be synchronized automatically. The password and password phrase change is directed to the remote node if: v SET AUTOPWD is in effect. v The RRSFDATA class has been activated. v There is a profile to cover any of the resources that control automatic password direction. v The user changing the password or password phrase has at least READ access to that resource. You can use generic profiles to define these profiles. If the RRSFDATA class is inactive or if there is no RRSFDATA profile for automatic password direction, password and password phrase changes are not directed automatically. The RRSFDATA profiles for automatic password direction are checked only on the node where the password is originally changed. Once the password or password phrase change is directed to another node, no authorization check is made on the receiving node.
284
General resources
Sample Automatic Password Direction Profiles: Some examples of using profiles to control automatic password direction follow. For each example, assume that no other profiles beginning with AUTODIRECT are present in the RRSFDATA class. v To enable password synchronization for users with RACLINK PEER PWSYNC associations:
PWSYNC AUTODIRECT.*.USER.PWSYNC UACC(READ) UACC(NONE)
AUTODIRECT.*.USER.PWSYNC is not required, but if you have other profiles that protect AUTODIRECT, this prevents automatic password direction. v To enable automatic password direction for users without RACLINK associations:
PWSYNC AUTODIRECT.*.USER.PWSYNC UACC(NONE) UACC(READ)
v To enable automatic password direction for users without RACLINK associations to node MVS1:
PWSYNC AUTODIRECT.MVS1.USER.PWSYNC UACC(NONE) UACC(READ)
where: target-node classname Is the remote node the update is to be propagated to Is the class name associated with the update. This is USER, GROUP, any general resource class, or DATASET for updates not covered by the AUTODASD and AUTOTAPE profiles.
The formats when you are using this syntax for automatic direction of application updates in the DATASET class are:
AUTODIRECT.target-node.DATASET.APPL AUTODASD.target-node.DATASET.APPL AUTOTAPE.target-node.DATASET.APPL
Use AUTODIRECT.target-node.DATASET.APPL to control automatic direction of application updates for DATASET when the request is RACROUTE REQUEST=EXTRACT, RACXTRT, or ICHEINTY. Use AUTODASD when: v The request is a RACROUTE REQUEST=DEFINE or a RACDEF. v The CLASS value is set to, or defaults to, DATASET. v The DSTYPE value is not T. Use AUTOTAPE when: v The request is a RACROUTE REQUEST=DEFINE or a RACDEF. v The CLASS value is set to, or defaults to, DATASET.
Chapter 7. Protecting General Resources
285
General resources
v The DSTYPE value is T. These profiles provide security for automatic direction of application updates. An authorization check is made against these resource names to determine if the user is allowed to make these updates. The application updates are directed to the remote node if: v Automatic direction has been activated using SET AUTOAPPL. v The RRSFDATA class is active. v There is a profile to cover the resource name AUTODIRECT.targetnode.classname.APPL, AUTODASD.target-node.DATASET.APPL, or AUTOTAPE.target-node.DATASET.APPL. v The user directing the application update has at least READ access to that resource. The RRSFDATA profile that protects AUTODIRECT.target-node.classname.APPL, AUTODASD.target-node.DATASET.APPL, or AUTOTAPE.targetnode.DATASET.APPL is only checked on the node where the update originates. Once the update is propagated to another node, no AUTODIRECT authorization check is made on the receiving node. When automatic direction of application updates is enabled, private key information is not propagated. For more information, see Suppression of Private Key Information Propagation on page 456. Sample Automatic Direction of Application Updates: Some examples of using profiles to control automatic application update direction follow. For each example, assume that no other profiles beginning with AUTODIRECT are present in the RRSFDATA class. v To disallow both automatic direction of commands and automatic direction of application updates for TAPEVOL and RRSFDATA profiles, disallow automatic updates for TAPEVOL and RRSFDATA profiles, disallow automatic direction of application updates for all DATASET profiles, and allow all other updates to propagate to all remote nodes:
AUTODIRECT.*.TAPEVOL.* AUTOTAPE.*.DATASET.* AUTODIRECT.** AUTODASD*.** with UACC(NONE) and no users on access list with UACC(NONE) and no users on access list with UACC(READ) and no users on access list with UACC(READ) and no users on access list
v The following RRSFDATA profiles allow both automatic direction of commands and automatic direction of application updates only to NODEA for the USER and GROUP classes. In this example, no AUTOTAPE or AUTODASD profiles are defined. This gives the same results as defining the profiles with a UACC of NONE (updates are not propagated):
AUTODIRECT.NODEA.USER.* AUTODIRECT.NODEA.GROUP.* with UACC(READ) and no users on access list with UACC(READ) and no users on access list
286
General resources
1.
For each user for which you want to control message traffic, create a profile in the SMESSAGE class:
RDEFINE SMESSAGE receiving-userid UACC(NONE)
______________________________________________________________________
2.
where access-authority is one of the following: NONE READ Prevents users and groups in the access list from sending messages to the user whose ID is the profile name
Allows users and groups in the access list to send messages to the user whose ID is the profile name. ______________________________________________________________________
3.
When you are ready to start using the security provided by these profiles, activate both the SMESSAGE class and SETROPTS RACLIST processing for the class. SETROPTS RACLIST processing helps ensure high performance when access authorities are checked. You can do these actions in the following command.
SETROPTS CLASSACT(SMESSAGE) RACLIST(SMESSAGE)
Any time you make a change to an SMESSAGE profile, you must also refresh SETROPTS RACLIST processing for the SMESSAGE class for the change to take effect. For example:
SETROPTS RACLIST(SMESSAGE) REFRESH
______________________________________________________________________
4.
Optionally, if you have implemented security labels, you can enable security label checking for messages by issuing the following command. You do not need to define any resources in the DIRAUTH class to implement security label checking.
SETROPTS CLASSACT(DIRAUTH)
Chapter 7. Protecting General Resources
287
General resources
______________________________________________________________________
where acb-name is the ACBNAME value on the APPL statement that applies to this ACB. (An ACB name is also called an LU name or a VTAM application name.) If the ACBNAME is not specified on the APPL statement, use the name of the APPL definition statement (the ACBNAME default value). For details about ACBNAME, see z/OS Communications Server: SNA Resource Definition Reference. 3. Give users and groups the appropriate access authority:
PERMIT acb-name CLASS(VTAMAPPL) ID(userid or group) ACCESS(access-authority)
where access-authority is one of the following: NONE READ UPDATE CONTROL ALTER Prevents users from opening the ACB Allows users to open the ACB Is the same as READ Is the same as READ
Allows READ access, and also allows users to change the profile (if it is a discrete profile). 4. When you are ready to start using the protection defined in the profiles, activate both the VTAMAPPL class and SETROPTS RACLIST processing for the class. You can do these two actions in one command:
SETROPTS CLASSACT(VTAMAPPL) RACLIST(VTAMAPPL)
Note: Any time you make a change to a VTAMAPPL profile, you must also refresh SETROPTS RACLIST processing for the VTAMAPPL class for the change to take effect.
288
General resources
v Data page labeling is in effect for the user data pages. This means that the PSF identification label associated with the security label of the user data is printed on all pages of printed output. By granting READ access to the PSF.DPAGELBL resource in the PSFMPL class, you can selectively allow users to stop the printing of PSF identification labels in printed output. v On certain printers, end user data can be printed only in a system-defined user printable area. This function allows the PSF identification label to print end use data outside the system-defined user printable area. Note: PSF print labeling support depends on the type of printer being used. For specific information on PSF printers and information on using RACF to provide security for PSF, see PSF for z/OS: Security Guide.
Note: No profiles are needed in the DIRAUTH class. 2. A user with the AUDITOR attribute requests that auditing be done each time a user receives data:
SETROPTS LOGOPTIONS(ALWAYS(DIRAUTH))
289
General resources
where: netid Is a network name consisting of 18 characters. The first character must be alphabetic.
luname Is an LU name consisting of 18 characters. v If APPC network-qualified names support is not enabled, the format for the resource name is:
luname
where: luname Is an LU name consisting of 18 characters. The first character must be alphabetic.
Failure to specify the correct LU name format could result in a security exposure. For more detailed information, see z/OS MVS Planning: APPC/MVS Management.
You can protect a transaction program by specifying a UACC of NONE. You can then create an access list that contains only those users who need access. The following example shows how you can define a transaction program profile named FINANC1.SMITH.ACCTPAYABLETP and give it a UACC of NONE:
RDEFINE APPCTP FINANC1.SMITH.ACCTPAYABLETP UACC(NONE)
After you protect the transaction program with a UACC of NONE, you can use the PERMIT command to define entries in the transaction program profile's access list. The following example shows how to use the PERMIT command to create entries in the access list of transaction program profile FINANC1.SMITH.ACCTPAYABLETP for users USERA and USERB, giving them each an access authority of READ:
290
General resources
PERMIT FINANC1.SMITH.ACCTPAYABLETP CLASS(APPCTP) ID(USERA USERB) ACCESS(READ)
The following example illustrates how you can use the RDEFINE command to define a CPI-C side information profile named TOOLS1.SYS1.SDLU1234 and specify a UACC of READ, which allows all users to read CPI-C side information.
RDEFINE APPCSI TOOLS1.SYS1.SDLU1234 UACC(READ)
You can protect CPI-C side information by specifying a UACC of NONE. You can then create an access list containing only users who need access. The following example shows how you can define a CPI-C side information profile named TOOLS1.SYS1.SDLU1234 and give it a UACC of NONE:
RDEFINE APPCSI TOOLS1.SYS1.SDLU1234 UACC(NONE)
After you protect CPI-C side information with a UACC of NONE, you can use the PERMIT command to define entries in the CPI-C side information profile's access list. The following example shows how to use the PERMIT command to create entries in the access list of CPI-C side information profile TOOLS1.SYS1.SDLU1234 for users USERA and USERB, giving them each an access authority of READ:
PERMIT TOOLS1.SYS1.SDLU1234 CLASS(APPCSI) ID(USERA USERB) ACCESS(READ)
LU Security Capabilities
You can specify the conversation security you want to receive in the APPCLU profile that covers a session.
Origin LU Authorization
You can use the APPL general resource class to protect conversations between partner LUs. This support provides the ability to grant or deny access on the basis of the identity of both the user and the LU from which the user's request originated. An example of how a security administrator would define origin LU authorization is as follows:
RDEFINE APPL local-luname UACC(NONE)
This command creates a RACF profile for the given LU. The specified UACC in this case would allow no user access to the LU named by local-luname without explicitly granted higher access authority. Next, the security administrator could grant conditional access to a specific RACF-defined user or group whose request originates at a given partner LU with the following:
PERMIT local-luname CLASS(APPL) ID(userid) ACCESS(READ) ... WHEN(APPCPORT(partner-luname))
Note: There are two possible formats for the resource name in the APPCPORT class. See Partner LU as Port of Entry (POE) on page 290 for additional information.
Chapter 7. Protecting General Resources
291
General resources
In this example, you could specify ID(*) to make LU local-luname accessible to anyone who is valid on the local system and whose request originates from LU partner-luname. Also, this example presupposes that the relevant classes have already been explicitly activated. Using the WHEN() option puts an entry on the conditional access list of the RACF profile for local-luname, allowing userid READ access to this LU. This allows userid to use the local LUs services, but only when partner-luname is the port of entry from which the request originated.
292
General resources
This control is implemented by activating, RACLISTing, and defining appropriate resources in one or more RACF classes that support ICSF. For a brief description of the RACF classes that support ICSF, see Supplied resource classes for z/OS systems on page 715. Profiles in RACF classes that support ICSF can contain an ICSF segment to provide enhanced export control of ICSF symmetric and asymmetric keys. For information about using the ICSF segment and using RACF classes to control ICSF keys and services, see z/OS Cryptographic Services ICSF Administrator's Guide.
Each RACF user ID can map to both a Lotus short name and an NDS user name, but no user ID can map to more than one Lotus short name or more than one NDS user name. In addition, each Lotus short name can map to only one user ID. Similarly, each NDS user name can map to only one user ID. The application user identities that you specify in the identity segments of the user profiles must match the user identities defined by the administrators of each application. For example, the SNAME that you define for a RACF user ID must be
Chapter 7. Protecting General Resources
293
General resources
the same short name that is defined for that user by the administrator of the Lotus Notes for z/OS application. For special considerations when selecting application user identities, see Considerations for Application User Names on page 297.
ADDUSER command processing creates a new user profile named CHEN, adds an NDS segment to the user profile, and sets the UNAME field of the segment to ChenMeiLing.
ALTUSER command processing adds an LNOTES segment to the USER profile CHEN and sets the SNAME field of the segment to ChenMeiLing.
System Considerations
If your installation shares the RACF database with systems running releases prior to OS/390 Version 2 Release 10, your RACF support of Lotus Notes for z/OS and Novell Directory Services for OS/390 (NDS) is implemented using mapping profiles in the NOTELINK and NDSLINK classes. See Mapping Profiles in the NOTELINK and NDSLINK Classes on page 295. If your installation shares the RACF database with only systems running z/OS, or OS/390 Version 2 Release 10 or above, you might or might not be using mapping profiles in the NOTELINK and NDSLINK class. You should see your system programmer to find out if your installation has been converted for stage 3 of application identity mapping. Stage 3 of application identity mapping uses an alias index that is automatically maintained by RACF to map application user identities, such as Lotus short names and NDS user names, without using mapping profiles in the NOTELINK and NDSLINK classes. Once at stage 3, you can deactivate the NOTELINK and NDSLINK classes. See z/OS Security Server RACF System Programmer's Guide for information about running the IRRIRA00 conversion utility to convert to stage 3 of application identity mapping. If your installation is new to RACF and you are not running any releases prior to OS/390 Version 2 Release 10, your system will automatically use application identity mapping at the stage 3 level without running the IRRIRA00 conversion utility, and there will be no mapping profiles in the NOTELINK or NDSLINK classes.
294
General resources
2. A mapping profile named ChenMeiLing is added in the NOTELINK class, with user ID CHEN in the APPLDATA field, as a result of executing the following command.
ALTUSER CHEN LNOTES(SNAME(ChenMeiLing))
3. The mapping profile named ChenMeiLing is deleted from the NDSLINK class as a result of executing the following command.
ALTUSER CHEN NONDS
When ALTUSER command processing removes application identity segments from user profiles, it deletes the corresponding mapping profiles in the appropriate general resource class. Using the DELUSER command to delete a user profile that contains application identity segments will also delete the corresponding mapping profiles.
Important If your installation uses mapping profiles, do not execute the DELUSER command for a user profile that contains identity segments from RACF systems that do not support identity mapping profiles. These systems do not automatically manage mapping profiles. You will inadvertently leave residual mapping profiles in a general resource class when the user profile is deleted. See information about recovery procedures in z/OS Security Server RACF System Programmer's Guide.
295
General resources
In general, you should not administer mapping profiles using the RDEFINE, RALTER, RDELETE or RLIST commands. For information on correcting mapping profiles that are inadvertently deleted or damaged, see z/OS Security Server RACF System Programmer's Guide.
If the application server executes as a batch job, the RACF user ID that is added is the user ID associated with the batch job. If the server executes as a started procedure, you must assign a RACF user ID using one of the following methods: v Add the procedure name as an entry in the STARTED class. (This is the preferred method.) v Add the procedure name in the RACF started procedure table (ICHRIN03), unless this table has already been modified by your installation to contain a generic entry. In addition, you should assign the PROTECTED attribute to the user IDs that you associate with application servers. For more information, see Assigning RACF User IDs to Started Procedures on page 154.
296
General resources
The following example protects the IRR.RUSERMAP resource in the FACILITY class with UACC(NONE) and authorizes the group of application servers called MAPGRP to use identity mapping.
RDEFINE FACILITY IRR.RUSERMAP UACC(NONE) PERMIT IRR.RUSERMAP CLASS(FACILITY) ID(MAPGRP) ACCESS(READ)
If your installation maintains FACILITY class profiles in storage through SETROPTS RACLIST processing, you must issue the following command to refresh the FACILITY class after you define or alter any profiles protecting the IRR.RUSERMAP resource.
SETROPTS RACLIST(FACILITY) REFRESH
297
General resources
Table 24. KEYSMSTR class profiles Profile DCE.PASSWORD.KEY Purpose Contains the key used to encrypt DCE user passwords or Distributed File Service (DFS) Server Message Block (SMB) user passwords that are stored in the DCE segment of a user profile. Contains the key used to encrypt LDAP BIND passwords in the PROXY segments of USER or FACILITY class profiles for use by the z/OS LDAP server when acting as a proxy for a requester.
LDAP.BINDPW.KEY
Rules: 1. Each profile must be defined using a discrete profile named exactly as shown. 2. You must define an encryption key in the LDAP.BINDPW.KEY profile before you can store an LDAP BIND password in the PROXY segment of either of the following profile types: a. User profiles, by using the PROXY BINDPW operands of the ADDUSER or ALTUSER commands b. Resource profiles, by using the PROXY BINDPW operands of the RDEFINE or RALTER commands Similarly, you must define an encryption key in the DCE.PASSWORD.KEY profile before users can store DCE or DFS SMB user passwords in the RACF database, or before the DCE single signon feature can be used.
1.
Choose a type of key encryption. Base your choice of encryption type on whether your system has cryptographic software, such as ICSF, installed.
Then use... Key encryption (KEYENCRYPTED operand) Notes Cryptographic software must be active on the system when you define the KEYSMSTR profile.
______________________________________________________________________
2.
Create a profile in the KEYSMSTR class to define and store your encryption key, using your choice of encryption type as the operand of the SSIGNON segment. Example:
REDEFINE KEYSMSTR LDAP.BINDPW.KEY SSIGNON(KEYENCRYPTED(0023428875DECFAC))
In this example, LDAP BIND passwords will be encrypted using the key stored in the LDAP.BINDPW.KEY profile in the KEYSMSTR class. The value of the key is 0023428875DECFAC. Guideline: For security reasons, choose a key that is known only to you, the security administrator. ______________________________________________________________________
298
General resources
3.
Display the profile you created using the RLIST command to verify that the key is protected.
RLIST KEYSMSTR LDAP.BINDPW.KEY
Result: The value of your key should not be displayed, but the information shown indicates whether the key value is masked or encrypted. Example:
CLASS ----KEYSMSTR NAME ---LDAP.BINDPW.KEY
______________________________________________________________________
4.
Rule: You must activate the KEYSMSTR class before RACF will use the keys stored in the KEYSMSTR profiles. ______________________________________________________________________ When you are done, the key that you stored in the SIGNON segment of the KEYSMSTR profile will be used to encrypt and decrypt LDAP passwords.
299
General resources
The following examples are commands that define a resource as a delegated resource:
RDEFINE CSFSERV CSFENC APPLDATA(RACF-DELEGATED) RALTER CSFSERV CSFENC APPLDATA(RACF-DELEGATED) RALTER CSFSERV CSFENC APPLDATA(THIS RESOURCE IS A RACF-DELEGATED RESOURCE)
1.
Mark the resource as delegated by defining APPLDATA using any one of the following command examples. v RALTER CSFSERV CSFENC APPLDATA(RACF-DELEGATED) v If APPLDATA is already defined for this profile (this is unlikely), then enter the existing application data along with the delegated string. For example:
RALTER CSFSERV CSFENC APPLDATA(existing-text RACF-DELEGATED)
v To define all profiles within a given class as delegated, use the SEARCH command. For example:
SEARCH CLASS(CSFSERV) CLIST(RALTER CSFSERV APPLDATA(RACF-DELEGATED)) EX EXEC.RACF.CLIST
Restriction: Only users with the system-SPECIAL attribute are authorized to mark a resource as delegated when SETROPTS SECLABELCONTROL is in effect and the resource has an assigned security label.
2. 3. 4.
Optionally, if you previously authorized end users to access the delegated resource, remove their access authorities. For example:
PERMIT CSFSENC CLASS(CSFSERV) ID(FTPUGRP) ACCESS(NONE)
300
This topic describes how to administer class names for general resources in the RACF class descriptor table (CDT).
301
Dynamic CDT
of the profiles you define in the CDT class become new classes in the dynamic CDT.) RACF authorization checking processes the dynamic CDT as a logical extension of the static CDT. This topic describes how to administer dynamic CDT entries using general resource profiles in the CDT class.
For information about... Syntax of RACF commands to administer profiles in the CDT class Supplied CDT entries in ICHRRCDX Adding and changing CDT entries in ICHRRCDE See... z/OS Security Server RACF Command Language Reference Appendix A, Supplied RACF resource classes, on page 715 z/OS Security Server RACF System Programmer's Guide and your system programmer
Your installation should not change or delete entries in ICHRRCDX. You can update ICHRRCDE but use of this module is not the preferred method for adding installation-defined resources classes. If your installation has already installed and updated ICHRRCDE, you are not required to remove or update this module. However, consider migrating your static CDT entries from ICHRRCDE to the dynamic CDT. See Migrating to the dynamic CDT on page 316.
302
Dynamic CDT
Restriction: The number of classes you can define in the dynamic CDT is limited by the total number of entries in the class descriptor table. The maximum total number of entries is 1024 and includes entries for the following classes: v Classes supplied by IBM in ICHRRCDX v Classes your installation defines in ICHRRCDE v Classes you define in the dynamic CDT. To list all RACF classes defined on your system, including dynamic classes, you can use the Data Security Monitor (DSMON) to produce the Class Descriptor Table Report. See z/OS Security Server RACF Auditor's Guide for more information about DSMON. To list all CDT class profiles on your system, execute the SEARCH CLASS(CDT) command. This list of profiles might differ from the list of dynamic classes generated by the DSMON Class Descriptor Table Report for one of the following reasons: 1. Some profiles in the CDT class might have been added after the most recent SETROPTS RACLIST(CDT) REFRESH command was issued. Profiles added in this way are defined on your system but are not active classes. 2. Profiles in the CDT class might have been defined with errors that prevented the classes from being added to the dynamic CDT.
See Field-level access checking on page 225 for the steps to enable field authority. When you define class name entries in the dynamic CDT, you create profiles in the CDT class. These profiles define the dynamic CDT entries themselves, rather than protect resources in the classes they define. In other words, granting READ access to the profiles in the CDT class allows the user, for example, a system programmer, to view the dynamic CDT class entries. Granting ALTER access to these profiles allows the user to change the access list or delete class name entries. Therefore, you should control ALTER access carefully. In addition, having access to a CDT profile does not grant access to profiles in the resource class defined by that CDT entry. The name of the profile you create in the CDT class is the name of your new class in the dynamic CDT. The syntax rules for the CDT profile name are as follows: Rules: 1. The profile name must be 18 characters, consisting of the following: AZ 09
Chapter 8. Administering the Dynamic Class Descriptor Table (CDT)
303
Dynamic CDT
# @ $ (X'7B') (X'7C') (X'5B')
2. You must include at least one character from the following: 09 # (X'7B') @ (X'7C') $ (X'5B') Rule 2 ensures that class names you define in the dynamic CDT do not conflict with class names supplied by IBM in ICHRRCDX. If you do not follow this rule, a warning message is issued for the RDEFINE or RALTER command when you define or update a profile in the CDT class; however, the profile is still defined or updated. You can use the RDELETE command to delete the profile before you issue the SETROPTS RACLIST(CDT) command to build or refresh the dynamic CDT. If you do not delete the profile and subsequently issue the SETROPTS RACLIST(CDT) command, another warning message is issued but the class can be defined and activated if there are no other errors. Restriction: If you do not follow Rule 2 and if, in the future, IBM supplies a class using the same name you defined, the IBM class will be used instead of your class, and the results will be unpredictable.
1.
Determine a unique POSIT value for the new profile. Evaluate the class entries in the dynamic CDT. Consult your system programmer to evaluate the class entries in the static CDT (modules ICHRRCDE and ICHRRCDX). ______________________________________________________________________ Define the new class.
2.
304
Dynamic CDT
Example:
RDEFINE CDT PIX2004 UACC(NONE) CDTINFO(DEFAULTUACC(NONE) FIRST(ALPHA) MAXLENGTH(42) OTHER(ALPHA,SPECIAL) POSIT(303) RACLIST(REQUIRED))
Investigate any error messages issued by the RDEFINE command; some errors can prevent the class from being added to the dynamic CDT. Use the RALTER command to correct any errors in the profile. Tip: If you miss the error messages from the RDEFINE command, you can use the CDTINFO keyword, with no suboperands, on the RALTER command to initiate validation checking of the fields again. For example, to initiate validation for the command in this step, you can execute the following command.
RALTER CDT PIX2004 CDTINFO
Validation checking will be performed again, and any error messages will be issued again. ______________________________________________________________________
3.
Or, if the dynamic CDT was already active, refresh the dynamic CDT.
SETROPTS RACLIST(CDT) REFRESH
Again, investigate any error messages issued by the SETROPTS command because some errors can prevent the class from being added to the dynamic CDT. If you do not complete this step before proceeding, you will receive the following message when you execute the RDEFINE commands in Step 4.
IKJ56702I INVALID CLASS, PIX2004
______________________________________________________________________
4.
______________________________________________________________________
5.
______________________________________________________________________
305
Dynamic CDT
Assume that you have already activated the following SETROPTS options for the existing PONIES8 class: CLASSACT RACLIST AUDIT When you execute the RDEFINE CDT command to add the new HORSES8 class to the CDT, specify the POSIT number as 301 (the same as for PONIES8). When you refresh the dynamic CDT, all of the same RACF processing options that are in effect for class PONIES8 will automatically be in effect for the new class HORSES8, except SETROPTS RACLIST. The SETROPTS RACLIST(HORSES8) command must be issued separately for the HORSES8 class because a new dataspace must be built. Rules: 1. If you want SETROPTS RACLIST active for a new class, you must execute the SETROPTS RACLIST command after you define the new class to build its new associated dataspace. 2. If SETROPTS GENLIST is active for a new class, you must execute the SETROPTS GENLIST command after you define the new class to build its associated in-storage profiles. After the dataspace has been built initially, you can issue either one of the following commands to refresh RACLISTed profiles in both the HORSES8 and PONIES8 classes. SETROPTS RACLIST(HORSES8) REFRESH or SETROPTS RACLIST(PONIES8) REFRESH Further, by issuing either one of the following commands, you activate global access checking for both the PONIES8 and the HORSES8 classes. SETROPTS GLOBAL(HORSES8) or SETROPTS GLOBAL(PONIES8) Similarly, by issuing either one of the following commands, you activate STATISTICS for both the PONIES8 and the HORSES8 classes. SETROPTS STATISTICS(PONIES8) or SETROPTS STATISTICS(HORSES8) Any number of classes can share the same POSIT number. For example, a third class called MARES8 could be added and could also share POSIT number 301 with PONIES8 and HORSES8.
306
Dynamic CDT
Table 25. Processing options controlled simultaneously for classes sharing a POSIT value (continued) Type of processing Generic command processing Global access checking Special resource access auditing Authorization checking in a dataspace Class authority (whether a user has CLAUTH) Corresponding option SETROPTS GENCMD SETROPTS GLOBAL SETROPTS LOGOPTIONS SETROPTS RACLIST ALTUSER userid CLAUTH
1.
______________________________________________________________________
2.
Result: The same SETROPTS options that were previously active for the PONIES8 class are now active for the HORSES8 class because the classes share a POSIT value. The exception is SETROPTS RACLIST. ______________________________________________________________________
3.
307
Dynamic CDT
RDEFINE HORSES8 PALOMINO.FRANKE UACC(NONE) RDEFINE HORSES8 APPALOOSA.ANDRE UACC(NONE)
______________________________________________________________________
4.
______________________________________________________________________
1.
Execute the following command to list the SETROPTS options for all classes.
SETROPTS LIST
Record all active system options for the class that you want to change. ______________________________________________________________________
2.
Examine all dynamic and static CDT entries to see if any other existing class shares the current POSIT value or the new POSIT value. v If no other existing class shares the current POSIT value, use the SETROPTS command to deactivate all options associated with the class you want to change to ensure that any new class will not have unexpected options if you add a new class using that POSIT value in the future. For example, if the SETROPTS options CLASSACT, STATISTICS, GENERIC and GENCMD are active for the class, you would issue the following command to deactivate those options.
SETROPTS NOCLASSACT(classname) NOSTATISTICS(classname) NOGENERIC(classname) NOGENCMD(classname)
v If another existing class shares the current POSIT value, do not use the SETROPTS command to deactivate any SETROPTS option associated with the class you want to change because this would turn off the SETROPTS option for all classes sharing the POSIT value. In this case, proceed to Step 3 without making any changes. ______________________________________________________________________
3.
______________________________________________________________________
4.
Refresh the CDT class on all systems that will use the changed class.
SETROPTS RACLIST(CDT) REFRESH
______________________________________________________________________
308
Dynamic CDT
5.
Activate the desired SETROPTS options, using the SETROPTS LIST output from Step 1 on page 308 as reference, assuming for this example that SETROPTS options CLASSACT, STATISTICS, GENERIC, and GENCMD were previously active for the class you changed. v If an existing class does not share the new POSIT value, issue the following command to reactivate those options.
SETROPTS CLASSACT(classname) STATISTICS(classname) GENERIC(classname) GENCMD(classname)
v If an existing class shares the new POSIT value, all of the same RACF processing options that were in effect for the shared class are automatically in effect for the class you changed, with the exception of the SETROPTS RACLIST option. Rules: a. If you want SETROPTS RACLIST active for a changed class, you must execute the SETROPTS RACLIST command after you change the class to build its new associated dataspace. If the class was RACLISTed before the POSIT change, add the REFRESH option to rebuild the dataspace.
SETROPTS RACLIST(classname) REFRESH
b. If SETROPTS GENLIST is active for the changed class, you must execute the SETROPTS GENERIC REFRESH command after you change the class to refresh its associated in-storage profiles.
SETROPTS GENERIC(classname) REFRESH
______________________________________________________________________
Guidelines for changing particular class attributes: 1. CASE: Before you change CASE(ASIS) to CASE(UPPER), review all profiles in the class and delete any profiles that contain lowercase letters in the profile name. 2. FIRST or OTHER: Before you change the FIRST and OTHER values to make them more restrictive, review all profiles in the class and delete those that contain the less restrictive characters. Example: Before you change FIRST(ALPHA,NUMERIC) to FIRST(ALPHA), delete any profiles that contain a number in the first character of the profile name. 3. GENERIC: Before you change GENERIC(ALLOWED) to GENERIC(DISALLOWED), review Rules about disallowing generics when sharing a POSIT value on page 307 and follow Steps for changing a dynamic class to disallow generic profiles on page 311. 4. GENLIST: Before you change GENLIST(ALLOWED) to GENLIST(DISALLOWED), remove any in-storage generic profiles in the class by issuing the following command.
SETROPTS NOGENLIST(classname)
309
Dynamic CDT
Do not issue SETROPTS NOGENLIST for an existing class when it shares a POSIT value with other classes that are active. This action might impact authorization processing for the other classes. 5. GROUP and MEMBER: Before you change the GROUP or MEMBER attributes for a class, delete any member classes by issuing the following command.
RALTER grouping-classname profile-name DELMEM(member-list)
Then, be sure to update both the grouping class definition and the member class definition in compatible ways. For example, if you change a member class to a non-member class by changing GROUP(grouping-classname) to NOGROUP, then you must change the corresponding grouping class to a non-grouping class by changing MEMBER(member-classname) to NOMEMBER. After you change the GROUP or MEMBER attribute for your class and refresh the CDT class, refresh the in-storage profiles for your class. If you do not refresh the in-storage profiles, RACF authorization checking for resources in your class might return unpredictable results. v If your class is RACLISTed, refresh using the SETROPTS RACLIST command.
SETROPTS RACLIST(classname) REFRESH
6. MAXLENGTH and MAXLENX: Before you change the length of profile names, review the following guidelines. v Before you increase the length of profile names in a class, examine existing applications to see if modifications are necessary. When you increase the length attribute in a class, update only the MAXLENX operand to specify the new length, leaving the existing MAXLENGTH value. This might allow some applications using the RACROUTE macro with the ENTITY operand to work properly with the previous maximum length. These applications include those that use RACROUTE REQUEST=AUTH, REQUEST=FASTAUTH, and REQUEST=EXTRACT with TYPE (other than EXTRACTN). However, applications that use other RACF macros, such as ICHEINTY and RACROUTE REQUEST=EXTRACT,TYPE=EXTRACTN, might likely need modifications to process the new profile name length correctly. Modify applications that use the RACROUTE macro to include the ENTITYX operand to support the new maximum length. v Before you decrease the length of profile names in a class, examine existing applications that use the RACROUTE macro with ENTITY or ENTITYX option, or the ICHEINTY macro with the ENTRY or ENTRYX option, to see if modifications are necessary. Then, be sure to delete any profiles in that class that have names longer than the new MAXLENGTH or MAXLENX limits. If you do not delete the profiles with the longer names before you decrease the MAXLENGTH or MAXLENX values for the class, authorization checking for resources in the class might give unpredictable results. After you change the MAXLENGTH or MAXLENX attribute for your class and refresh the CDT class, refresh the in-storage profiles for your class. If you do not refresh the in-storage profiles, RACF authorization checking for resources in your class might return unpredictable results. v If your class is RACLISTed, refresh using the SETROPTS RACLIST command.
SETROPTS RACLIST(classname) REFRESH
310
Dynamic CDT
v If your class is GENLISTed, refresh using the SETROPTS GENERIC command.
SETROPTS GENERIC(classname) REFRESH
7. PROFILESALLOWED: Before you change PROFILESALLOWED(YES) to PROFILESALLOWED(NO), delete all profiles from the class using the RDELETE command. 8. RACLIST: Before you change RACLIST(REQUIRED) or RACLIST(ALLOWED) to RACLIST(DISALLOWED), do both of the following. a. Remove any RACLISTed profiles in the class by issuing the following command.
SETROPTS NORACLIST(classname)
Do not issue SETROPTS NORACLIST for an existing class when it shares a POSIT value with other classes that are active. This action might impact authorization processing for the other classes. b. Modify any applications that process RACLISTed profiles in that class. Testing consideration: Consider how you can test your changes. If you have a test system that does not share a RACF database with your production system, you might be able to test the change with existing applications and RACF commands on your test system before activating the change on a production system. If your test system does share a RACF database with your production system, you might need to create a class in the dynamic CDT specifically for testing, and modify your applications to use the test class. RRSF consideration: If you are using RACF remote sharing facility (RRSF) and change a dynamic CDT entry, consider updating the dynamic CDT entry on all systems that use the dynamic class. Also, see RRSF considerations for the dynamic CDT on page 319.
When you share the RACF data base, see Shared system rules for disallowing generics with dynamic classes on page 319. For similar information related to static classes, see Disallowing Generic Profile Names for General Resources on page 210. Before you add a dynamic class with GENERIC(DISALLOWED), determine if the new class shares a POSIT value with other classes. If so, ensure that all other classes sharing the POSIT value also have GENERIC(DISALLOWED). See Rules about disallowing generics when sharing a POSIT value on page 307.
311
Dynamic CDT
determine if the other classes sharing the POSIT value also have GENERIC(DISALLOWED). (See Rules about disallowing generics when sharing a POSIT value on page 307.) v Do not perform these steps if other classes sharing the POSIT value have GENERIC(ALLOWED) and you do not want to change those classes. Instead, first change this class to a unique POSIT value or to a POSIT value shared with classes that have GENERIC(DISALLOWED). Perform the following steps to change an existing dynamic class called HORSES8 from GENERIC(ALLOWED) to GENERIC(DISALLOWED).
1.
Delete all generic profiles in the HORSES8 class. To do this: a. Execute the SEARCH command to create a CLIST containing a command to delete each generic profile in the class.
SEARCH CLASS(HORSES8) GENERIC CLIST(RDELETE HORSES8 )
______________________________________________________________________
2. 3.
If the class shares a POSIT value, repeat Step 1 for each class sharing the POSIT value. ______________________________________________________________________ Deactivate generic processing for the HORSES8 class.
SETROPTS NOGENERIC(HORSES8) NOGENCMD(HORSES8)
If your class shares a POSIT value with other active classes, this command deactivates generic processing for those classes as well. ______________________________________________________________________
4.
______________________________________________________________________
5. 6.
If the class shares a POSIT value, repeat Step 4 for each class sharing the POSIT value. ______________________________________________________________________ Refresh the in-storage profiles for the CDT class.
SETROPTS RACLIST(CDT) REFRESH
______________________________________________________________________ When you finish, you have changed an existing dynamic class, and all classes sharing its POSIT value, from GENERIC(ALLOWED) to GENERIC(DISALLOWED). You have also deleted all generic profiles from all classes sharing the POSIT value.
312
Dynamic CDT
active. The same consideration applies to each SETROPTS option controlled by a shared POSIT value. (See the table in Processing options that are controlled by a shared POSIT value on page 306.
1.
Delete all profiles in the class to be deleted. a. Execute a SEARCH command to create a CLIST with a command to delete each profile in the class. Example:
SEARCH CLASS(HORSES8) CLIST(RDELETE HORSES8 )
_________________________________________________________________
2.
Issue the following command and note every occurrence of the class you want to delete.
SETROPTS LIST
_________________________________________________________________
3.
If the class to be deleted does not share a POSIT value with other existing classes, deactivate the class. Example:
SETROPTS NOCLASSACT(HORSES8)
Do not deactivate this class when it shares a POSIT value with other classes that are active. (See the "Before you begin" topic of this procedure.)
Chapter 8. Administering the Dynamic Class Descriptor Table (CDT)
313
Dynamic CDT
_________________________________________________________________
4.
If you are using global access checking for the class and the class to be deleted does not share a POSIT value with other existing classes, deactivate the GLOBAL option for the class. Example:
SETROPTS NOGLOBAL(HORSES8)
Do not deactivate the GLOBAL option for this class when it shares a POSIT value with other classes that are active. (See the "Before you begin" topic of this procedure.) _________________________________________________________________
5.
If you have a GLOBAL profile for the class, delete it. Example:
RDELETE GLOBAL HORSES8
_________________________________________________________________
6.
If you have a RACGLIST profile for the class, delete it. Example:
RDELETE RACGLIST HORSES8
_________________________________________________________________
7.
If the class to be deleted does not share a POSIT value with other existing classes, deactivate the other active system options for your class, using the SETROPTS LIST command output from Step 2. Example:
SETROPTS NOAUDIT(HORSES8) LOGOPTIONS(DEFAULT(HORSES8)) NORACLIST(HORSES8) NOGENERIC(HORSES8) NOGENCMD(HORSES8) NOSTATISTICS(HORSES8)
Do not deactivate the active system options for this class when it shares a POSIT value with other classes that are active. (See the "Before you begin" topic of this procedure.) _________________________________________________________________
8.
If you are using GENLIST processing for the class to be deleted and the class does not share a POSIT value with other existing classes, deactivate GENLIST processing. Example:
SETROPTS NOGENLIST(HORSES8)
Do not deactivate GENLIST processing for this class when it shares a POSIT value with other classes that are active. (See the "Before you begin" topic of this procedure.) _________________________________________________________________
9.
If you receive message ICH12304I indicating that the class cannot be deleted because there are profiles in the class, your RACF database might contain generic profiles in this class that are hidden from the SEARCH and RLIST commands. This can happen when a generic profile is defined in a class that is subsequently disabled for generics with the SETROPTS NOGENCMD or NOGENERIC command. To resolve this, schedule an appropriate time to
314
Dynamic CDT
issue the SETROPTS GENCMD command and then repeat Step 1 on page 313 to find and delete such profiles. After you successfully delete the profiles, issue the SETROPTS NOGENCMD command. Be sure to carefully plan when to enable the GENCMD option because it will affect other classes that share the same POSIT value. _________________________________________________________________
10.
_________________________________________________________________
11.
If you have users with class authority (CLAUTH) for the deleted class, remove their authorities. Example:
ALTUSER userid NOCLAUTH(HORSES8)
_________________________________________________________________
Restriction: If you do not delete a dynamic class before you issue the SETROPTS NORACLIST(CDT) command, RACF no longer recognizes that dynamic class. If you subsequently enable the dynamic CDT using the SETROPTS RACLIST(CDT) command, use of the previously defined dynamic class might cause unpredictable results. Any profiles in the previously defined dynamic class will remain and some SETROPTS options might still remain active, but RACLIST options might no longer be active. To re-enable a previously defined dynamic class, see Re-enabling a previously defined dynamic class.
Steps to re-enable a previously defined dynamic class 1. If SETROPTS RACLIST was active for the dynamic class (before you issued the
SETROPTS NORACLIST(CDT) command), rebuild the profiles in storage for the class. Example: SETROPTS RACLIST(HORSES8) ______________________________________________________________________
2.
If GLOBAL=YES RACLIST ONLY was active for the dynamic class (before you issued the SETROPTS NORACLIST(CDT) command), the application that issued the RACROUTE REQUEST=LIST,GLOBAL=YES macro must reissue the macro to rebuild the profiles in storage for the class. ______________________________________________________________________
315
Dynamic CDT
3.
Issue the SETROPTS LIST command and carefully review the output, noting whether the dynamic class you want to restore appears in any of the following lists. GLOBAL CHECKING CLASSES GENERIC PROFILE CLASSES GENLIST CLASSES
a.
If SETROPTS GLOBAL is active for your class, refresh the global access checking table for the class. Example: SETROPTS GLOBAL(HORSES8) REFRESH _________________________________________________________________
If SETROPTS GENERIC or SETROPTS GENLIST is active for your class, refresh the generic profiles in storage for the class. Example: SETROPTS GENERIC(HORSES8) REFRESH ______________________________________________________________________ You have now re-enabled the use of a previously defined dynamic class that inadvertently remained when the dynamic CDT was disabled. The options that were previously active for the class should again be active.
b.
316
Dynamic CDT
MEMBER operand on the definition of the dynamic class. If the grouping or member class definition does not match, an error message is issued. For example, if your installation-defined class HORSES8 is a grouping class that specifies the member class PONIES8 (MEMBER=PONIES8 is specified on the ICHERCDE macro), then your dynamic class definition for HORSES8 must include the CDTINFO(MEMBER(PONIES8)) operand. v When you move a grouping or member class from ICHRRCDE to the dynamic CDT, you must define both the grouping and member class to the CDT class before issuing SETROPTS RACLIST(CDT) to build or refresh the dynamic CDT. A grouping class in the dynamic CDT cannot reference a member class in the static CDT. Similarly, a member class in the dynamic CDT cannot reference a grouping class in the static CDT. See Table 26 for a comparison of the class attributes of the ICHERCDE macro and the corresponding class attributes to specify when you define dynamic class entries in the CDT class.
Table 26. ICHERCDE macro operands and the corresponding operands for the RDEFINE and RALTER commands
ICHERCDE macro operand CLASS= CASE=UPPER | ASIS DFTRETC=0 | 4 | 8 DFTUACC=ALTER | CONTROL | UPDATE | READ | NONE EQUALMAC=YES | NO FIRST=ALPHA FIRST=NUMERIC FIRST=ALPHANUM FIRST=ANY FIRST=NONATABC FIRST=NONATNUM GENERIC=ALLOWED | DISALLOWED GENLIST=ALLOWED | DISALLOWED GROUP=grouping-classname ID=number KEYQUAL=nnn MAXLENX=nnn MAXLNTH=nnn MEMBER=member-classname OPER=YES | NO OTHER=ALPHA OTHER=NUMERIC OTHER=ALPHANUM OTHER=ANY OTHER=NONATABC OTHER=NONATNUM POSIT=nnn PROFDEF=YES | NO RACLIST=ALLOWED | DISALLOWED RACLREQ=YES | NO Corresponding RDEFINE/RALTER operand profile-name CDTINFO(CASE(UPPER | ASIS)) CDTINFO(DEFAULTRC(0 | 4 | 8)) CDTINFO(DEFAULTUACC(ACEE | ALTER | CONTROL | UPDATE | READ | NONE)) 1 CDTINFO(MACPROCESSING(NORMAL | EQUAL)) CDTINFO(FIRST(ALPHA,NATIONAL)) CDTINFO(FIRST(NUMERIC)) CDTINFO(FIRST(ALPHA,NUMERIC,NATIONAL)) CDTINFO(FIRST(ALPHA,NUMERIC,NATIONAL,SPECIAL)) CDTINFO(FIRST(ALPHA)) CDTINFO(FIRST(ALPHA,NUMERIC)) CDTINFO(GENERIC(ALLOWED | DISALLOWED)) CDTINFO(GENLIST(ALLOWED | DISALLOWED)) CDTINFO(GROUP(grouping-classname)) None.
2
CDTINFO(OTHER(ALPHA,NATIONAL)) CDTINFO(OTHER(NUMERIC)) CDTINFO(OTHER(ALPHA,NUMERIC,NATIONAL)) CDTINFO(OTHER(ALPHA,NUMERIC,NATIONAL,SPECIAL)) CDTINFO(OTHER(ALPHA)) CDTINFO(OTHER(ALPHA,NUMERIC)) CDTINFO(POSIT(nnn)) CDTINFO(PROFILESALLOWED(YES | NO)) CDTINFO(RACLIST(ALLOWED | DISALLOWED)) CDTINFO(RACLIST(REQUIRED))
317
Dynamic CDT
Table 26. ICHERCDE macro operands and the corresponding operands for the RDEFINE and RALTER commands (continued)
ICHERCDE macro operand RVRSMAC=YES | NO SIGNAL=YES | NO SLBLREQ=YES | NO Corresponding RDEFINE/RALTER operand CDTINFO(MACPROCESSING(NORMAL | REVERSE)) CDTINFO(SIGNAL(YES | NO)) CDTINFO(SECLABELSREQUIRED(YES | NO))
Notes: 1. If you do not specify the DEFAULTUACC operand, the default is DEFAULTUACC(NONE) which is different from the ICHERCDE default of using the ACEE value. 2. The ID operand is not applicable for use with dynamic CDT. 3. If you do not specify the OPERATIONS operand, the default is OPERATIONS(NO) which is different from the ICHERCDE default of OPER=YES.
318
Dynamic CDT
These commands do not take effect on shared systems until you issue them on each of those systems, or until the systems are IPLed.
319
320
This topic provides in-depth information on controlling programs, program libraries, and program access to data. Related information: v For more information about using RACF to control access to program dumps, see Controlling Access to Program Dumps on page 263. v For information about enabling users to digitally sign program modules and enabling signature verification of program modules, see Chapter 10, Program signing and verification, on page 351.
321
Program control
or NONE access through the PROGRAM class, or (in some cases) EXECUTE to the DATASET profile that protects the library that contains the program. Programs controlled in this way are referred to as execute-controlled programs. v Improved resistance to attacks by malicious users or programs implementing malicious functions (such as Trojan horses) in a z/OS UNIX environment when you define the BPX.DAEMON profile in the FACILITY class and require that the program execution environments for UNIX daemons and servers remain clean. v Program access to data sets (PADS) to allow users to have more access to data sets than they would otherwise have while running specified programs that provide restricted access to the data. v Program access to SERVAUTH resources to allow access to IP addresses only when executing certain programs. By defining programs in the PROGRAM class you indicate that you place some amount of trust in their behavior. Although the level of trust can vary, these programs are trusted more than programs created by general users of the system. An environment in which someone has run a program not defined in the PROGRAM class is considered a dirty, unsafe, or uncontrolled environment. RACF requires a clean environment in functions 2 through 5 above because allowing use of those functions in an uncontrolled environment would make it relatively simple for malicious users with some specific knowledge to bypass the program-related security controls and gain inappropriate access to the data. Terms to know: 1. When used in this discussion, an environment is one of the following: v TSO session v TSO command invoked by TSOEXEC or the IKJEFTSR service v Job step in a batch job, started procedure, or started job v UNIX address space 2. A clean environment is one in which only programs defined in the PROGRAM class have run. 3. A program refers to a load module residing in a partitioned data set (PDS) or a program object residing in a program library (PDS/E). Restrictions: 1. Programs that reside in the UNIX file system are excluded from this discussion. Execution of programs in the UNIX file system is controlled using UNIX security controls (as opposed to RACF PROGRAM profiles), and programs resident in the UNIX file system cannot be used for PADS or program access to SERVAUTH resources. 2. RACF and z/OS cannot protect programs written in the TSO/E CLIST language, PERL, Java, or other interpreted languages. 3. RACF and z/OS can protect programs written in REXX only if they are compiled and link-edited as load modules or program objects. In making use of program control, you must decide: v Whether to operate in BASIC (default) or ENHANCED (more secure) program security mode. v Which programs to define in the PROGRAM class and how to define them (which to some extent depends on the program security mode chosen). v How to protect the libraries that contain the programs.
322
Program control
See the Migrating from BASIC to ENHANCED program security mode on page 330 for migration and other planning considerations.
323
Program control
run in that mode. Any that started before you switched, continue to run in BASIC program security mode until they finish. You can display the program security mode for the system at any time by issuing SETROPTS LIST. The first line of output indicates whether you have activated WHEN(PROGRAM) processing and displays the program security mode.
324
Program control
Delete the ABC* profile and define a set of new profiles named ABCx* profiles where x is the next character that matches your program names that begin with the characters ABC. For example, if you have programs named ABCJA, ABCJB, ABCLA, and ABCLB, define profiles named ABCJ* and ABCL* to protect them. v If you want to control the ABC program with a nonspecific profile, delete the profile named ABC* and define a profile named AB*. (Before doing this, examine all program names beginning with the characters AB to ensure that this new profile does not authorize unintended access to any additional programs.) When defining the PROGRAM profile, supply the ADDMEM operand in the following format:
ADDMEM(library_name/optional_volume_serial/optional_PADCHK_or_NOPADCHK)
For library_name, specify the data set name of the library that contains the program, such as SYS1.LINKLIB. You can optionally specify a volume serial, such as 123456, SYSRES, or VOLAAA. If you specify a volume serial in this format, the PROGRAM profile protects the program only when the specified library exists on that named volume. If you do not want to specify a specific volume serial, you have two choices: 1. Omit the volume serial completely. In this case, RACF ignores the volume serial when examining the PROGRAM profile, and considers it a match if the program resides in that library, regardless of the volume serial where the library resides. For this, you could specify:
ADDMEM SYS1.LINKLIB//
2. Specify a volume serial of ****** for a special case where the library exists on the IPL volume (not on an extension of the IPL volume, however). For this, you could specify:
ADDMEM SYS1.LINKLIB/******
Guideline: In general, specify NOPADCHK to simplify your other setup. Refer to Choosing between the PADCHK and NOPADCHK operands on page 337 for more information. For example, a complete ADDMEM specification for a PROGRAM profile might be:
ADDMEM(SYS1.LINKLIB//NOPADCHK)
You can specify a UACC and an access list for your PROGRAM profile, as you would for other profiles. For the purposes of this discussion, remember that you should be using access values of NONE or READ, rather than EXECUTE. See More complex controls: Using EXECUTE access for programs or libraries (BASIC mode) on page 329 for more information. Programs reside in program libraries that can be for public use (those in the system link list) or for limited private use (accessed through JOBLIB or STEPLIB, or through the TSO/E CALL command specifying the data set name). To restrict user's ability to run programs, you might need to protect the program library so
Chapter 9. Protecting Programs
325
Program control
the user cannot read from it. In some cases you do not need to provide special protection for the program library, other than ensuring that general users cannot update it. Guideline: Restrict UPDATE access to libraries containing controlled programs, just as you restrict UPDATE access to APF-authorized libraries. Protecting program libraries on page 332 discusses the ways to protect the two types of libraries since there might be cases where you need to do this. When defining your PROGRAM profiles, also consider the following guidelines: Guidelines: 1. If the program you are protecting runs APF-authorized or if you specify the program in the conditional access list to use PADS, you generally do not need to prevent the user from reading the library that contains the program. If the user has READ access to the library, he can copy the program to a different library. However, the copy will not execute successfully because it does not come from an APF library and, therefore, will not run with APF authority. Additionally, PADS control will not consider the copy a controlled program. 2. If the program you are protecting does not run APF-authorized and you do not intend to use it for PADS, you might want to prevent the user from copying it to another library and executing it from there. However, this is probably only important if the program itself contains sensitive data or algorithms. If a program does not contain sensitive data or algorithms, does not run APF-authorized, and is not used for PADS, do not control its use at all. Instead, consider controlling access to the data that the program uses. You also should consider the following rules when defining your PROGRAM profiles: Rules: 1. The profiles protect a program only if it resides in the library specified in the ADDMEM operand. 2. If you have multiple libraries that contain the program, and the libraries have different data set names, multiple ADDMEM operand specifications are necessary if you want to protect all copies of the program. 3. You cannot restrict access to programs that reside in the system link pack area (PLPA, MLPA, FLPA, dynamic LPA). 4. With a multiple-user address space (such as CICS Transaction Server), if one user loads a program then another user in the same address space can also execute the program while it remains resident. Restrictions: 1. Some system functions bypass normal MVS contents supervision processing. IMS has some functions that operate this way, for example. RACF program control does not work for programs accessed by such functions, because the system invokes the RACF program control functions only when processing a request to LINK, LOAD, XCTL, or ATTACH a program. RACF program control also will not work for programs loaded from z/OS UNIX file systems, but you can still control such programs using UNIX functions such as permission bits and access control lists (ACLs), that work with RACF. 2. All profiles in the PROGRAM class are discrete profiles. GENERICOWNER is not supported for the PROGRAM class. Even though profiles ending in an
326
Program control
asterisk (*) are allowed in this class, they are not generic profiles, but a special form of discrete profile. That's why we use the terms specific and nonspecific when discussing PROGRAM profiles, as we mentioned previously. 3. WARNING mode is not supported for PROGRAM profiles. 4. You can specify NOTIFY and auditing for profiles in the PROGRAM class, and for the PROGRAM class itself. However, RACF does not maintain access statistics for PROGRAM profiles.
This restricts the specified users or groups to executing the program only on a system that has a matching system identifier.
327
Program control
A clean or controlled environment indicates that the user has run only programs defined as controlled programs. You define programs through the PROGRAM class in RACF, as shown earlier. You can also define programs that reside in the UNIX file system as controlled programs, by using the UNIX extattr command with the +p option. Refer to z/OS UNIX System Services Planning for more information. Guidelines: 1. To simplify the work of keeping a user's environment clean, define certain libraries using the PROGRAM profile * or **, rather than trying to define each of the programs in the libraries individually. Also, use PROGRAM ** rather than PROGRAM *. Just as with generic profiles in other classes, using ** enables you to list just that profile when you want it with the RLIST command. If you define PROGRAM *, you will list all profiles in the PROGRAM class when you issue the RLIST command. This might provide several listings and make it more difficult for you to find the profiles you are most interested in. 2. As a starting point for defining a clean environment, examine your system link list and define PROGRAM ** entries for the IBM supplied libraries in the link list to ensure that RACF considers all the programs in those libraries controlled. You might also want to add other supplied libraries. Examples: (Note that the following data sets names are only examples and might be different in your installation.)
RDEFINE PROGRAM ** ADDMEM(SYS1.LINKLIB//NOPADCHK) UACC(READ) RALTER PROGRAM ** ADDMEM(SYS1.MIGLIB//NOPADCHK) RALTER PROGRAM ** ADDMEM(SYS1.CMDLIB//NOPADCHK) RALTER PROGRAM ** ADDMEM(cee.version.SCEERUN//NOPADCHK) RALTER PROGRAM ** ADDMEM( + TCPIP.SEZALOAD//NOPADCHK + TCPIP.SEZATCP//NOPADCHK + db2.DSNLOAD//NOPADCHK + db2.DSNEXIT//NOPADCHK + ftp.userexits//NOPADCHK)
3. If you include SYS1.LINKLIB in PROGRAM ** or PROGRAM *, you should define specific profiles for programs ICHDSM00 and IRRDPI00, two programs that RACF ships in SYS1.LINKLIB and that you probably do not want available to all users. Refer to z/OS Security Server RACF System Programmer's Guide for a description of IRRDPI00, and to z/OS Security Server RACF Auditor's Guide for a description of ICHDSM00, which should help you decide which users to authorize for these programs.
RDEFINE PROGRAM ICHDSM00 ADDMEM(SYS1.LINKLIB//NOPADCHK) UACC(NONE) RDEFINE PROGRAM IRRDPI00 ADDMEM(SYS1.LINKLIB//NOPADCHK) UACC(NONE) PERMIT ICHDSM00 CLASS(PROGRAM) ID(authorized IDs) ACCESS(READ) PERMIT IRRDPI00 CLASS(PROGRAM) ID(authorized IDs) ACCESS(READ)
4. Specify UACC(READ) for PROGRAM ** or PROGRAM *. With these definitions, you are only trying to keep the environment clean, and are not actually trying to control which users can run programs. Using a value other than READ for UACC on this profile can cause system problems. To avoid some of these problems, RACF grants READ authority when all of the following conditions are true: v A user loads a program from SYS1.LINKLIB v The program is protected by PROGRAM ** or PROGRAM * v The access request is processed using the profile values UACC(NONE) or ID(*) with ACCESS(NONE) 5. If you have users with the RESTRICTED attribute and want to allow them to execute programs in the clean or controlled program environment, you must specifically authorize them for protected resources in the PROGRAM class. (A
328
Program control
UACC of READ does not allow a restricted user to access a RACF-protected resource. See Defining restricted user IDs on page 91.) Tips: 1. For the purposes of keeping the environment clean, you do not need to worry about defining programs in the system link pack area (LPA, PLPA, FLPA, MLPA, dynamic LPA) because RACF always considers those programs controlled. 2. If a user tries to do something that requires a clean environment and RACF disallows that action because the user has a dirty environment, RACF issues messages to the job log or system log describing why the problem occurred.
More complex controls: Using EXECUTE access for programs or libraries (BASIC mode)
As discussed above using access levels of READ or NONE to allow or restrict access to programs is a simple form of program control. However, in some cases you might have programs that contain sensitive data (such as passwords or PIN numbers) or algorithms. While you might want to let some users execute those programs, you might not want them to examine the data or algorithms contained within the programs. In these cases, consider using an access level of EXECUTE for the PROGRAM profile, and possibly an access level of EXECUTE for the library that contains the programs. Programs protected this way are called execute-controlled. This topic discusses the use of EXECUTE access when running in BASIC program security mode. Using EXECUTE in ENHANCED program security mode is discussed in Using EXECUTE access for programs and libraries in ENHANCED mode on page 339. If you need to use EXECUTE access, you must ensure that the users running programs do so in a clean environment. Further details on setting up a clean environment for your users is discussed in Maintaining a clean environment in BASIC or ENHANCED mode on page 327. RACF requires a clean environment because, otherwise, a user could write his own program that would load the execute-controlled program into storage and dump its contents to a print file or just copy it to another file of the user's choosing. The user could then examine the program contents and see the data you had wanted to protect. Since RACF requires a clean environment for use of EXECUTE access, a user cannot write his own program to do this, because his program is not controlled (not defined by a PROGRAM profile) and would make the environment become dirty, preventing subsequent access to execute-controlled programs. You can specify an access level of EXECUTE on the PROGRAM profile for the program that contains the sensitive data or algorithm. You can also specify EXECUTE as an access level for the library containing the program. In either case, when the user attempts to run the execute-controlled program, RACF prevents the loading of the module except into a clean environment. Once all execute-controlled modules the user has run have completed execution and the system has removed them from storage, RACF allows the environment to become dirty if the user then tries to run a non-controlled program. To decide whether to use EXECUTE for only the PROGRAM profile or also for the DATASET profile that protects the program's library, you must consider certain aspects of the library. See Protecting program libraries on page 332 for more information.
Chapter 9. Protecting Programs
329
Program control
330
Program control
the programs have specific profiles, the profiles can be modified using the RALTER command to specify APPLDATA(MAIN) or APPLDATA(BASIC). However, if you have protected the programs with nonspecific profiles, you must use the RDEFINE command to define a new specific profile for each of the programs you need to define as MAIN or BASIC. Once these steps are complete you should: 1. Make a similar examination of IRRDBU00 output, looking at the records that indicate execute-controlled libraries: v Type 0400 records with a DSBD_UACC value of EXECUTE v Type 0402 records with a DSCACC_ACCESS value of EXECUTE v Type 0404 records with a DSACC_ACCESS value of EXECUTE Examine the programs in those libraries to see which you need to define as MAIN or BASIC, using similar criteria as used for PADS. 2. Look at the records that indicate execute-controlled programs, v Type 0500 records with GRBD_CLASS_NAME of PROGRAM that have GRBD_UACC of EXECUTE v Type 0505 records with GRACC_CLASS_NAME of PROGRAM that have GRACC_ACCESS of EXECUTE Examine the programs in those libraries to see which you need to define as MAIN or BASIC. When this is complete, you can switch to ENHANCED-WARNING mode to find out if you have any other changes that must be made. To switch to ENHANCED-WARNING mode: 1. Use the RDEFINE command to define IRR.PGMSECURITY profile in the FACILITY class, and specify an APPLDATA value other than ENHANCED or BASIC. For example:
RDEFINE FACILITY IRR.PGMSECURITY APPLDATA(ENHWARN)
To ease migration from BASIC to ENHANCED program security mode, the mode switch does not affect systems running any release earlier than z/OS V1R4. It also does not affect jobs, started tasks, or TSO sessions that are already running. For this reason, you should IPL the system at least once while in ENHANCEDWARNING mode to ensure that you test any jobs, started tasks, and TSO users that started before you migrated from BASIC to ENHANCED program security mode. While running in ENHANCED-WARNING mode, you might receive messages ICH427I or ICH430I to indicate the need for further necessary changes. After receiving the messages, making the relevant changes, and allowing a sufficient test period of running in ENHANCED-WARNING mode without getting further messages, you can switch to ENHANCED program security mode. To do this: 1. Modify the APPLDATA value for the IRR.PGMSECURITY profile by issuing:
RALTER FACILITY IRR.PGMSECURITY APPLDATA(ENHANCED)
Again, the mode switch does not affect systems running a release earlier than z/OS V1R4. It also does not affect any jobs, started tasks, or TSO sessions that are
Chapter 9. Protecting Programs
331
Program control
already running. So, again, you must IPL the system to fully implement the change. You should not have any problems as a result of this IPL, because you have already IPLed once in ENHANCED-WARNING mode and subsequently fixed any problems that caused RACF messages. Guideline: If you have several systems, consider having a SPECIAL user logged on to TSO on one of them while you IPL to fix any unexpected problem that might arise.
For programs in a system link list library, the user generally does not need access to the library itself, and you could grant the user the following access authorities: v READ: if the user is authorized to examine the content of programs or copying programs from the library v NONE: if the user is not authorized to examine the content of programs or copy them. Note: Users do not need access to libraries in the link list in order to run programs from them if they allow the system to load their programs from the link list itself. However, users need access to any library referenced as a private library (for example, using a JOBLIB, STEPLIB, or the TSO/E CALL library-name(program_name) command). Even if you have users issuing the TSO/E CALL command, you can still grant NONE authority to the library if they use a different form of the command, CALL *(program_name). This command instructs the system to find the program in the LNKLIST or link-pack area without specifically accessing the library itself. If the users cannot use that form of CALL, or need to reference the library as part of JOBLIB or STEPLIB, you must treat the library as a private library if you do not want the user inspecting the library contents. To protect a private library from a user viewing its content or copying programs from it, grant the user EXECUTE authority to the library itself through the DATASET profile that protects the library. For example, if you have a library named AAA.LIBRARY1, you could issue either of the following examples: Examples: 1. ADDSD AAA.LIBRARY1 UACC(EXECUTE) 2. ADDSD AAA.LIBRARY1 UACC(NONE)
PERMIT AAA.LIBRARY1 ID(*) ACCESS(EXECUTE)
When EXECUTE authority is the highest access level that users have to a private load library, the library is known as an execute-controlled library. If some users
332
Program control
have EXECUTE authority, and some have READ authority, the library is execute-controlled for some users and not for others. Guideline: In general, grant READ access rather than EXECUTE unless you have a strong need to prevent users from viewing the contents of a program library. Using EXECUTE requires that you keep the users' program execution environments clean, and requires more administrative effort and restrictions on how the users can access programs from the libraries. Restriction: If you want EXECUTE restrictions to apply to a user who has OPERATIONS authority, you must explicitly PERMIT that user or one of the user's groups to the DATASET profile with EXECUTE authority. UACC(EXECUTE) or ID(*) ACCESS(EXECUTE) does not make a library execute-controlled for a user with OPERATIONS authority.
Program PROG1 issues the OPEN for some.dataset itself. In this case, make sure that you have defined PROG1 in the PROGRAM class as a controlled program and specified PROG1 in the DATASET class on the conditional access list:
RDEFINE PROGRAM PROG1 UACC(READ) ADDSD some.dataset ACCESS(NONE) PERMIT some.dataset ID(userid or *) WHEN(PROGRAM(PROG1)) Accessories or UPDATE)
333
Program control
For the ID operand, you can supply a specific user ID or group name, or you can specify * to indicate that any user allowed to run the program gets that access level if the standard access list did not grant a sufficient security level. If you define PROG1 with a specific PROGRAM profile, such as PROGRAM PROG1, and provide a specific access list for that profile, you might want to use ID(*) in the conditional access list so you have only one access list (PROGRAM PROG1) to maintain. If you define PROG1 through PROGRAM ** or if you grant UACC(READ) or ID(*) ACCESS(READ) to PROGRAM PROG1, you might want to supply a specific user ID or group name in the conditional access list for some.dataset. 2. The user invokes the program (PROG1) at the TSO/E READY prompt: v Directly as a TSO command using the TSO/E CALL command v Through a REXX exec that uses one of the following REXX statements: address LINKMVS address LINKPGM address ATTACH address ATTCHMVS address ATTCHPGM PROG1 then issues the OPEN itself. Keeping a clean environment is generally harder to manage in TSO than in batch. As a result, you must take more care with the definition of PROGRAM ** than for the batch case. However, assuming that you have kept the user's environment clean by defining the appropriate programs and libraries, this case is the same as the batch case above and it is not described further. Guideline: For the use of CALL or the REXX functions, make sure you use NOPADCHK when defining the entries in PROGRAM **. If you use PADCHK, you might need to define additional programs in the conditional access list. 3. The user invokes the program (PROG1) under ISPF: v Directly as a TSO command or using the TSO/E CALL command v Through the ISPF SELECT CMD(PROG1) or SELECT PGM(PROG1) functions v Through a REXX exec that uses one of the following REXX statements: address LINKMVS address LINKPGM address ATTACH address ATTCHMVS
address ATTCHPGM PROG1 then issues the OPEN itself. This case is very similar to case 2 above. However, it raises the additional possibility that the user is running in ISPF split-screen mode. In split-screen mode, the user might have initiated several programs and they might all be active at the same time. Suppose that the user has split his ISPF screen, and has program PROGA active on the first screen while trying to run PROG1 on the second screen. In this case, in order for PADS to work for PROG1, PROGA must be defined to RACF, as well. If you defined it with the NOPADCHK attribute, you can simply specify PROG1 in the conditional access list as you did for cases 1 and 2 above. However, if you defined it with PADCHK, you must have a second conditional access list entry granting PROGA authority to the data set. For this situation, you would issue the following commands.
334
Program control
RDEFINE PROGRAM PROG1 UACC(READ) RDEFINE PROGRAM PROGA UACC(READ) ADDSD some.dataset ACCESS(NONE) PERMIT some.dataset ID(userid) WHEN(PROGRAM(PROG1) ACCESS(READ or UPDATE) PERMIT some.dataset ID(userid or *) WHEN(PROGRAM(PROGA) ACCESS(READ or UPDATE)
4. The user invokes PROG1 under TSO as above (cases 2 or 3), but you cannot keep his environment clean. For example, perhaps the user must run programs that you do not want to define as controlled programs because you do not trust them. In that case, when the user runs such programs the environment becomes dirty, and subsequently he cannot invoke PROG1 in a normal fashion if you want PADS to work. If you have this situation, and if PROG1 does not need to invoke ISPF services through ISPLINK, you can still allow use of PADS by having the user run PROG1 through the TSO/E TSOEXEC command or (from another program) by the TSO/E IKJEFTSR callable service. Both of these mechanisms can create a new, temporary program environment that is clean and safe to use with PADS. The user might invoke PROG1 by issuing TSOEXEC PROG1 or TSOEXEC CALL *(PROG1) or some similar operation (such as a REXX exec or CLIST). You can then specify PROG1 in your conditional access list as you did for cases 1 and 2 above. Note that for this case, even if the user is using ISPF split-screen mode, you do not need to worry about putting other programs in the conditional access list. 5. The user invokes PROG1, and PROG1 invokes another program PROG2, and PROG2 OPENs the data set. Assumptions: a. You have defined both PROG1 and PROG2 as controlled programs using the NOPADCHK attribute. b. PROG1 invokes PROG2 through the MVS LINK or ATTACH services. If PROG1 issues MVS LOAD for PROG2, you just define PROG1 in the conditional access list (allowing you to skip Step 6 below). Conversely, if PROG1 invokes PROG2 through the MVS XCTL service, you just define PROG2 in the conditional access list (allowing you to skip Step 6 below). c. The user invoked PROG1 through some function that uses the MVS ATTACH service: v JCL v Directly as a TSO command v Through TSOEXEC or IKJEFTSR service v Through ISPF SELECT CMD(PROG1), v Through one of the following REXX statements: address ATTACH address ATTCHMVS address ATTCHPGM 6. Considering these assumptions, you have two ways of specifying your conditional access list: a. Since PROG2 issues the OPEN, you can specify WHEN(PROGRAM(PROG2)). You do not need to mention PROG1 in the conditional access list unless you defined PROG1 with PADCHK. b. Starting with z/OS Version 1 Release 4, you can specify WHEN(PROGRAM(PROG1)). You do not need to mention PROG2 in the conditional access list unless you defined PROG2 with PADCHK.
Chapter 9. Protecting Programs
335
Program control
Note: With programs written in IBM's C, C++, COBOL, or PL/I, you can usually specify the name of the main program in the conditional access list. Rules: 1. When you are creating an entry in a conditional access list, the program name you specify cannot contain any generic characters. For example, if you specify WHEN(PROGRAM(*)), WHEN(PROGRAM(IKJ*)), or WHEN(PROGRAM(ABC00%), the entry does not grant any authority. You must specify the exact program name. For more information, refer to z/OS Security Server RACF Command Language Reference. 2. In certain cases, if you have a program (such as PROG1) that runs under ISPF and uses the ISPF LMOPEN service to open a data set, you can grant access using PADS. In order to do this, the user's ISPF dialog must invoke PROG1 using SELECT PGM(PROG1). PROG1 can then use ISPLINK to invoke LMOPEN. You must then specify WHEN(PROGRAM(PROG1)) in the conditional access list. 3. Program access to data sets does not allow different programs with the same name to exist in different libraries requiring different access levels. For example, if you have a program PROGA in library load.library1 and also have a program PROGA in another.load.library, there would be no distinction between these programs in the conditional access list. 4. ALTER access authority in a conditional access list does not allow the creation or deletion of the data set through JCL. To create or delete a particular data set while running a particular program, and if the data set is to be allocated through JCL, do not grant ALTER authority through PADS. At the time the system creates or deletes the data set through JCL, the program specified in the JCL is not running, and PADS cannot work. You can only allow the creation or deletion of a data set through PADS if the program asks the system to allocate or delete the data set during execution, which is not typical of normal program behavior. To allow the allocation or deletion of data sets through PADS, write an application to use dynamic allocation (SVC99) to allocate a data set rather than allocate it using JCL. The creation of the data set while running the new program can be allowed, and the new program can then invoke the original application program. Note: As mentioned in case 5 above, beginning with z/OS V1R4, you have more flexibility in specifying programs in a conditional access list. To explain this, some familiarity with certain MVS technical terms is necessary. Generally, programs run under MVS tasks. A program running in one task can attach a subtask (also known as a child task) using the MVS ATTACH service. A program can also invoke another program within the same task (rather than a subtask) using the MVS LINK service. MVS represents a task by a control block called a TCB, and it represents a program running in a task (TCB) with a program request block (PRB). As a result, if a program invokes another program through LINK, you now have one task (TCB) with two programs (PRBs). When considering what program to specify in the conditional access list, you can use either the program issuing the OPEN (current PRB, in MVS terms) or you can specify one of the following: 1. The program represented by the first PRB for the current task (generally the first program run in the task, unless that program used the MVS XCTL service to transfer control to another program)
336
Program control
2. The program represented by the first PRB for the current task's parent task, or the parent task's parent, up to the job step task or the task established by TSOEXEC or IKJEFTSR. Consequently, if: 1. The user executes PROG1 2. PROG1 LINKs to PROG2 3. PROG2 issues the OPEN you can specify PROG2 or PROG1 in the conditional access list. If: 1. The user executes PROG1 2. PROG1 LINKs to PROG2 3. PROG2 ATTACHes PROG3 4. PROG3 LINKs to PROG4 5. PROG4 issues the OPEN you can specify: v PROG4 (program issuing OPEN) v PROG3 (first PRB in current task) v PROG1 (first PRB in parent task) Remember, this flexibility exists only starting with z/OS V1R4. Prior to that you would have to specify the program that issues the OPEN.
337
Program control
1. If you are defining a program that you trust to operate in a safe manner and not attempt to violate security, specify NOPADCHK to help minimize the size of your conditional access lists and the work you need to do to administer them. Use NOPADCHK for the PROGRAM ** or PROGRAM * profiles and for any other cases where you trust a program to access only the data it should. PADCHK might be most appropriate for user-written programs that are not completely trusted. This includes the case where you are willing to call them controlled and define them with PROGRAM profiles so they can use PADS, but you want them usable only with data sets you have specifically authorized them to. You do not trust them to function appropriately in an environment with other programs running that also make use of PADS. 2. For best results, do not mix PADCHK and NOPADCHK definitions in the same PROGRAM profile. When some members of a PROGRAM profile have been defined with PADCHK and some with NOPADCHK, RACF uses PADCHK for all members.
This example permits the specified users or groups to access network security zones protected by SERVAUTH resources only when executing the specified program or command. Program access to SERVAUTH resources in ENHANCED program security mode operates much the same as it does in BASIC program security mode, with one exception. RACF allows program access to SERVAUTH resources to operate in ENHANCED program security mode only when one of the following is true: v The program that established the current program environment has the MAIN attribute v The current program or the first program executed in the current or a parent MVS task has the BASIC attribute Note: For checking MAIN programs, the environment is considered established by the initial program executed in the job step, or the initial program executed by TSOEXEC or the IKJEFTSR service, or the initial UNIX program exec()ed or spawn()ed (non-local case only).
338
Program control
As with program access to data sets, you must maintain a clean environment to control program access to SERVAUTH resources. (For details, see Maintaining a clean environment in BASIC or ENHANCED mode on page 327.) Unlike program access to data sets, the PADCHK/NOPADCHK operands have no meaning and are ignored.
339
Program control
they are execute-controlled because the user has EXECUTE via a PROGRAM profile or via a DATASET profile; RACF treats both forms of execute-control the same for this purpose. When running in BASIC program security mode, RACF allows access to execute-controlled programs only when the UACC or access list allowed the access and the user had a clean (controlled) program environment. When running in ENHANCED program security mode, just as with PADS, RACF has an additional requirement. One of the following must be true: v The program that established the current program environment has the MAIN attribute v The current program or the first program executed in the current or a parent MVS task has the BASIC attribute
340
Program control
Note: If a user runs an APF-authorized program in TSO, and you have identified that program to TSO/E (through member IKJTSOxx of your system parameter library) as one that should run with APF authority, TSO/E automatically uses the IKJEFTSR service to run the program, and you can define it as MAIN, rather than BASIC. Effectively, when defining programs, you can indicate several levels of trust in the way that programs operate, based on the attributes you choose. You could define a program using the PADCHK operand, indicating that the program must have an entry in a data set's conditional access list before PADS is allowed with that program in storage. The program is still a controlled program but is not as trusted as a program defined with NOPADCHK. NOPADCHK indicates to RACF that you trust the program not to try to access a data set inappropriately when some other concurrently executing program opens a data set using PADS. Beyond PADCHK and NOPADCHK, you can identify a program as MAIN, BASIC, or neither. You identify most programs as neither MAIN nor BASIC, by specifying PROGRAM *, PROGRAM **, or another PROGRAM profile with a name that ends with an asterisk (*). Again, these programs are controlled, but it is possible that not enough is known about the way they operate to mark them as trusted (which initiates an environment in which PADS or execute-controlled programs are used). Guidelines: 1. When deciding to define a program as MAIN or BASIC, select programs that perform a well-defined set of operations and do not accept the address of a user-supplied routine as a parameter. 2. Do not define the TSO/E terminal monitor program (TMP) or any part of it (such as IKJEFT01, IKJEFT1A, IKJEFT1B, IKJEFT02), or ISPF or any part of it (such as ISPF, ISPSTART, ISPMAIN) as MAIN or BASIC because these programs provide too much of a generalized environment controlled by the user. If you have chosen to enable this stronger security for UNIX servers and daemons by defining FACILITY profile BPX.MAINCHECK (refer to z/OS UNIX System Services Planning for details), you must define some UNIX programs as MAIN, and possibly copy them from the UNIX file system into a standard MVS load library.
341
Program control
Tip: If a program needs both the MAIN and BASIC specifications, specify BASIC and accept the reduced level of security for all uses of the program, or create two differently named copies of the program and protect each separately with PROGRAM profiles, specifying one as MAIN and one as BASIC. Since RACF restricts usage of PADS and execute-controlled programs to environments established by a MAIN or BASIC program, there might be situations where the program that establishes the environment resides in the system link pack area (LPA, PLPA, FLPA, MLPA, or dynamic LPA). If you need to define such a program to RACF to indicate to RACF that it has the MAIN or BASIC attribute, use a library name of LPALST:
RDEFINE PROGRAM LPAPROG ADDMEM(LPALST) APPLDATA(MAIN)
For programs in the link pack area, RACF allows users to execute the program, regardless of the UACC or access list, and RACF treats the program as having the NOPADCHK attribute. Define it in the PROGRAM class only if you need to provide a MAIN or BASIC attribute for it. Notes: 1. You can optionally specify blanks at the end of the APPLDATA value. RACF considers, for example, MAIN and MAIN , or BASIC and BASIC as equivalent. 2. RACF does not validate the APPLDATA value when you specify it with the RDEFINE or RALTER command. When RACF is told to run in ENHANCED program security mode using FACILITY profile IRR.PGMSECURITY, if RACF reads a PROGRAM profile defining a specific program and finds that APPLDATA specifies the MAIN or BASIC values, it assigns the attribute to the program. This is done during the processing of SETROPTS WHEN(PROGRAM) or SETROPTS WHEN(PROGRAM) REFRESH, or during system initialization (IPL). If APPLDATA contains some other value, RACF ignores it without issuing an error message. 3. When invoking MVS load modules through z/OS UNIX (such as exec(), exec_mvs(), or an exec where UNIX loads a load module rather than a z/OS UNIX file) the MAIN setting for a PROGRAM is effective only in limited cases. Specifically, it is effective when the exec() processing results in a new job step task, but not for the local spawn exec() processing because this processing results in the creation of a new subtask rather than a job step task. Consequently, exec() of load module, exec_mvs(), and non-local spawn(), or their z/OS UNIX assembler callable service equivalents, preserve the effect of the MAIN PROGRAM attribute. 4. When failing a request (or allowing it only due to ENHANCED-WARNING processing), RACF issues a message indicating the source and name of the non-MAIN program or the executable file that established the non-MAIN environment.
342
Program control
343
Program control
3. If the program is not protected, RACF determines whether there are any data sets currently open using PADS or whether there are any execute-controlled programs in storage in the address space. v If there are no such data sets or programs, RACF marks the environment dirty (uncontrolled) and allows the user to execute the program. v If there are data sets currently opened using PADS, or programs to which the user has only EXECUTE authority, RACF fails the request and the system abends the task. RACF issues message ICH423I to document the execute-controlled programs, or message ICH424I to document the PADS data sets that caused the operation to fail. In this way, RACF prevents uncontrolled programs from gaining access to protected data or programs inappropriately. 4. If the program is protected by a profile but the user does not have at least EXECUTE authority to the program, RACF causes the system to abend the task because the user is not authorized to execute the program. 5. If the program is protected by a profile and the user has only EXECUTE authority to the PROGRAM profile or to the library that contains the program (when the program is loaded from a JOBLIB, STEPLIB, or tasklib), and if the job step or TSO session is running in ENHANCED program security mode, RACF checks whether an appropriate program established the program environment. RACF determines if the first program executed in the job step had the 'MAIN' attribute, or (if necessary) if the program invoked by TSOEXEC or IKJEFTSR had the 'MAIN' attribute. If the program does not have MAIN, RACF next determines if the first program run in the current task (TCB) or the first program executed in some parent task had the 'BASIC' attribute. If so, RACF allows the request. Otherwise, RACF fails the request and issues message ICH429I to describe the problem and tell you what program established the environment. 6. If the user is still authorized to execute the program and the program was defined with the PADCHK attribute, RACF checks whether any program-accessed data sets are open. v If no program-accessed data sets are open, RACF allows the user to execute the program. v If program-accessed data sets are open, RACF checks the user and program combination to verify that the combination has at least the same authority to each data set in the list that was required when each data set was opened. For more information on the requirements, refer to Program access to data sets (PADS) in BASIC mode on page 333. If the use or program combination has sufficient authority to all of the opened data sets, RACF allows the user to execute the program. If the user or program combination does not have sufficient authority to all of the opened data sets, RACF causes the system to end the task (with abend code 306 or 806). Note: If you are denied access to a requested resource and you implemented program control (with or without PADS), RACF's messages should provide sufficient information to determine the problem. If not, refer to z/OS Security Server RACF Diagnosis Guide for additional help in determining the cause of the authorization failure.
344
Program control
request if the UACC is sufficiently high, if the user's user ID is in the access list with sufficient authority, and so forth. If the user is not granted access to the data set with normal authorization checking, RACF checks the data set's conditional access list if program control is active and the program currently executing is executing as a RACF-controlled program in a clean environment. RACF authorizes the user to open the program-accessed data set with the currently executing program if all of the following conditions are met: v The conditional access list contains the name of the currently running program, the name of the first program currently running in the current task (TCB), or the name of the first program currently running in a parent task, with the requested level of access or higher. Prior to z/OS V1R4, RACF required the name of the currently running program. v The user's group or user ID is associated with the program name in the conditional access list. v The current program environment (job step, or task established under TSO/E using TSOEXEC or IKJEFTSR) is controlled. In other words, it has not loaded an uncontrolled program. If either of these conditions are not met, the environment is considered uncontrolled. The user's attempt to open the program-accessed data set fails and the task ends with abend code 913. RACF issues message ICH417I, specifying what caused the environment to become uncontrolled. v If the job step or TSO session is running in ENHANCED program security mode, one of the following is true: 1. The current environment (job step or task created by TSOEXEC or IKJEFTSR) first ran a program defined with the 'MAIN' attribute. 2. The current program running in the current task, or the first program run in the current task or a parent task, has the BASIC attribute. If neither of these conditions is met, the user's attempt to open the program-accessed data set fails and the task ends with abend code 913. RACF issues message ICH426I, specifying the non-MAIN program that established the current environment. v If there is more than one controlled program running in the current environment (job step or task created by TSOEXEC or IKJEFTSR), all of those programs defined with the PADCHK attribute have conditional access list entries allowing them to access the data set. If one or more programs in the environment are not authorized, the attempt fails and the task terminates with abend code 913. RACF issues message ICH418I specifying one or more programs that were missing from the conditional access list. Note: If a TSO user has executed a non-controlled program during the current session, and then attempts to access a program-accessed data set, the attempt fails. The TSO user can either log off and log back on, or temporarily regain a controlled environment by invoking the controlled program through the TSOEXEC command. When writing a program, you can do the equivalent by invoking the TSO IKJEFTSR service. For information on using the IKJEFTSR service, see z/OS TSO/E Programming Guide.
345
Program control
user can only use that library as a JOBLIB, STEPLIB, or some other kind of tasklib, for example, by issuing the TSO/E command:
CALL library_name(program_name)
Opening an execute-controlled library: When a program issues an OPEN request to READ a data set, the system invokes RACF. If EXECUTE is the highest access authority that the user is given to the data set, RACF considers the request a failure, and informs the system of the failure, noting that the user did have EXECUTE authority. However, RACF does not audit this case unless the DATASET profile specifies AUDIT(ALL). The system recognizes that the user has EXECUTE and allows the OPEN to proceed, but marks the control blocks that represent that data set to indicate that the user had only EXECUTE authority. This means that for this user, the data set is an execute-controlled data set. In order to load a program, the program libraries from which it comes must be opened. The user's program does not necessarily code the OPEN. For example, a JOBLIB or STEPLIB statement causes an OPEN to occur before the module is fetched. Notes: 1. Libraries in the system link list concatenation are opened during IPL, and the programs in them are available to anyone unless the program is defined as a controlled program. The system link list libraries are never considered execute-controlled when a user fetches a program through the system link list. However, if the user specifies a system link list library in a JOBLIB, STEPLIB, or tasklib (for example, through the TSO/E CALL command specifying the library name) the library is considered execute-controlled for that user if the user has only EXECUTE authority. 2. If an execute-controlled data set is used in a concatenation of libraries in a DD statement, the entire concatenation is treated as execute-controlled. 3. If the user has any other access authority to the library (READ, UPDATE, CONTROL, or ALTER), the library is opened and the user is granted that access authority. Fetching a program from an execute-controlled library: After an execute-controlled library is opened, the user can attempt to execute (fetch) a program from the library at any time. RACF checks the user's program environment (job step or task established by TSOEXEC or IKJEFTSR) to ensure that it is a controlled environment. Notes: 1. If the user's program environment (job step or task established by TSOEXEC or IKJEFTSR) is not controlled, RACF does not allow a program from an execute-controlled library to be fetched into the environment. Therefore, the user's request to load a program from an execute-controlled library fails, and the task typically ends with abend code 306 or 806. RACF issues message ICH419I specifying the program that failed to load, and message ICH420I specifying the program that caused the environment to become uncontrolled. 2. If the user's program environment has used only controlled programs (or no programs at all), the environment is controlled. RACF allows a program from an execute-controlled library to be fetched into a controlled environment. Consequently, RACF grants the user's request to fetch a program from the library. 3. If the user's job step or TSO session is running in ENHANCED program security mode, RACF also checks to ensure that one of the following is true:
346
Program control
a. The first program run in the job step or in the task established by TSOEXEC or IKJEFTSR had the MAIN attribute b. The first program run in the current task or the first program run in some parent task has the BASIC attribute If neither of these conditions is true, RACF issues message ICH429I to describe the problem. Additionally, if the user attempts to fetch a non-controlled program into a controlled environment, RACF ensures that the user has at least READ authority to all RACF-defined programs that are currently residing in the user's address space. RACF does not allow a user to fetch a non-controlled program into an address space that contains an execute-controlled program. The user's attempt to load the non-controlled program fails and the task typically ends with abend code 306 or 806. RACF issues ICH423I specifying one or more execute-controlled programs in the current environment. If a program not running in supervisor state tries to access an execute-controlled data set other than to load a program through one of the MVS program-loading services, the system denies the request and abends the program. EXECUTE access authority has meaning only for a partitioned data set that is used as a program library. If you specify EXECUTE for any other type of data set (such as a CLIST or EXEC), effectively the user will have an access authority of NONE. Auditing accesses to programs in execute-controlled libraries: At the time that an execute-controlled library is opened, OPEN does not know if the user will later attempt to read the library or to execute a program from the library. OPEN issues a request for READ authority, and RACF fails the request and sets the reason code to indicate that the user did have EXECUTE authority. OPEN examines the reason code and determines that the user has EXECUTE authority, and allows the OPEN to succeed, but marks its control blocks so that any non-supervisor-state I/O causes an abend. When RACF detects that the user has only EXECUTE authority, it cannot predict if the access will eventually succeed or fail. If the library data set profile indicates that all access attempts should be audited, message ICH408I is issued. If the library data set profile says to audit both successes and failures, RACHECK interprets this as AUDIT(ALL). This method of determining access can lead to two confusing scenarios: 1. If the profile says AUDIT(ALL), a user attempting to execute a program might receive message ICH408I saying that she does not have READ authority and then see that the program has successfully executed. 2. If the profile says AUDIT(FAILURES), an attempt to read the library can lead to an abend being issued but no message ICH408I being issued since the user has EXECUTE authority. In addition, the SMF records produced for an attempt to read and an attempt to execute are identical for the same reasons described above.
347
Program control
3. RDEFINE PROGRAM MYPROG ADDMEM(APPL.LOADLIB/VOL123/NOPADCHK) UACC(NONE) /* makes MYPROG a controlled program. MYPROG must be a member */ /* of APPL.LOADLIB on volume 123 */ 4. SETROPTS WHEN(PROGRAM) REFRESH /* puts the new PROGRAM profile into storage */
Note: Using ****** works only for the single system IPL volume; it does not work for extensions of the system residence volume. Rather than using ****** you might want to simply omit the volser if you have good controls over how users can create new data sets.
*/ */
348
Program control
data set. Only users in group GROUPA should have access to PROG1 and ABC.DATA. You should run in BASIC program security mode. Issue the following commands. 1. 2. 3. 4. 5. 6. 7. 8. RDEFINE FACILITY IRR.PGMSECURITY APPLDATA(BASIC) ADDSD APP.LOADLIB UACC(READ) RDEFINE PROGRAM PROG1 ADDMEM(APP.LOADLIB//NOPADCHK) UACC(NONE) PERMIT PROG1 CLASS(PROGRAM) ID(GROUPA) ACCESS(READ) ADDSD ABC.DATA UACC(NONE) PERMIT ABC.DATA ID(GROUPA) ACCESS(READ) PERMIT ABC.DATA ID(*) ACCESS(UPDATE) WHEN(PROGRAM(PROG1)) SETR WHEN(PROGRAM) However, if you have previously issued SETR WHEN(PROGRAM):
SETR WHEN(PROGRAM) REFRESH
v You have a program named PROG2 in library APP.LOADLIB that users execute in batch, and when using that program you want the users to have UPDATE access to data set ABC.DATA. Otherwise, users should have READ access to the data set. Only users in group GROUPA should have access to PROG2 and ABC.DATA. You should run in ENHANCED program security mode. Issue the following commands: 1. ADDSD APP.LOADLIB UACC(READ) 2. RDEFINE PROGRAM PROG2 ADDMEM(APP.LOADLIB//NOPADCHK) APPLDATA(MAIN) 3. PERMIT PROG2 CLASS(PROGRAM) ID(GROUPA) ACCESS(READ) 4. 5. 6. 7. 8. UACC(NONE)
ADDSD ABC.DATA UACC(NONE) PERMIT ABC.DATA ID(GROUPA) ACCESS(READ) PERMIT ABC.DATA ID(*) ACCESS(UPDATE) WHEN(PROGRAM(PROG2)) RDEFINE FACILITY IRR.PGMSECURITY APPLDATA(ENHANCED) SETR WHEN(PROGRAM) However, if you have previously issued SETR WHEN(PROGRAM):
SETR WHEN(PROGRAM) REFRESH
After program control is active, it remains active until your installation deactivates it by issuing the SETROPTS command with the NOWHEN(PROGRAM) operand. 2. Define a data set profile to protect the private program library by issuing the ADDSD command with the appropriate operands. The following command defines a data set profile to protect program library KBROWN.PGMLIB2. The command assigns a UACC of EXECUTE to allow all users to execute but not otherwise access the library.
ADDSD KBROWN.PGMLIB2 UACC(EXECUTE)
3. Define a specific profile in the PROGRAM class that protects the controlled program. The following command identifies only program XCLPGM as a controlled program.
Chapter 9. Protecting Programs
349
Program control
RDEFINE PROGRAM XCLPGM ADDMEM(KBROWN.PGMLIB2/VOL6A/NOPADCHK)
Note: If you intend to run in ENHANCED program security mode, add APPLDATA(MAIN) to this RDEFINE command. 4. Refresh the in-storage program control tables by issuing the following command.
SETROPTS WHEN(PROGRAM) REFRESH
3. RDEFINE PROGRAM MYPROG ADDMEM(SYS1.LINKLIB/123456/NOPADCHK) UACC(NONE) /* makes MYPROG a controlled program. MYPROG must */ /* be a member of SYS1.LINKLIB on volume 123456 */ 4. PERMIT MYPROG CLASS(PROGRAM) ID(ALLEN) ACCESS(READ) WHEN(SYSID(SYS1)) /* user ALLEN can only run the program from system SYS1 */ 5. SETROPTS WHEN(PROGRAM) REFRESH /* puts the new PROGRAM profile into storage */
350
This topic provides information about enabling users to digitally sign programs and enabling RACF to verify signed programs.
351
Program signatures
Restriction: Program signing and verification are not supported for the following program modules: v Program objects that are stored in z/OS UNIX files v Load modules that are stored as members of a partitioned data set (PDS) library
Terms to know
In this topic, the following terms are synonymously used to refer to a program module stored as a PDSE member: v program object v program module v program v module
Related information
For details about enabling signature verification for the modules of z/OS Cryptographic Services System Secure Sockets Layer (SSL), see System SSL module verification setup in z/OS Cryptographic Services System SSL Programming. For programming information about using the SIGN binder option to sign program modules, see z/OS MVS Program Management: User's Guide and Reference.
Enable a user to sign a program using Steps for enabling a user to sign a program code-signing certificates that you create using using RACF code-signing certificates on RACF. page 355. Steps for enabling a user to sign a program Enable a user to sign a program using code-signing certificates that you obtain from using external code-signing certificates on an external certificate authority (CA). page 357. Optionally, audit your installation's signed programs. Prepare RACF to verify signed programs. (This is a one-time setup.) Verify a signed program. Steps for discovering if signed programs currently execute on your systems (optional) on page 363. Steps for preparing RACF to verify signed programs (one-time setup) on page 365. Steps for verifying a signed program on page 366.
352
Program signatures
353
Program signatures
For details about using the RACDCERT GENCERT command, see z/OS Security Server RACF Command Language Reference.
354
Program signatures
Examples:
RDEFINE FACILITY IRR.PROGRAM.SIGNING.BUILD.RAMOS APPLDATA(BUILDID/BUILD.CODE.SIGNING.KEYRING) RDEFINE FACILITY IRR.PROGRAM.SIGNING.RAMOS APPLDATA(SHA256 RAMOS/RAMOS.CODE.SIGNING.KEYRING) RDEFINE FACILITY IRR.PROGRAM.SIGNING.PROD APPLDATA(/PROD.CODE.SIGNING.KEYRING) RDEFINE FACILITY IRR.PROGRAM.SIGNING APPLDATA(RACFADM/CODE.SIGNING.KEYRING)
Rules: v The only space character allowed in the APPLDATA value is the single space following the hash-algorithm value. If hash-algorithm is omitted, no space is allowed in the APPLDATA value. v No extraneous characters are allowed in the APPLDATA value. RACF does not check the format of the APPLDATA value when you define a IRR.PROGRAM.SIGNING profile. RACF checks the format when a user signs a program and RACF finds a matching IRR.PROGRAM.SIGNING profile.
Enable a user to sign a program using Steps for enabling a user to sign a program code-signing certificates that you create using using RACF code-signing certificates. RACF. Enable a user to sign a program using Steps for enabling a user to sign a program code-signing certificates that you obtain from using external code-signing certificates on an external certificate authority (CA). page 357.
Steps for enabling a user to sign a program using RACF code-signing certificates
Before you begin: v Determine your IRR.PROGRAM.SIGNING profile structure for assigning program-signing key rings to users who are authorized program signers. The following steps are based on defining the IRR.PROGRAM.SIGNING.userid profile. Therefore, the following examples define a program-signing key ring for each authorized program signer. For details about other options, see Details about defining IRR.PROGRAM.SIGNING profiles on page 354. Guideline: If you opt instead to define the IRR.PROGRAM.SIGNING profile to assign the same key ring to all authorized signers, you might use a profile in the RDATALIB class instead of the FACILITY class to authorize users to access the program-signing ring. A profile in the RDATALIB class allows you to authorize users to access a specific key ring. For details, see RACF Authorization for R_datalib (IRRSDL00 or IRRSDL64) in z/OS Security Server RACF Callable Services. v If you specify the PKDS or PCICC option (in Step 1 on page 356) to store the private key in the ICSF PKA key data set (PKDS), and the CSFSERV and
355
Program signatures
CSFKEYS classes are active, you might need additional authority in those classes. For information about these resources, see z/OS Cryptographic Services ICSF Administrator's Guide. Perform the following steps to enable a user to digitally sign a program using code-signing certificates that you create using RACF.
1.
|
If not already created, create a certificate-authority (CA) certificate that you can use to issue code-signing certificates for users who need to sign programs. Guideline: For added security, specify the PKDS option to generate and store the private key in the ICSF PKDS, if available. Example:
RACDCERT CERTAUTH GENCERT SUBJECTSDN(OU(MyCompany Code Signing CA) O(MyCompany) C(US)) SIZE(2048) RSA(PKDS) WITHLABEL(MyCompany Code Signing CA)
______________________________________________________________________
2.
|
For each user, create a code-signing certificate signed by the CA certificate you created in Step 1. Rule: Do not specify the PKDS, PCICC, or ICSF option. The private key of the code-signing certificate must reside in the RACF database. Example:
RACDCERT ID(RAMOS) GENCERT SUBJECTSDN(CN(Ramos Code Signing Cert) O(MyCompany) C(US)) SIZE(1024) WITHLABEL(Ramos Code Signing Cert) SIGNWITH(CERTAUTH LABEL(MyCompany Code Signing CA)) KEYUSAGE(HANDSHAKE DOCSIGN)
______________________________________________________________________
3.
For each user, create a program-signing key ring to hold the certificates you created in Steps 1 and 2. Rule: Specify only uppercase characters in the key ring name. This is because you must specify the ring name in the APPLDATA field of the FACILITY profile you create in Step 5. Example:
RACDCERT ID(RAMOS) ADDRING(RAMOS.CODE.SIGNING.KEYRING)
______________________________________________________________________
4.
Add both of the certificates you created in Steps 1 and 2 to the key ring you created in Step 3. Rule: The code-signing certificate must be the default certificate in the ring. Example:
RACDCERT ID(RAMOS) CONNECT(CERTAUTH LABEL(MyCompany Code Signing CA) RING(RAMOS.CODE.SIGNING.KEYRING)) RACDCERT ID(RAMOS) CONNECT(ID(RAMOS) LABEL(Ramos Code Signing Cert) DEFAULT RING(RAMOS.CODE.SIGNING.KEYRING))
______________________________________________________________________
5.
For each user, create a FACILITY class profile that specifies the hash algorithm and the name of the key ring to be used whenever the user digitally signs a program module. Example:
RDEFINE FACILITY IRR.PROGRAM.SIGNING.RAMOS APPLDATA(SHA256 RAMOS/RAMOS.CODE.SIGNING.KEYRING)
______________________________________________________________________
356
Program signatures
6.
Permit each user to access his own key rings, if not already authorized. Example:
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(RAMOS) ACCESS(READ)
______________________________________________________________________
7.
Activate your profile changes in the FACILITY class, as follows. v If the FACILITY class is not already active, activate and RACLIST the FACILITY class. Example:
SETROPTS CLASSACT(FACILITY) RACLIST(FACILITY)
v If the FACILITY class is already active and RACLISTed, refresh the FACILITY class. Example:
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now enabled a user to digitally sign a program using code-signing certificates that you created using RACF.
Steps for enabling a user to sign a program using external code-signing certificates
Before you begin: v Obtain or locate the root certificate-authority (CA) certificate of an external CA and store it in a cataloged, variable-byte (VB) MVS data set. v Determine your IRR.PROGRAM.SIGNING profile structure for assigning program-signing key rings to users who are authorized program signers. The following steps are based on defining the IRR.PROGRAM.SIGNING.userid profile. Therefore, the following examples define a program-signing key ring for each authorized program signer. For details about other options, see Details about defining IRR.PROGRAM.SIGNING profiles on page 354. Guideline: If you opt instead to define the IRR.PROGRAM.SIGNING profile to assign the same key ring to all authorized signers, you might use a profile in the RDATALIB class instead of the FACILITY class to authorize users to access the program-signing ring. A profile in the RDATALIB class allows you to authorize users to a specific key ring. For details, see RACF Authorization for R_datalib (IRRSDL00 or IRRSDL64) in z/OS Security Server RACF Callable Services. Perform the following steps to enable a user to digitally sign a program using code-signing certificates that you obtain from an external certificate-authority (CA).
1.
If not already done, add the root CA certificate of the external CA to RACF, specifying the name of the data set where it is stored. Example:
RACDCERT CERTAUTH ADD(CA.CERT.DSN) WITHLABEL(MyCompany Code Signing CA)
______________________________________________________________________
2.
For each user, obtain a code-signing certificate from the external CA and add it to RACF. To do so, perform the following sub-steps. a. Create a self-signed code-signing certificate (as a placeholder) that will be signed by the external CA.
357
Program signatures
| Rule: Do not specify the PKDS, PCICC, or ICSF option. The private key of the code-signing certificate must reside in the RACF database. Example:
RACDCERT ID(RAMOS) GENCERT SUBJECTSDN(CN(Ramos Code Signing Cert) O(MyCompany) C(US)) SIZE(1024) WITHLABEL(Ramos Code Signing Cert) KEYUSAGE(HANDSHAKE DOCSIGN)
b. Create a PKCS #10 certificate request based on the placeholder certificate you created in Step 2a, specifying the name of the MVS data set where the certificate request will be stored. Example:
RACDCERT ID(RAMOS) GENREQ(LABEL(Ramos Code Signing Cert)) DSN(RAMOS.CERT.REQUEST.DSN)
c. Send the MVS data set (for example, RAMOS.CERT.REQUEST.DSN) containing the stored certificate request to the external CA. d. Receive the signed certificate returned by the external CA and store it in a cataloged, variable-byte (VB) MVS data set (for example, RAMOS.CERT.DSN). e. Add the new signed certificate to RACF, replacing the placeholder certificate you created in Step 2a. Example:
RACDCERT ID(RAMOS) ADD(RAMOS.CERT.DSN) WITHLABEL(Ramos Code Signing Cert)
______________________________________________________________________
3.
For each user, create a program-signing key ring to hold the external certificates you added in Steps 1 and 2. Rule: Specify only uppercase characters in the key ring name. This is because you must specify the ring name in the APPLDATA field of the FACILITY profile you create in Step 5. Example:
RACDCERT ID(RAMOS) ADDRING(RAMOS.CODE.SIGNING.KEYRING)
______________________________________________________________________
4.
Connect both of the certificates you added in Steps 1 and 2 to the key ring you created in Step 3. Rule: The code-signing certificate must be the default certificate in the ring. Example:
RACDCERT ID(RAMOS) CONNECT(CERTAUTH LABEL(MyCompany Code Signing CA) RING(RAMOS.CODE.SIGNING.KEYRING)) RACDCERT ID(RAMOS) CONNECT(ID(RAMOS) LABEL(Ramos Code Signing Cert) DEFAULT RING(RAMOS.CODE.SIGNING.KEYRING))
______________________________________________________________________
5.
For each user, create a FACILITY class profile that specifies the hash algorithm and the name of the key ring to be used whenever the user digitally signs a program module. Example:
RDEFINE FACILITY IRR.PROGRAM.SIGNING.RAMOS APPLDATA(SHA256 RAMOS/RAMOS.CODE.SIGNING.KEYRING)
______________________________________________________________________
6.
Permit each user to access his own key rings, if not already authorized. Example:
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(RAMOS) ACCESS(READ)
358
Program signatures
______________________________________________________________________
7.
Activate your profile changes in the FACILITY class, as follows. v If the FACILITY class is not already active, activate and RACLIST the FACILITY class. Example:
SETROPTS CLASSACT(FACILITY) RACLIST(FACILITY)
v If the FACILITY class is already active and RACLISTed, refresh the FACILITY class. Example:
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now enabled a user to digitally sign a program using code-signing certificates that you obtained from an external certificate-authority (CA).
359
Program signatures
To verify IRRPVERS, RACF uses the IBM root CA certificate labeled STG Code Signing CA that is supplied with RACF. For a listing of the output from the RACDCERT LIST command for this certificate, see Appendix C, Listings of RACF supplied certificates, on page 735.
360
Program signatures
The variables of the APPLDATA value are defined as follows: owning-userid Specifies the user ID that owns the signature-verification key ring. /key-ring-name Specifies the fully qualified name of the signature-verification key ring. This value must be preceded by the forward slash (/). Example:
RDEFINE FACILITY IRR.PROGRAM.SIGNATURE.VERIFICATION APPLDATA(RACFADM/CODE.SIGNATURE.VERIFICATION.KEYRING)
Rule: No spaces or extraneous characters are allowed in the APPLDATA value. RACF does not check the format of the APPLDATA value when you define a IRR.PROGRAM.SIGNATURE.VERIFICATION profile. RACF typically checks the format when it verifies the signature of a signed program.
SIGAUDIT
For details about customizing the SIGVER segment using the RALTER and RDEFINE commands, see z/OS Security Server RACF Command Language Reference. For examples of customizing the SIGVER segment, see Steps for verifying a signed program on page 366. If you want to delegate authority for customizing the SIGVER segment to auditors or other users who do not have the SPECIAL attribute, see Delegating the authority for specifying signature verification options.
361
Program signatures
The following example authorizes a group called SIGNGRP to specify all signature verification options, and authorizes a second group called AUDGRP to control only the auditing options for signature verification. Example:
SETROPTS CLASSACT(FIELD) RACLIST(FIELD) RDEFINE FIELD PROGRAM.SIGVER.* UACC(NONE) PERMIT PROGRAM.SIGVER.* CLASS(FIELD) ID(SIGNGRP) ACCESS(UPDATE) RDEFINE FIELD PROGRAM.SIGVER.SIGAUDIT UACC(NONE) PERMIT PROGRAM.SIGVER.SIGAUDIT CLASS(FIELD) ID(SIGNGRP AUDGRP) ACCESS(UPDATE) SETROPTS RACLIST(FIELD) REFRESH
For a complete list of the resource name qualifiers that control each field of the SIGVER segment, see the details about the SIGVER segment in Table 18 on page 228.
362
Program signatures
ICH441I Program signature error 0x00/0x00000074 for program PROGXYZ in library LXYZR11.LIBRARY. Load processing continues. ICH450I The RACF program verification module is not loaded. Program signature verification is not available.
Steps for discovering if signed programs currently execute on your systems (optional)
Before you begin: v For background information about these steps, see Discovering if signed programs currently execute on your systems on page 362. v Important: When specifying SIGVER options for a generic program profile (such as the ** profile) for the purpose of discovering signed programs, observe the following guidelines. They are based on the assumption that while you are beginning to evaluate program verification, you have not yet planned for the impact it might have on your installation. Guidelines: Set the SIGVER options as shown in the examples in Step 1. Avoid specifying SIGREQUIRED(YES) for a generic program profile because it might cause excessive logging and failure messages to the console, based on the SIGAUDIT setting. Avoid specifying FAILLOAD(BADSIGONLY) or FAILLOAD(ANYBAD) for a generic program profile because it might fail critical programs and cause system failure. v You might need assistance from your system programmer to complete Step 4 on page 364. Optionally, perform the following steps to enable RACF to perform and log signature verification events for one or more controlled programs, without causing any program loads to fail due to signature verification failures.
1.
Modify one or more PROGRAM class profiles that protect controlled programs to enable signature verification and logging without causing any program load to fail due to a signature verification failure. Example 1:
RALTER PROGRAM MYPROG14 SIGVER(SIGREQUIRED(NO) FAILLOAD(NEVER) SIGAUDIT(ALL))
Important: When a controlled program has an alias (an alternate name that can be used to execute it), define both the real name and the alias name. This
Chapter 10. Program signing and verification
363
Program signatures
might require additional PROGRAM profiles. For an example, When a controlled program has an alias name on page 327. If your installation already defined a PROGRAM class profile called ** to control all programs residing in controlled program libraries, you might want to enable signature verification logging for all of these programs by modifying this profile. Example 2:
RALTER PROGRAM ** SIGVER(SIGREQUIRED(NO) FAILLOAD(NEVER) SIGAUDIT(ALL))
Important: For important guidelines about modifying a generic program profile, such as the ** profile shown in Example 2, see Before you begin. ______________________________________________________________________
2.
Activate your profile changes in the PROGRAM class, as follows. v If the PROGRAM class is not already active, activate the PROGRAM class. Example:
SETROPTS WHEN(PROGRAM)
v If the PROGRAM class is already active, refresh the PROGRAM class. Example:
SETROPTS WHEN(PROGRAM) REFRESH
______________________________________________________________________
3.
Display the SIGVER segment information for the profiles you modified in Step 1 and review your options. Example:
RLIST PROGRAM ** SIGVER NORACF
______________________________________________________________________
4.
(Optional) Ensure that your system programmer enables caching for program signature verification using the virtual lookaside facility (VLF) and restarts VLF. This avoids increasing load times for signed programs. For programming information, see VLF considerations for program signature verification in z/OS Security Server RACF System Programmer's Guide. ______________________________________________________________________
You have now enabled RACF to log signature verification events for one or more controlled programs, without causing any program loads to fail due to signature verification failures. Now, each time a signed program loads, RACF logs a signature verification failure to SMF and issues a failure message to the console. These failures continue until you complete Steps for preparing RACF to verify signed programs (one-time setup) on page 365 and Steps for verifying a signed program on page 366.
364
Program signatures
After an appropriate time interval during which these programs are loaded, examine the output of the SMF unload utility (IRRADU00) to discover if any controlled programs are digitally signed and if so, by whom. Once you identify the signer, obtain the signer's root CA in preparation for completing Steps for verifying a signed program on page 366. When your analysis is complete, proceed to Steps for preparing RACF to verify signed programs (one-time setup).
1.
Create a key ring for your installation to use for signature verification. Specify the ring name of your choice. Example:
RACDCERT ID(RACFADM) ADDRING(CODE.SIGNATURE.VERIFICATION.KEYRING)
Rule: Specify only uppercase characters in the key ring name. This is because you must specify the ring name in the APPLDATA field of the FACILITY profile you create in Step 4. Guideline: Do not skip this step so that you can use the virtual CERTAUTH key ring. For best performance, define your signature verification ring by issuing a RACDCERT ADDRING command. ______________________________________________________________________
2.
Add the TRUST attribute to the code-signing CA certificate that is supplied with RACF. Example:
RACDCERT CERTAUTH ALTER(LABEL(STG Code Signing CA)) TRUST
______________________________________________________________________
3.
Add the code-signing CA certificate that is supplied with RACF to the key ring you created in Step 1. Example:
RACDCERT ID(RACFADM) CONNECT(CERTAUTH LABEL(STG Code Signing CA) RING(CODE.SIGNATURE.VERIFICATION.KEYRING))
______________________________________________________________________
4.
Create a FACILITY class profile that specifies the name of the key ring you created in Step 1. Example:
RDEFINE FACILITY IRR.PROGRAM.SIGNATURE.VERIFICATION APPLDATA(RACFADM/CODE.SIGNATURE.VERIFICATION.KEYRING)
______________________________________________________________________
5.
365
Program signatures
v If the FACILITY class is not already active, activate and RACLIST the FACILITY class. Example:
SETROPTS CLASSACT(FACILITY) RACLIST(FACILITY)
v If the FACILITY class is already active and RACLISTed, refresh the FACILITY class. Example:
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________
6.
Create a PROGRAM class profile to control the program verification module called IRRPVERS and specify the signature verification options. Example:
RDEFINE PROGRAM IRRPVERS ADDMEM(SYS1.SIEALNKE//NOPADCHK) UACC(READ) SIGVER(SIGREQUIRED(YES) FAILLOAD(ANYBAD) SIGAUDIT(ANYBAD))
______________________________________________________________________
7.
Activate your profile changes in the PROGRAM class, as follows. v If the PROGRAM class is not already active, activate the PROGRAM class. Example:
SETROPTS WHEN(PROGRAM)
v If the PROGRAM class is already active, refresh the PROGRAM class. Example:
SETROPTS WHEN(PROGRAM) REFRESH
______________________________________________________________________
8.
Contact your system programmer to complete this step. a. Notify your system programmer to initialize program signature verification by running the IRRVERLD program. The IRRVERLD program loads and verifies the program verification module (IRRPVERS) and must be run on all systems in a sysplex. For programming information, see Initializing RACF verification of signed programs (IRRVERLD) in z/OS Security Server RACF System Programmer's Guide. b. Check with your system programmer to ensure that IRRVERLD successfully completed. If it did not, work with your system programmer to resolve error messages and then rerun. c. (Optional) Ensure that your system programmer enables caching for program signature verification using the virtual lookaside facility (VLF) and restarts VLF. This avoids increasing load times for signed programs. For programming information, see VLF considerations for program signature verification in z/OS Security Server RACF System Programmer's Guide. ______________________________________________________________________
When the IRRVERLD program successfully executes, you have completed the one-time setup to prepare RACF to verify signed programs. To begin verifying one of your own signed programs, proceed to Steps for verifying a signed program.
366
Program signatures
v Do not perform these steps until you complete Steps for preparing RACF to verify signed programs (one-time setup) on page 365. v Do not perform these steps to enable RACF to verify the modules of z/OS System SSL. Instead, see System SSL module verification setup in z/OS Cryptographic Services System SSL Programming. v For each signed program you want RACF to verify: Obtain or locate the root certificate-authority (CA) certificate of each code signer. - If the program was acquired from a software vendor, review the software documentation for information about obtaining the vendor's root CA certificate and adding it to RACF. Once you obtain the root CA certificate, store it in a cataloged, variable-byte (VB) MVS data set. - If the program was signed by your installation (in Step 1 of Steps for enabling a user to sign a program using RACF code-signing certificates on page 355) or signed by an external CA (in Step 1 of Steps for enabling a user to sign a program using external code-signing certificates on page 357), locate the label name of root CA certificate in the RACF database. To list all CA certificates in the RACF database, issue the RACDCERT LIST CERTAUTH command. Determine if the program is already controlled by a generic program profile. If so, create a new program profile to control this program or ensure that all programs controlled by this profile are signed. An unsigned program controlled by a profile with the SIGVER options shown in Step 3 will fail to load. If several similarly named programs can be verified using the same SIGVER options, you might choose to create a generic profile such as ABC*. If you do, ensure that no other programs are unintentionally verified based on their similar program names. Important: Do not specify the SIGVER options shown in Step 3 for the ** program profile because this might fail critical programs and lead to system failure. If you share the RACF database with other z/OS systems, determine if another version of this program runs on a shared system. If so, ensure that the version on the shared system is signed. Alternatively, control the other version with a separate program profile. Determine if the program has an alias (an alternate name that can be used to execute it). If so, control both the real name and the alias name. This might require an additional PROGRAM profile in Step 3. For an example, When a controlled program has an alias name on page 327. Perform the following steps for each signed program you want RACF to verify.
1.
Add the root CA certificate of the code signer to RACF as a trusted CA. Skip this step if you created the root CA of the code signer (in Step 1 of Steps for enabling a user to sign a program using RACF code-signing certificates on page 355), or if you obtained the root CA of the code signer from an external CA and added it to RACF (in Step 1 of Steps for enabling a user to sign a program using external code-signing certificates on page 357). a. If you obtained the root CA certificate of the code signer from a software vendor, add it to RACF, specifying the name of the data set where it is stored. Example:
367
Program signatures
RACDCERT CERTAUTH ADD(VENDOR.CA.CERT.DSN) WITHLABEL(Vendor Code Signing CA) TRUST
b. If the vendor's root CA certificate is already added to RACF, add the TRUST attribute if it is not already trusted. Example:
RACDCERT CERTAUTH ALTER(LABEL(Vendor Code Signing CA)) TRUST
______________________________________________________________________
2.
Add the root CA certificate to the key ring that your installation uses for signature verification. This is the ring you created in Step 1 of Steps for preparing RACF to verify signed programs (one-time setup) on page 365. Examples:
RACDCERT ID(RACFADM) CONNECT(CERTAUTH LABEL(Vendor Code Signing CA) RING(CODE.SIGNATURE.VERIFICATION.KEYRING)) -orRACDCERT ID(RACFADM) CONNECT(CERTAUTH LABEL(MyCompany Code Signing CA) RING(CODE.SIGNATURE.VERIFICATION.KEYRING))
______________________________________________________________________
3.
Create or modify the PROGRAM class profile that controls the signed program and specify the signature verification options. The following examples specify that the load of program MYPROG14 should fail if the signature cannot be verified for any reason and that only failures should be logged. Examples:
RDEFINE PROGRAM MYPROG14 ADDMEM(SYS1.TEST.LOADDLL//NOPADCHK) UACC(READ) SIGVER(SIGREQUIRED(YES) FAILLOAD(ANYBAD) SIGAUDIT(ANYBAD)) -orRALTER PROGRAM MYPROG14 SIGVER(SIGREQUIRED(YES) FAILLOAD(ANYBAD) SIGAUDIT(ANYBAD))
If you want to delegate authority to perform this step to a user who does not have the SPECIAL attribute, see Delegating the authority for specifying signature verification options on page 361. ______________________________________________________________________
4.
______________________________________________________________________ You have now enabled RACF to verify a signed program. If you specified the signature verification options shown in the example in Step 3, the program will fail to load if RACF cannot verify the signature for any reason. If the program is part of a critical business application, be prepared to invoke a recovery procedure to minimize the business impact.
368
369
Operating considerations
Note: If a user is logged on, and you update the user's attributes in the RACF database using ALTUSER or CONNECT, some changes might not take effect until the next time the user enters the system. However, a LISTUSER or LISTGRP command issued immediately after the change shows the new values. Some of the changes that are delayed until the user logs on again are the SPECIAL, OPERATIONS, and AUDITOR attributes and the list of connected groups examined by RACROUTE REQUEST=FASTAUTH. Example: In this example, the security administrator inadvertently creates a situation where a profile exists, but it does not have an owner. The security administrator issues DELUSER to delete a user from RACF. At the same time, the other user (who has the ADSP attribute and is logged on) creates a permanent user data set, which automatically creates a discrete data set profile. The DELUSER command performs the following operations on the RACF database: 1. Locates the user profile in the RACF database. 2. Locates any user data set profiles. 3. Ensures that the user does not have any user data sets whose high-level qualifier is his user ID. (RACF cannot delete the user profile until all of his user data sets are deleted.) 4. Deletes the user profile. 5. Updates the group profile to remove the user as an eligible member of the group. As a result of the ADSP attribute, RACF performs one operation on the RACF database: it adds a data set profile for the permanent user data set. In this example, if the user adds the new data set profile between Steps 2 and 3 of the DELUSER command processing, RACF adds a user data set profile to the RACF database. However, RACF has already deleted the user who owns the profile. This creates an ownerless profile. To prevent the creation of ownerless profiles, do not delete a user who is logged on. Instead, make sure the user is logged off and cannot log on again. If necessary, have the operator force the user off the system first. Then follow the steps described in Summary of Steps for Deleting Users on page 96.
370
Operating considerations
In an installation where no RACF database sharing occurs, issuing commands that deal with certain general resource classes or profiles can delete all stored security environments. Examples of this include activating, deactivating, or issuing SETROPTS NORACLIST(classname) or SETROPTS RACLIST(classname) REFRESH for these classes: APPCPORT APPL CONSOLE FACILITY (only when SETROPTS MLS is in effect) GTERMINL JESINPUT SECLABEL SERVAUTH TERMINAL For participants sharing a RACF database, deleting one or more stored security environments on one system causes all stored security environments to be deleted by the other participants. Thus, the administration of user profiles in a shared environment with a performance-oriented participant should be administered from that system, if possible. In all cases, any deleted security environment can be restored on demand through actions such as legitimate logging on or job submission. For information on using VLF for mapping z/OS UNIX user identifiers (UIDs) and z/OS UNIX group identifiers (GIDs) in the UNIXMAP class, see Using the UNIXMAP class and Virtual Lookaside Facility (VLF) on page 553. For more information on VLF, see z/OS MVS Planning: Operations, z/OS MVS Initialization and Tuning Guide, and z/OS MVS Initialization and Tuning Reference.
371
Operating considerations
Name SYSNONE SYSMULTI Owner IBMUSER IBMUSER UACC NONE NONE
There is a set of supplied certificate authority (CA) certificates. They are not used to authenticate CAs until you decide to use them. For more information, see Supplied digital certificates on page 618. Restrictions: The basic set of profiles described in this topic is supplied with RACF. These profiles cannot be defined by your installation and should not be deleted. They must exist at initialization time or RACF initialization will automatically add them.
After entering IBMUSER's old password (SYS1) and defining a new password, list the system-wide RACF options that are in effect:
SETROPTS LIST
Read through this list to familiarize yourself with the options that are in effect. For an explanation of what some of the options are and what they mean, see Using the SETROPTS Command on page 114. Note: Not all options are displayed at this point, because IBMUSER does not have the AUDITOR attribute. If you want to see the status of these options, grant IBMUSER the AUDITOR attribute, log off, and log on again. To see all of the options, issue SETROPTS LIST again. For a complete listing of all of the options that are available, see z/OS Security Server RACF Command Language Reference.
Important The option for the TERMINAL resource class should be specified as READ. Do not change it to NONE unless you have defined your terminals to RACF and authorized the appropriate users and groups to access them. If you specify TERMINAL(NONE) without first defining your terminals to RACF, you cannot access your terminals and, consequently, you will be locked out of your system.
372
Operating considerations
Connect RACFADM to each group and make RACFADM the owner of the group:
CONNECT RACFADM GROUP(SYS1) AUTH(JOIN) ALTGROUP SYS1 OWNER(RACFADM)
Then, revoke the IBMUSER user ID so that another user cannot use it:
ALTUSER IBMUSER REVOKE
Note: You cannot delete the IBMUSER user profile. Define another user to RACF (for example, user ID RACFAD2), to act as your assistant. Make the new user's default group SYS1, and give this assistant the SPECIAL and OPERATIONS user attributes.
Chapter 11. Operating Considerations
373
Operating considerations
ADDUSER RACFAD2 DFLTGRP(SYS1) AUTH(JOIN) SPECIAL OPERATIONS
Note: For more information, see Summary of Steps for Defining Users on page 94.
For groups GROUP1, GROUP2, and GROUP3, define a group-auditor. Connect the user to GROUP1 and give the user the group-AUDITOR attribute. Because GROUP2 and GROUP3 are owned by GROUP1, the user has auditor authority over the resources and users belonging to those groups, as well as to GROUP1. The user does not have auditor authority in any other group.
ADDUSER D01GPB DFLTGRP(GROUP1) DATA(AUDITOR G1 G2 G3) CONNECT D01GPB GROUP(GROUP1) AUDITOR
The administrator for the data management group, the data manager, is able to define DASD volumes to RACF in order to perform dump, restore, and data cleanup operations.
ADDUSER DMGJFS DFLTGRP(DATAMGT) AUTH(JOIN) CLAUTH(USER DASDVOL) DATA(DATA MGT ADM)
374
Operating considerations
Because of his or her duties, the data manager is connected to SYS1, allowing the manager to access data sets with SYS1 in their access list and to define SYS1 data set profiles to RACF. The data manager has the group-SPECIAL attribute in group SYS1.
CONNECT DMGJFS GROUP(SYS1) AUTH(CREATE) UACC(READ) SPECIAL
375
Operating considerations
DLIB data SYS1.UADS PARMLIB v Sensitive data Corporate trade secrets Research results Employee data Customer or client lists v Production libraries PROCLIBs LOADLIBs v Application development programs and data Source Load libraries Documentation v User data JCL Documentation Source Load modules
376
Operating considerations
System Report Group Tree Report Program Properties Table Report RACF Authorized Caller Table Report RACF Class Descriptor Table Report RACF Exits Report
RACF Global Access Checking Table Report RACF Started Procedures Table Report RACF User Attribute Report
These reports can help you (1) check the initial steps you took to establish system security, and (2) make additional security checks periodically. A short description of each report follows. See z/OS Security Server RACF Auditor's Guide for more information on these reports and how to invoke the data security monitor. The System Report The system report contains information such as the identification and model of the processor complex, and the name, version, and release of the operating system. This report also specifies the RACF version and release number and whether RACF is active. If RACF is inactive, DSMON prints a message that tells you whether RACF was not activated at IPL or was deactivated by the RVARY command. The Group Tree Report This report lists, for each requested group, all of its subgroups, all of the subgroups' subgroups, and so on, as well as the owner of each group listed in the report, if the owner is not the superior group. You can use the group tree report to examine the overall RACF group structure for your system. You can also determine the scope of the group for group-related user attributes (group-SPECIAL, group-OPERATIONS, and group-AUDITOR). The Program Properties Table Report This report lists all of the programs in the MVS program properties table
377
Operating considerations
(PPT). The report also indicates, for each program, whether the program is authorized to bypass password protection and whether it runs in a system key. You can use the program properties table report to verify that only those programs that the installation has authorized to bypass password protection are, in fact, able to do so. Such programs are normally communication and database control programs, and other system control programs. You can also verify that only those programs that the installation has authorized are able to run in a system key. The RACF Authorized Caller Table Report This report lists the names of all of the programs in the RACF authorized-caller table. The programs in this table are authorized to issue the RACROUTE REQUEST=VERIFY macro to perform user verification, or the RACROUTE REQUEST=LIST macro to load profiles into main storage. You can use this report to verify that only those programs that are supposed to be authorized to modify an ACEE (accessor environment element) are able to issue the RACROUTE REQUEST=VERIFY. This verification is a particularly important security requirement because the ACEE contains a description of the current user. This description includes the user ID, the current connect group, the user attributes, and the group authorities. A program that is authorized to issue the RACROUTE REQUEST=VERIFY could alter the ACEE to simulate any user. You can also use this report to verify that only those programs that are supposed to be authorized to access profiles are able to issue the RACROUTE REQUEST=LIST. Because profiles contain complete descriptions of the characteristics that are associated with RACF-defined entities, you must carefully control access to them. The RACF Class Descriptor Table Report This report lists, for each general resource class in the class descriptor table (CDT), the class name, the default UACC, whether the class is active, whether auditing is being done, whether statistics are being kept, and whether OPERATIONS attribute users have access. You can use the class descriptor table report to determine which classes (besides DATASET) are defined to RACF and active, and therefore can contain resources that RACF protects. The RACF Exits Report This report lists the names of all of the installation-defined RACF exit routines and specifies the size of each exit routine module. You can use the RACF exits report to verify that the only active exit routines are those that your installation has defined. The existence of any other exit routines might indicate a system security exposure, because RACF exit routines can be used to bypass RACF security checking. Similarly, if the length of an exit routine module differs from the length of the module when it was defined by your installation, the module might have unauthorized modifications. The RACF Global Access Checking Table Report This report lists, for each resource class in the global access table, all of the entry names and their associated resource access authorities.
378
Operating considerations
Because global access checking allows anyone to access the resource at the associated access authority, you should verify that each entry has an appropriate level of access authority. The RACF Started Procedures Table Reports RACF generates two reports about the started procedures table (ICHRIN03). v If the STARTED class is active, the report uses the STARTED class profiles and contains the TRACE attribute. The trace uses module ICHDSM00. v If the STARTED class is not active, the trace uses the installation replaceable load module, ICHRIN03. The reports list the procedure name, the user ID and group name to be associated with the procedure, and whether the procedure is privileged or trusted. You can use the report to determine which started procedures are defined to RACF, and which have the privileged attribute. If a started procedure is privileged or trusted, it bypasses all REQUEST=AUTH and REQUEST=FASTAUTH processing (unless the CSA or PRIVATE operand was specified on REQUEST=AUTH), including checks for security classification of users and data. The Selected User Attribute Report The selected user attribute report: v Lists all RACF users with the SPECIAL, OPERATIONS, AUDITOR, or REVOKE attributes v Specifies whether they possess these attributes on a system-wide (user) or group level v Indicates whether they have any user ID associations You can use this report to verify that only those users who need to be authorized to perform certain functions have been assigned the corresponding attribute. Selected User Attribute Summary Report The selected user attribute summary report shows the number of installation-defined users and totals for users with the SPECIAL, OPERATIONS, AUDITOR, and REVOKE attributes, at both the system and group level. You can use this report to verify that the number of users with each of these attributes, on either a system or group level, is the number that your installation wants. In particular, you should make sure that you have assigned the SPECIAL attribute (on a system level) to at least one user and the AUDITOR attribute (on a system level) to at least one user. The Selected Data Sets Report This report lists the names of selected system data sets and, for each data set, specifies the criterion for selection, the serial number of the volume on which it resides, whether the data set is RACF-indicated or RACF-protected, and the universal access authority (UACC). If a data set meets more than one selection criterion, there is a separate entry in the report for each criterion. The selected data sets include system data sets, the MVS master catalog, user catalogs, the RACF primary and backup data sets, and user-specified data sets. You can use the selected data sets report to determine which of these data sets are protected by RACF and which are not. You can also check whether
Chapter 11. Operating Considerations
379
Operating considerations
the UACC associated with each of the data sets is compatible with your installation's resource access control requirements. To reduce impact to system performance during the running of this report, you can limit or disable the listing of user catalogs. To do this, create a FACILITY class profile that protects the ICHDSM00.SYSCAT resource. When this resource is protected and the DSMON user does not have READ access to it, DSMON suppresses the listing of user catalogs and issues message ICH66134I, indicating the insufficient authority. Example: To disable user catalog listing for the Selected Data Sets Report:
RDEFINE FACILITY ICHDSM00.SYSCAT UACC(NONE) PERMIT ICHDSM00.SYSCAT CLASS(FACILITY) RESET
380
Operating considerations
SECMODEL parameter: When creating new data sets or tape volumes that require a new discrete profile, specify the SECMODEL parameter to copy an existing data set profile to the new discrete data set profile. Note: If the data set being created is adequately covered by a generic profile, do not use the SECMODEL parameter because this forces the creation of a discrete profile. v On the OUTPUT statement: DPAGELBL parameter: With PSF for z/OS is installed, use the DPAGELBL parameter to indicate whether the system should print information related to the job's security label on each page of printed output. SYSAREA parameter: use the SYSAREA parameter to indicate whether the system should reserve an area on each page of printed output for information related to the security label.
Restarting Jobs
When a job automatically restarts and returns to a previous checkpoint, RACF repeats user verification and access authorization checking. If the job changed the password on the JOB statement, RACF uses the new password for user verification. But meanwhile, if the PASSWORD command or another job changes the password, RACF detects an invalid password and fails the job. When you submit a job for a deferred restart, you can specify your current password on the JOB statement, or use JES user ID propagation and avoid the problem of exposing your password on the JOB statement. For either an automatic or deferred restart, the user's current access authority is checked (the access authority at the time of the restart), and is used for all resources the job tries to access.
381
Operating considerations
It is also possible for the operator to display password information when displaying real storage at the console. Again, the installation should monitor the operator's activities to ensure that passwords remain secure. You can monitor the operator by creating profiles for the appropriate commands in the OPERCMDS class, and requesting auditing in the OPERCMDS profiles. If the operator has the OPERATIONS attribute, you can request additional logging by issuing the SETROPTS OPERAUDIT command. This causes logging of all activity that was allowed because the user had the OPERATIONS attribute. Also, the JES3 dump core utility allows users to view stored passwords. You should restrict access to the JES3 dump core utility. Note: JES3 allows system programmers to specify a password for the JES3 dump core utility (not a RACF password). This password is stored in clear text in a JES3 module. You should protect this module from unauthorized use. RACF commands that contain sensitive values, such as passwords, should not be issued on the operator's console because sensitive information will appear in SYSLOG. Also, make sure you protect the GTF trace data set if you have SET TRACE active because sensitive information might appear in the trace records that are produced. You should restrict access to SVC dumps and standalone dumps, which might contain password information. If users need to submit jobs for other users, activate the SURROGAT class and define profiles so that users can allow other users to submit jobs for them. In this way, a user does not need to know anyone else's password. For more information, see Surrogate Job Submission on page 485. If JES support for user ID propagation is installed, batch jobs submitted by TSO users do not need any RACF identification information (user ID, group name, and password) in their JOB statements, as long as the following assumptions are true: v The TSO user is RACF-defined. v The job is submitted under the user's own user ID. v If the job is submitted on a processor that is part of an NJE (networking job entry) network, the job runs on the home (user's) node. Note: If a user specifies //DD DATA and neglects to delimit the data (with /* or DLM specification) when submitting a batch job through a card reader or RJE work station, subsequent jobs are read as part of the user's data until a delimiter is read. You should be aware that if this situation occurs, RACF user IDs, group names, passwords, and resource names from the following job's JCL become available to the user who failed to supply a delimiter. The installation should use SMF or JES installation-written exit routines to restrict the use of the //DD DATA statement to reduce this security exposure.
382
Operating considerations
v Users who enter the system using shared RACF-defined user IDs without the RESTRICTED attribute, can access the RACF-protected resource with the specified level of universal access. These users include those who enter the system: 1. By presenting digital certificates that are not registered to RACF, who are assigned shared user IDs based on certificate name filtering. 2. By accessing application servers that allow users to enter the system without identifying themselves, who are assigned shared user IDs such as PUBLIC or ANONYMOS. Note: For more information, see Defining restricted user IDs on page 91. v RACF-defined users who have access authority of NONE can access the resource with the specified level of universal access by submitting a batch job without specifying the USER operand on the JCL JOB statement. The entry ID(*) can be added to the access list to ensure that only RACF-defined users (who do not have the RESTRICTED attribute) can access a protected resource. For more information, see Using ID(*) on the Access List on page 9. These accesses to RACF-protected resources can be prevented using the SETROPTS BATCHALLRACF and XBMALLRACF options, or by the REQUEST=AUTH preprocessing exit routine that fails REQUEST=AUTH processing for users who have entered the system using the RACF default user ID. If JES user ID propagation is not in effect, this REQUEST=AUTH processing requires RACF-defined users to identify themselves (using the USER operand) on batch jobs that access RACF-protected resources and prevents non-RACF users from accessing RACF-protected resources.
Failsoft Processing
During failsoft processing (when the RACF database is not active), RACF uses global access checking tables, REQUEST=LIST in-storage profiles, or a supplied profile, if any of these are present, to process resource access checking requests.
383
Operating considerations
Note: RACF does not perform generic profile checking, because a generic profile might allow access to a resource that an existing discrete profile already protects. If that profile had been retrieved, RACF would not have allowed access to the resource. RACF calls REQUEST=AUTH and REQUEST=DEFINE preprocessing installation exits during failsoft processing. (RACF does not call postprocessing exits.) This action frees the installation to define its own version of failsoft processing. By defining its own version of failsoft processing, an installation can allow or deny access to a resource or permit normal failsoft processing to continue. During failsoft processing, the logging that your installation has specified continues as when RACF is active. In addition, RACF logs all accesses that the operator allows or denies. If no global access checking tables are present, no REQUEST=LIST in-storage profiles are present, and no profile has been supplied, the preprocessing installation exits are called first. Then failsoft processing continues as follows: 1. RACROUTE REQUEST=AUTH: v For started procedures, RACF issues an information message to the operator to describe the name and access mode of the resource. If the started procedure does not have the privileged attribute through the RACF started procedures table, RACF issues an operator intervention message to request permission to allow access to the resource. v For TSO sessions, RACF issues the information message and, if the high-level qualifier of the data set name matches the user's TSO user ID, RACF allows access to the resource. If the high-level qualifier does not match the user's TSO user ID, RACF also issues an operator intervention message to request permission to allow access to the resource. If the system operator gives a negative response to a request for access, the request is denied, with, in some cases, an ABEND. v For all other environments, RACF issues the information message, followed by the operator intervention message. If the system operator gives a negative response to a request for access, the request is denied. 2. REQUEST=DEFINE: RACF issues an operator message to indicate that REQUEST=DEFINE has been issued and that the request is allowed. If the user had the ADSP attribute, or if PROTECT=YES was specified on the JCL for the data set, the resource can be RACF-indicated without a RACF discrete profile being created. You can use the operator message or SMF log records at a later time to determine whether the specified resource is in the RACF database. If it is not, use the ADDSD or RDEFINE command to create a profile for the resource.
384
Operating considerations
385
Operating considerations
authority to the volumes that hold the data sets containing the RACF database. For more information, see DASD Volume Authority on page 185. Note: If making a copy of the database for the purpose of running IRRDBU00, be sure to protect the copy as you would the database itself, including the use of ERASE.
386
This topic describes tasks related to working with and maintaining the RACF database using the database unload utility (IRRDBU00) and the remove ID utility (IRRRID00). For information about using the SMF data unload utility (IRRADU00), see z/OS Security Server RACF Auditor's Guide.
387
Database utilities
The RACF database holds an installation's security data. This data is used to control access to resources, verify users, and generate a variety of reports dealing with system usage and integrity. Standard reports are provided and used to determine whether the installation's security objectives are being met.
Diagnosis
You can use the IRRDBU00 utility for some diagnosis functions. Because this utility reads every profile in the RACF database, it also validates such profile data as lengths and count fields that are needed to read each profile successfully. This validation can be used to help identify a profile in error. If IRRDBU00 encounters a profile in error, it might issue message IRR67092. This message contains an ICHEINTY return and reason code and also the entry name of the profile being processed. If a profile abends or ends in another fashion without receiving this message, you might also be able to determine the profile in error. To do this, look in the output data set (OUTDD) and find the last profile (at the bottom), that was unloaded. It is likely that this profile is okay. However, the next profile in the database (in the same class) could possibly be the profile in error, if indeed a bad profile is causing the utility to end. The next profile in the database can be found by examining the output of an IRRUT200 utility run (specifically, INDEX FORMAT), or by using the block update command (BLKUPD) to examine an online database. For more information on diagnosing and correcting the RACF database, see z/OS Security Server RACF System Programmer's Guide and z/OS Security Server RACF Diagnosis Guide.
Performance Considerations
IRRDBU00 processes either a copy of the RACF database, a backup RACF database, or the active RACF database. You must have UPDATE authority to the
388
Database utilities
database. It is recommended that you run the utility against a recent copy of your RACF database using the NOLOCKINPUT option. While processing, IRRDBU00 serializes on one profile at a time (this is also the case in IRRUT100 processing). When IRRDBU00 has finished copying a profile, it releases the serialization. Consider this possible impact to performance if you select your active RACF database as input. Running IRRDBU00 against a copy of the database causes the least impact to system performance. Note: If your system is enabled for sysplex communication RACF serializes database accesses by using global resource serialization instead of hardware RESERVEs when the system is operating in data sharing mode or in read-only mode and unloading an active database. An installation can choose to unload its database with one utility invocation, or if it has split its database, it can unload individual pieces of its database with separate utility invocations. These utility invocations can execute concurrently.
Operational Considerations
The output records of IRRDBU00 are determined by the structure of the RACF database. The utility unloads all profiles in the database. It does not unload all fields in each profile and treats some fields in a special way. v Encrypted and reserved fields are not unloaded. v Fields that contain installation data are unloaded exactly as they appear in the database, with the exception of CSDATA fields. v Fields in the CSDATA segment are unloaded according to the data type defined within each field. v When possible, fields that contain UTF-8 data are translated to EBCDIC using the IBM-1047 code page. When not possible, these values appear in hexadecimal format. For details, see the note in Table 27 on page 404. The maximum length of unloaded data for most fields is 255 bytes. However, the entire length of data is unloaded for the following fields: v Up to 1023 bytes for the HOME and PROGRAM fields in the OMVS segment of a user profile. v Up to 1023 bytes for the HOME, PROGRAM, and FSROOT fields in the OVM segment of a user profile. v Up to 1100 bytes for each field in the CSDATA segment of a user or group profile. See z/OS Security Server RACF Macros and Interfaces for the conversion rules of the database unload utility. The database unload utility uses both the supplied class descriptor table (ICHRRCDX) and the installation-defined class descriptor table (ICHRRCDE) as it unloads profiles. If your database is imported from another system, you might also have to import ICHRRCDX and ICHRRCDE. Classes are unloaded only if there is an entry for them in ICHRRCDE or ICHRRCDX on the system running the utility, and the range table on that system correctly identifies the data set where the profiles are located. If the current range table does not match the database being unloaded, you must run the IRRDBU00 utility multiple times, specifying only one data set of the database as INDD1 for each run.
389
Database utilities
The database unload utility uses the supplied class descriptor table (ICHRRCDX), the installation-defined class descriptor table (ICHRRCDE), and the dynamic class descriptor table, as it unloads profiles. If your database is imported from another system, you might also have to import ICHRRCDX and ICHRRCDE and create new dynamic classes. The database unload utility unloads a class only when both of the following conditions are true: 1. There is an entry for the class in either the ICHRRCDE, ICHRRCDX, or the dynamic class descriptor table on the system running the utility 2. The range table on the system running the utility correctly identifies the data set where the profiles are located. If the current range table does not match the database being unloaded, you must run the IRRDBU00 utility multiple times, specifying only one data set of the database as INDD1 for each run. To correlate the RACF profiles with the data unloaded by the utility, see z/OS Security Server RACF Macros and Interfaces.
SYSPRINT DD
390
Database utilities
The n in INDDn refers to the location of the data set name in the data set name table (ICHRDSNT). If you have not split your RACF database, you only have to specify INDD1. If you have split your RACF database, you can unload each part with a separate utility invocation and specify INDD1 for the input data set, or you can unload all of the parts with one utility invocation. Note: When unloading all parts, specify INDD statements in the same order as they appear in the RACF data set name table. For example: INDD1 INDD2 First data set name Second data set name
See Input Data Set Specification. OUTDD DD Defines the single sequential output data set. The output of IRRDBU00 is a set of variable length records. The size of the output data set is roughly estimated as twice the size of the used portion of the input data set, but you must also consider the type of profiles in your database. For example, profiles that have variable length fields, such as installation data, require more space when they are unloaded, because the maximum size of the field is unloaded (up to 255 bytes or, for the HOME and PROGRAM fields, up to 1023 bytes). Determine the percentage of space your database is using by running the IRRUT200 utility, and use that percentage to guide you in allocating the output file. For example, if your database has 100 cylinders allocated and you are using 35% of it, you need approximately 70 cylinders for your output file. OUTDD is a variable blocked data set (RECFM=VB). The LRECL for the output data set must be at least as large as the largest record created by IRRDBU00. Guideline: Choose an LRECL value of at least 4096 so that if the size of the output records increases when new fields are added, you do not have to change your data set allocations.
391
Database utilities
IRRDBU00 Example
In this example, the database unload utility processes a database that has been split into three parts. The job control language (JCL) statements that invoke the utility are:
//USER01 //UNLOAD //SYSPRINT //INDD1 //INDD2 //INDD3 //OUTDD JOB EXEC DD DD DD DD DD Job card... PGM=IRRDBU00,PARM=NOLOCKINPUT SYSOUT=* DISP=SHR,DSN=SYS1.RACFDB.PART1.COPY DISP=SHR,DSN=SYS1.RACFDB.PART2.COPY DISP=SHR,DSN=SYS1.RACFDB.PART3.COPY DISP=SHR,DSN=SYS1.RACFDB.FLATFILE
Note: You must specify a parameter in the PARM field on the EXEC statement of the step executing IRRDBU00.
Allowable Parameters
When you run the database unload utility, one of the following parameters must be specified: NOLOCKINPUT, LOCKINPUT, or UNLOCKINPUT. You can abbreviate the parameter to N, L, or U, respectively. For the least impact to system performance, use a copy of your RACF database as input and specify the NOLOCKINPUT parameter. When your system is RACF is enabled for sysplex communication and RACF is running in read-only mode, the only parameter allowed for IRRDBU00 is NOLOCKINPUT. Using the backup copy of the RACF database is allowed. Using an active copy of the RACF database can affect system performance and it is not recommended.
Important If you use NOLOCKINPUT on the active database, your unloaded database might contain inconsistencies.
392
Database utilities
v Specify a correct password or password phrase after specifying an incorrect one v Successfully complete the first logon of the day If you run IRRDBU00 and use LOCKINPUT, any activity that tries to update the RACF database (such as users logging on and changing passwords or batch jobs allocating new data sets requiring the creation of RACF profiles) fails with either an ABEND483 RC50 or ABEND485 RC50. When using LOCKINPUT against an active database, do not schedule maintenance that runs past midnight. If RACF is not running in data sharing mode and the RACF database remains locked past midnight, new jobs cannot be submitted and users cannot log on unless you disable the gathering of logon statistics by issuing a SETROPTS NOINITSTATS command. All steps that require a locked database must be performed on the same calendar day. This is because RACF updates both primary and backup logon statistics each day. The database unload utility unlocks the RACF database after processing with LOCKINPUT specified if the database was unlocked when the utility started. The unload utility output is for report generation and does not replace the input database, which is your primary, active, RACF database. This is different from the IRRUT400 utility, which keeps the input database locked and creates a new output database. This is done to maintain integrity between the input database and the output database.
Sort/Merge Programs
The database unload utility processes all of the profiles in the input database. If you want a subset of the output records, you can use a standard utility such as DFSORT to select them. For example, the following DFSORT control statements select the Group Basic Data records (type 0100) and User Basic Data records (type 0200). All other record types are excluded.
SORT FIELDS=(5,4,CH,A,10,20,CH,A) INCLUDE COND=(5,4,CH,EQ,C0100,OR,5,4,CH,EQ,C0200) OPTION VLSHRT
393
Database utilities
and ICETOOL statements for report formatting for a wide variety of reports. The IEBUPDTE utility processes the IRRICE member and creates a partitioned data set (PDS) that contains two PDS members for each report. The two members contain: 1. The report format 2. The record selection criteria Attention: For information about the RACF database unload utility (IRRDBU00), see Using the RACF Database Unload Utility (IRRDBU00) on page 388. For information about the SMF data unload utility (IRRADU00), see z/OS Security Server RACF Auditor's Guide. The Report Format: The report format has a 14 character name (for example, UGRP). It contains the ICETOOL statements that control report format and record summary information, such as SORT, COPY, DISPLAY, and OCCURS statements. An example of a report format member is shown in Figure 10. This is the report format member UGRP, which is the report format for the Users With Extraordinary Group Authorities report.
********************************************************************** * Name: UGRP * * * * Find all of the user IDs which have extraordinary RACF privileges, * * such as SPECIAL, OPERATIONS, and AUDITOR at the group level. * ********************************************************************** SORT FROM(DBUDATA) TO(TEMP0001) USING(RACF) DISPLAY FROM(TEMP0001) LIST(PRINT) PAGE TITLE(UGRP: Users With Extraordinary Group Authorities) DATE(YMD/) TIME(12:) BLANK ON(10,8,CH) HEADER(User ID) ON(19,8,CH) HEADER(Group ID) ON(88,4,CH) HEADER(Group Special) ON(93,4,CH) HEADER(Group Operations) ON(113,4,CH) HEADER(Group Auditor) Figure 10. Member UGRP: Users with extraordinary group authoritiesreport format statements
See z/OS Security Server RACF Macros and Interfaces for the conversion rules of the database unload utility. The Record Selection Criteria: The name of the member containing the record selection criteria is the report member name followed by CNTL (e.g. UGRPCNTL). Record selection is performed using DFSORT control statements, such as SORT and INCLUDE. The SORT command is used to select and sort records. The INCLUDE command is used to specify conditions required for records to appear in the report. An example of a record selection member is shown in Figure 11 on page 395. This is the report selection member UGRPCNTL, which contains the selection criteria for the Users With Extraordinary Group Authorities report. In this example, we are including only User Connect Data records (record type 0205) when the user has the group-SPECIAL, group-OPERATIONS or group-AUDITOR attribute.
394
Database utilities
SORT FIELDS=(10,08,CH,A) INCLUDE COND=(5,4,CH,EQ,C0205,AND, (88,3,CH,EQ,CYES,OR, 93,3,CH,EQ,CYES,OR, 113,3,CH,EQ,CYES)) OPTION VLSHRT Figure 11. Member UGRPCNTL: Users with extraordinary group authoritiesrecord selection statements
See z/OS Security Server RACF Macros and Interfaces for record format information for the output records of the IRRADU00 and IRRDBU00 utilities. See z/OS DFSORT Application Programming Guide for the complete details of the DFSORT statements.
Important note about column numbers Both IRRADU00 and IRRDBU00 create records that are variable-length. Variable-length records have a four-byte record descriptor word (RDW) describing the length of the record. DFSORT considers the RDW to be part of the selectable record columns. This means that you must add 4 to any of the field positions identified for the IRRADU00 and IRRDBU00 records described in z/OS Security Server RACF Macros and Interfaces. In the example in Figure 11, the IRRDBU00 field for record type 0205 is defined in z/OS Security Server RACF Macros and Interfaces as beginning at record position 1. We add 4 to this position to get 5, the value that we must use in both the DFSORT INCLUDE statement for record selection and the ICETOOL ON operand to select the fields for the report. Using the RACFICE Procedure to Generate Reports: You can invoke the ICETOOL utility with the RACFICE procedure contained in the IRRICE member of SYS1.SAMPLIB. It simplifies the JCL required to execute ICETOOL reports and contains JCL symbolic variables that represent the input to the RACFICE procedure. These variables are: DBUDATA ADUDATA REPORT Output of IRRDBU00 that is being used as input Output of IRRADU00 that is being used as input The name of the report that is being generated See Reports Based on the Database Unload Utility (IRRDBU00) on page 396 for a list of the reports based on IRRDBU00 output that are shipped with this support. See z/OS Security Server RACF Auditor's Guide for a list of the reports based on IRRADU00 output that are shipped with this support. See Creating Customized Reports on page 398 for information about creating your own reports. You do not need to specify each of these variables every time you execute the RACFICE procedure. For example, if you specify the default IRRDBU00 and IRRADU00 data sets in the RACFICE procedure, you create a report (shown in Figure 12 on page 396) that lists all user IDs with extraordinary RACF group authorities with the following JCL:
//jobname JOB Job card... //stepname EXEC RACFICE,REPORT=UGRP
395
Database utilities
If the default IRRDBU00 or IRRADU00 data sets are not correct, you can override them. For example, if the IRRDBU00 output is in the data set USER01.TEST.IRRDBU00 and the IRRADU00 output is in the data set USER01.TEST.IRRADU00, you should enter:
//jobname // // //stepname JOB SET SET EXEC Job card... ADUDATA=USER01.TEST.IRRADU00 DBUDATA=USER01.TEST.IRRDBU00 RACFICE,REPORT=UGRP
1- 1 -
UGRP: Users With Extraordinary Group Authorities Group ID -------GROUP1 GROUP1 GROUP1 GPCONNEC GPCONNEC GPCONNEC
99/04/13
Group Special Group Operations Group Auditor ------------- ---------------- ------------NO NO YES NO YES NO YES NO NO NO NO YES NO YES NO YES NO NO
Reports Based on the Database Unload Utility (IRRDBU00): The following reports are based on the output of IRRDBU00. You can find a sample of each report in SYS1.SAMPLIB. Name ALDS Description Data set profiles which have IDs on the standard access list with ALTER authority. Value: Identifies users who can alter the access list of the profile. Users who have explicit RACF remote sharing facility (RRSF) associations defined. Value: Identifies users who can direct commands. Discrete general resource profiles with generic characters. Value: Finds profiles which aren't protecting what you think that they are protecting. Count of user's connections, flagging those users with more than x connections. Value: Helps find a performance bottleneck caused by excessive group connections. Count of general resource profiles. Value: Identifies basic characteristics of the RACF database. Count of user, group, and data set profiles. Value: Identifies basic characteristics of the RACF database. User IDs with group authorities above USE. Value: Identifies users with additional privileges. Group names of all universal groups, listing their owners and creation dates. Value: Identifies universal groups that might have members who do not appear in the group's member list. z/OS UNIX GIDs that are used more than once. Value: Identifies z/OS UNIX groups that are sharing authority characteristics. User IDs of all members of a group, including a universal group, listing the owner of each connection, and group-related user
ASOC
BGGR
CCON
GIDS GRPM
396
Database utilities
attributes for each member. Value: Provides a complete member listing for universal groups, which is not available using the LISTGRP command. IDSC Data set conditional access list entries with an ID(*) entry of other than NONE. Value: Identifies data set profiles that allow any RACF-authenticated user to access data. Data set standard access list entries with an ID(*) entry of other than NONE. Value: Identifies data set profiles that allow any RACF-authenticated user to access data. General resource conditional access list entries with an ID(*) entry of other than NONE. Value: Identifies general resource profiles that allow any RACF-authenticated user to access data. General resource standard access list entries with an ID(*) entry of other than NONE. Value: Identifies general resource profiles that allow any RACF-authenticated user to access data. User IDs that have NOINTERVAL specified as their password interval. Value: Identifies users who are not required to change their passwords. User IDs that have an OMVS segment defined. Value: Identifies users who can use z/OS UNIX with a non-default UID. Program class profiles with specific program names that have 'MAIN' or 'BASIC' for the APPLDATA. Value: Identifies programs that can be used as first program in ENHANCED program security mode. z/OS UNIX superusers (UID of zero). Value: Identifies users who have extraordinary privileges within the z/OS UNIX environment. Data set profiles with UACCs other than NONE. Value: Identifies data set profiles that allow any user to access data. General resource profiles, excluding profiles in the DIGTCERT class, with UACCs other than NONE. Value: Identifies general resource profiles that allow any user to access data. User IDs with extraordinary global authorities. Value: Identifies users with extraordinary RACF authority. User IDs with extraordinary RACF group authorities. Value: Identifies users with extraordinary RACF authority. z/OS UNIX UIDs that are used more than once. Value: Identifies z/OS UNIX users who are sharing authority characteristics. User IDs which are currently revoked. Value: Identifies users who have had a revocation performed. Data set profiles that are in WARNING mode. Value: Identifies data set profiles that are processing in WARNING mode. General resource profiles that are in WARNING mode. Value: Identifies general resource profiles that are processing in WARNING mode.
IDSS
IGRC
IGRS
NWPI
OMVS PCAM
SUPU
UADS UAGR
397
Database utilities
Name $CFQG Description A count of the number of fully qualified generic profiles that are defined for each high-level qualifier (HLQ). Value: Identifies users who have defined an excessive number of fully qualified generic profiles. A count of the number of generic profiles that are defined for each high-level qualifier (HLQ). Value: Identifies a potential performance bottleneck. Identifies the user profiles which have been created within the past 90 days. Value: Shows recent administrative activity.
$CHLQ
$ULAST90
Note that these reports ($CFQC, $CHLQ, and $ULAST90) are standalone reports and are not run using the RACFICE PROC. Creating Customized Reports: You can create your own reports using the RACFICE procedure by following these steps: 1. Identify the records that you want for the report. a. Define the DFSORT statements for the record selection criteria. b. Place them in the RACFICE data set with a unique member name consisting of a 14 character report identifier followed by CNTL. If there is an existing report that has similar selection criteria, use it as a model. For example, if you want to report all the access records created when users PATTY, MAXINE, and LAVERNE accessed resources, you need to create DFSORT selection statements that look like Figure 13 and store them in your RACFICE report data set as the PMLCNTL record selection criteria.
INCLUDE COND=(63,8,CH,EQ,CPATTY,OR, 63,8,CH,EQ,CMAXINE,OR, 63,8,CH,EQ,CLAVERNE) OPTION VLSHRT Figure 13. Customized record selection criteria
Note the similarity of this record selection criteria to the Users With Extraordinary Group Authorities Report record selection criteria shown in Figure 11 on page 395. See z/OS DFSORT Application Programming Guide for the complete details of the DFSORT statements. 2. Identify the report format you want to use. a. Define the ICETOOL statements for the report format. b. Place them in the RACFICE data set with a 14 character report identifier that you chose. If there is an existing report that has similar report format, use it as a model. For example, if you wanted your report to contain the user ID, job name, date, time, and status of the access you could use the ICETOOL report statements shown in Figure 14 on page 399, and store them in your RACFICE report data set as the PML report format.
398
Database utilities
COPY FROM(ADUDATA) TO(TEMP0001) USING(RACF) DISPLAY FROM(TEMP0001) LIST(PRINT) PAGE TITLE(Patty, Maxine, and Lavernes Accesses) DATE(YMD/) TIME(12:) BLANK ON(63,8,CH) HEADER(User ID) ON(5,8,CH) HEADER(Event) ON(12,8,CH) HEADER(Qualifier) ON(23,8,CH) HEADER(Time) ON(32,10,CH) HEADER(Date) ON(184,8,CH) HEADER(Job Name) Figure 14. Customized report format
Note the similarity of this report format to the Users With Extraordinary Group Authorities report format shown in Figure 10 on page 394. For complete details on the ICETOOL statements, see z/OS DFSORT Application Programming Guide. 3. Update the report JCL to invoke the RACFICE procedure with the 14 character report identifier you chose, as shown in Figure 15.
//jobname JOB Job card... //stepname EXEC RACFICE,REPORT=PML Figure 15. Customized report JCL
Creating a RACFV ARS member report: Because the output of the RLIST command lists the members of a general resource profile in alphabetical order, it might be helpful to list the members in the order in which they occur in the profile. To do this, you might use the ICETOOL to format the report. The following statement samples can be used to list the members of a RACFVARS class profile called &PAYTAPE. The following DFSORT statements select the needed record (type 0503) from the IRRDBU00 output records:
INCLUDE COND=(10,3,CH,EQ,C&PAYTAPE,AND, 257,8,CH,EQ,CRACFVARS,AND, 5,4,CH,EQ,C0503) OPTION VLSHRT
399
Database utilities
Relational Databases
Much of the function of the database unload utility is not realized until the data it creates is loaded into a relational database management system (DBMS) such as DB2.
400
Database utilities
The first three steps are initial setup, and you can choose to run them once. When you get new data to import into the DB2 database, you delete your current table data. You then reload and reorganize your tables and create the performance statistics. The following sections show examples of the DB2 utility input for these functions. Creating a DB2 database for unloaded RACF data: A DB2 database names a collection of table spaces. The following SQL statement creates a DB2 database for the output of the database unload utility:
CREATE DATABASE databasename
where databasename is supplied by the user. Creating a DB2 table space: A table space is one or more data sets in which one or more tables are stored. Figure 16 contains examples of SQL statements that create a table space. There are other methods of allocating a table space. For details, see the DB2 documentation. Member RACDBUTB in SYS1.SAMPLIB contains statements that create a table space.
CREATE TABLESPACE tablespacename IN databasename LOCKSIZE TABLESPACE SEGSIZE 64 PCTFREE 0 USING STOGROUP storagegroup PRIQTY 2000 SECQTY 500 CLOSE NO ; Figure 16. Sample SQL utility statements: Defining a table space
The user must supply the name of the table space (tablespacename) and the storage group (storagegroup). The sample shows a value of 64 for SEGSIZE, 2000 for PRIQTY, and 500 for SECQTY. The samples in RACDBUTB put all of the tables into one table space. The sample also suggests using a segment size because segmented table spaces improve performance. Users might want to define their own table spaces rather than use table spaces that are defined by the storage group. Installations have a number of other options, such as the number of table spaces to use, the type of spaces, and the security for the data. They might want to keep the number of tables per table space fairly small for better performance and might want to consider putting the larger tables into separate table spaces. Creating the DB2 tables: After the database and the table space are created, SQL statements that define the tables are executed. Figure 17 on page 402 contains an example of the SQL statements that are required to create a table for the Group Basic Data record of the database unload utility. Member RACDBUTB in SYS1.SAMPLIB contains examples that create separate tables for each record type that is produced by the database unload utility. The user must supply the user ID (userid).
401
Database utilities
CREATE TABLE userid.GROUP_BD ( GPBD_NAME CHAR(8) NOT GPBD_SUPGRP_ID CHAR(8), GPBD_CREATE_DATE DATE, GPBD_OWNER_ID CHAR(8) NOT GPBD_UACC CHAR(8) NOT GPBD_NOTERMUACC CHAR(1) NOT GPBD_INSTALL_DATA CHAR(254), GPBD_MODEL CHAR(44) ) IN databasename.tablespacename ;
Creating the DB2 indexes: DB2 performance improves with the use of indexes. Member RACDBUTB in SYS1.SAMPLIB creates an index for every primary key and every foreign key identified in the record types. Figure 18 contains sample statements to create the indexes for the Group Basic Data record.
CREATE UNIQUE INDEX userid.GROUP_BD_IX1 ON userid.GROUP_BD (GPBD_NAME) USING STOGROUP storagegroup PRIQTY 100 SECQTY 50 CLUSTER PCTFREE 0 CLOSE NO ; CREATE UNIQUE INDEX userid.GROUP_BD_IX2 ON userid.GROUP_BD (GPBD_NAME, GPBD_SUPGRP_ID) USING STOGROUP storagegroup PRIQTY 100 SECQTY 50 PCTFREE 0 CLOSE NO ; CREATE INDEX userid.GROUP_BD_IX3 ON userid.GROUP_BD (GPBD_OWNER_ID) USING STOGROUP storagegroup PRIQTY 100 SECQTY 50 PCTFREE 0 CLOSE NO ; CREATE INDEX userid.GROUP_BD_IX4 ON userid.GROUP_BD (GPBD_MODEL) USING STOGROUP storagegroup PRIQTY 100 SECQTY 50 PCTFREE 0 CLOSE NO ; Figure 18. Sample SQL utility statements: Creating indexes
402
Database utilities
Loading the DB2 tables: Figure 19 shows the statements that are required to load the Group Basic Data record. The RACDBULD member of SYS1.SAMPLIB contains statements that load all of the record types produced by the database unload utility.
LOAD DATA INDDN tablespacename RESUME YES LOG NO INTO TABLE userid.GROUP_BD WHEN(1:4)=0100 ( GPBD_NAME POSITION(006:013) GPBD_SUPGRP_ID POSITION(015:022) GPBD_CREATE_DATE POSITION(024:033) GPBD_OWNER_ID POSITION(035:042) GPBD_UACC POSITION(044:051) GPBD_NOTERMUACC POSITION(053:053) GPBD_INSTALL_DATA POSITION(058:311) GPBD_MODEL POSITION(314:357) )
Note: You can choose not to load some of the tables. Reorganizing the unloaded RACF data in the DB2 database: Queries are processed faster if they are performed against an organized database. The DB2 utility statement required to reorganize the database is:
REORG TABLESPACE databasename.tablespacename
Creating optimization statistics for the DB2 database: Queries are processed faster if they are performed against an organized database for which DB2 has collected performance statistics. The DB2 utility statement required to create these statistics is:
RUNSTATS TABLESPACE databasename.tablespacename
Deleting data from the DB2 database: Before you reload the database with new data, you should delete the old data. This can be done in several ways: 1. Use the DROP TABLE statement for each table you want to delete. 2. Use the DROP TABLESPACE statement for each tablespace. 3. Delete all of the records in each table. Figure 20 shows the sample SQL statements that delete the group record data from the tables.
; ; ; ; ;
Figure 20. DB2 utility statements required to delete the group records
DB2 table names: Member RACDBULD in SYS1.SAMPLIB creates DB2 tables for each record type. Table 27 on page 404 provides a useful reference of record type, record name, and DB2 table name.
Chapter 12. Working With The RACF Database
403
Database utilities
For more information, see Database Unload Utility Output Samples on page 407.
Table 27. Correlation of record type, record name, and DB2 table name Record type 0100 0101 0102 0103 0110 0120 0130 0140 0141 0151 0200 0201 0202 0203 0204 0205 0206 0207 0208 0209 0210 0220 0230 0231 0232 0233 0240 0250 0251 0260 0270 0280 0281 0282 0290 02A0 02B0 02C0
1
Record name Group Basic Data Group Subgroups Group Members Group Installation Data Group DFP Data Group OMVS Data Group OVM Data Reserved Group TME Role Group CSDATA Custom fields User Basic Data User Categories User Classes User Group Connections User Installation Data User Connect Data User RRSF Data User Certificate Data User Associated Mappings User Associated Distributed Mappings User DFP Data User TSO Data User CICS Data User CICS Operation Classes User CICS RSL Keys User CICS TSL Keys User LANGUAGE Data User OPERPARM Data User OPERPARM Scope User WORKATTR Data User OMVS Data User NETVIEW Data User NETVIEW Operation Classes User NETVIEW Domains User DCE Data User OVM Data User LNOTES Data User NDS Data
DB2 table name GROUP_BD GROUP_SUBGROUPS GROUP_MEMBERS GROUP_INSTALL_DATA GROUP_DFP_DATA GROUP_OMVS_DATA GROUP_OVM_DATA GROUP_TME_ROLE GROUP_CSDATA_CUST USER_BD USER_CATEGORIES USER_CLASSES USER_GROUPS USER_INSTALL_DATA USER_CONNECT_DATA USER_RRSF_DATA USER_CERT_DATA USER_NMAP_DATA USER_DISTR_MAPPING USER_DFP_DATA USER_TSO_DATA USER_CICS_DATA USER_CICS_OPCLASS USER_CICS_RSLKEY USER_CICS_TSLKEY USER_LANGUAGE_DATA USER_OPERPARM_DATA USER_OPERPARM_SCOP USER_WORKATTR_DATA USER_OMVS_DATA USER_NETV_DATA USER_NETV_OPCLASS USER_NETV_DOMAINS USER_DCE_DATA USER_OVM_DATA USER_LNOTES_DATA USER_NDS_DATA
404
Database utilities
Table 27. Correlation of record type, record name, and DB2 table name (continued) Record type 02D0 02E0 02F0 02G1 0400 0401 0402 0403 0404 0405 0410 0420 0421 0500 0501 0502 0503 0504 0505 0506 0507 0508 0509 0510 0511 0520 0521 0530 0540 0550 0560 0561 0562 0570 0571 0572 0573 0574
3 2
Record name User KERB Data User PROXY Data User EIM Data User CSDATA Custom fields Data Set Basic Data Data Set Categories Data Set Conditional Access Data Set Volumes Data Set Access Data Set Installation Data Data Set DFP Data Reserved Data Set TME Role General Resource Basic Data General Resource Tape Volumes General Resource Categories General Resource Members General Resource Volumes General Resource Access General Resource Installation Data General Resource Conditional Access General Resource Filter Data General Resource Distributed Identity Mapping Data General Resource Session Data General Resource Session Entities General Resource DLF Data General Resource DLF Job Names Reserved General Resource STDATA Data General Resource SVFMR Data General Resource Certificate Data General Resource Certificate References Data General Resource Key Ring Data General Resource TME Data General Resource TME Children General Resource TME Resource General Resource TME Group General Resource TME Role
DB2 table name USER_KERB_DATA USER_PROXY_DATA USER_EIM_DATA USER_CSDATA_CUST DS_BD DS_CATEGORIES DS_COND_ACCESS DS_VOLUMES DS_ACCESS DS_INSTALL_DATA DS_DFP_DATA DS_TME_ROLE GENR_BD GENR_TAPE_VOLUMES GENR_CATEGORIES GENR_MEMBERS GENR_VOLUMES GENR_ACCESS GENR_INSTALL_DATA GENR_COND_ACCESS GENR_FILTER_DATA GENR_DISTR_MAPPING GENR_SESSION_DATA GENR_SESSION_ENT GENR_DLF_DATA GENR_DLF_JOBNAMES GENR_STDATA_DATA GENR_SVFMR_DATA GENR_GRCERT_DATA GENR_CERTR_DATA GENR_KEYR_DATA GENR_TME_DATA GENR_TME_CHILDREN GENR_TME_RESOURCE GENR_TME_GROUP GENR_TME_ROLE
405
Database utilities
Table 27. Correlation of record type, record name, and DB2 table name (continued) Record type 0580 0590 05A0 05B0 05C0 05D0 05E0 05F0 05G0 05G1 05G2 Record name General Resource KERB Data General Resource PROXY Data General Resource EIM Data General Resource ALIAS Data General Resource CDTINFO Data General Resource ICTX Data General Resource CFDEF Data General Resource SIGVER Data General Resource ICSF Data General Resource ICSF Key Label General Resource ICSF Certificate Identifier DB2 table name GENR_KERB_DATA GENR_PROXY_DATA GENR_EIM_DATA GENR_ALIAS_DATA GENR_CDTINFO_DATA GENR_GRICTX_DATA GENR_CFDEF_DATA GENR_GRSIG_DATA GENR_ICSF_DATA GENR_ICSF_KEY_DATA GENR_ICSF_CERT_DATA
Note: The values for the following fields are unloaded from profile field values that were encoded as UTF-8 data before being stored in the RACF database. When possible, IRRDBU00 translates these values to EBCDIC, using the IBM-1047 code page, to make the output records easier to read. When not possible, these values appear in hexadecimal format. 1. The USDMAP_MAP_NAME field in record type 0209. 2. The GRBD_NAME field in record type 0500 when GRBD_CLASS_NAME is IDIDMAP. 3. The GRDMAP_NAME and GRDMAP_DIDREG fields in record type 0509.
406
Database utilities
revoke_date resume_date revoked_flag The date from which the user is revoked The date on which the user is no longer revoked A flag indicating if the user has been revoked
At logon or job initiation, RACF compares the current date with the revoke_date and resume_date. If the current date falls between them, the logon or job initiation is not allowed or the connection with the group is not considered valid. LISTUSER and LISTGRP perform similar checks. For example, if the date on which the LISTUSER command is issued falls between the revoke_date and the resume_date, LISTUSER reports that the user is revoked. If the date on which the LISTUSER command is issued does not fall between the revoke_date and the resume_date, LISTUSER indicates that the user is not revoked even if the revoke_date, resume_date, and revoked_flag are set in the RACF database. Note: It is possible to have no data for the revoke_date and resume date. Because IRRDBU00 does not have a reference date such as the current date, it cannot interpret the revoke_date, resume_date, and revoked_flag information with a reference date. IRRDBU00 unloads the values as they are specified in the RACF database. This means that if you write a query that just checks the revoked_flag, the results differ from LISTUSER and LISTGRP. You can incorporate a date check into your queries that performs the same checks as the LISTUSER and LISTGRP commands. Figure 21 shows a sample of structured query language (SQL) that does this test for the user revoke status. Note that CURRENT DATE can be replaced with any valid DB2 date value.
SELECT * FROM USER01.USER_BD WHERE (CURRENT_DATE >= USBD_REVOKE_DATE AND (USBD_RESUME_DATE IS NULL OR USBD_RESUME_DATE <= USBD_REVOKE_DATE OR USBD_RESUME_DATE > CURRENT_DATE)) OR (USBD_REVOKE = Y AND (USBD_RESUME_DATE IS NULL OR NOT (CURRENT_DATE >= USBD_RESUME_DATE AND (USBD_REVOKE_DATE IS NULL OR USBD_REVOKE_DATE < USBD_RESUME_DATE OR USBD_REVOKE_DATE > CURRENT_DATE)))) Figure 21. Sample SQL to process revoke and resume dates
407
Database utilities
1. Create a query that compares the entries in the access list with a list of valid user IDs or group names. A sample SQL query is provided in Figure 22. 2. Format the results of the query as provided by the QMF form in Figure 23 on page 409. The resulting report is shown in Figure 24 on page 409. Note: If you use the IRRUT100 utility to check the references to a user or group name, IRRUT100 requires that the user or group name be known. The sample query shown here does not have such a requirement. It finds all user IDs or group names that are not valid. When your RACF database is unloaded, the IRRDBU00 utility creates a Data Set Access Record (record type 404) for each user ID or group name in the access list of each data set. When you load your IRRDBU00 output into DB2, an AUTH_IDS table is created that contains the name of every valid user ID and group name. SQL Query: The sample SQL query compares the ID in the data set access record (DSACC_AUTH_ID) with the list of valid user and group names (in AUTH_IDS). When a user ID is found that is not a valid user ID or group name, it is listed. The query also lists the data set profile name, the authority that the user has, and the access count.
------------------------------------------------------------------------- Description: Check all of the data set standard access lists and --verify that each user ID is a valid user or --group name ----- Tables Accessed: SQL --"DS_ACCESS" - A list of data set authorities --"AUTH_IDS" - A list of valid users/groups --------------------------------------------------------------------------SELECT DSACC_NAME ,DSACC_AUTH_ID ,DSACC_ACCESS ,DSACC_ACCESS_CNT FROM USER01.DS_ACCESS X WHERE NOT EXISTS ( SELECT * FROM USER01.AUTH_IDS WHERE X.DSACC_AUTH_ID=AUTHID_NAME ) AND X.DSACC_AUTH_ID=* ORDER BY 1 ; Figure 22. A sample SQL query
QMF Form: If the SQL query shown in Figure 22 is processed using QMF, the data that is returned can be processed into a report. Figure 23 on page 409 shows a report or forms definition. It creates the report shown in Figure 24 on page 409
408
Database utilities
entitled Data Set Profiles With Access Lists Containing User IDs or Group Names That Are Not Valid.
COLUMNS: Total Width of Report Columns: 80 EDIT ---C C C L SEQ --1 2 3 4
NUM COLUMN HEADING USAGE INDENT WIDTH --- -------------------------------------- ------ ------ ----1 DSACC_NAME BREAK1 2 44 2 DSACC_AUTH_ID 2 8 3 DSACC_ACCESS 2 9 4 DSACC_ACCESS_CNT 2 11 PAGE: HEADING
===> DATA SET PROFILES WITH ACCESS LISTS CONTAINING USER IDS OR GROUP NAMES THAT ARE NOT VALID FOOTING ===> FINAL: TEXT ===> BREAK1: NEW PAGE FOR BREAK? ===> NO FOOTING ===> BREAK2: NEW PAGE FOR BREAK? ===> NO FOOTING ===> OPTIONS: OUTLINE? ===> YES DEFAULT BREAK TEXT? ===> NO Figure 23. A sample QMF form
Report Output: Figure 24 shows the report that results from the SQL query shown in Figure 22 on page 408 and the QMF form shown in Figure 23. Not all of the resulting rows are shown.
DATA SET PROFILES WITH ACCESS LISTS CONTAINING USER IDS OR GROUP NAMES THAT ARE NOT VALID DSACC_NAME DSACC_AUT DSACC_ACC DSACC_ACCES -------------------------------- -------- --------- ----------JAS.WORK.CNTL WILLIEC READ 3 JEFFK READ 2 LIEN READ 2 DIANEB READ 4 SLICK READ 5 KOFI READ 2 CHUCKY READ 1 AERON READ 2 LING READ 3 TONYL READ 3 JOES READ 6 SINEAD.DOC.TEXT FRANTI.TEST.DATA MARLEY.DESIGNS.DATA HUMAN.* SIMONE HAN MIKEF ZIGS FATIMA STING READ READ READ READ UPDATE READ 4 2 10 3 6 1
PAGE 10
409
Database utilities
410
Database utilities
Sort
4 5 RACF database copy Copy Production RACF database RACF Edit Run commands OUTDD
SYSROUT SYSPRINT
As shown in Figure 25, here's how to use the remove ID utility: 1. Use the database unload utility to produce a flat file. This file is the main input to the remove ID utility. You should use a copy of the production RACF database as input to the database unload utility. 2. Optionally, you can specify a SYSIN file. If this file is empty or does not contain any valid input, or if it is allocated as DUMMY, the remove ID utility searches for residual references to user IDs or group names that do not exist as a user profile or a group profile. See Running IRRRID00 with an Empty SYSIN on page 416 for an example. 3. The remove ID utility does one of the following: a. Finds the residual IDs, sorts them, and then uses this list of IDs to produce output that contains the appropriate RACF commands. See Finding Residual IDs on page 415 for more information about this step. b. Uses a list of user IDs and group names that are specified in the SYSIN file to produce output that contains the appropriate RACF commands. See Creating Commands to Remove IDs on page 417 for more information about this step. 4. The remove ID utility creates an OUTDD file, which contains commands to change or remove the occurrences of these IDs. You should review the commands the remove ID utility generates and, if necessary, edit them. If you run the remove ID utility with no SYSIN file, or do not specify a replacement ID, the output shows any references to an ID that requires a replacement as ?id. This might be the case, for example, in places where a residual user ID was the owner of other profiles. You should change all occurrences of ?id, if any, to an existing user ID or group name. 5. As long as you have sufficient authority, you can now run these commands on the production RACF database. See z/OS Security Server RACF Command Language Reference for the specific authority requirements for RACF commands.
Chapter 12. Working With The RACF Database
411
Database utilities
Notes: 1. The remove ID utility deals with profiles in the RACF database. So, keep in mind that the remove ID utility does not produce any commands to delete, or rename the resources these profiles protect. You must delete, rename, or make sure other profiles protect those resources that were once protected. You can use DFSMSdss to rename data sets for IDs that you will be removing from the RACF database. 2. If you delete profiles before you delete or rename the data sets themselves and PROTECTALL is in effect, you might need some extra authority to remove these data sets. 3. If you remove a user ID that had been cross-linked with a DCE principal, contact the cell's DCE administrator to determine whether the DCE principal should be deleted from the cell. 4. If a residual ID is found in a NOTELINK or NDSLINK profile, an RDELETE command will be produced to delete the profile. However, if the profile name contains lower case characters, the RDELETE command cannot be executed successfully. To delete the profile, you must issue an ADDUSER command for the user ID specifying the corresponding LNOTES SNAME or NDS UNAME. Then, a DELUSER can be issued to delete the user profile and the NOTELINK or NDSLINK profile. 5. If a user ID that you specified in the SYSIN file is found in the name of a user profile containing an LNOTES, NDS, or DCE segment, IRRRID00 will produce a DELUSER command to delete the user profile, but it will not produce RDELETE commands to delete the corresponding NOTELINK, NDSLINK, or DCEUUIDS profiles. Deletion of the user ID through DELUSER processing will cause the deletion of the corresponding general resource profiles. 6. If a residual user ID or a user ID that you specified in the SYSIN file is found in an IDIDMAP profile, IRRRID00 does not produce an RDELETE command to delete the IDIDMAP profile. Instead, it produces a RACMAP DELMAP command, specifying the user ID and label name of the distributed identity filter contained in the IDIDMAP profile, to delete the filter. A residual user ID might be found in an IDIDMAP profile if a user ID that is mapped by distributed identity filter is subsequently deleted by issuing a DELUSER command from a downlevel system that does not support distributed identity filters. Performance consideration: When you issue the RACMAP DELMAP command specifying both the label of a distributed identity filter and a user ID that has no user profile (such as a residual user ID), RACF searches all profiles in the IDIDMAP class to locate and delete all matching filters. This search might take an extended period of time.
Note: The storage required to run IRRRID00 successfully depends on the size of the RACF database and other factors that are controlled by the sort utility your installation uses. If the job does not run because there is not enough storage available,
412
Database utilities
try increasing the region size. If your installation has a large RACF database, a region size of 0M might be required:
EXEC PGM=IRRRID00,REGION=0M
EXEC SYSPRINT DD
Specifies the program name (PGM=IRRRID00) or the procedure name if the job control statements are in a procedure library. Defines a sequential message data set for the messages produced by IRRRID00.
SYSOUT DD SORTOUT DD
Defines a sequential message data set for the messages produced by the DFSORT utility or its equivalent. Defines a work data set that contains final list records. This data set should be approximately the same size as the data set allocated to INDD.
SYSUT1 DD
Defines a work data set that contains intermediary records. This data set should be approximately the same size as the data set allocated to INDD. Defines the sequential input data set that contains the IRRDBU00 output being processed. This statement should refer to the same data set as the OUTDD statement does in the IRRDBU00 job. Defines the single sequential output data set. The output of IRRRID00 is a set of variable length records that contain the commands needed to delete or alter the references to the IDs. This data set must be allocated as a variable length data set, with a logical record length (LRECL) of at least 259. If a shorter LRECL is supplied, IRRRID00 changes the LRECL to 259. When IRRRID00 opens the OUTDD data set, it verifies that the block size of the data set is at least 4 greater than the LRECL.
INDD DD
OUTDD DD
SYSIN DD
Defines the sequential input data set that contains the list of user IDs or group names to search for. Each ID must be on its own record. The ID can be up to 8 characters in length. It will be truncated if longer than 8 characters. Optionally, you can specify a replacement ID. The replacement ID must be on the same input record, separated from the original ID by at least 1 blank. The replacement ID can be up to 8 characters in length. It will be truncated if longer than 8 characters. IRRRID00 accepts both fixed length records (RECFM=F or RECFM=FB) and variable length records (RECFM=V or RECFM=VB) either with or without record numbers. To allow for record numbers, IRRRID00 always ignores columns 18 if the SYSIN records are variable length, and ignores the last eight columns if the records are fixed length. In addition, IRRRID00 ignores blank records.
Notes: 1. The SYSIN DD is optional. If SYSIN is specified, IRRRID00 does not validate the ID being searched for or the replacement ID.
413
Database utilities
If it is not specified or if it points to a data set that does not contain a list of user IDs or group names, a message is issued to SYSPRINT and a search is performed for all references to IDs that no longer exist. 2. The percent (%) and asterisk (*) are processed as regular characters; no generic processing will be performed. A period (.) should not be used but will be accepted; a match of IDs will not occur in most cases. 3. Some of the DD names shown are for DFSORT only. If you are using an equivalent product, refer to that product's documentation for the DD names to use.
Specifying a Replacement ID
Figure 28 on page 415 shows the sample JCL used to run the RACF remove ID utility and search for the IDs MARK, BRUCE, and JUNO, with a replacement ID for MARK.
414
Database utilities
//USER01 //CLEANUP //SYSPRINT //SYSOUT //SORTOUT //SYSUT1 //INDD //OUTDD //SYSIN MARK ELVIS BRUCE JUNO /*
JOB EXEC DD DD DD DD DD DD DD
Note: For information about truncated output, see Lengthy commands on page 419.
415
Database utilities
v v v v v Connection owner Notify Standard access list Conditional access list DFP(RESOWNER)
v STUSER v STGROUP v GROUPS field of the TME segment for general resource profiles in the ROLE class v APPLDATA field of general resource profiles in the following classes: DCEUUIDS DIGTCERT DIGTCRIT DIGTNMAP KERBLINK NDSLINK NOTELINK TMEADMIN Note: RDELETE commands created for profiles in the NDSLINK and NOTELINK classes might not be executed successfully if the profile name contains lowercase characters. See z/OS Security Server RACF System Programmer's Guide for information about recovering from these failures. v Data set high-level qualifier v GLOBAL DATASET high-level qualifier v Profile names in the FACILITY class and certain general resource member classes v DIDUSER field of general resource profiles in the IDIDMAP class. A list of user IDs and group names is generated from this processing. This list of IDs is used to create the appropriate RACF commands.
DD DD DD
416
Database utilities
ID(MARK) DELETE CLASS(TSOPROC) ID(MARK) DELETE CLASS(ACCTNUM) ID(MARK) DELETE ID(JUNO) DELETE OWNER(?JUNO)
As shown in Figure 30, IRRRID00 found several references to MARK and JUNO, even though these users did not have a profile in the USER class. IRRRID00 produces the commands you would need to change or remove these references in the various fields.
The newid value must follow the oldid value on the same input record, separated from it by at least 1 blank. In this example, MARK was specified in SYSIN. IRRRID00 now produces only RACF commands relative to this user ID. In addition, when you run IRRRID00 with a list of IDs, delete commands (DELDSD or RDELETE) are created for all data set and general resource profiles that have one of the IDs as a qualifier. The search for IDs within profile names is done without regard to any generic character in the profile name.
417
Database utilities
//CLEANUP EXEC PGM=IRRRID00,REGION=25M //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* . . . //INDD //OUTDD //SYSIN MARK /*
DD DD DD
... ... *
Replacement IDs
In some cases, such as when IRRRID00 finds an ID in an access list or in a NOTIFY field, it generates a command to simply remove the ID. In other cases, such as an OWNER field, the ID cannot simply be removed. In these cases, IRRRID00 creates a value that is the replacement ID value. The default replacement ID value is ?id, where id is the ID that is being replaced. For example, if the utility was searching for the ID MARK, which is the owner of profile IRRDBU00.JCL.*, IRRRID00 generates this command:
ALTDSD DA(IRRDBU00.JCL.*) GENERIC OWNER(?MARK)
Because ?MARK is not a syntactically valid ID, you cannot run this command. Use the editor of your choice to change ?MARK to the ID you want to own this profile. If MARK owned more than one profile, you can globally change ?MARK to the new ID field for all of its occurrences with a global edit command. For example, to change all of MARK's ownership to ELVIS using ISPF, enter:
C ?MARK ELVIS ALL
EXIT commands
In the CLIST, IRRRID00 places the commands that alter existing profiles before the commands that delete profiles. IRRRID00 places an EXIT command between these two sets of commands to cause TSO/E to stop before running the second set of commands. This prevents the deletion of profiles until after you have reviewed the commands generated by IRRRID00. After you review the output, you must remove the EXIT statement to run the delete commands that follow it.
418
Database utilities
Ampersand characters
When an ampersand character occurs in a command in IRRRID00 output, the utility inserts a second ampersand to prevent CLIST processing from performing symbolic substitution and allow the CLIST to properly process the command. If you execute the command as a TSO/E command, instead of as a CLIST, remove the second ampersand.
Lengthy commands
The maximum length for lines of IRRRID00 output is 255 characters. If a command is longer than 255 characters, such as when ADDMEM, DELMEM, and WHEN(CRITERIA) operands contain lengthy values, the utility splits command lines at blank characters into shorter pieces. If a piece is too long to fit on one line, the utility puts a question mark in the first column, the piece is truncated, and if a continuation mark is needed, it appears in column 255. Before you issue a truncated command, copy the command pieces to a longer length record and add the truncated data to the command image. To locate the truncated data, search your input data set (the IRRDBU00 utility output).
419
Database utilities
/****************************************************************/ /* */ /* The RACF Remove ID Utility (IRRRID00) was executed on */ /* 1998-03-23 at 09:00:01. */ /* */ /* This file contains RACF commands that can be used to */ /* identify references to user IDs and group names. Residual */ /* references on an access list are deleted with the PERMIT */ /* command. For all other references, commands are created to */ /* change the reference to another value. The default value */ /* is ?id. This allows all references to a particular ID to */ /* be easily changed to another value using a text editor. */ /* */ /* Commands to alter ROLE definitions will be created within */ /* comments for informational purposes, though the actual */ /* updates should be made from Tivoli. The ROLE will not be */ /* updated with a replacement value for a group name. */ /****************************************************************/ /****************************************************************/ /* The INDD data set has been scanned for all names that do */ /* not have a user or group name defined for them in INDD. This */ /* list of names has been formatted and sorted into the */ /* SORTOUT data set. */ /****************************************************************/ CONNECT BILL GROUP(RACFDEV ) OWNER(?ELVIS ) ALTDSD DASDDEF.VCE313S GENERIC OWNER(?JUNO ) PERMIT D12* CLASS(DASDVOL ) ID(MARK ) DELETE PERMIT 111111 CLASS(DASDVOL ) ID(BRUCE ) DELETE PERMIT 222222 CLASS(DASDVOL ) ID(JUNO ) DELETE RALTER FACILITY IRR.LISTUSER NONOTIFY RALTER FACILITY IRR.PASSWORD.RESET OWNER(?TERRY ) /* RALTER ROLE DEVELOPMENT TME(DELGROUPS(RACFDEV ))
*/
/****************************************************************/ /* The following commands delete profiles. You must review */ /* these commands, editing them if necessary, and then remove */ /* the EXIT statement to allow the execution of the commands. */ /****************************************************************/ EXIT RDELETE DELDSD DELDSD DELUSER DELUSER DELUSER DELGROUP TMEADMIN [email protected] D69A.BRUCE.TEXT VOLUME(TSO018) NOSET D69A.MARK.* BRUCE JUNO MARK RACFDEV
/****************************************************************/ /* IRRRID00 has successfully completed */ /****************************************************************/ Figure 33. Sample output from the IRRRID00 utility
420
Database utilities
For a sample of the JCL statements needed to run the CLIST in batch using TMP, see Figure 34.
//STEP01 EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * EXEC USER01.IRRRID00.CLIST /* Figure 34. Running IRRRID00 CLIST using TMP: Sample JCL statements
For more information about DFSMSdss commands, patch flags, the ADMIN option, and use of appropriate FACILITY profiles, see z/OS DFSMSdss Storage Administration.
Chapter 12. Working With The RACF Database
421
Database utilities
If the following command is then executed, a STARTED profile is defined with GROUP1 erroneously specified as the USER value in the STDATA field. Message IRR52144I is issued warning that GROUP1 is not a user ID. However, the profile is added.
RALTER STARTED AJB.* STDATA(USER(GROUP1))
When IRRRID00 is executed, the following messages appear in SYSPRINT. IRR68017I IRR68018I The ID GROUP1 in the STARTED profile AJB.* is not correct. The record number is 48. The ID value should be a USER profile.
These messages indicate that GROUP1 is used incorrectly. IRRRID00 searches for all references to GROUP1 and creates the following commands to remove those references.
/********************************************************** /* The INDD data set has been scanned for all names that do /* not have a user or group id defined for them in INDD. /* This list of names has been formatted and sorted into /* the SORTOUT data set. /********************************************************** CONNECT ALTUSER CONNECT RALTER REMOVE USER1 GROUP(?GROUP1 ) USER1 DFLTGRP(?GROUP1 ) ?GROUP1 GROUP(GROUPB ) STARTED AJB.* STDATA( USER(?GROUP1 USER1 GROUP(GROUP1 )
))
/********************************************************** /* The following commands delete profiles. You must review /* these commands, editing them if necessary, and then /* remove the EXIT statement to allow the execution /* of the commands. /**********************************************************
422
Database utilities
EXIT DELGROUP GROUP1 /********************************************************** /* IRRRID00 has successfully completed /**********************************************************
In this example, the output commands to remove all references to GROUP1 should not be executed. Instead, you can alter the AJB.* profile to reference an existing valid user ID. Then, when IRRRID00 is rerun, these output commands will not appear.
423
Database utilities
DEFOUSR/DEFOGRP DEFOUSR
IRRRID00 processes the APPLDATA field in the following ways: v The first 8 contiguous characters preceding the slash are processed as the user ID. If no characters precede the forward slash, IRRRID00 inserts two question marks (??) in place of the user ID in the generated RALTER command. v The first 8 contiguous characters following the slash are processed as the group name. If no characters follow the forward slash, IRRRID00 inserts two question marks (??) in place of the group name in the generated RALTER command. Examples:
RALTER FACILITY BPX.DEFAULT.USER APPLDATA(??/DEFOGRP) RALTER FACILITY BPX.DEFAULT.USER APPLDATA(DEFOUSR/??)
424
Database utilities
A change made locally to RACF does not have any effect on resource access due to role membership. If this change is not also made to the Tivoli database, the local RACF modification will be overridden the next time the role is distributed from Tivoli.
425
426
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
429 429 429 430 430 430 431 431 432 432 432 432 432 433 433 433 433 434 434 434 435 435 436 436 437 438 439 439 441 444 445 446 446 447 449 449 . 449 450 451 451 452 452 453 454 454 454 455 456 457 457 458 458 458 459
. . . . . . . . . . . . . . . . .
427
RRSF
Synchronizing database profiles . . . . . . . . . . . . . . . . . . . . . . . . Establishing RACF security for RRSF TCP/IP connections . . . . . . . . . . . . . . . . Task roadmap for establishing RACF security for RRSF TCP/IP connections . . . . . . . . . Before you begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . Administer profiles in the SERVAUTH class to enable RRSF to use TCP/IP node connections . . . Steps for administering SERVAUTH class profiles to enable RRSF to use TCP/IP node connections. Implementing an RRSF trust policy . . . . . . . . . . . . . . . . . . . . . . . Using the same, self-signed certificate for all RRSF nodes. . . . . . . . . . . . . . . Using an internal CA to sign a server certificate for each RRSF node . . . . . . . . . . . Considerations when using an external CA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 459 460 460 460 461 462 462 465 469
| | | | | | | | |
This topic describes aspects of the RACF remote sharing facility (RRSF) that security administrators should be aware of. The RACF remote sharing facility allows RACF to communicate with other MVS systems that use RACF, allowing you to maintain remote RACF databases. RRSF extends the RACF operating environment beyond the traditional single host and shared DASD environments, to an environment made up of RRSF nodes that are capable of communicating with one another. This support provides administration of multiple RACF databases from anywhere in the RRSF network. Benefits of RRSF support for the security administrator include: v Administration from anywhere in the RRSF network. With RRSF, a security administrator logged on to one system in the RRSF network can direct allowed RACF TSO commands to remote RRSF nodes in the RRSF network. Administration of all the RACF systems in the RRSF network can take place from a single point of control. v User ID associations. By supporting user ID associations and password synchronization, RRSF gives users with multiple user IDs the option of keeping their user ID passwords automatically synchronized across multiple systems. v Automatic synchronization of databases. With automatic direction, RACF can keep databases synchronized automatically. When a command or application updates a database, RACF can automatically make the change to other databases. | | | | | | | | | | | RACF supports APPC and TCP/IP as network protocols that are used to connect one RRSF node to another. Your programmer determines which protocols are used. Your RRSF network might consist of any combination of APPC and TCP/IP node connections. Using TCP/IP connections for RRSF nodes provides advantages over APPC such as improved overall security, including the availability of stronger encryption levels. When your programmer implements TCP/IP for RRSF node connections, you must issue RACF commands to allow TCP/IP communication to take place between RRSF nodes. For instructions, see Establishing RACF security for RRSF TCP/IP connections on page 459.
428
RRSF
Toronto
London
RACF database
RACF database
RRSF nodes
An RRSF node is an MVS system image that has been defined as an RRSF node to RACF by a TARGET command. For information about defining RRSF nodes with the TARGET command, see z/OS Security Server RACF System Programmer's Guide. To direct commands or application updates from one MVS system image to another or synchronize passwords between users on two or more MVS system images, both system images must first be defined to RACF as RRSF nodes that can communicate with each other.
429
RRSF
430
RRSF
Password Synchronization
With RRSF, users with multiple user IDs can keep their passwords and password phrases synchronized across RACF databases. Password synchronization (for passwords and password phrases) can be requested between user IDs when a peer user ID association is established with the RACLINK command and the PWSYNC option is specified. The passwords and password phrases of the user IDs need not to be synchronized at the time the association is requested, nor are they synchronized when the association is established. They are synchronized when either of the associated user IDs initiates a password or password phrase change. The password and password phrase history lists are updated on all systems where the change occurs. Password synchronization can occur for password and password phrase changes initiated by: v Logon processing v The PASSWORD (or PHRASE) command v The ALTUSER command v Application programs that use the ICHEINTY, RACROUTE REQUEST=VERIFY, or RACROUTE REQUEST=EXTRACT,TYPE=REPLACE macro to supply the user's new password or password phrase in clear text form. v Application programs that use the ICHEINTY, RACROUTE REQUEST=VERIFY, or RACROUTE REQUEST=EXTRACT,TYPE=REPLACE macro to change: Both the password and the last password change date information, or Both the password phrase and the last password phrase change date information. v Application programs that use the ICHEINTY or RACROUTE REQUEST=EXTRACT,TYPE=REPLACE macro to change the last password or password phrase change date information, not the password or password phrase itself. Note: Password and password phrase changes initiated by the ADDUSER command do not result in password synchronization because the new user ID is not yet part of a user ID association. The security administrator can enable or disable password synchronization for user IDs that have established a peer user ID association with password synchronization requested. See Controlling Password Synchronization on page 280 for more information.
Chapter 13. The RACF remote sharing facility (RRSF)
431
RRSF
Message Processing
Messages about the status of a password change and the password synchronization request can be viewed by editing the user's RRSFLIST data set, depending on the option specified on the SET PWSYNC command. See Capturing Command Output on page 436 for information about output handling for RACF commands that execute in the RACF subsystem address space. TSO end users might receive notification via the TSO SEND command that a password change request has been processed on their behalf by the command output handling components of RRSF. The user who originates the password change is the source user, and the user to whom the source user directs a password change is the target user. Messages issued by RRSF are returned as specified on the SET PWSYNC command. The password history of the target user is updated with the user's old password by RRSF password synchronization support. If the RACF database manager is unable to communicate a password change request to the RACF subsystem address space, message IRR417I is issued to the operator's console via WTO.
Output Capturing
Figure 36 shows captured output from a successful password synchronization request.
Password synchronization request issued at 15:03:58 on 04/28/98 was processed at NODE1.TSOUSER on 04/28/98 at 15:04:00 REQUEST ISSUED: From user TSOUSR3 at NODE1 to user TSOUSER at NODE1. REQUEST OUTPUT: IRRC013I Password synchronized successfully for TSOUSR3 at NODE1 and TSOUSER at NODE1.
User ID associations
Using the RACLINK command, you can define, approve, delete, and list user ID associations.
432
RRSF
With Password Synchronization: To define a user ID association with password synchronization between your two user IDs, WILLIE on MVS01 and WONKA on MVS03, enter the following command from user ID WILLIE on MVS01:
RACLINK DEFINE(MVS03.WONKA) PEER(PWSYNC)
Without Password Synchronization: To define a user ID association without password synchronization between your two user IDs, WILLIE on MVS01 and WONKA on MVS03, enter the following command from user ID WILLIE on MVS01:
RACLINK DEFINE(MVS03.WONKA) PEER(NOPWSYNC)
With Password Synchronization: To define a user ID association with password synchronization between VIOLET on MVS01 and VERUCA on MVS03, enter the following command on MVS01:
RACLINK ID(VIOLET) DEFINE(MVS03.VERUCA) PEER(PWSYNC)
Without Password Synchronization: To define a user ID association without password synchronization between VIOLET on MVS01 and VERUCA on MVS03, enter the following command on MVS01:
RACLINK ID(VIOLET) DEFINE(MVS03.VERUCA) PEER(NOPWSYNC)
For example, to define a managed user ID association between VIOLET on MVS01 and VERUCA on MVS03, enter the following command on MVS01:
RACLINK ID(VIOLET) DEFINE(MVS03.VERUCA) MANAGED
For example, to approve a pending user ID association between VIOLET on MVS01 and VERUCA on MVS03, enter the following command on MVS01:
RACLINK ID(VIOLET) APPROVE(MVS03.VERUCA)
For example, to reject a pending user ID association between VIOLET on MVS01 and VERUCA on MVS03, enter the following command on MVS01:
RACLINK ID(VIOLET) UNDEFINE(MVS03.VERUCA)
433
RRSF
The default is RACLINK LIST(*.*). For example, to see all the associations defined for user ID CHARLIE, you could issue the following command:
RACLINK ID(CHARLIE) LIST(*.*)
Command Direction
Command direction can be used to perform security administration for multiple data centers from a central site without submitting batch jobs or logging on to the remote systems when the AT option is specified. Command direction using the AT option is not usually used when the remote databases are kept synchronized. In that case, automatic direction is used. Most RACF TSO commands can be manually directed on the local node or to a remote node within an RRSF network. Manual command direction extends the user's RACF TSO command execution environment to include any of the RRSF nodes defined as targets of the node the user is logged on to, provided the user has an associated user ID on the target node and the associated user ID has the appropriate authority to run the command. You can enable the use of command direction by creating a profile in the RRSFDATA class. You can restrict the use of command direction by not creating the profile (so no one can direct commands) or by creating a profile and restricting access to it. See Controlling the Use of the AT Operand on page 281 for more information on restricting the use of the AT option.
434
RRSF
v v v v RACLINK RACMAP RACF operator commands RACF TSO commands, when they are issued as operator commands
This request makes RRSF start a subtask in the NODEC RACF subsystem address space for USER2 and invoke the LISTUSER command processor. The output is captured and put into a data set as described in Capturing Command Output on page 436. If the target user ID on the local node is the same, no user ID association is needed. You only need a user ID association if the target user ID is different from the issuer's user ID when only one system is involved. Also, you need authority to the DIRECT.nodename RRSFDATA profile for the local node.
Chapter 13. The RACF remote sharing facility (RRSF)
435
RRSF
This command causes RRSF on NODED to send the request to NODEC. RRSF running in the RACF subsystem address space on NODEC creates a subtask for USER2 in the RACF subsystem address space and runs the LISTUSER command. The output is captured and sent back to NODED, where RRSF places it into USER1's RRSFLIST data set, as specified in Capturing Command Output.
You do not receive a TSO SEND message if you had the TSO PROFILE NOINTERCOM setting in effect when you directed the command. Users are responsible for maintaining their own RRSFLIST data sets. If a user's data set becomes full, RRSF uses TSO TRANSMIT to send the command output to the user. The output begins with a message indicating that the user's RRSFLIST data set was full at the time the output was received. The contents of the data captured and appended to the RRSFLIST data set varies, but generally it contains: v A brief description or summary of the event v A reproduction, but not necessarily an exact replica, of the command issued. Command options that are not specified but defaulted by RACF might be included: security-sensitive data such as passwords or key codes are suppressed. The command is reproduced up to 255 characters, including the command options defaulted by RACF, and is truncated at this point. If it is truncated, the last three characters are replaced by a set of ellipses (...) to indicate that the remaining letters or options of the command had been omitted. v The output produced by the command. This output is truncated after 4096 lines.
436
RRSF
The following examples show the format of the captured output produced by commands running in the RACF subsystem address space. The format of the output shown is the same for both the user's RRSFLIST data set, and the TRANSMIT issued when the user's data set is full. Figure 38 shows the format of captured output for a directed LISTGRP command. Figure 39 shows the format of captured output for a directed ADDSD command.
LG issued at 07:50:39 on 04/21/98 was processed at MVS03.SMITHJ on 04/21/98 at 07:50:41 COMMAND ISSUED: LG (SYS1)
COMMAND OUTPUT: INFORMATION FOR GROUP SYS1 SUPERIOR GROUP=NONE OWNER=SMITHJ NO INSTALLATION DATA NO MODEL DATA SET TERMUACC NO SUBGROUPS USER(S)= ACCESS= ACCESS COUNT= UNIVERSAL ACCESS= IBMUSER JOIN 000017 READ CONNECT ATTRIBUTES=NONE REVOKE DATE=NONE RESUME DATE=NONE
All time stamps shown in the RRSFLIST data set are initially recorded as Greenwich Mean Time (GMT). These time stamps are meant to show the relative sequence in which the commands were entered and processed. When output or notify information is written into the RRSFLIST data set, these times are converted from GMT into local times. The time stamps are as accurate as possible, but they are not intended to give the exact, precise times of events. In addition, the accuracy of the time stamps depends on how accurately you have set your system clocks. Note: RRSF assumes that either all nodes in the RRSF network have their clocks set to GMT and have appropriate local time offsets in SYS1.PARMLIB, or that all nodes have their clock set to local time in the same time zone. Any other configuration will cause errors in the timestamps shown in an RRSFLIST data set.
437
RRSF
TSO commands to the same or other nodes in the same manner as the AT option, except that the command is not automatically directed. That is, it runs only on the node it is directed to. The command is processed in the RACF subsystem address space under the authority of the specified user ID provided the following requirements are met: v Both the command issuer and the target user ID must be SPECIAL. v If the target user ID is the same as the command issuer (although nodes can be different), no user ID association is required. v If the target user ID is different from the command issuer, a user ID association between command issuer and target user ID is required. (This prevents a SPECIAL user from unauthorized use of another remote SPECIAL user ID.)
The commands sent by PAT are received and run in the order that PAT sent them, and the commands sent by LAUREN are received and run in the order that LAUREN sent them, but command_B is sent after command_3 from NODEA, and runs before command_3 on NODEB. This is similar to what happens when an RRSF
438
RRSF
network is not configured and multiple TSO users issue RACF commands simultaneously. The order in which MVS services the TSO users determines the order in which the commands run. RACLINK functions have a higher priority than directed commands or application updates so it is possible for a RACLINK command issued after a directed command or application update to take effect before the directed command or application update runs. For example, if you direct a command to a user ID you have an association with, and then issue a RACLINK UNDEFINE to delete the association, the association might be deleted before the directed command runs, causing the directed command to fail.
Automatic direction
Automatic direction is an extension of command direction and password synchronization that allows some administrative tasks and application updates to be automated between RRSF nodes. Automatic direction keeps already synchronized RACF profiles synchronized between two or more remote nodes. Automatic direction includes: v Automatic direction of commands, which allows RACF TSO commands that update the RACF database to be automatically directed to remote nodes in order to keep profiles synchronized between the nodes. Commands issued with automatic direction of commands run asynchronously. The results and output from the commands are returned to specified users (not necessarily the command issuer). v Automatic password direction, which keeps already synchronized RACF user profiles synchronized between two nodes, with respect to RACF passwords and password phrases. v Automatic direction of application updates, which allows updates made by RACF macros to be propagated to the RACF databases of other systems. Updates to the RACF database can be made using: ICHEINTY RACDEF RACROUTE REQUEST=DEFINE RACROUTE REQUEST=EXTRACT,TYPE=REPLACE
Chapter 13. The RACF remote sharing facility (RRSF)
439
RRSF
RACXTRT Automatic direction of application updates allows these changes to be automatically sent to selected remote nodes. These updates to remote target nodes take place only after the update has successfully completed on the local node where it is executing and the macro completes with a return code of 0. Note: RACF database updates made by the RACDCERT command are candidates for propagation under the control of automatic direction of application updates, even though the RACDCERT command itself is not eligible for automatic command direction. In this case, the individual updates made by RACDCERT might be successful, and propagated to other nodes, even though the RACDCERT command as a whole might fail. The essential elements of automatic direction are: v Activation and deactivation, which are done with SET command options. See Preparing to Use Automatic Direction on page 441 and z/OS Security Server RACF Command Language Reference for more information. v Controlling which updates get automatically directed to which nodes. Application updates, password changes, and commands can be controlled by RRSFDATA profiles. v Notification of appropriate users of results and output from automatically directed updates. An installation must decide who should be notified of results and output from automatically directed commands, application updates, and passwords. This is done with the SET command options OUTPUT and NOTIFY. See Output Processing on page 444 and z/OS Security Server RACF Command Language Reference for more information. Example: Automatic Direction of Commands Automatic direction of commands works as follows: Suppose NODEA, NODEB, and NODEC have equivalent profiles in the USER and GROUP classes. All RACF TSO commands that affect USER and GROUP profiles can be automatically directed between the nodes. When an ADDUSER command is issued on NODEA, it can be automatically directed to execute on NODEB and NODEC. When a DELGROUP command is issued on NODEC, it can be automatically directed to NODEB and NODEA. There might also be special situations where automatic direction can be used to facilitate administrative updates to multiple RACF databases. For example, suppose a university has a production MVS system and a test MVS system, each with its own RACF database. At the beginning of each semester, each new student gets a user ID on each MVS system. By temporarily using automatic direction of commands, an administrator can enter ADDUSER commands on the production system and have them automatically directed to the test MVS system. Example: Automatic Password Direction Automatic password direction does the following: NODEA, NODEB, and NODEC have equivalent profiles in the USER class. Password and password phrase changes can be automatically directed to RACF user profiles without the need for established RACLINK PEER PWSYNC associations. When a user's password or
440
RRSF
password phrase changes on NODEA, a password synchronization request can be automatically directed to execute on NODEB and NODEC. Example: Automatic Direction of Application Updates Automatic direction of application updates does the following: An installation-written application that creates profiles in installation-defined class using RACROUTE REQUEST=DEFINE can execute on NODEA and cause profiles to be created on NODEB and NODEC as well as NODEA.
441
RRSF
direction. Because the RACMAP command adds information to USER profiles and affects profiles in the IDIDMAP class, you should implement automatic direction of application updates. For details, see RRSF considerations for distributed identity filters on page 457. v If the USER or GROUP class is kept synchronized and you use CSDATA segments in USER or GROUP profiles to store data in custom fields, you should also synchronize profiles in the CFIELD class. (For information about custom fields, see Chapter 22, Defining and using custom fields, on page 663 and RRSF considerations for custom fields on page 681.) b. Synchronize profiles by class rather than by command: v If RDEFINE DASDVOL is automatically directed and RALTER DASDVOL is not, the DASDVOL profile becomes unsynchronized. v If ADDSD is automatically directed, but PERMIT DATASET is not, the DATASET profile becomes unsynchronized. v If RDEFINE TAPEVOL is automatically directed, but application updates for the TAPEVOL class are not, the TAPEVOL profiles become unsynchronized. c. Keep SETROPTS command settings synchronized: v This can be done manually (using command direction) if SETROPTS is issued infrequently. v Make sure that general resource classes on both nodes are active if updates are being automatically directed for the class. d. Considerations for running the IRRRID00 utility: Because the DELUSER and DELGROUP commands do not automatically delete access list entries from resource profiles, you can use IRRRID00 to generate commands to clean up the profiles for a user or group that has been deleted. If the PERMIT command is being automatically directed, the user who runs the generated list of commands from IRRRID00 must be authorized to automatically direct the PERMIT commands. Otherwise, the resource profiles on the remote system will not be cleaned up. e. When synchronizing a particular kind of profile between nodes, it is better to give all users who can update the profiles controlling those profiles the authority to direct updates automatically. To do this, you can give them READ authority to the appropriate RRSFDATA profiles, for example. If there are users who can cause updates to occur locally but cannot direct them automatically, some updates are not automatically directed, and the profiles do not remain synchronized. There are special considerations for automatic direction of application updates for the DATASET class. For these, see Considerations for the DATASET class on page 455. 3. Synchronize specified profiles: v Run IRRRID00 on each RACF database to remove references to user IDs and group names that no longer exist. v Synchronize databases. You can do this by manually copying the database from one system to the other, or by using a tool that can help you synchronize databases. For information on how to get this tool and others from the RACF home page or via anonymous FTP, see Internet sources on page xix. 4. Create AUTODIRECT profiles in the RRSFDATA class as desired to specify which updates should be automatically directed. Remember to create the profiles on each node from which automatic direction should occur. For example, the following commands cause all password and password phrase
442
RRSF
updates, commands, and application updates for the user class to be automatically directed to all remote nodes:
SETROPTS GENERIC(RRSFDATA) (required if you use generic profiles)
Note: The RRSFDATA profile PWSYNC.nodename is not required for using automatic password direction. 5. Activate the RRSFDATA class on each node, if it has not already been activated. It is recommended that the class be RACLISTed for performance reasons. If the class has already been RACLISTed, refresh the profiles. For example, use one of the following commands:
SETROPTS CLASSACT(RRSFDATA) RACLIST(RRSFDATA) SETROPTS RACLIST(RRSFDATA) REFRESH
6. Decide who should be notified of the automatic direction results and output. 7. Activate automatic direction when you are ready by issuing the SET command with the options corresponding to automatic command direction, automatic password direction, and automatic direction of application updates, with output and notification options appropriate to your installation's needs:
SET AUTODIRECT(...) SET AUTOPWD(...) SET AUTOAPPL(...)
Guideline: Use a RACF parameter library as specified for RACF subsystem initialization. The SET command should be in the default IRROPTxx member of this library so that these options are reinstated when the subsystem is restarted or the entire system is reIPLed. 8. At a later date, to temporarily or permanently deactivate one or more automatic direction functions, issue the SET command with the options corresponding to automatic command direction, automatic password direction, and automatic direction of application updates:
SET NOAUTODIRECT SET NOAUTOPWD SET NOAUTOAPPL
See the note in Step 7 regarding the RACF parameter library. 9. It is possible to fail while attempting to execute a command issued on an uplevel system and manually or automatically directed to a downlevel system through RACF remote sharing. This can occur if the command references a class unknown to the target system (class descriptor tables are different), if it references a segment or field unknown to the target system (templates or dynamic parse definition are different), if it uses a command keyword unknown to the target (dynamic parse definitions or command processor code is different), or if it specifies a profile or member name that is unacceptable to the target system (class descriptor tables have different syntax requirements for profile name length or syntax). Guideline: Be sure that your class descriptor tables, including dynamic classes, are compatible across all systems participating in automatic direction. If an unsynchronized condition occurs while using automatic command direction, a RACF TSO command can be directed with the ONLYAT option to fix the condition. The command runs on the node specified on the ONLYAT option and is not propagated to any other node. (Note that if the AT keyword is used, the command can be propagated by automatic command direction to
Chapter 13. The RACF remote sharing facility (RRSF)
443
RRSF
other nodes.) For information on the ONLYAT option, see Directing Commands Using the ONLYAT Option on page 437. For a complete list of RACF commands that are eligible for automatic command direction, see z/OS Security Server RACF Command Language Reference.
Output Processing
For automatic direction, the installation has many options concerning where the output and notification information resulting from an RRSF request can be sent. This flexibility is provided by operands of the SET command. For example, some installations might choose to notify only one or two administrators when errors are encountered during automatic direction. The OUTPUT operand specifies that the output from automatic direction should be put in the RRSFLIST data set for the specified users. If the output cannot be put in the RRSFLIST data set for some reason, the output is transmitted to the users. The output usually contains messages issued during execution, such as informational, warning, or error messages. After RACF determines the result of execution, it sends back either a message saying it succeeded or a message giving diagnostic information. The NOTIFY operand specifies that TSO SEND commands are issued to the specified users with the results of automatically directed updates. The information sent indicates whether the update was successful or unsuccessful, but does not include other details about the execution. On both the OUTPUT and NOTIFY operands, you can specify whether the output or messages should be sent for all or some updates. The ALWAYS option specifies that results or output from all automatically directed updates are returned to the specified users. This should be used if the users are interested in the results of every automatically directed update. Output includes informational, warning, and error messages. For automatic direction of commands: v WARN specifies that results or output from an automatically directed update are returned to the specified users only when the return code from the update is at least four. This should be used if the users are interested in those automatically directed updates that complete with error conditions or warning conditions. v FAIL specifies that results or output from an automatically directed update be returned to the specified users only when the return code from the update is at least 8. This should be used if the users are interested in only those automatically directed updates which complete with error conditions. For automatic direction of application updates and passwords: v WARN and FAIL have the same meaning. Either WARN or FAIL result in returned output or notification when a directed application update or password fails to completely take effect on a remote node. If an automatically directed update error occurs, the RACF profiles become unsynchronized. An installation should specify at least one person (probably an administrator who is familiar with required profiles) on the OUTPUT and NOTIFY options to receive error results and output (FAIL option). If the initial values of NOOUTPUT and NONOTIFY are used, no one is notified when automatic direction errors occur. Also, once an update is automatically directed to a remote node, all output and messages associated with that update are discarded.
444
RRSF
For more information and examples on using the SET command to specify options for automatic direction of updates, see z/OS Security Server RACF Command Language Reference.
1. When an update has been automatically directed to a remote node and execution is completed, the OUTPUT and NOTIFY settings are used on the node at which the automatically directed update executes. The OUTPUT and NOTIFY settings on the node at which the update originally executed are not relevant. For example, a user on NODE1 runs an application that performs an update, and the update is automatically directed to NODE2. On NODE2, the update runs with a return code of 8. SAM on NODE2 gets a NOTIFY message and the OUTPUT containing the error messages. Even though the update originally executed on NODE1, the OUTPUT and NOTIFY settings on NODE2 are used instead of the OUTPUT and NOTIFY settings on NODE1. The update has successfully executed on one node and is automatically directed to another node. The NOTIFY and OUTPUT settings on that second node determine who is notified of the update completion. 2. When an error occurs while attempting to automatically direct an update to a remote node, the OUTPUT and NOTIFY settings are used on the node at which the update originally executes. For example, a user on NODE1 runs an application that performs an update, and the update is to be automatically directed to NODE2. As the update is placed in the OUTMSG workspace data set (which contains work items to be sent to NODE2), the data set becomes full; therefore, the update is not automatically directed to NODE2. ANN on NODE1 gets a NOTIFY message and the OUTPUT containing the error messages. The update has successfully executed on one node and is to be automatically directed to another node. An error occurs before the request arrives at the other node. The NOTIFY and OUTPUT settings on the first node determine who is notified of the error. This is treated as an error case (like an update which executed with return code 8), so any user with the FAIL, WARN, or ALWAYS setting would be notified or would receive output. Guidelines the use of OUTPUT and NOTIFY To make sure that the appropriate users are notified or receive output, specify the same users on the OUTPUT and NOTIFY operands on the SET command issued on each node with automatic direction active.
445
RRSF
The OUTPUT and NOTIFY lists should include users from at least 2 different nodes, if possible. This is important in the case of a workspace data set problem. For example, suppose a command executes successfully on NODE1 but cannot be sent to NODE2. If all the NOTIFY and OUTPUT users are also on NODE2, it is possible that RRSF might experience the same problem trying to notify the users as it experienced trying to send the command. By also specifying a user on NODE1 or by specifying one local user on each node to get the output, you ensure that RRSF can find someone to notify.
446
RRSF
RDEFINE issued at 12:33:41 on 4/1/98 was processed at NODE1.LAURIE on 4/1/98 at 12:35:02 Command was propagated by automatic direction from NODE2.LAURIE COMMAND ISSUED: RDEFINE RRSFDATA AUTODIRECT.** UACC(NONE)
When errors occur during automatic direction of commands, the command output appropriately reflects what happened. If an unexpected error occurred while trying to automatically direct a command to a remote node, the output might be similar to the following:
RDEFINE issued at 12:33:41 on 4/1/98 was *not* processed at NODEA.LAURIE Command was *not* propagated by automatic direction from NODEB.LAURIE COMMAND ISSUED: RDEFINE RRSFDATA AUTODIRECT.** UACC(NONE)
ERROR INFORMATION: IRRR016I Command was not sent. Processing code is 502.
If an unexpected error occurs after an automatically directed command arrives at a remote node, the output might look as follows:
RDEFINE issued at 12:33:41 on 4/1/98 was *not* processed at NODEA.LAURIE Command was propagated by automatic direction from NODEB.LAURIE COMMAND ISSUED: RDEFINE RRSFDATA AUTODIRECT.** UACC(NONE)
ERROR INFORMATION: IRRC010I UNABLE TO ESTABLISH RACF ENVIRONMENT FOR COMMAND RDEFINE. IRRC012I TARGET USER ID NODEA.LAURIE DOES NOT EXIST.
All time stamps shown in the RRSFLIST data set are initially recorded as Greenwich Mean Time (GMT). These time stamps are meant to show the relative sequence in which the commands were entered and processed. When output or notify information is written into the RRSFLIST data set, these times are converted from GMT into local times. The time stamps are as accurate as possible, but they are not intended to give the exact, precise times of events. In addition, the accuracy of the time stamps depends on how accurately you have set your system clocks. Note: RRSF assumes that either all nodes in the RRSF network have their clocks set to GMT and have appropriate local time offsets in SYS1.PARMLIB, or
447
RRSF
that all nodes have their clock set to local time in the same time zone. Any other configuration will cause errors in the timestamps shown in an RRSFLIST data set. Some sample output from automatic direction of application updates follows. Sample output for a successful RACDEF request:
Application update request issued at 15:42:33 on 4/1/98 was processed at NODE2.RACFU01 on 4/1/98 at 15:43:45 Request was propagated by automatic direction from NODE1.RACFU01 REQUEST ISSUED: RACDEF TYPE=DEFINE, NEWNAME FROM NODE1.RACFU01 REQUEST OUTPUT: IRRR101I Application update request completed successfully for class DATASET, profile name MYNEW.PROFILE.
Note: NEWNAME is for DATASET or FILE class only (RENAMES). Sample output for a successful ICHEINTY request:
Application update request issued at 15:51:33 on 4/11/98 was processed at NODE2.RACFU01 on 4/11/98 at 15:53:45 Request was propagated by automatic direction from NODE1.RACFU01 REQUEST ISSUED: ICHEINTY ALTER operation from NODE1.RACFU01 REQUEST OUTPUT: IRRR101I Application update request completed successfully for class $MYCLASS, profile name MYNEW.PROFILE.
If a request is unsuccessful or if an abend occurs because of the status of the RACF database on the target, one of three messages is issued: v IRRR102I if the request type was an ICHEINTY or RACDEF or RACXTRT v IRRR103I if the request type was a RACROUTE v IRRR104I if an abend occurred processing a RACROUTE, ICHEINTY, RACDEF, or RACXTRT. Password synchronization requests initiated by automatic password direction return the following output:
448
RRSF
Password synchronization request issued at 15:03:58 on 04/18/98 was processed at NODE2.TSOUSER on 04/18/98 at 15:04:00 Request was propagated by automatic direction from NODE1.TSOUSER REQUEST ISSUED: From user TSOUSER at NODE1 REQUEST OUTPUT: IRRC013I Password synchronized successfully for TSOUSER at NODE2 and TSOUSER at NODE1.
Interaction between Automatic Direction of Commands and Automatic Direction of Application Updates
These two automatic directions work independently of each other. If automatic direction of commands is active and automatic direction of application updates is not active, only RACF command updates are propagated to remote nodes. If automatic direction of application updates is active and automatic direction of commands is not active, only application updates are propagated to remote nodes. If both automatic direction of application updates and automatic direction of commands are active, application updates and commands are propagated to remote nodes.
Interaction between Automatic Password Direction and Automatic Direction of Application Updates
Automatic password direction propagates user password and password phrase updates. Automatic direction of application updates does not propagate user password and password phrase changes. If updates to fields unrelated to the password (or password phrase) are made with the same ICHEINTY macro execution that updates the password (or password phrase), the propagation of the unrelated fields is controlled by automatic direction of application updates. A single ICHEINTY macro TYPE=USR with ACTIONS= that specifies both password and non-password user information will result in the propagation of two requests to the target node: one request (to define the user) is propagated by automatic direction of application updates, and the other (to specify password information for the same user) is propagated by automatic password direction. Requests propagated by automatic direction of application updates execute at the target node using the authority of the user ID associated with the application that issued the ICHEINTY to define the user. Requests propagated by automatic password direction execute at the target node using the authority of the user whose password information is to be changed. Because these two requests execute using the authority of different user IDs, they can execute concurrently with unpredictable results.
Chapter 13. The RACF remote sharing facility (RRSF)
449
RRSF
Unpredictable results might occur with propagation of password and non-password user information through any combination of ICHEINTY macro executions, such as a program executing a single ICHEINTY, or multiple ICHEINTY executions within the same or different programs. For this reason, the recommended methods for defining RACF users are: 1. Execute the ADDUSER command 2. Invoke the R_admin callable service from an application program Automatic password direction can be used to propagate a password update for a user only when that user is defined to RACF on both the source and target nodes.
Interaction among Password Synchronization, Automatic Direction of Commands, and Automatic Password Direction
Password synchronization, automatic direction of commands, and automatic password direction can be active at the same time. These functions interact as follows: v When a password or password phrase change is made at logon: Password synchronization sends the change to users with approved PEER PWSYNC associations, if the user changing the password or password phrase is authorized to the appropriate password synchronization resource. If automatic password direction is enabled on the system, and the user who changed the password or password phrase is authorized to one or more profiles, the change is automatically directed to the same user IDs on the nodes defined by the RRSFDATA profiles that protect automatic password direction. v A password or password phrase changed by the PASSWORD command is not directed by automatic password direction. It is directed by automatic direction of commands based on RRSFDATA profile setup. Also, if the user is authorized to the appropriate password synchronization resource, password and password phrase changes are sent to users with approved PEER PWSYNC associations with the user whose password or password phrase was changed. v Password synchronization and automatic password direction do not handle updates initiated by the ADDUSER command. Users who participate in password synchronization must be initially defined to RACF before automatic direction can occur. The ADDUSER command can be directed by automatic direction of commands based on RRSFDATA profile setup. v The ALTUSER and PASSWORD commands must be automatically directed to maintain the synchronization of user passwords and password phrases for the same user IDs across RRSF nodes. The automatic direction of commands RRSFDATA profiles that protect AUTODIRECT.node.USER.ALTUSER and AUTODIRECT.node.USER.PASSWORD control this automatic direction. The RRSFDATA profiles that protect automatic password direction are not checked for the automatic direction of the ALTUSER and PASSWORD commands. v A password or password phrase change by other methods, such as at logon or by an installation-written application, is not directed by automatic direction of commands. These changes are sent to users with the same name if automatic password direction is in effect. Also, if the user is authorized to the appropriate profile in the RRSFDATA class, the changes are sent to users with approved PEER PWSYNC associations with the user whose password or password phrase was changed. RRSF considerations for mixed-case passwords: Care should be taken when RRSF nodes do not have the same settings in effect for the mixed-case option of the SETROPTS PASSWORD command. This can occur when one of the nodes is a
450
RRSF
downlevel system that does not support mixed-case passwords, or when the nodes have differing settings in effect for the MIXEDCASE and NOMIXEDCASE options of the SETROPTS PASSWORD command. The following rules apply when RRSF nodes do not have the same mixed-case password settings in effect: Rules: 1. When passwords are propagated from a system with MIXEDCASE in effect to a system with NOMIXEDCASE in effect (or to a downlevel system), the resulting passwords are translated to upper case on the target system. 2. When passwords are propagated from a downlevel system to a system with MIXEDCASE in effect, they are translated to upper case by the downlevel system, and the resulting passwords remain in upper case on the target system. However, if a lowercase password was set directly on the downlevel system using ICHEINTY prior to being propagated, then the password will be in lower case on both systems. 3. When passwords are propagated from a system with NOMIXEDCASE in effect to a system with MIXEDCASE in effect, the results differ depending on the type of propagation used: v With password synchronization or automatic password direction, when an application action such as TSO LOGON translates the new password entered by a user to upper case prior to passing it to RACF, the resulting password will be in upper case on both the propagating and target systems. However, if an application sets a lowercase password directly on the downlevel system using ICHEINTY, then it will be in lower case on both systems. v With command direction or automatic command direction, commands are sent to the target systems as they were entered by the user. If a lowercase password is entered, it is translated to upper case on the NOMIXEDCASE system but the command will propagate with a lowercase password on the MIXEDCASE system. Guideline: While you can administer your RRSF network from any system, instruct users to change their passwords from a system with MIXEDCASE in effect to more easily maintain their mixed-case passwords. See Allowing Mixed-Case Passwords (PASSWORD Option) on page 116 for more information.
451
RRSF
RACMAP RESTART RLIST RVARY SEARCH SET SETROPTS LIST (with no other operands specified) SIGNOFF STOP TARGET RACF commands can be automatically directed when they are issued in any way except from the RACF parameter library. For example, if they are issued from a TSO session, from a batch job, or even as MVS operator commands, they are still eligible for automatic direction of commands.
452
RRSF
3. On NODE2, the ADDUSER PREMA command runs under the authority of CHARLIE2. 4. After the ADDUSER PREMA command runs successfully (under the authority of CHARLIE2 at NODE2), it is automatically directed to NODE3.CHARLIE2. 5. At NODE3, the ADDUSER PREMA command runs under the authority of CHARLIE2. Notes: 1. The ADDUSER PREMA command is not automatically directed to NODE1.CHARLIE2 because there is no profile protecting the resource AUTODIRECT.NODE1.USER.ADDUSER. 2. The destination of notification and output from the ADDUSER PREMA command that ran on NODE3 is determined by what was specified on SET AUTODIRECT command issued on NODE3. 3. Once the ADDUSER PREMA command runs on NODE3, it is not automatically directed back to NODE2. RACF detects that the command was already automatically directed, and does not further send it to any other nodes.
3. Because the AT option was specified, the command is explicitly directed to NODE2.CHARLIE2. 4. At NODE2, the ADDUSER PREMA command runs under the authority of CHARLIE2. 5. After the ADDUSER PREMA command runs successfully (under the authority of CHARLIE2 at NODE2), it is automatically directed to NODE3.CHARLIE2. Notes: 1. The ADDUSER PREMA command does not run on NODE1. 2. NODE1.CHARLIE1 receives output via the RRSFLIST data set for the ADDUSER PREMA command that ran on NODE2. 3. The destination of notification and output from the ADDUSER PREMA command that ran on NODE3 is determined by what was specified on SET AUTODIRECT command issued on NODE3.
453
RRSF
454
RRSF
2. If profiles on two or more RRSF nodes are already synchronized, you can use automatic direction of application updates to keep the profiles synchronized with respect to application updates. 3. RACF directs an application update only after the update has successfully completed on the node where the application is executing. 4. Not all RACROUTE REQUEST=DEFINE and RACDEF requests update the RACF database, and RACF does not automatically direct requests that do not update the database. RACROUTE REQUEST=DEFINE and RACDEF are not automatically directed if: v ENVIR=VERIFY is specified v RACFIND=NO is specified and DSTYPE=T is not specified RACROUTE REQUEST=VERIFY and RACINIT update the RACF database by issuing ICHEINTY macros. RACF automatically directs the following ICHEINTY requests made by RACROUTE REQUEST=VERIFY and RACINIT: v The ICHEINTY setting the revoke flag in the user profile when a user is being revoked due to inactivity or password attempts that are not valid v The ICHEINTY that increments the revoke count when a user enters a password that is not valid v The ICHEINTY that resets the revoke count to 0 when a user enters a valid password, if the revoke count for the user was nonzero before the update was made Automatic direction of the ICHEINTY that RACROUTE REQUEST=VERIFY issues to change the password in the user's profile is controlled by automatic password direction, and not by automatic direction of application updates. When a RACROUTE REQUEST=DEFINE, or a RACDEF, issues an ICHEINTY, RACF does not direct the ICHEINTY separately. Automatic command direction determines whether a RACF command is directed. If a command issues a RACROUTE or ICHEINTY, that RACROUTE or ICHEINTY is not directed by automatic direction of application updates. Use the AUTOAPPL and NOAUTOAPPL options on the RACF SET command to activate and deactivate automatic direction of application updates. Use the OUTPUT and NOTIFY values of SET AUTOAPPL to specify which users will be notified of results and receive output from automatically directed application updates. Profiles in the RRSFDATA class control which application updates are automatically directed to which nodes.
5.
6.
7. 8.
9.
10.
455
RRSF
Because these changes are controlled by the AUTODASD and AUTOTAPE profiles, it is not necessary to turn off propagation of AUTODIRECT.node.DATASET.APPL unless your own applications require this.
Possession of a private key allows authorized certificate issuers to generate signed certificates using the SIGNWITH keyword of the RACDCERT GENCERT command. If a given private key is propagated to multiple systems, RACF cannot properly serialize the certificate serial numbers across multiple systems. By not propagating private key information, RACF prevents you from inadvertently reusing certificate serial numbers and creating multiple conflicting certificates with the same issuer, same serial number, but different certificate content. Guidelines for Propagation of Command and Application Updates: v If you want certificates and certificate information propagated through your RRSF network, even though private keys are not propagated, you can define the RRSFDATA resources shown listed in Table 29 on page 457. These resources are most useful when your certificates have no associated private keys. (If you do not want to propagate certificates, you need not define the RRSFDATA resource for the DIGTCERT class.) v In general, a certificate label should be unique within an RRSF network. This prevents an application update to delete a certificate on one RRSF node from deleting certificates on other nodes. v If you want to create a copy of an existing certificate (and its non-ICSF private key) on a different system, use the RACDCERT EXPORT command to create a PKCS #12 format data set on the system where the certificate resides, and send the data set to the other system where you can use it as input with the RACDCERT ADD command to recreate the same certificate. Restriction: If the private key is stored in the ICSF PKA key data set (PKDS), a PKCS #12 data set cannot be created. To copy or replicate a certificate with a private key that is stored in the ICSF PKDS, see Migrating an ICSF private key from one system to another on page 611.
456
RRSF
To ensure that RACF database updates are propagated in a consistent manner across the DIGTCERT, DIGTCRIT, DIGTNMAP, DIGTRING and USER classes, you should create a single RRSFDATA profile called AUTODIRECT.target-node.DIGT*, or you should ensure that the access lists for the RRSFDATA resources shown in Table 29 are kept identical:
Table 29. RRSFDATA resources to control propagation of certificate information Type of automatic direction Automatic direction of application updates RRSFDATA resource AUTODIRECT.target-node.DIGTCERT.APPL AUTODIRECT.target-node.DIGTNMAP.APPL AUTODIRECT.target-node.DIGTRING.APPL Automatic direction of commands AUTODIRECT.target-node.DIGTCRIT.command-name
Note: The best way to ensure that RACF database updates are propagated consistently is to define a single profile called AUTODIRECT.target-node.DIGT* to control all the RRSFDATA resources shown above.
To facilitate consistency, when updates are made in the USER class that pertain to digital certificates, the RRSFDATA resource AUTODIRECT.target-node.DIGTCERT.APPL is used to determine the authority to propagate. This resource should be protected by the AUTODIRECT.target-node.DIGT* resource profile. Note that the AUTODIRECT.target-node.USER.APPL resource is not checked to determine authority to propagate USER class updates that are made as a result of processing digital certificates.
457
RRSF
on to JOE2. This keeps both network traffic and complexity of associations to a minimum, while keeping all of Joe's passwords the same. If you are using automatic password direction between same named users on your system and another RRSF node, do not establish PEER PWSYNC user associations between the same user IDs across RRSF systems that use automatic password direction. Doing so would result in duplication of password synchronization requests.
458
RRSF
profile protecting the propagation of the issued command, might fail and prevent the command from being propagated to remote RRSF nodes.
459
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Task roadmap for establishing RACF security for RRSF TCP/IP connections
The following table shows the subtasks and associated instructions for using RACF commands to establish security for TCP/IP node connections.
Subtask Administer profiles in the SERVAUTH class to enable RRSF to use TCP/IP node connections Implementing an RRSF trust policy on page 462 Associated instructions (see ... ) Steps for administering SERVAUTH class profiles to enable RRSF to use TCP/IP node connections on page 461. Steps for using the same, self-signed certificate for all RRSF nodes on page 463 Steps for using an internal CA to sign a server certificate for each RRSF node on page 466
Administer profiles in the SERVAUTH class to enable RRSF to use TCP/IP node connections
When your programmer implements TCP/IP for RRSF node connections, you must define and activate certain SERVAUTH class profiles to enable the RRSF functions on each node to access TCP/IP network resources. Be sure to add the user ID of the RACF subsystem to the appropriate access lists as shown in the steps that follow, even when the user ID has the TRUSTED or PRIVILEGED attribute on your system.
460
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | You might need to authorize the RACF subsystem to access additional SERVAUTH resources depending on the security definitions in effect for your network. For detailed information about network security options using SERVAUTH resources, see z/OS Communications Server: IP Configuration Guide. In general, if insufficient access to a SERVAUTH resource causes an ICH408I message to be issued during an RRSF connection attempt, you will likely need to explicitly permit the user ID of the RACF subsystem. Exception: During a system IPL or TCP/IP restart, if an ICH408I message occurs that is related to insufficient access to the EZB.INITSTACKsysname.tcpname resource, do not explicitly permit the RACF subsystem. This message should be ignored.
Steps for administering SERVAUTH class profiles to enable RRSF to use TCP/IP node connections
Perform the following steps to define the required SERVAUTH profiles on each node to be enabled to use TCP/IP connections:
1.
Determine whether access to the TCP/IP stack is protected. If it is, the following resource is protected in the SERVAUTH class:
EZB.STACKACCESS.sysname.tcpname
______________________________________________________________________
2.
If the TCP/IP stack is not protected, skip this step. If it is protected, add the user ID of the RACF subsystem to the access list for the TCP/IP stack: Example:
PERMIT EZB.STACKACCESS.NODE1.TCPIP CLASS(SERVAUTH) ID(RACFSUB) ACCESS(READ)
Note: If the TCP/IP stack is protected, do not skip this step even when the user ID of RACF subsystem has the TRUSTED or PRIVILEGED attribute on your system. ______________________________________________________________________
3.
If a SAF name is assigned to the RRSF listener port in the TCP/IP profile, protect the listener port with a profile that protects the following resource:
EZB.PORTACCESS.sysname.stack-name.SAF-name
Examples:
RDEFINE SERVAUTH EZB.PORTACCESS.NODE1.TCPIP.RRSF -orRDEFINE SERVAUTH EZB.PORTACCESS.*.*.RRSF
Specify the SAF name provided by the programmer in Before you begin on page 460. ______________________________________________________________________
4.
Add the user ID of the RACF subsystem to the access list for the RRSF listener port: Example:
PERMIT EZB.PORTACCESS.NODE1.TCPIP.RRSF CLASS(SERVAUTH) ID(RACFSUB) ACCESS(READ)
Note: Do not skip this step even when the user ID of RACF subsystem has the TRUSTED or PRIVILEGED attribute on your system. ______________________________________________________________________
461
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
5.
Activate your SERVAUTH profile changes, as follows. v If the SERVAUTH class is not already active, activate and RACLIST it. Example:
SETROPTS CLASSACT(SERVAUTH) RACLIST(SERVAUTH)
v If the SERVAUTH class is already active and RACLISTed, refresh it. Example:
SETROPTS RACLIST(SERVAUTH) REFRESH
______________________________________________________________________ When you are finished, you have administered the SERVAUTH class profiles required to enable each RRSF node to use TCP/IP node connections.
462
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Steps for using the same, self-signed certificate for all RRSF nodes: Perform the following steps to create one self-signed certificate and send an exported copy of it to each RRSF node.
1.
Choose a node in your RRSF network and create a self-signed certificate. Example:
RACDCERT GENCERT WITHLABEL(RRSF Server) SUBJECTSDN(CN(RACF Address Space) O(YOURORG) C(US)) KEYUSAGE(HANDSHAKE) NOTAFTER(DATE(2016-09-01))
Do not specify the PKDS, PCICC, or ICSF option. The private key in this step must be stored in the RACF database so that it can be exported with the certificate in Step 2. ______________________________________________________________________
2.
______________________________________________________________________
3.
Using FTP in binary mode, transfer the export package from the local node to a data set on each remote TCP/IP node in your RRSF network. For a multisystem node, transfer the package to only one of the member systems. ______________________________________________________________________ (Optional) On the local node, move the private key from the RACF database to the ICSF PKA key data set (PKDS), if available, where it will have hardware protection. If your installation controls resources in the CSFSERV and CSFKEYS classes, ensure that the user ID of the RACF subsystem has sufficient authority even if the user ID has the TRUSTED attribute.
4.
a.
b.
Re-add the self-signed certificate using the export package you created in Step 2 and store the private key in the ICSF PKDS. Example:
RACDCERT ADD(RACFSUB.PK12DER) ID(RACFSUB) TRUST WITHLABEL(RRSF Server) PASSWORD(The circus is coming 2 town.) PKDS(RRSFserverkey)
_________________________________________________________________
5.
(Optional) Delete the data set containing the export package because it is no longer needed. If you opted to leave the private key in the RACF database, you can delete the export package. If you want to add a new TCP/IP node in the future, you can reuse the same RRSF server certificate by exporting it, as you did in Step 2, and transferring it to the new node.
463
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you opted in Step 4 to move the private key to the ICSF PKDS, do not delete the export package when you want to use the same RRSF server certificate with any new TCP/IP node that you might add in the future. If you delete the export package, you will need to create and distribute a new self-signed server certificate (with a different subject's distinguished name) for a new TCP/IP node. _________________________________________________________________
6.
On the local node, create a RACF key ring for RRSF and add the server certificate to the ring.
a.
Specify the key ring name provided by the programmer in Before you begin on page 460.
b.
c.
Permit the user ID of RACF subsystem to access the key ring. Example:
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(RACFSUB) ACCESS(READ)
Note: Do not skip this step even when the user ID of RACF subsystem has the TRUSTED or PRIVILEGED attribute on your system.
d.
Activate the profile change in the FACILITY class, as follows. v If the FACILITY class is not already active, activate and RACLIST it. Example:
SETROPTS CLASSACT(FACILITY) RACLIST(FACILITY)
v If the FACILITY class is already active and RACLISTed, refresh it. Example:
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________
7.
On each remote RRSF node, add the self-signed certificate using the export package you transferred in Step 3. Note: These are the same steps you performed for the local node in Steps 4b and 5.
a.
Add the certificate and store the private key in the ICSF PKDS, if available. If your installation controls resources in the CSFSERV and CSFKEYS classes on the remote node, ensure that the user ID of the RACF subsystem has sufficient authority even if the user ID has the TRUSTED attribute. Example:
464
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
RACDCERT ADD(RACFSUB.PK12DER) ID(RACFSUB) TRUST WITHLABEL(RRSF Server) PASSWORD(The circus is coming 2 town.) PKDS(RRSFserverkey)
(Optional) Delete the data set containing the export package because it is no longer needed. ______________________________________________________________________
b.
8.
On each remote RRSF node, create a RACF key ring for RRSF and add the server certificate to the ring. Note: These are the same steps you performed for the local node in Step 6.
a.
Specify the key ring name provided by the programmer in Before you begin on page 460.
b.
c.
Permit the user ID of RACF subsystem to access the key ring. Example:
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(RACFSUB) ACCESS(READ)
Note: Do not skip this step even when the user ID of RACF subsystem has the TRUSTED or PRIVILEGED attribute on your system.
d.
Activate the profile change in the FACILITY class, as follows. v If the FACILITY class is not already active, activate and RACLIST it. Example:
SETROPTS CLASSACT(FACILITY) RACLIST(FACILITY)
v If the FACILITY class is already active and RACLISTed, refresh it. Example:
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ When you are finished, you have created a key ring for each TCP/IP node and added its signed server certificate to the ring. You have now implemented an RRSF trust policy for TCP/IP node connections.
465
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remember: Be sure to use this CA certificate to sign only server certificates for RRSF nodes. For each node, you will also create a key ring to hold only the node's server certificate and the signing CA certificate. For a multisystem node, a single server certificate and key ring are shared among the member systems. Steps for using an internal CA to sign a server certificate for each RRSF node: Perform the following steps to create a CA certificate that you will use to sign an individual server certificate for each TCP/IP node connection in your RRSF network.
1.
Choose a system in your RRSF network as the CA host system. This system will host your new signing CA certificate.
a.
b.
List the new RRSF CA certificate and record the issuer's distinguished name and serial number. Example:
RACDCERT CERTAUTH LIST(LABEL(RRSFCA)) Issuer's distinguished name Serial number
______________________________________________________________________
2.
On the CA host system, create the server certificate for the local RRSF node and associate it with the user ID of the RACF subsystem. Example:
RACDCERT ID(RACFSUB) GENCERT SIGNWITH(CERTAUTH LABEL(RRSFCA)) WITHLABEL(RRSF Server) SUBJECTSDN(CN(RACF Address Space) O(YOURORG) C(US)) KEYUSAGE(HANDSHAKE) NOTAFTER(DATE(2016-09-01))
______________________________________________________________________
3.
On a remote RRSF node, create a certificate request for a server certificate for this remote node. For a multisystem node, create the request on only one of the member systems.
a.
b.
Create a certificate request based on the self-signed certificate you just created. Example:
466
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
RACDCERT GENREQ(LABEL(RRSF Server)) ID(RACFSUB) DSN(RRSF.REQ)
Result: A base64-encoded certificate request is stored in the specified data set on the remote node. ______________________________________________________________________
4.
Transfer the certificate request from the data set on the remote node to a data set on the CA host system. Because this is a base64-encoded request, transfer the request as text to ensure that the ASCII translation from EBCDIC takes place. To do this, use ASCII (not binary) FTP or copy the text of the request from the data set on the remote node and paste it into an empty data set with identical attributes on the CA host system. Be sure to include the BEGIN and END lines. Note: The example in the next step specifies a data set on the CA host system with the same name as the data set on the remote node. ______________________________________________________________________ On the CA host system, create the server certificate for the remote node and sign it with the RRSF CA certificate you created in Step 1a. Because the certificate created in this step is for the remote node and will not be used on the host system, you can associate the certificate with any user ID. If you choose to associate it with the same user ID as the certificate used by the local RRSF node (created in Step 2), specify a different certificate label using the WITHLABEL operand to avoid an error in this step. Example:
RACDCERT GENCERT(RRSF.REQ) ID(RACFSUB) SIGNWITH(CERTAUTH LABEL(RRSFCA)) WITHLABEL(RRSF Server2)
5.
______________________________________________________________________
6.
On the CA host system, export the newly signed certificate to a data set. You can use the same data set that you used to store the certificate request in Step 3b. Example:
RACDCERT EXPORT(LABEL(RRSF Server2)) ID(RACFSUB) DSN(RRSF.REQ) FORMAT(PKCS7B64)
Result: RACF stores the resulting export package in the specified data set in the PKCS #7 format. The package contains both the new server certificate and the RRSF CA certificate that signed it. Optionally, now delete the server certificate on the CA host system that you created in Step 5 because it is no longer needed. Example:
RACDCERT DELETE(LABEL(RRSF Server2)) ID(RACFSUB)
______________________________________________________________________
7.
Transfer the export package from the data set on the CA host system to a data set on the remote node. Use ASCII (not binary) FTP or copy the text of the certificates from the data set on the CA host system and paste it into an empty data set with identical attributes on the remote node. Be sure to include the BEGIN and END lines. (To view sample certificate text, see Base64-encoded certificates on page 572.) For a multisystem node, transfer the export package to only one of the member systems.
467
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Optionally, now delete the data set on the CA host system because it is no longer needed. ______________________________________________________________________
8.
On the remote node, add the newly signed certificate to replace the self-signed placeholder certificate you created in Step 3a.
a.
Results: Both the server certificate and the RRSF CA certificate are added to the RACF data base on the remote node. The RRSF CA certificate is assigned a generated label. The following message is issued:
IRRD152I Root Certificate Authority not currently defined to RACF. Top CERTAUTH certificate added with the TRUST status.
b.
Find out the generated label of the RRSF CA certificate. To do this, list the RRSF CA certificate by specifying the issuer's distinguished name and the serial number you recorded in Step 1b. Make note of the generated certificate label. Example:
RACDCERT LIST(ISSUERSDN(CN=RRSFCA.O=YOURORG.C=US) SERIALNUMBER(00)) CERTAUTH
If you did not record the issuer's name and serial number in Step 1b, issue the RACDCERT LIST CERTAUTH command and review the list of CA certificates. Locate the RRSF CA certificate by its subject's distinguished name, for example CN(RRSFCA) O(YOURORG) C(US)), and make note of the label.
c.
______________________________________________________________________
9.
On each RRSF node, create a RACF key ring for use with RRSF and add both the RRSF CA certificate and the server certificate to the ring.
a.
Specify the key ring name provided by the programmer in Before you begin on page 460.
b.
c.
d.
468
RRSF
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Example:
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(RACFSUB) ACCESS(READ)
Note: Do not skip this step even when the user ID of RACF subsystem has the TRUSTED or PRIVILEGED attribute on your system.
e.
Activate the profile change in the FACILITY class, as follows. v If the FACILITY class is not already active, activate and RACLIST it. Example:
SETROPTS CLASSACT(FACILITY) RACLIST(FACILITY)
v If the FACILITY class is already active and RACLISTed, refresh it. Example:
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ When you are finished, you have created two key rings, one for the CA host system and one remote TCP/IP node in your RRSF network. You have also added to each ring the signed server certificate for each node and its signing CA certificate. Important: For each additional RRSF node that you want to allow to communicate using TCP/IP, repeat Steps 3 through 9. When you are finished, you have implemented an RRSF trust policy for TCP/IP node connections.
469
RRSF
| | | | | | | | | your filter's distinguished name (DN). If you are confident that the external CA will not issue other certificates with the same DN, you can reduce administrative effort by implementing a single many-to-one filter on each node based on the naming convention used for the distinguished names of your RRSF servers. v Protect a resource named IRR.RRSF.CONNECT in the RRSFDATA class. Be sure to give the mapped user ID at least READ access to it even if the user ID has the TRUSTED or PRIVILEGED attribute. This RRSFDATA profile can also be used to create a RACF audit trail that logs the establishment of inbound RRSF connections to the local system.
470
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
472 473 473 474 474 474 475 475 475 477 478 478 478 478 479 480 480 481 481 481 482 482 482 484 484 485 485 486 487 487 489 491 492 494 494 495 498 498 501 502 502 503 504 504 504 504 505 507 508 508 509 510 510 510 510
471
JES
Reloading Data . . . . . . . . . . . . How RACF Affects Jobs Dumped from and Restored Dumping Jobs . . . . . . . . . . . . Restoring Jobs . . . . . . . . . . . . Authorizing Console Access . . . . . . . . . MCS Consoles . . . . . . . . . . . . . Remote Workstations (RJP/RJE Consoles) . . . . JES3 Consoles . . . . . . . . . . . . . Controlling Where Output Can Be Processed . . . . Authorizing the Use of Your Installation's Printers . . Authorizing the Use of Operator Commands . . . . Commands from RJE Work Stations . . . . . . Commands from NJE Nodes . . . . . . . . Who Authorizes Commands When RACF Is Active . to . . . . . . . . . . . . . . Spool . . . . . . . . . . . . . . . . . . . . . . . . . . (JES3 . . . . . . . . . . . . . . . . . . . . . . . . . . Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 511 511 511 511 511 512 514 514 515 516 516 516 517
You can use JES initialization statements, JES installation exits, RACF, or any other functionally equivalent program to provide security for JES. This topic describes how to use RACF to provide security for JES. In this topic, the term JES refers to both JES2 and JES3, except when there is a difference between the two.
472
JES
JES Code That Can Bypass RACF Protection Your installation can use JES initialization statements and JES installation exits to provide protection and, in some cases, to bypass RACF protection. For more information, see z/OS JES2 Initialization and Tuning Guide or z/OS JES3 Initialization and Tuning Guide.
Be sure to refresh the class after you create the entry. Issue:
SETROPTS RACLIST(STARTED) REFRESH
v An entry in the RACF started procedures table (module ICHRIN03). If none is defined, create an entry for JES. In either case, be sure that JES has the trusted attribute. 3. Create a user profile for the JES started procedure:
ADDUSER jes-userid DATA(JES started procedure) NOPASSWORD DFLTGRP(appropriate-group)
For more information on adding a started procedure, see Using Started Procedures on page 153 and z/OS Security Server RACF System Programmer's Guide.
473
JES
When you specify BATCHALLRACF, any batch job that does not have a RACF-defined user specified on the USER parameter of the JOB statement, or propagated security information associated with it, fails. Specifying NOBATCHALLRACF allows such jobs to run.
With this operand in effect, any XBM job that does not have a RACF-defined user ID and password on the JOB statement, or propagated RACF identification associated with it, fails. Specifying NOXBMALLRACF allows XBM jobs to run without RACF user IDs. Note: On systems with the XBMALLRACF operand in effect, the BATCHALLRACF operand controls batch jobs other than jobs that run under an execution batch monitor (XBM).
474
JES
You should keep a record of user IDs and group name handy for use in securing other system resources such as spool data, console access, and commands as well as for updating groups in the future.
All access checks are done with TOM's user ID. Any auditing records produced by RACF because of the submitted job's actions include the information that the job is a surrogate job (unless the PASSWORD parameter is specified on the JOB statement).
475
JES
Important A user should not allow another user to act as surrogate user unless the surrogate user can be trusted as highly as the execution user is trusted. This is because the surrogate user can do anything the execution user can do (unless the surrogate user lacks access to a security label that protects a resource). For example, the surrogate user can submit a job to copy, alter, or delete the execution user's data. The surrogate user must specify the execution user's user ID on the USER parameter on the JOB statement and must not specify a password. If the PASSWORD parameter is specified with a password, surrogate processing is not performed, and audit records generated by the job's activities do not indicate that the job is a surrogate job. This applies not only to jobs submitted through the TSO SUBMIT command, but any time the surrogate user is a RACF-defined user. When the SECLABEL class is active and the SETROPTS MLS option is in effect: v If a security label is specified for the submitted job, the specified label must be equal to or greater than the current security label of the surrogate user, and both the surrogate and execution users must have READ authority to the specified label. After job verification is complete, the job submitted by the surrogate user runs as if the execution user had submitted the job. v If a security label is not specified for the submitted job but the surrogate user has a current security label, the submitted job runs with the surrogate user's current security label. To allow surrogate users, do the following: 1. Ensure that the installation exit for the TSO SUBMIT command (IKJEFF10) does not prevent users from submitting jobs with job names that do not match their user IDs. The installation exit supplied by IBM meets this requirement, because it does not check the JCL of submitted jobs. For more information, see z/OS TSO/E Customization. 2. If your installation implemented the sample ICHRTX00 exit from SYS1.SAMPLIB member RACINSTL to enable surrogate user processing, you should migrate to profiles in the SURROGAT class. After RACF is installed, the code in the ICHRTX00 exit that checks $SUBMIT.userid profiles is not used. You should copy the $SUBMIT.userid profiles to SURROGAT profiles as follows:
RDEFINE SURROGAT execution-userid.SUBMIT FROM($SUBMIT.execution-userid) FCLASS(FACILITY)
3. Define resource profiles in the SURROGAT class for each execution user who needs to allow others to be surrogate users:
RDEFINE SURROGAT execution-userid.SUBMIT UACC(NONE) OWNER(execution-userid)
Note: Specifying the OWNER operand allows the execution user to issue the PERMIT command for this profile. 4. To specify that another user can act as the surrogate for an execution user, give the surrogate user READ access authority:
PERMIT execution-userid.SUBMIT CLASS(SURROGAT) ID(surrogate-userid) ACCESS(READ)
Only users and groups that have READ access authority are allowed to submit jobs on behalf of another user.
476
JES
To check whether a user can submit jobs for another user, make sure the user (or a group the user is a member of) is in the access list with READ access authority:
RLIST SURROGAT execution-userid.SUBMIT AUTHUSER
5. When you are ready to control access using the SURROGAT profiles, activate the SURROGAT class:
SETROPTS CLASSACT(SURROGAT)
To disable surrogate support for a particular user, delete the profile for that user. To disable surrogate support for all users, deactivate the SURROGAT class. NJE notes: The node in which SURROGAT checking occurs depends on the job statements (see Where NJE Jobs Are Verified on page 478). For verification done on the receiving node, the SURROGAT checking is done after any translation due to NODES profiles. (See Understanding NODES Profiles on page 487.)
If the submitter of a job is a started procedure, the execution node is not checked during SURROGAT processing.
3. Issue the SETROPTS command with the RACLIST operand to activate SETROPTS RACLIST processing for the PROPCNTL class:
SETROPTS RACLIST(PROPCNTL)
If you do not activate SETROPTS RACLIST processing for the PROPCNTL class, RACF ignores the profiles you create in this class. The above sequence of commands eliminates user ID propagation of the user ID CICS1. Notes: 1. For a profile in the PROPCNTL class, RACF checks only for the presence or absence of a profile in this class. If a profile exists for a particular user ID, user ID propagation does not occur for that user ID. 2. RACF performs no logging and issues no messages for profiles in the PROPCNTL class. 3. PROPCNTL profiles only control propagation for local jobs. If the installation uses &RACLNDE for its remote nodes, only the PROPCNTL profiles are necessary. For more information on the use of &RACLNDE, see Defining Nodes as Local
Chapter 14. Providing Security for JES
477
JES
Input Sources on page 503. If the installation uses NODES profiles, it must also use them to control propagation (see Controlling User ID Propagation in an NJE Environment on page 494). 4. If you have controlled a user ID using the PROPCNTL class, and that user wants to submit a batch job to run from that user ID, the JOB statement must contain both the user ID and proper password. For example, if user A submits a job with USER=A, PASSWORD=password must also be specified. However, if a different user wants to submit a job using the controlled user ID, that user can either specify the user ID and password as above, or use the facilities provided by the SURROGAT class and just specify the user ID. For example, if you controlled user A using the PROPCNTL class, user B could submit a job, specifying only USER=A with the appropriate SURROGAT authorization.
478
JES
Submitting node
JOB
JOB
Execution node
User verification for NJE jobs normally is done at the execution node. However, RACF authorization checking might occur additionally at the submitting node, depending on the following: v Those jobs sent using the JES2 /*ROUTE XEQ statement or /*XEQ statement are verified at the execution node only. v Those jobs sent using the JES2 /*XMIT statement or the JES3 //*ROUTE XEQ or //XMIT statement have their first JOB statement verified at the submitting node and their second JOB statement verified at the execution node. Submitter information is propagated from trusted nodes. The submitter information is: v The token for a verified first job card v The original submitter's token if the job was submitted from an internal reader v The unknown user token if the job was submitted from a physical reader v NJE header information (no token available) if the job was submitted from a downlevel node Whether a job is accepted is based on a combination of the submitter's ID, group, or security label. Whether security information is propagated and translated is based on the submitter's ID (as taken from above). Job acceptance and translation is done using profiles in the NODES class. RACF finds the best fit among the profiles in the NODES class and uses the information specified in the UACC and ADDMEM information. For more information, refer to Authorizing Network Jobs and SYSOUT (NJE) on page 486.
Submitting node
JOB
Execution node
SYSOUT
Printing node
For inbound SYSOUT, user verification occurs at the printing node instead of the submitting node (as it can for inbound jobs). On the printing node, RACF authorization checking occurs in the NODES class, as it does for inbound jobs. RACF finds the best fit among the profiles in the NODES class and uses the information specified in the UACC and ADDMEM information. Whether the SYSOUT is accepted is based on a combination of the owner's ID, group, or security label. Whether the security information is accepted and translated is based on the owner's ID taken from: v The job token from the NJE header as verified at the executing node v If no token is available (SYSOUT is from a downlevel node), the owner is considered to be the NJE undefined user as defined by:
SETROPTS(JES(NJEUSERID(userid)))
479
JES
In addition, if &SUSER (submitting user) is specified on the ADDMEM operand, the submitter can be used as the owner if one of the following is also true: v The submitting node is defined as a local node in the &RACLNDE profile in the RACFVARS class. In this case, the submitting user and group are used as the SYSOUT owner values and are unchanged (no translation). v The NODES profile that matches is the profile named submitnode.USERS.submitter and UACC(CONTROL) is specified. If there is a translate value, but it is not &SUSER, the SYSOUT owner user ID is the translate value. If it is &SUSER, the owner is the unchanged submitter user ID. In addition, a lookup is done for the NODES profile that matches the form submit-node.GROUPS.submit-group. If this profile has an ADDMEM translate value, that value is used as the SYSOUT owner group. Otherwise, the unchanged submit group is used. The UACC for this profile does not matter.
480
JES
481
JES
482
JES
RDEFINE JESJOBS ** UACC(READ)
Note: This example assumes that a SETROPTS GENERIC(JESJOBS) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. 3. Define profiles with UACC(NONE) for the job names you want to protect.
RDEFINE JESJOBS SUBMIT.nodename.jobname.userid UACC(NONE)
where: nodename is your local node name. Note: It is recommended that you define a profile in the RACFVARS class named &RACLNDE, and use &RACLNDE for all profiles in the JESJOBS class. jobname userid is the name of the job specified on the JOB statement.
is the user ID under which the job is to execute (either the USER operand on the JOB statement or the propagated user ID). For example, the following command would prevent any user from submitting jobs whose job names begin with PAYROLL.
RDEFINE JESJOBS SUBMIT.*.PAYROLL*.* UACC(NONE)
4. To allow users to submit jobs protected by the profile, give them READ access authority:
PERMIT SUBMIT.*.PAYROLL*.* CLASS(JESJOBS) ID(PAYGROUP) ACCESS(READ)
Note: By denying a user sufficient access to a SUBMIT profile, you can prevent that user from submitting jobs protected by the profile even if that user knows the password or is an authorized surrogate user. For example, the following profile would prevent jobs from being submitted with USER01 as the user ID:
RDEFINE JESJOBS SUBMIT.*.*.USER01 UACC(NONE)
You can also provide conditional access to the job name, depending on the class and ID of the port of entry (POE) associated with the submitter of the job. The class name you would use is determined by what the submitter is. For a regular submission from a TSO logon session, the submitter's POE is a terminal ID and the class name is TERMINAL. The submitter's POE can also be a JESINPUT device when the submitter of the job is another job. Making use of the job name conditional on the JESINPUT device is not recommended because this is very much dependent on what type of job was submitted. If the submitting job is a local job, its JESINPUT POE would be an internal reader, a local card reader, or an RJE reader. However, if the submitting job is an NJE job (for example, from another JES node), its JESINPUT POE would be the node name. This uncertainty can make the use of WHEN(JESINPUT) for the JESJOBS class difficult. Therefore, you should be careful if you decide to use it. For example, you can allow a user to submit a job only from a certain terminal ID by specifying the WHEN(TERMINAL) operand on the PERMIT command as follows:
Chapter 14. Providing Security for JES
483
JES
PERMIT SUBMIT.*.PAYROLL*.* CLASS(JESJOBS) ID(USER01) ACCESS(READ) WHEN(TERMINAL(terminal-ID))
where terminal-ID is the terminal to which the submitter is logged on. 5. When you are ready to use the JESJOBS class to control who can submit jobs, activate the JESJOBS class:
SETROPTS CLASSACT(JESJOBS)
Note: If you activate this class and create no profiles for it, users cannot submit batch jobs.
Note: The qualifiers for CANCEL profiles have the same meaning as for SUBMIT profiles. However, the jobname and userid qualifiers are reversed in CANCEL and SUBMIT profiles. This is because of the expected use of the profiles: v It is likely that many users would submit jobs having common job names, with certain exceptions. For example, the following profiles would allow many users to submit jobs whose names begin with PAYROLL, except when those jobs run with BEN's authority:
RDEFINE JESJOBS SUBMIT.*.PAYROLL*.* UACC(READ) RDEFINE JESJOBS SUBMIT.*.PAYROLL*.BEN UACC(NONE)
v It is likely that one user would give another the authority to cancel all of the first user's jobs, with certain exceptions. For example, the following profiles would allow JOE the authority to cancel BEN's jobs, except for his PAYROLL jobs:
RDEFINE JESJOBS CANCEL.*.BEN.* UACC(NONE) PERMIT CANCEL.*.BEN.* CLASS(JESJOBS) ID(JOE) ACCESS(ALTER) RDEFINE JESJOBS CANCEL.*.BEN.PAYROLL* UACC(NONE)
v These examples assume that a SETROPTS GENERIC(JESJOBS) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. 3. Give users the appropriate access authority:
PERMIT CANCEL.*.*.PAYROLL* CLASS(JESJOBS) ID(PAYGROUP) ACCESS(ALTER)
Users must have ALTER access authority to issue the CANCEL command for the job. 4. If the JESJOBS class is not already active, activate the JESJOBS class:
SETROPTS CLASSACT(JESJOBS)
Allowing a TSO User to CANCEL All Jobs Originating from Local Nodes
To allow a TSO user to cancel all jobs that originate on nodes you treat as local nodes, do the following: 1. Define a profile named &RACLNDE in the RACFVARS class, specifying on the ADDMEM operand which nodes are to be treated as local:
484
JES
RDEFINE RACFVARS &RACLNDE UACC(NONE) ADDMEM(POKMVS1 POKMVS2)
UACC(NONE) is recommended to protect the &RACLNDE profile itself. 2. Define a profile in the JESJOBS class as follows:
RDEFINE JESJOBS CANCEL.&RACLNDE.*.* UACC(NONE)
This example assumes that a SETROPTS GENERIC(classname) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. 3. Give the appropriate access to the TSO user:
PERMIT CANCEL.&RACLNDE.*.* CLASS(JESJOBS) ID(USER1) ACCESS(ALTER)
If there are any other JESJOBS resources that begin with CANCEL, you might also need to permit users appropriate access to those. 4. If you have not already done so, activate the JESJOBS and RACFVARS classes:
SETROPTS CLASSACT(JESJOBS RACFVARS)
5. Refresh SETROPTS RACLIST processing for the RACFVARS class for the change to take effect:
SETROPTS RACLIST(RACFVARS) REFRESH
If, later, you decide that node POKMVS2 should no longer be treated as a local node, do the following:
RALTER RACFVARS &RACLNDE DELMEM(POKMVS2) SETROPTS RACLIST(RACFVARS) REFRESH SETROPTS GENERIC(JESJOBS) REFRESH
Also, be sure to issue the SETROPTS RACLIST REFRESH or GENERIC REFRESH commands for any classes that contain profiles that use the RACFVARS value affected by your change. If, later, you decide that USER2 should also be allowed to cancel local jobs, do the following:
PERMIT CANCEL.&RACLNDE.*.* CLASS(JESJOBS) ID(USER2) ACCESS(ALTER) SETROPTS GENERIC(JESJOBS) REFRESH
485
JES
v The name of the device. This is described in the topic on authorizing the use of input sources in z/OS JES2 Initialization and Tuning Guide. v The user ID or group name of the users you want to authorize or restrict. v The universal access authority to associate with each device. Valid access authorities for input devices are: NONE READ Specifies that the input device can be used only by those users explicitly permitted through the access list.
Specifies the minimum authority required to use the input source. 2. Define a profile for each input source, as follows:
RDEFINE JESINPUT source-name UACC(NONE)
3. It is strongly recommended that you create a profile with a UACC of READ for all JES input sources that are otherwise not defined:
RDEFINE JESINPUT ** UACC(READ)
This example assumes that a SETROPTS GENERIC(JESINPUT) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. If you do not, users can access only JES input sources to which they (or their groups) are explicitly authorized. 4. For each protected input source, grant access to the users or groups who need to use it:
PERMIT source-name CLASS(JESINPUT) ID(user-or-group) ACCESS(READ)
5. When you are ready to start using the protection provided by the profiles you have created, activate the JESINPUT class:
SETROPTS CLASSACT(JESINPUT) REFRESH
If you activate this class and create no profiles for it, users cannot submit batch jobs.
486
JES
define these profiles. Together, you should decide whether you want to protect inbound work, outbound work, or both. For inbound work, decide whether you want to protect jobs, SYSOUT, or both. You must also determine which users and groups of users can submit work and which security labels are valid for processing on your node.
487
JES
Note: Access lists do not apply to NODES class profiles. The ADDMEM value is used to translate to locally defined values. A NODES profile name has the following format:
nodename.worktype.name
where: nodename Is the name of the node from which you expect inbound work. For jobs, this is the submitting node. For SYSOUT, this is the execution node. Notes: 1. If &SUSER is specified as an ADDMEM value in a profile that controls SYSOUT, a second check is done where nodename is the submitting node. 2. If &DFLTGRP is specified as an ADDMEM value in a profile that deals with groups (either jobs or SYSOUT), the user's default group is used. 3. It is recommended that you define a profile in the RACFVARS class named &RACLNDE, and use &RACLNDE for all nodes that are considered local to your system. For more information, see Setting Up NODES Profiles on page 489. worktype Is the type of work to be controlled by the profile. Notice that the last character, J or S, indicates the type of work to be validated. J indicates jobs; S indicates SYSOUT. RUSER Controls commands originating from NJE nodes. The nodename is used as the name on the third qualifier. Controls jobs by the user ID specified on the third qualifier. The job is controlled by who the submitter is. This type of profile is also used to determine the amount of trust the job has. For details, see Understanding Mixed Security Environments on page 491. Controls SYSOUT by the user ID specified on the third qualifier. The SYSOUT is controlled by who the owner is. This type of profile is also used to determine the amount of trust the SYSOUT has. For details, see Understanding Mixed Security Environments on page 491. Controls jobs by the group name specified on the third qualifier. Controls SYSOUT by the group name specified on the third qualifier. Controls jobs by the security label specified on the third qualifier. Controls SYSOUT by the security label specified on the third qualifier.
USERJ
USERS
488
JES
For example, a value of USERJ specifies that you want RACF to use the profile to validate inbound jobs; a value of USERS specifies that you want RACF to use the profile to validate inbound SYSOUT. name Is the actual user ID, group name, or security label you want validated. If you are using NODES profiles to allow the use of these input values, you must either define these values in your RACF database or use the ADDMEM operand to translate them into acceptable values for your system. For jobs, the submitter information is substituted. For SYSOUT, the owner information is used. (See Understanding Mixed Security Environments on page 491.)
For example, the following profile controls whether jobs coming from user ID WAYNE at node BERMUDA can be executed here:
BERMUDA.USERJ.WAYNE
You can optionally associate a local user ID with user ID WAYNE by specifying the user ID on the ADDMEM operand. You can specify generic characters in the profile name to control a wider range of work. For example, if you place an asterisk in place of the nodename value, RACF performs the requested type of validation for work from all nodes in the network (unless a more specific profile exists). Examples of generic profiles in the NODES class are shown in this topic. For more information, see Choosing Between Discrete and Generic Profiles in General Resource Classes on page 210. If you installed RACF and did not activate the NODES class, JES validates jobs and SYSOUT in the following manner: v JES runs only those jobs that are destined for your node and that have a valid user ID and password on the job card if BATCHALLRACF is active. If BATCHALLRACF is not active, the job can run without a RACF user ID. v A security label of SYSHIGH is assigned to all SYSOUT destined for your node (if security labels are being used) and can be printed only on those devices permitted to SYSHIGH data. JES assigns the default user ID to this SYSOUT. For information about default user IDs, see Understanding Default User IDs on page 501. v All work destined for another node remains unchanged. If you choose to activate the NODES class, you must gather information from your JES system programmer so that you can set up profiles to control the work entering your system. The following sections identify the appropriate values for each type of work.
489
JES
2. Define a top generic profile to control all work not controlled by more specific NODES profiles. 3. For each node, define profiles with USERx, SECLx or GROUPx qualifiers only if you want to: v Prevent work with the specified user ID, security label, or group name from entering your node (determined by the UACC of the profile). v Translate the specified user ID, security label, or group name to a local value (specify the ADDMEM operand to do this). 4. Define the local node or nodes in the &RACLNDE profile in the RACFVARS class. Enter:
RDEFINE RACFVARS &RACLNDE ADDMEM(nodea nodeb...)
In effect, this allows security information to be accepted for verification without the use of NODES profiles. That is, the information is used as passed because it is considered local. For SYSOUT, this allows the owner information to be used without a NODES lookup, or automatically allows the submitter to become the SYSOUT owner when &SUSER is used. (See How SYSOUT Requests Are Verified on page 479.) For jobs, this allows the special JES2 pre-execution reroute case to use the information as passed without translation, and allows the spool unload and reload of jobs to propagate the information automatically without requiring NODES profiles. See Defining Nodes as Local Input Sources on page 503. Note: Group names are not propagated when the node is defined to &RACLNDE. The default group of the execution user is used. 5. If an inbound job has been submitted as a surrogate job on its originating system (see Allowing Surrogate Job Submission on page 475), the PASSWORD parameter is not specified on its JOB statement. Therefore, you must specify UACC(CONTROL) or higher in the NODES profile controlling such jobs, or UACC(UPDATE) or higher if the job is from an uplevel node to prevent requiring password verification. (See Understanding Mixed Security Environments on page 491.) Unknown, blank, and undefined security labels: When you receive a SYSOUT data set with an unknown security label (consisting of hexadecimal zeros) or a blank security label while the SECLABEL class is active on the receiving node, RACF assigns a security label called RACSLUNK to the SYSOUT data set. When you receive a SYSOUT data set with a security label that is not defined on your system, the data set keeps its security label and RACSLUNK label is not assigned. While the SECLABEL class is active, no users are authorized to access SYSOUT data sets with unknown, blank, or undefined labels, until you take one of the following actions: v Define the RACSLUNK or undefined label to RACF as a security label in the SECLABEL class and authorize users to access it. v Translate the RACSLUNK or undefined label to a defined security label on your node using the ADDMEM value of a NODES class profile. (See Understanding NODES Profiles on page 487.) Tip: Translate an undefined label to a defined security label that uses the same level and category authorizations, if one already exists. With either action, a user must be logged on with the appropriate security label to access the SYSOUT data set.
490
JES
Learning which NODES profiles are used: For an exercise to learn which NODES profiles are used, see Figure 40.
Assume the following profiles: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10a) (10b) POKMVS.SECLJ.A POKMVS.SECLS.A POKMVS.SECL%.A POKMVS.USERJ.JOHN POKMVS.USERS.JOHN POKMVS.USER%.JOHN POKMVS.USER%.TOM POKMVS.USER%.* POKMVS.*.* * *.USERJ.* ADDMEM(ALPHA) ADDMEM(ALPHA) ADDMEM(JOHNNY) ADDMEM(JOHNNY) ADDMEM(NONAME) ADDMEM(X) UACC(READ) UACC(READ) UACC(NONE) /*never used*/ UACC(UPDATE) UACC(UPDATE) UACC(NONE) /*never used*/ UACC(NONE) UACC(UPDATE) UACC(READ) UACC(NONE) UACC(NONE)
1. If a job is submitted from user JOHN at node POKMVS with SECLABEL A, profiles (1), (4), and (9) are used. Profile (4) translates the user ID to JOHNNY. Profile (9) translates the group name to X. (There is no profile with the GROUP operand.) Profile (1) translates the SECLABEL to ALPHA. 2. Profile (3) would never be used because profiles (1) and (2) are discrete profiles that cover all work from node POKMVS that has security label A. Profile (6) would never be used because profiles (4) and (5) are discrete profiles that cover all work from user JOHN at node POKMVS. 3. If jobs or SYSOUT come in from user TOM at POKMVS, profile (7) fails the job or purges the output. 4. If a job comes in from anyone other than JOHN or TOM at POKMVS, with SECLABEL A, profiles (1), (8), and (9) are used. Profile (8) translates the user ID to NONAME. Profile (9) translates the group name to X (there is no profile with the GROUP operand.) Profile (1) translates the SECLABEL to ALPHA. Note: Profile (8) translates many user IDs to one. You might do this to create a guest user ID that can be used by any otherwise unknown user coming in from POKMVS. With such a user ID, you can allow people from POKMVS to access certain resources without having to give each of them a user ID on your system. 5. Because there is no POKMVS profile with the GROUP operand, profile (9) is the generic that is used to translate group names. Therefore all jobs and SYSOUT that come from POKMVS get group X. (If profile (9) did not have ADDMEM specified, there would be no translation of group names.) Also, all security labels from POKMVS, except security label A, are translated to X. 6. Profile (10a) fails all NJE jobs and SYSOUT for any other user, group, or security label that is not covered by a more specific NODES profile. If you want to have just default control for any NJE jobs, and not control SYSOUT, use profile (10b) instead. Figure 40. Which NODES profiles are used?
491
JES
cases. For example, certain security information, such as security labels, might not be sent with work from some systems. The following list categorizes the various environments into three groups: v Uplevel security systems Systems running z/OS where RACF is installed and active. v Downlevel security systems Systems running z/OS where RACF is not used but another security product is being used. Systems not running z/OS. v Default security systems Systems running z/OS where no security product is being used. The terms (uplevel, downlevel, and default) describe the security systems of the source nodes. This tells JES and RACF how much of the security information has been verified at the source. They are used to determine how much the receiving node trusts the source nodes. For jobs, the amount of trust determines under what circumstances RACF propagates the submitter. For SYSOUT, it determines under what circumstances RACF accepts the owner information. NJE uses the NODES profile UACC to determine level of trust. Use these definitions when this topic refers to uplevel, downlevel, and default security systems. See Table 30 on page 493 and Table 31 on page 497.
Authorizing Jobs
You can control which network jobs are authorized for processing at your installation on the basis of submitter's user ID, group name, or security label associated with the inbound job. To authorize or restrict jobs entering your system from another node, define a NODES profile that specifies the criteria on which jobs are accepted. Ask your JES system programmer for the following: v The node names from which you expect jobs v The user IDs or group names from which you expect jobs v The security labels that you should accept v The universal access authority, which determines how JES3 processes the job. Table 30 on page 493 lists the universal access authorities you can assign and defines the validation that RACF performs.
492
JES
Table 30. NODES class operands and the UACC meaning for inbound jobs
Type of check (operand) User ID (USERJ) UACC NONE Fails the job. READ Verifies all security information available including password validation. UPDATE If the job is from an uplevel node, that is, if a non-default valid security token is passed, propagates the submitter's or translated security information as the owning security information without password validation. See Understanding Mixed Security Environments on page 491. If the job is from a default or downlevel node, processing is the same as for a UACC of READ. Group name (GROUPJ) Fails the job. Translates group name to that specified in ADDMEM. If ADDMEM is not specified, uses the group name received. Translates the submitter's SECLABEL to that specified in ADDMEM. If ADDMEM is not specified, uses the security label received. CONTROL or greater Same as UPDATE, but default security or downlevel information is allowed. CONTROL allows a downlevel system to send jobs to your node without passwords. RACF does not validate passwords. See Understanding Mixed Security Environments on page 491.
Note: For more details on how NJE jobs are processed, see Authorizing Jobs on page 492.
Note: If no profile exists for a job when the NODES class is active or if the NODES class is inactive, RACF performs only user ID, group name, and password validation without performing any translation. If no profile exists for a job when the NODES class is active, RACF verifies all security information available and a valid password and user ID must be specified on the job card. You can further reduce the risk of security exposures by allowing jobs to be submitted from other nodes without requiring a password if the sending node properly validates and transmits a user's identity. You can either allow the submitter's identity (that is, the user ID and security label) to be propagated to the job or you can specify that the submitter is a surrogate submitter who can submit jobs on behalf of other users without needing a password. For either case, you indicate in NODES class profiles which nodes are trusted to provide valid submitter identity information. You can restrict the trusted information to specified user IDs, group names, or security labels, if desired. This submitter identity information in combination with user data on the job card is used to determine the user identity to be used for the job. v If no user ID or password is specified on the job card, the submitter's identity is propagated to the job.6 v If a user ID but no password is specified, the user ID is allowed if the submitter is authorized as a surrogate for that user ID.6
6. In either case, if SECLABEL is specified on the job card, it is used. If not, the SECLABEL of the submitter is propagated to the job. Chapter 14. Providing Security for JES
493
JES
v If both user ID and password are specified on the job card, the submitter's identity is not propagated to the job, but will still be used for JESJOBS checking. Normal password validation is performed.
Be sure that both the RACFVARS and the NODES classes are active and generics are active for the NODES class, that you bring the classes in storage using SETROPTS RACLIST, and that you issue a SETROPTS RACLIST REFRESH after you define the two profiles. You need these profiles on every receiving system where you want propagation to be controlled. Every user ID that has a PROPCNTL entry on that system should be included in the ADDMEM list for &PROPCON. With this setup, if a user ID is not coded on the job card, the job is routed to another node, and the submitting user ID is a member of &PROPCON on the receiving side, the job runs with the undefined user ID (default of ++++++++), assuming SETROPTS(JES(BATCHALLRACF)) and SETROPTS(JES(XBMALLRACF)) are not in effect. Note that a better-fitting NODES profile with a higher UACC negates this protection. For example, if in addition to the two profiles above you have a NODES profile NODEX.USERJ.CICS1 with UACC(CONTROL), even if CICS1 is a member of &PROPCON, an incoming job submitted by CICS1 runs as CICS1. For more information about why you would want user propagation controlled, see Controlling User ID Propagation in a Local Environment on page 477.
494
JES
If the submitting node is not trusted, the submitter information cannot be used as passed to RACF. When the submitter is identified by token information, the submitter is then represented by the NJE unknown user (that is, no user ID). The original submitter information is discarded. This allows UACC access to the checks made on behalf of the submitter, such as SURROGATE and JESJOBS. RACF validates an NJE batch job based on the submitter node and submitter user ID in a USERJ profile and on the submitter node and submitter group name in a GROUPJ profile. If there is an ADDMEM value, the NJE batch job submitter user ID is translated to the ADDMEM value before the validation checks are made. When RACF determines that a job is not from a trusted node, the submitter user ID of the NJE batch job is set to the NJE unknown user ID and the submitter group name is changed to blanks. For a job that is submitted from a trusted node, the translated submitter user ID is propagated and becomes the user ID with which the NJE batch job runs. USERJ NODES profiles are checked before the GROUPJ NODES profiles. After successful verification based on the submitter node and user ID, GROUPJ NODES profiles are used to validate NJE batch jobs, based on the submitter node and group name. If there is an ADDMEM value, the NJE batch job submitter group name is translated to the ADDMEM value before the validation checks are made. Note: If no USERJ NODES profile exists, the GROUPJ NODES profile is not checked. A GROUPJ NODES profile can be used to fail incoming jobs based on the submitter's group by specifying UACC of NONE in the profile. A GROUPJ NODES profile can also be used to translate the submitting group to an appropriate group for the receiving system. This is done by specifying a UACC of at least READ and an appropriate ADDMEM member. If the installation does not want incoming jobs to fail based on the groups, a special ADDMEM of &DFLTGRP can be used. This is not a RACFVARS variable. It just specifies that for jobs matching this GROUPJ profile, the resulting user's default group should be used in the verification. Example:
RDEFINE NODES Z.GROUPJ.* UACC(READ) ADDMEM(&DFLTGRP)
Assuming appropriate use of USERJ profiles, all NJE batch jobs from node Z will have SURROGAT and JESJOBS checking done based on the default group of the submit user. Checking done on the execution user (assuming the submit group is propagated, that is, GROUP is not on the job card), will be done with the default group of the execution user.
Authorizing SYSOUT
You can control the processing of SYSOUT at your installation based on the user ID, group name, or security label associated with the inbound SYSOUT. If no profile exists for an NJE SYSOUT when the NODES class is active, SYSOUT ownership cannot be assigned. See Understanding Default User IDs on page 501. To authorize or restrict SYSOUT entering your system from another node, define NODES class profiles that identify the criteria on which SYSOUT is accepted. Ask your JES system programmer for the following: v The node names from which you expect SYSOUT
Chapter 14. Providing Security for JES
495
JES
v The user IDs, group names, and security labels from which you expect SYSOUT v The universal access authority, which determines how JES processes the SYSOUT. RACF can assign ownership based on either the user ID and node that created the SYSOUT or the user ID and node that submitted the job that created the SYSOUT. Notes: 1. If the NODES profile allows the user ID to be associated with the SYSOUT, but the user security information is incorrect, an IRR808I message is issued and processing continues with the NJE unknown user as set by SETROPTS JES(NJEUSERID(userid)). 2. &DFLTGRP can be used for SYSOUT in the same way as in batch jobs. Specifying ADDMEM of &DFLTGRP in a GROUPS profile will cause verification to be done for the default group of the owning user ID. Table 31 on page 497 lists the universal access authorities you can assign and defines the validation that RACF performs.
496
JES
Table 31. NODES class operands, UACC, and SYSOUT ownership when node is not defined to &RACLNDE
Type of check (operand) User ID (USERS) UACC NONE READ UPDATE CONTROL or greater
Check of user ID and node that created SYSOUT Purges the output. If the translation value from ADDMEM is &SUSER, check submitting user ID and node. Otherwise, assigns ownership of the output to the default NJE user ID (default is ????????). If default or no security information is available, that is, from a downlevel or default node, processing is the same as a UACC of READ. If security information is from an uplevel node, that is, a non-default valid security token is passed, assigns the translation value from ADDMEM to the output. When ADDMEM is not specified, ownership is assigned to the user ID that created the output. See Understanding Mixed Security Environments on page 491. If the translation value from ADDMEM is &SUSER, check submitting user ID and node. Check of submitting user ID and node (only when &SUSER is specified for ADDMEM) Assigns ownership of the output to the default NJE user ID (default is ????????). Assigns ownership of the output to the default NJE user ID (default is ????????). Assigns ownership of the output to the default NJE user ID (default is ????????). Assigns the translation value from ADDMEM to the output, if available. If the translation value from ADDMEM is &SUSER, assigns the submitting user ID to the output. Otherwise, assigns ownership of the output to the default NJE user ID (default is ????????). Note: When you specify &SUSER for ADDMEM and the submitting node is defined to &RACLNDE, ownership is assigned to the submitter. See How SYSOUT Requests Are Verified on page 479. Processing is similar to UACC(UPDATE) except RACF translates any available information from any type of security system. This allows RACF to assign local user IDs to output from downlevel systems. See Understanding Mixed Security Environments on page 491. If the translation value from ADDMEM is &SUSER, check submitting user ID and node.
Translates group name to that specified in ADDMEM. If ADDMEM is not specified, uses the group name received. Translates SECLABEL to that specified in ADDMEM. If ADDMEM is not specified, uses the security label received.
1. If the node name is specified in the RACFVARS profile named &RACLNDE, the node is treated as a locally attached node and RACF verifies the supplied security information. 2. For more details on how NJE SYSOUT is processed, see Authorizing SYSOUT on page 495 and Validating SYSOUT Based on the Submitter on page 498.
497
JES
498
JES
Notes: 1. Specify only one value with the ADDMEM operand. If you specify multiple values, RACF stores them in the NODES profile but translates using only the last one specified. Restriction: When more than one value is defined in a NODES profile, you cannot use the RLIST command to determine which value was the last one specified. Guideline: If one or more values are already defined in a NODES profile, use the DELMEM operand to remove them before specifying the new value. 2. For jobs, an ADDMEM of &SUSER is ignored, as the NODES profile lookup for jobs automatically deals with submitter information. It would be treated as though no ADDMEM were specified for the profile. For more information on &SUSER, see Validating SYSOUT Based on the Submitter on page 498. If you do not define profiles that translate inbound user IDs, group names, and security labels, those inbound values must be defined in your RACF database or the work does not pass RACF validation. Note: If the SECLABEL class is not active on your system, inbound security labels are ignored. Example: Simple NJE User Translation: Figure 41 shows how user IDs are translated.
User X is known as user Y on node B, and user Z on node C. In this example, user X on node A submits a job that runs on node B. The output is printed on node C under user ID Z. On node B, the existence of a profile named A.USERJ.X, with ADDMEM(Y) specified, causes RACF to translate the user ID of jobs from user X at node A. On node B, such jobs run as if submitted by user Y. On node C, the existence of a profile named B.USERS.Y, with ADDMEM(Z) specified, causes RACF to translate the user ID of SYSOUT from user Y at node B. On node C, such SYSOUT can print as if submitted by user Z. Figure 41. Example: Simple NJE user translation
Example: Simple NJE User Translation Using &SUSER: Figure 42 on page 500 shows how user IDs are translated when &SUSER is specified on the ADDMEM operand. This can be useful when jobs are run on a remote system, but the output is printed on the submitter's system.
499
JES
Note: If you want, you could specify &SUSER on a third system (as in node C in Figure 41 on page 499).
Node A Job submitted by user X Job's SYSOUT is printed on submitting node. On Node A: RDEFINE NODES B.USERS.Y UACC(UPDATE) ADDMEM(&SUSER) RDEFINE NODES A.USERS.X UACC(CONTROL) ADDMEM(&SUSER) JOB SYSOUT
User X is known as user Y on node B. In this example, user X on node A submits a job that runs on node B. The output is returned to user X's home node (node A) to be printed. On node B, the existence of a NODES profile named A.USERJ.X with UACC(UPDATE) and ADDMEM(Y) means that jobs from user X at node A are to be executed under user Y. On node A, the existence of a NODES profile named B.USERS.Y with UACC(UPDATE) and ADDMEM(&SUSER) means that SYSOUT from user Y at node B is to be owned by the user who originally submitted the job, provided the second lookup is successful. The second lookup involves the submitter of the job (X) and the node that he submitted it from (A). Therefore, on node A, the existence of a NODES profile named A.USERS.X with UACC(CONTROL) and ADDMEM(&SUSER) means that the SYSOUT is to be owned by user X. Figure 42. Example: Simple NJE user translation using &SUSER
Example: Trusted, Semitrusted, and Untrusted Nodes: Figure 43 on page 501 shows a sample NJE network in which some nodes are trusted (see Understanding Mixed Security Environments on page 491), some nodes are semitrusted (verification is done on inbound work), and some nodes are not trusted (no inbound work is allowed to run).
500
JES
SEMTNODE
DFLTNODE
TRSTNODE
VMNODE
LOCLNODE
NOTRUST
In this example, profiles on node MYNODE control inbound work as follows: Trusted nodes: RDEFINE NODES TRSTNODE.USER%.* UACC(UPDATE) RDEFINE NODES LOCLNODE.USER%.* UACC(UPDATE) RDEFINE NODES VMNODE.USER%.* UACC(CONTROL) Semitrusted nodes: RDEFINE NODES SEMTNODE.USER%.* UACC(READ) RDEFINE NODES DFLTNODE.USER%.* UACC(READ) Untrusted node: RDEFINE NODES NOTRUST.*.* UACC(NONE) Note: To prevent any unknown nodes from submitting work to be done on your node, create the following profile: RDEFINE NODES *.*.* UACC(NONE)
501
JES
You can change the ???????? user ID by using the NJEUSERID operand on the SETROPTS command:
SETROPTS JES(NJEUSERID(?NETWORK))
The user ID you specify on the NJEUSERID operand cannot be a user ID defined in the RACF database. Also, if you specify a user ID on the NJEUSERID operand, you cannot later define a user profile for that user ID. This prevents network jobs from having access to RACF-protected resources on your system. The following example shows how to do this for jobs:
RDEFINE NODES nodename.USERJ.???????? UACC(READ or higher) ADDMEM(NJEJOBS)
The following example shows how to do this for both SYSOUT and jobs:
RDEFINE NODES nodename.USER%.???????? UACC(READ or higher) ADDMEM(NJEWORK)
Note: This example assumes that a SETROPTS GENERIC(NODES) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. You would also need to create user profiles for the translated user IDs (NJEJOBS, NJESOUT, or NJEWORK), and permit the user IDs to appropriate resource profiles (or connect them to appropriate groups). Local jobs that enter the system without a user ID are assigned a user ID of ++++++++ (8 plus signs). You can specify which user ID to assign to such jobs by entering the following command:
SETROPTS JES(UNDEFINEDUSER(userid))
Note: The user ID you specify on the UNDEFINEDUSER operand cannot be a user ID defined in the RACF database. Also, if you specify a user ID on the UNDEFINEDUSER operand, you cannot later define a user profile for that user ID. This prevents undefined users from having access to RACF-protected resources on your system. However, these user IDs can be used in JESSPOOL profile names. JES uses these names to associate an owner with the spool data, and to keep logical undefined users from accessing the data of network undefined users.
502
JES
1. Ask your JES system programmer for the information needed to create the profiles. This includes the following: v Information for specifying profile names v For each profile to be created, the UACC to be specified v For each profile to be created, the values to be translated (to be specified on the ADDMEM operand) Note: You should work with your JES system programmer to determine which user or group should be specified in the OWNER field of the profiles. This user or group is responsible for maintaining the profiles. 2. Use the RDEFINE command to create the profiles. For examples, see Figure 40 on page 491, Figure 41 on page 499, Figure 42 on page 500, and Figure 43 on page 501. 3. When you are ready to start using the protection defined in the profiles, activate the NODES class and activate SETROPTS RACLIST processing for the class. You can do these two actions in one command:
SETROPTS CLASSACT(NODES) RACLIST(NODES)
Notes: a. Any time you make a change to a NODES profile, you must also refresh SETROPTS RACLIST processing for the NODES class for the change to take effect. b. RACF does not do any logging nor issue any messages for the NODES class.
3. Using the ADDMEM operand on the RALTER command, identify which nodes are to be treated as local nodes:
RALTER RACFVARS &RACLNDE ADDMEM(node1 node2 node3...)
Notes: a. If you define a node as a local node, you must ensure that its RACF database is identical to the one on your node. b. Because there are no defaults for &RACLNDE profiles in the RACFVARS class, you must identify your own local node using the ADDMEM operand. 4. When you are ready to start using the protection defined in the profiles, activate the RACFVARS class and activate SETROPTS RACLIST processing for the class. You can do these two actions in one command:
SETROPTS CLASSACT(RACFVARS) RACLIST(RACFVARS)
503
JES
Notes: a. Any time you make a change to a RACFVARS profile, you must also refresh SETROPTS RACLIST processing for the RACFVARS class for the change to take effect. b. This also activates other functions that are administered through the RACFVARS class.
For more information, see Controlling Where Output Can Be Processed on page 514.
504
JES
Profiles are not required in the JESSPOOL class for protection to be in effect because the default for the class is failure when no profiles exist. IBM recommends that you activate the generics for the JESSPOOL class because the profile names are system generated. Notes: 1. When the JESSPOOL class is active, RACF ensures that only authorized users obtain access to job data sets on spool. Authorization to job data sets is provided through RACF user profiles. If there is no profile for a data set, only the user that created the data set can access, modify, or delete it. 2. While a job is executing, RACF optionally audits actions against SYSIN and SYSOUT data sets. For SYSIN data sets, JES invokes RACF each time a SYSIN data set is allocated, opened, or deleted. For SYSOUT data sets, JES invokes RACF each time a SYSOUT data set is created, opened, deleted, or selected for output. 3. For output selection, a data set can be selected by a TSO user through the TSO OUTPUT command. A profile must exist to enable users other than the creator to access data sets using the TSO OUTPUT command. 4. External writers, which are usually started tasks that process output to special devices (such as microfiche), require at least ALTER access to the spool data sets they process. If your installation has external writers, and you activate the JESSPOOL class, you must either ensure that the external writers have ALTER access to appropriate JESSPOOL profiles, or define the external writers as a started procedure with the trusted attribute. You can define them either in the STARTED class or in the RACF started procedures table (ICHRIN03). Otherwise, the external writers cannot process output. Because external writers are installation-written programs, you are strongly recommended to avoid giving them the trusted attribute. 5. If SDSF is installed on your system, JESSPOOL profiles control which action characters and overtypeable fields users can enter on SDSF panels. For complete information on creating JESSPOOL profiles for use with SDSF, see z/OS SDSF Operation and Customization. 6. SYSOUT application program interface (SAPI) applications, which are usually started tasks that process output to special devices (like microfiche), require at least UPDATE access to the spool data sets they process. If your installation has SAPI applications, and you activate the JESSPOOL class, you must either ensure that the SAPI applications have UPDATE access to appropriate JESSPOOL profiles, or define the applications as a started procedure with the trusted attribute. You can define them either in the STARTED class or in the RACF started procedures table. Otherwise, the SAPI applications cannot process output.
where:
505
JES
local-nodename is the name of the node on which the SYSIN or SYSOUT data set currently resides. The local node name appears in the JES job log of every job. Note: It is recommended that you define a profile in the RACFVARS class named &RACLNDE, and use &RACLNDE for all profiles in the JESSPOOL class. userid jobname jobid dsnumber name is the user ID associated with the job. This is the user ID RACF uses for validation purposes when the job runs. is the name that appears in the name field of the JOB statement. is the job ID assigned to the job by JES. The job ID appears in notification messages and the JES job log of every job. is the unique data set number JES assigned to the spool data set. A D is the first character of this qualifier. is the name of the data set specified in the DSN= parameter of the DD statement. This name cannot be JESYSMSG, JESJCLIN, JESJCL, or JESMSGLG and follows the naming conventions for a temporary data set. For the temporary data set naming conventions, see z/OS MVS JCL Reference. If the JCL did not specify DSN= on the DD statement that creates the spool data set, JES uses a single question mark (?).
Note: You can specify generic characters for any of the qualifiers in the profile name. For example, you can substitute an asterisk (*) for one of the qualifiers, such as jobid, if it is not known. A sample JESSPOOL profile name could be as follows. If user MYUSER submits a job named MYJOB to run on NODEA, and JES assigns a job ID of JOB08237, and the value of DSN= for a SYSOUT data set is OUTPUT, the profile name for a SYSOUT data set created by this job could be:
NODEA.MYUSER.MYJOB.JOB08237.D0000112.OUTPUT
If job MYJOB is run several times, and the same protection is desired for the OUTPUT data set each time, the profile name could be:
NODEA.MYUSER.MYJOB.*.*.OUTPUT
where access-authority is one of the following: NONE READ Gives the user no access. Lets the user view the spool data set, but does not let the user change the data set's contents or attributes. For example, READ does not allow the following operands on the TSO OUTPUT command: DELETE, DEST, NEWCLASS, NOHOLD, and NOKEEP. Lets the user read or update the contents of a spool data set. UPDATE does not allow the user to change the data set's
UPDATE
506
JES
attributes. UPDATE also allows users to update spool data sets opened by an application in the same address space. CONTROL ALTER Is equivalent to UPDATE. Lets the user read or update a spool data set or change the attribute of a spool data set. For example, ALTER allows any operand to be specified on the TSO OUTPUT command, including operands for deleting and printing. Also, when specified for a discrete profile, ALTER lets the user change the profile itself.
Note: If SDSF is installed on your system, JESSPOOL profiles control which action characters and overtypeable fields users can enter on SDSF panels. For complete information on creating JESSPOOL profiles for use with SDSF, see z/OS SDSF Operation and Customization.
2. To prevent all users except the system administrator from being able to create JESSPOOL profiles, issue either of the following commands:
RDEFINE JESSPOOL ** OWNER(sys_admin_id) UACC(NONE) RDEFINE JESSPOOL * OWNER(sys_admin_id) UACC(NONE)
3. For each user who should be able to create JESSPOOL profiles for his or her own spool data, create a JESSPOOL profile with the user's user ID specified. Make the user the owner of the profile. For example, for users SMITH and BEN:
RDEFINE JESSPOOL nodename.SMITH.** OWNER(SMITH) UACC(NONE) RDEFINE JESSPOOL nodename.BEN.** OWNER(BEN) UACC(NONE)
Note: These examples assume that a SETROPTS GENERIC(JESSPOOL) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. 4. Give users CLAUTH authority to the JESSPOOL class:
ALTUSER SMITH CLAUTH(JESSPOOL) ALTUSER BEN CLAUTH(JESSPOOL)
5. Users with CLAUTH authority can define their own JESSPOOL profiles:
RDEFINE JESSPOOL profile-name OWNER(SMITH) UACC(NONE) RDEFINE JESSPOOL profile-name OWNER(BEN) UACC(NONE)
where profile-name is more specific than the JESSPOOL profile name you defined for this user in Step 3. 6. After defining their own JESSPOOL profiles, the users with CLAUTH can use the following PERMIT command to grant other users access to the spool data sets protected by that profile:
PERMIT profile-name CLASS(JESSPOOL) ID(userid|groupname) ACCESS(access-authority)
Chapter 14. Providing Security for JES
507
JES
where access-authority is one of the following: NONE READ Gives the user no access. Lets the user view the spool data set, but does not let the user change the data set's contents or attributes. For example, READ does not allow the following operands on the TSO OUTPUT command: DELETE, DEST, NEWCLASS, NOHOLD, and NOKEEP. Lets the user read or update the contents of a spool data set. UPDATE does not allow the user to change the data set's attributes. UPDATE also allows users to update spool data sets opened by an application in the same address space. Is equivalent to UPDATE. Lets the user read or update a spool data set or change the attribute of a spool data set. For example, ALTER allows any operand to be specified on the TSO OUTPUT command, including operands for deleting and printing. Also, when specified for a discrete profile, ALTER lets the user change the profile itself.
UPDATE
CONTROL ALTER
Note: If SDSF is installed on your system, JESSPOOL profiles control which action characters and overtypeable fields users can enter on SDSF panels. For complete information on creating JESSPOOL profiles for use with SDSF, see z/OS SDSF Operation and Customization.
Protecting JESNEWS
JESNEWS is a spool file that contains data to be printed following each job's output. Protecting JESNEWS prevents unauthorized users from adding, modifying, or deleting these files, or (if security labels are used) writing data with a higher security label into these files. The procedure for protecting JESNEWS depends on whether JES2 or JES3 is installed.
where:
508
JES
nodename userid STCtaskid is the name of the node that created the JESNEWS data set. is the user ID associated with your JES2 system. is the name of the task that created the JESNEWS data set.
Dnewslvl is the level of this copy of JESNEWS. For example, for JESNEWS on NODEB:
RDEFINE JESSPOOL NODEB.*.$JESNEWS.*.*.JESNEWS UACC(READ)
Notes: a. This example assumes that a SETROPTS GENERIC(JESSPOOL) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done. b. To improve system performance, you should consider including an entry for JESNEWS in the global access checking table. For example:
NODEB.*.$JESNEWS.*.*.JESNEWS/READ
3. To prevent unauthorized updating of JESNEWS, define a profile in the OPERCMDS class. Any users authorized to update JESNEWS must have ALTER access to this resource:
RDEFINE OPERCMDS jesname.UPDATE.JESNEWS UACC(NONE) PERMIT jesname.UPDATE.JESNEWS CLASS(OPERCMDS) ID(user or group) ACCESS(ALTER)
If RACF is not active, JES2 requests authorization to update JESNEWS from the operator. Note: If RACF and the SECLABEL class are active, RACF assigns the SECLABEL of the last job that updated JESNEWS to the JESNEWS profile. This could cause jobs with lower security labels than the updating job to miss important information and RACF records security violations for jobs accessing JESNEWS that did not previously occur. To make JESNEWS accessible to all users, the job that creates it should have a SECLABEL of SYSLOW and the data set profile should have a UACC of READ. If the SECLABEL is greater than SYSLOW, JESNEWS does not print in the output of any jobs submitted with a lower SECLABEL.
Note: To improve system performance, you should consider including entries for JESNEWS in the global access checking table. For example:
Chapter 14. Providing Security for JES
509
JES
node.jesname.JOB00000.D0000000.JNEWSLCL/READ node.jesname.JOB00000.D0000000.JNEWSRJP/READ node.jesname.JOB00000.D0000000.JNEWSTSO/READ
Note: This example assumes that a SETROPTS GENERIC(JESSPOOL) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done.
Protecting SYSLOG
Your security policy might require that you protect SYSLOG because it is the record of your system's daily activities. To control SYSLOG, define a JESSPOOL profile for the data set, specifying an appropriate universal access, and then grant access to the user IDs or group names that need a different access. For example:
RDEFINE JESSPOOL system-name.+MASTER+.SYSLOG.*.* UACC(NONE) PERMIT system-name.+MASTER+.SYSLOG.*.* CLASS(JESSPOOL) ID(SMITH) ACCESS(ALTER)
Note: This example assumes that a SETROPTS GENERIC(classname) was previously issued to turn generics on for this class and that a SETROPTS REFRESH was then done.
Offloading Data
When you offload data from the spool to another device, JES2 copies the security information for the data to the offload job and data set headers. No validation is made of the security information written to the offload data set. JES2 calls RACF to ensure the operator starting the offload operation has sufficient authority to issue the command to start the offload. During the offload process, JES2 calls RACF (using the WRITER class) to ensure the owner of the SYSOUT data set has at least READ access to the offload device by checking the security information associated with the data against the device's profile in the WRITER class. The offload device profile for offload SYSOUT transmitter 1 would be:
510
JES
jesxLOCAL.OFF1.ST
During spool offload, jobs are not checked for access to the device.
Reloading Data
When JES2 reloads the information from an offload data set, it performs any security validation necessary (similar to reading a job into the system or receiving a network SYSOUT data set) before writing the data to spool by checking the JESJOBS class for reloaded jobs and the NODES class. When RACF performs the NODES class check, if the node associated with the data is in the &RACLNDE profile, RACF accepts the data. The following profiles for the JESINPUT class apply to spool reload:
OFFn.JR OFFn.SR for jobs for SYSOUT
As with offload, JES2 calls RACF to ensure the operator starting the reload operation has sufficient authority to issue the commands. When reloading a data set that was offloaded on this node, the name of the node must be defined in the RACFVARS profile &RACLNDE, or NODES profiles are required for NJE processing to associate user IDs with jobs or data.
How RACF Affects Jobs Dumped from and Restored to Spool (JES3 Only)
RACF performs security validation for all jobs restored to your system using the JES3 Dump Job facility.
Dumping Jobs
JES3 dumps all security information associated with each job when you use the dump job facility. However, JES3 does not perform security validation while dumping jobs.
Restoring Jobs
JES3 calls RACF to revalidate the job. RACF validates the job using the security information saved when the job was dumped and writes an SMF audit record for each restored job.
Important Jobs and data transported to a complex that uses different security labels might be inadvertently declassified.
MCS Consoles
Your MVS system programmer can require operators to log on to and log off from MCS-managed consoles by specifying options in the CONSOLxx member of the SYS1.PARMLIB data set. When the CONSOLE class is active and a console being used is protected by a profile in the CONSOLE class, RACF ensures that the person attempting to LOGON has the proper authority to do so.
Chapter 14. Providing Security for JES
511
JES
For information about controlling access to MCS consoles, see Protecting Consoles on page 251.
512
JES
the class is later activated, RJE signons or NJE command authorizations fail because of incorrect port of entry. For more information, see MVS/ESA and RACF 1.9 Security Implementation Guide. To use RACF to check LOGON or /*SIGNON passwords, perform the following steps: 1. For each remote workstation or node to be protected, ask your JES system programmer for the following: v The ID of the remote workstation. The ID serves as the user ID of the remote workstation. All users using a particular remote workstation must log on using this ID and supply the same password. (The password will never expire.) The ID is one of the following: If JES2 is installed, the remote ID of the RJE console to be protected, which takes the form RMTnnnn. If JES3 is installed, the ID of the console you want to protect. For NJE nodes, the name of the node to be used as the user ID of that node. 2. For each remote workstation or NJE node, create a user profile:
ADDUSER userid DATA(data) PASSWORD(initial-password) DFLTGRP(groupname)
where: userid data initial-password is the RJE remote ID or NJE node name. is installation-defined, for example:
DATA(RJE console at xxx, phone yyy)
is the initial password (to be changed immediately to another password that will never expire). is a group that you allow to use certain RACF-protected resources, such as commands.
groupname
Specify that the passwords for these profiles will never expire:
PASSWORD USER(userid) NOINTERVAL
3. For each workstation for which you want RACF to check the user's password, create a profile in the FACILITY class, as follows:
RDEFINE FACILITY RJE.workstation
where workstation has been supplied by the JES system programmer. Note: The existence of a profile in the FACILITY class for a remote workstation forces the user to enter a password to be checked by RACF, rather than by JES. The specification of UACC for these profiles has no effect. 4. For each NJE node for which you want RACF to check the user's command authorization, create a profile in the FACILITY class, as follows:
RDEFINE FACILITY NJE.nodename
where nodename has been supplied by the JES system programmer. The specification of UACC for these profiles has no effect. 5. Run a batch job with old and new passwords specified to set a new password (which will never expire). 6. When you are ready to start using the protection provided by the profiles you have created, activate the FACILITY class:
Chapter 14. Providing Security for JES
513
JES
SETROPTS CLASSACT(FACILITY)
7. If the class is active, define the workstation or node name to the JESINPUT class, as follows:
RDEFINE JESINPUT workstation UACC(appropriate-access) RDEFINE JESINPUT nodename UACC(appropriate-access)
If the workstation or node name is not defined and the class is later activated, sign on or command authorization fails because of incorrect port of entry. For more information, see MVS/ESA and RACF 1.9 Security Implementation Guide.
JES3 Consoles
You cannot use RACF to control access to locally attached JES3 consoles. See z/OS JES3 Initialization and Tuning Guide.
where profile-name has one of the following formats: v For local printers and punches:
jesname.LOCAL.devicename
514
JES
where nodename is the name of the node to ultimately receive the output. Also, UACC can be one of the following: NONE Allows no access
READ Allows all users to send output to the protected device or node. 3. Give the appropriate access to users and groups:
PERMIT profile-name CLASS(WRITER) ID(user or group) ACCESS(appropriate-access)
Allows the user or group to send output to the protected device or node. 4. When you are ready to start controlling access to writers based on the profiles you have defined, activate the WRITER class:
SETROPTS CLASSACT(WRITER)
Note: If SDSF is installed on your system, WRITER profiles control which operations related to printers (such as displaying information about a printer or purging output) users can enter on SDSF panels. For complete information on creating WRITER profiles for use with SDSF, see z/OS SDSF Operation and Customization.
where: sysname dev-class modelno ddd identifies the name of the system. specifies the type of device. For printers, you must always specify unit record (UR). specifies the model number of the printer. specifies the device number associated with the printer.
v The universal access authority associated with the printer. A UACC of READ indicates the printer can be allocated to all users in your installation. A UACC of NONE indicates the printer can only be allocated to the users you specify. v A list of users and groups that have access other than the UACC. READ access allows the device to be allocated to the job submitted by the specified user. v The security label associated with the printer (if security labels are being used).
Chapter 14. Providing Security for JES
515
JES
2. Create a profile in the DEVICES class to protect each writer:
RDEFINE DEVICES profile-name UACC(NONE)
3. When you are ready to start using the protection provided by the profiles you have created, activate the DEVICES classes:
SETROPTS CLASSACT(DEVICES)
2. If the NODES class is active, create a NODES profile with RUSER as the second qualifier:
RDEFINE NODES nodename.RUSER.userid UACC(appropriate-access)
where appropriate-access is one of the following: NONE READ Reject the command Reverify
UPDATE or higher Pass 3. Permit the node's user ID to the command profiles the node can issue:
PERMIT command-profile-name CLASS(OPERCMDS) ID(HYDEPARK) ACCESS(appropriate-access)
4. If the OPERCMDS and FACILITY classes are not already active, activate them:
516
JES
SETROPTS CLASSACT(OPERCMDS FACILITY)
517
518
This topic describes using RACF with the DFSMSdfp facility Storage Management Subsystem (SMS). It describes factors that administrators should consider when using RACF with SMS. A number of scenarios are used to explain these factors. Many of the names used in these scenarios are arbitrary. The names you use for user IDs, group names, and resources will differ, and the procedures you decide to follow might vary from those given as examples in this topic.
519
SMS
v STORCLAS. Use this RACF resource class to protect specific SMS storage classes. (Storage class is the DFP construct name for attributes related to space for a data set and the device and volume on which a data set resides.) Note: The RACF general resource classes MGMTCLAS and STORCLAS are different from, and should not be confused with, the DFP construct names management class and storage class.
Then, to define a specific SMS class, issue the RDEFINE command and specify the appropriate operands. After you define a profile to protect a specific SMS class, issue the PERMIT command to create entries in the access list of the profile. You might want to look at Determining the Owner of an SMS-Managed Data Set on page 524 for more information. For example, suppose you want to define a profile in the RACF general resource class STORCLAS to protect an SMS storage class named DFP2STOR. You can control which users and groups can use DFP2STOR by issuing one of the following sequences of commands: v To limit the number of users who can use DFP2STOR: 1. Issue the RDEFINE command to define the profile for DFP2STOR and assign a UACC of NONE to the profile. The format of the command is as follows:
RDEFINE STORCLAS DFP2STOR UACC(NONE)
This command specifies that no users can access DFP2STOR, except for the creator of the profile. For more information, see z/OS Security Server RACF Command Language Reference. 2. Selectively allow certain users and groups access to DFP2STOR by issuing the PERMIT command and specifying an ACCESS of READ. The format of the command is as follows:
PERMIT DFP2STOR CLASS(STORCLAS) ID(SMITH JONES) ACCESS(READ)
This command allows SMITH and JONES the use of storage class DFP2STOR. v To allow many users the use of DFP2STOR: 1. Issue the RDEFINE command to define the profile for DFP2STOR and assign a UACC of READ to the profile. The format of the command is as follows:
RDEFINE STORCLAS DFP2STOR UACC(READ)
This command specifies that all users can access DFP2STOR. 2. You can selectively exclude certain users and groups from using DFP2STOR by issuing the PERMIT command and specifying an ACCESS of NONE. The format of the command is as follows:
PERMIT DFP2STOR CLASS(STORCLAS) ID(SMITH JONES) ACCESS(NONE)
This command prevents SMITH and JONES from using storage class DFP2STOR.
520
SMS
v For SMS resource classes that you want to be available to all users, consider creating an entry in the global access checking table. For example, to allow all users access to DFP2STOR, enter:
RDEFINE GLOBAL STORCLAS ADDMEM(DFP2STOR/READ) SETROPTS GLOBAL(STORCLAS) REFRESH
Global access checking helps reduce processing overhead associated with RACF authorization checking. For SMS resources that you want to have available to a limited number of users, consider using SETROPTS RACLIST processing for STORCLAS and MGMTCLAS to provide the best performance. After you define profiles in the MGMTCLAS and STORCLAS resource classes, you should activate SETROPTS RACLIST processing for these classes. This can improve performance by reducing I/O to the RACF database. To activate SETROPTS RACLIST processing for the MGMTCLAS and STORCLAS resource classes, issue the SETROPTS command with the RACLIST operand and specify the appropriate RACF resource class names. The format of the command is as follows:
SETROPTS RACLIST(STORCLAS MGMTCLAS)
Refreshing Profiles for SETROPTS RACLIST Processing for MGMTCLAS and STORCLAS
If SETROPTS RACLIST processing has been activated for the MGMTCLAS and STORCLAS resource classes, you must refresh profiles for RACLIST processing for either class when you do one of the following: v Define a new profile in the class v Make changes to existing profiles in the class Refreshing profiles for SETROPTS RACLIST processing for a RACF resource class ensures that the most current copy of a profile resides in storage and is available for RACF authorization checking. To refresh profiles for SETROPTS RACLIST processing for the MGMTCLAS or STORCLAS resource classes, issue the SETROPTS command with the RACLIST and REFRESH operands and specify the appropriate RACF resource class names. The following command refreshes profiles for SETROPTS RACLIST processing for both MGMTCLAS and STORCLAS:
SETROPTS RACLIST(STORCLAS MGMTCLAS) REFRESH
For more information, see Refreshing Profiles for SETROPTS RACLIST Processing on page 140.
521
SMS
522
SMS
The PAYROLL group can then create data sets such as PAYROLL.LGL88.WEEK1, PAYROLL.LGL88.WEEK2, and PAYROLL.LGL88.MARCH.SUM, but the LEGAL group actually owns the data sets. (The profile name PAYROLL.LGL88.** is a generic profile name that uses enhanced generic naming. Before you issue the above command, both generic profile checking for the DATASET class and enhanced generic naming must be active. If these options are not active, issue the SETROPTS GENERIC(DATASET) and SETROPTS EGN commands before you define the generic profile.) You can specify a value for RESOWNER when you define a new data set profile using the ADDSD command or when you change an existing data set profile using the ALTDSD command. You can display the information in this field using the LISTDSD command. See z/OS Security Server RACF Command Language Reference for more information on these commands. Note that the RESOWNER field, which represents the data set owner for data set allocation purposes, is different from the OWNER field, which represents the user or group that owns the data set profile and can therefore work with the profile itself.
523
SMS
524
SMS
SETROPTS CLASSACT(FIELD)
When you specify profile-name, use the format shown in the following examples. Controlling Access to All Fields in the DFP Segment of User Profiles: You can define a profile that lets you control access to all of the fields in the DFP segment of all user profiles. Before you define this profile, generic profile checking for the FIELD class must be active. If generic profile checking is not active, issue the SETROPTS GENERIC(FIELD) command. To define this profile, issue the RDEFINE command with a generic profile name. For example, enter:
RDEFINE FIELD USER.DFP.* UACC(NONE)
Note: When you specify a UACC of NONE, you prevent all users from accessing the DFP segment in all user profiles, including their own. Likewise, if you specify a UACC of READ, you allow all users to read the information contained in all fields of the DFP segment for all user profiles. If the FIELD class is not yet RACLISTed, you must enter the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD)
If the FIELD class is already RACLISTed, you must refresh the profiles with the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD) REFRESH
Controlling Access to a Specific Field in the DFP Segment of User Profiles: You can define a profile that allows you to control access to a specific field in the DFP segment of all user profiles by issuing the RDEFINE command and specifying profile-name as shown in the following example:
RDEFINE FIELD USER.DFP.DATACLAS UACC(NONE)
This command defines a profile in the FIELD general resource class that protects, with a UACC of NONE, the DATACLAS field in the DFP segment of all user profiles. For more information, see Field-level access checking on page 225. If the FIELD class is not yet RACLISTed, you must enter the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD)
If the FIELD class is already RACLISTed, you must refresh the profiles with the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD) REFRESH
525
SMS
Controlling Access to All Fields in the DFP Segment of Group Profiles: You can define a profile that allows you to control access to all fields in the DFP segment of all group profiles. Before you define the following profile, generic profile checking for the FIELD class must be active. If it is not active, issue the SETROPTS GENERIC(FIELD) command before you define the generic profile. To define this profile, issue the RDEFINE command and specify GROUP.DFP.* for profile-name as shown in the following example:
RDEFINE FIELD GROUP.DFP.* UACC(NONE)
Note: When you specify a UACC of NONE, you prevent all users from accessing the DFP segment in all group profiles, including their current connect group. Likewise, if you specify a UACC of READ, you allow all users to read the information contained in all fields of the DFP segment for all group profiles. If the FIELD class is not yet RACLISTed, you must enter the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD)
If the FIELD class is already RACLISTed, you must refresh the profiles with the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD) REFRESH
Controlling Access to a Specific Field in the DFP Segment of Group Profiles: You can define a profile that allows you to control access to a specific field in the DFP segment of all group profiles by issuing the RDEFINE command and specifying profile-name as shown in the following example:
RDEFINE FIELD GROUP.DFP.STORCLAS UACC(NONE)
This command defines a profile in the FIELD general resource class that protects, with a UACC of NONE, the STORCLAS field in the DFP segment of all group profiles. For more information, see Field-level access checking on page 225. If the FIELD class is not yet RACLISTed, you must enter the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD)
If the FIELD class is already RACLISTed, you must refresh the profiles with the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD) REFRESH
Controlling Access to All Fields in the DFP Segment of Data Set Profiles: You can define a profile that allows you to control access to all fields in the DFP segment of all data set profiles. Before you define this profile, generic profile checking for the FIELD class must be active. If generic profile checking is not active, issue the SETROPTS GENERIC(FIELD) command. To define this profile, issue the RDEFINE command and specify DATASET.DFP.* for profile-name as shown in the following example:
RDEFINE FIELD DATASET.DFP.* UACC(NONE)
Note: When you specify a UACC of NONE, you prevent all users from accessing the DFP segment in all data set profiles, including data set profiles that they own. Likewise, if you specify a UACC of READ, you allow all users to read the information contained in all fields of the DFP segment for all data set profiles.
526
SMS
If the FIELD class is not yet RACLISTed, you must enter the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD)
If the FIELD class is already RACLISTed, you must refresh the profiles with the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD) REFRESH
Controlling Access to a Specific Field in the DFP Segment of Data Set Profiles: You can define a profile that allows you to control access to a specific field in the DFP segment of all data set profiles by issuing the RDEFINE command and specifying profile-name as shown in the following example:
RDEFINE FIELD DATASET.DFP.RESOWNER UACC(NONE)
This command defines a profile in the FIELD general resource class that protects, with a UACC of NONE, the RESOWNER field in the DFP segment of all data set profiles. For more information, see Field-level access checking on page 225. If the FIELD class is not yet RACLISTed, you must enter the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD)
If the FIELD class is already RACLISTed, you must refresh the profiles with the following command after you define or alter the profile:
SETROPTS RACLIST(FIELD) REFRESH
You can also specify the value &RACUID with the ID operand on the PERMIT command. When you enter this value on the PERMIT command, you allow all users access to the specified field within the DFP segment of their own user profiles. For example, if you issue the following command, you allow all users to read the DATAAPPL field in the DFP segment of their own user profiles.
PERMIT USER.DFP.DATAAPPL CLASS(FIELD) ID(&RACUID) ACCESS(READ)
527
SMS
Control data sets Source data sets for ACS routines The test library for ACS routines For information on how to use RACF to protect these resources, see the following documents: v MVS/ESA SML: Managing Data, which shows the sequence of RACF commands you need to issue to protect the various SMS resources v z/OS DFSMSdfp Storage Administration and z/OS DFSMS Managing Catalogs, which show the names of the profiles you need to define to protect the various SMS resources.
528
529
TSO/E
check the completeness and accuracy of the conversion that is performed by the RACONVRT EXEC. For more information on using the RACONVRT EXEC, see z/OS TSO/E Customization.
To control the use of TSO resources, issue RACF commands in the following sequence: 1. Activate the TSO general resource classes:
SETROPTS CLASSACT(TSOPROC ACCTNUM PERFGRP TSOAUTH)
530
TSO/E
Considerations When Activating the TSO Resource Classes Assume that you have defined a user profile for user SMITH that contains a TSO segment. v If you do not activate the TSOPROC and ACCTNUM classes, user SMITH cannot log on to TSO because RACF cannot check SMITH's authority to use the logon procedure and account number specified on the logon panel. TSOPROC and ACCTNUM must be active so that users whose profiles contain TSO segments can log on to TSO. v If you do not activate the PERFGRP class and user SMITH specifies a performance group on the logon panel, SMITH cannot log on to TSO because RACF cannot check SMITH's authority to access the specified performance group. However, SMITH can log on to TSO when the performance group is deleted from the logon panel. Activate the PERFGRP class if your installation intends to use TSO performance groups. v If you do not activate the TSOAUTH class, user SMITH can log on to TSO but will not have any assigned TSO user authorities such as JCL or MOUNT. Activate the TSOAUTH class and give SMITH READ access authority to the appropriate resources in the TSOAUTH class if your installation is specifying user authorities when defining users to the system. 2. Create profiles to protect TSO resources. The following example shows how to define logon procedure LOGPROC1 to the TSOPROC resource class and assign it a UACC of READ. (A UACC of READ grants all users the ability to use the logon procedure.)
RDEFINE TSOPROC LOGPROC1 UACC(READ)
To protect a TSO resource so that a limited number of users can access it, you can define it and specify a UACC of NONE. Then you can create an access list containing only those users who require access to the resource. The following example shows how to define a logon procedure, LOGPROC2, in the TSOPROC resource class and protect it with a UACC of NONE.
RDEFINE TSOPROC LOGPROC2 UACC(NONE)
531
TSO/E
Considerations for Creating Profiles for TSO Resources v For the TSOPROC class, the profile name must be the name of the logon procedure itself (no generic characters are allowed). v For the ACCTNUM class, the profile name can be up to 39 characters long. You should create at least one profile in the ACCTNUM class. If you want a particular user to log on without an account number, you must ensure that the user has no access to any ACCTNUM profile. This means that you cannot specify UACC(READ) for any ACCTNUM profile. Also, a user can have access to an ACCTNUM profile by means of a connect group. If a user has access to one or more account numbers, the first such account number that RACF encounters when searching the RACF database becomes that user's default account number and is saved in the TSO segment of the user's profile. You can find out which account number is used by issuing the following command:
SEARCH CLASS(ACCTNUM) USER(userid)
The first account number listed is used. For example, you if you want to allow only two account numbers, D1001 and D1002, and you want to ensure that users log on with at least one of them, create the following profiles:
RDEFINE ACCTNUM D1001 UACC(READ) RDEFINE ACCTNUM D1002 UACC(READ) RDEFINE ACCTNUM ** UACC(NONE)
Note: Because of the order in which RACF searches the RACF database, account number D1001 is the default assigned to any user who logs on with a blank account number. To determine the search order in which profiles are used, issue SEARCH or RLIST command for the class. For example:
SEARCH CLASS(ACCTNUM)
v For the PERFGRP class, the profile name must be the number of the performance group itself (no generic characters are allowed). v For the TSOAUTH class, you should consider creating discrete profiles for each TSO attribute. The following examples assume that only a few users should be able to request mounts, but that every user (except those specifically disallowed) should be able to submit batch jobs:
RDEFINE TSOAUTH MOUNT UACC(NONE) RDEFINE TSOAUTH JCL UACC(READ)
3. Use the PERMIT command to allow users and groups to use the TSO resources. The following example shows how to allow users USERA and USERB to specify logon procedure LOGPROC2 when they log on using TSO:
PERMIT LOGPROC2 CLASS(TSOPROC) ID(USERA USERB) ACCESS(READ)
4. Activate SETROPTS RACLIST processing for the TSO general resource classes:
SETROPTS RACLIST(TSOPROC ACCTNUM PERFGRP TSOAUTH)
For more information on SETROPTS RACLIST processing, see SETROPTS Options to Activate In-Storage Profile Processing on page 136.
532
TSO/E
Note: If SETROPTS RACLIST processing is already activated for the TSO general resource classes, you must refresh SETROPTS RACLIST processing:
SETROPTS RACLIST(TSOPROC ACCTNUM PERFGRP TSOAUTH) REFRESH
For more information on refreshing SETROPTS RACLIST processing, see Refreshing Profiles for SETROPTS RACLIST Processing on page 140.
where SENDER1 and SENDER2 are valid RACF user IDs or group names, and RECVR1 and RECVR2 are valid RACF user IDs. The first PERMIT in the
Chapter 16. RACF and TSO/E
533
TSO/E
example allows SENDER1 to send messages to RECVR1. The second PERMIT in the example prevents SENDER2 from sending messages to RECVR2. 3. When you are ready to start using the security provided by these profiles, activate both the DIRAUTH class and the SMESSAGE class, and activate SETROPTS RACLIST processing for the SMESSAGE class. SETROPTS RACLIST processing helps ensure high performance when access authorities are checked. You can do these actions in one command:
SETROPTS CLASSACT(SMESSAGE DIRAUTH) RACLIST(SMESSAGE)
Note: Any time you make a change to an SMESSAGE profile, you must also refresh SETROPTS RACLIST processing for the SMESSAGE class for the change to take effect. For example:
SETROPTS RACLIST(SMESSAGE) REFRESH
534
TSO/E
GROUP IDENT field: Specify this field only if list-of-groups processing is not in effect and if the user wants the job to run with a group other than the user's default group. SECLABEL field: Specify this field to log on with a security label other than the user's current security label. Users with the OIDCARD attribute must supply a valid operator identification card during logon. Operands on the TSO LOGON command: NEWPASSWORD (to specify a new password to replace the current password) GROUP (to specify the group name to which the user is connected during the terminal session). Settings on the TSO PROFILE command: PREFIX (used in determining the RRSFLIST data set name) INTERCOM (determines whether RRSF uses SEND to send messages to the command issuer for directed commands). Sending and receiving messages: Depending on how security labels are used on your system, and on how SETROPTS options are set, users might need to be aware of their current security label when they send or receive messages from other users. For more information, see Controlling the Use of the TSO SEND Command on page 533. Submitting and cancelling jobs: Users have flexibility with regard to which jobs they can work with using the TSO SUBMIT and CANCEL commands. For more information, see Surrogate Job Submission on page 485 and Controlling Who Can Cancel Jobs by Job Name on page 484.
535
536
This topic describes using RACF with z/OS UNIX. This topic describes factors to consider when using RACF to manage group identifiers (GIDs) and user identifiers (UIDs). It also describes how to map GIDs and UIDs to RACF group names and user IDs. The z/OS UNIX security functions provided by RACF include user validation, file access checking, privileged user checking, and user limit checking. z/OS UNIX users are defined with RACF commands. When a job starts or a user logs on, the user ID and password are verified by RACF. When an address space requests an z/OS UNIX function for the first time, RACF: 1. Verifies that the user is defined as a z/OS UNIX user. 2. Verifies that the user's current connect group is defined as a z/OS UNIX group.
Copyright IBM Corp. 1994, 2011
537
z/OS UNIX
3. Initializes the control blocks needed for subsequent security checks.
Additional reading See z/OS UNIX System Services Planning for complete information on setting up and using RACF in the z/OS UNIX environment. See z/OS Security Server RACF Auditor's Guide for complete information on auditing in the RACF environment. See z/OS Planning for Multilevel Security and the Common Criteria for information about using security labels for z/OS UNIX files and directories. Note: RACF program control does not control programs that are executed in any way that bypasses MVS contents supervision, such as load modules contained in z/OS UNIX files. Therefore, loading a program from a z/OS UNIX file prevents you from opening a data set in a PADS (program access to data sets) environment, and prevents you from loading a program from an MVS library if you only have EXECUTE authority. You should use program control to restrict access to any programs, such as these, that provide facilities for bypassing MVS contents supervision. For more information, see Chapter 9, Protecting Programs, on page 321.
For more information about GIDs, see The OMVS Segment in Group Profiles on page 55 and Defining UIDs and GIDs in z/OS UNIX System Services Planning. Although the same GID can be assigned to multiple RACF groups, it is not recommended. If you assign the same GID to multiple groups, control at an individual group level is lost because the GID is used in z/OS UNIX security checks. RACF groups that have the same GID assignment are treated as a single group during z/OS UNIX security checks. You can enforce identity uniqueness when assigning UNIX identifiers. For more on controlling GID uniqueness, refer to Controlling the use of shared UNIX identities on page 541. A unique GID can be defined automatically using the AUTOGID operand, as described in Enabling automatic assignment of unique UNIX identities on page 543.
538
z/OS UNIX
For special considerations about using the RACF list-of-groups checking (GRPLIST) option for access to z/OS UNIX file system resources, such as z/OS UNIX files, see GRPLIST Considerations for z/OS UNIX on page 121.
For more information about UIDs, see The OMVS Segment in User Profiles on page 70 and Defining UIDs and GIDs in z/OS UNIX System Services Planning. Although you can assign the same UID to multiple users, it is not recommended. However, it might be necessary for some cases, such as superusers. If you assign the same UID to multiple users, control at an individual user level is lost because the UID is used in z/OS UNIX security checks. Users with the same UID assignment are treated as a single user during z/OS UNIX security checks. You can enforce identity uniqueness when automatically assigning UNIX identifiers. For more on controlling UID uniqueness, refer to Controlling the use of shared UNIX identities on page 541. A unique UID can be defined using the AUTOUID operand, as described in Enabling automatic assignment of unique UNIX identities on page 543.
v To see the RACF user IDs that are associated with UID 0, enter:
RLIST UNIXMAP U0 ALL
v To see all RACF groups and user IDs associated with GIDs and UIDs, enter:
RLIST UNIXMAP * ALL
For information about the UNIXMAP class, see Using the UNIXMAP class and Virtual Lookaside Facility (VLF) on page 553.
Chapter 17. RACF and z/OS UNIX
539
z/OS UNIX
4. For installations at AIM stage 2 or higher, you can list a set of users or groups with a specific UID or GID, for example using '223' for the UID value and '55' for the GID value, enter:
SEARCH CLASS(USER)UID(223) SEARCH CLASS(GROUP) GID(55)
Superuser authority
You can assign superuser authority in three ways: v Using resource profiles in the UNIXPRIV class (preferred method). v Using the BPX.SUPERUSER resources in the FACILITY class. v Assigning a UID of 0 (least desirable method). You might choose to assign a UID of 0 to multiple RACF user IDs. However, you should minimize the number of users you assign the UID of 0 because a user with a UID of 0 can perform any z/OS UNIX function and passes all z/OS UNIX security checks. Guideline: Instead of assigning a UID of 0, set z/OS UNIX user limits and manage superuser privileges through UNIXPRIV profiles. See Using UNIXPRIV class profiles to manage z/OS UNIX privileges on page 556 for more information. For additional details, see Defining superusers with appropriate privileges in z/OS UNIX System Services Planning. Users running with the trusted or privileged attribute (for example, started tasks or jobs assigned by a RACROUTE REQUEST=VERIFY exit) are considered z/OS UNIX superusers even if their assigned UID is a value other than 0.
540
z/OS UNIX
Once you have set individual user limits for users who require higher resource limits, you should consider removing their superuser authority. You should also reevaluate your installation's BPXPRMxx limits and consider reducing these limits. See z/OS UNIX System Services Planning for more information.
Sharing IDs
By default, RACF does not prevent the sharing of UIDs and GIDs among any number of users or groups. However, you can enforce unique UNIX identifiers by defining a profile called SHARED.IDS in the UNIXPRIV class. Rules: 1. You must define the SHARED.IDS profile to enable each method of automatic assignment of unique UNIX identities. (See Automatically assigning unique IDs using RACF commands on page 544 and Automatically assigning unique IDs through UNIX services on page 545.) 2. To control uniqueness for automatic assignment of unique IDs using RACF commands, the RACF database must be at least at stage 2 of application identity mapping (AIM). To control uniqueness for automatic assignment of unique IDs by UNIX services, the RACF database must be at AIM stage 3. If you attempt to assign a UID or GID while the SHARED.IDS profile is defined but the RACF database is not at least at AIM stage 2, the command fails and message IRR52176I is issued. For details about using the IRRIRA00 utility to advance the RACF database to AIM stage 2 or stage 3, see z/OS Security Server RACF System Programmer's Guide 3. RACF can enforce uniqueness of the UIDs and GIDs assigned using RACF TSO commands, RACF ISPF panels, or the R_admin callable service (IRRSEQ00).
Chapter 17. RACF and z/OS UNIX
541
z/OS UNIX
RACF also assigns unique IDs through the following SAF callable services when FACILITY class profile BPX.UNIQUE.USER is defined. v getUMAP (IRRSUM00) v getGMAP (IRRSGM00) v initUSP (IRRSIU00) RACF does not enforce uniqueness of UIDs and GIDs assigned by installation programs that invoke the ICHEINTY or RACROUTE macros. 4. The maximum number of user IDs that can share a UID (or groups that share a GID) is 129 assuming a length of 8 characters for each. More user IDs or groups can share if the average length is less than 8 characters each. Once this limit is reached, you might consider combining user ID functions, such as those of started tasks or daemons, to reduce the number of user IDs sharing the same UID. Another option is to administer UNIXPRIV profiles that grant superuser authorities to reduce your need to share UID 0. For more information, see Using UNIXPRIV class profiles to manage z/OS UNIX privileges on page 556.
If the UNIXPRIV class is already active and RACLISTed, issue the following commands to implement the SHARED.IDS profile: Example:
RDEFINE UNIXPRIV SHARED.IDS UACC(NONE) SETROPTS RACLIST(UNIXPRIV) REFRESH
Once you define the SHARED.IDS profile, the default behavior of the ADDUSER, ALTUSER, ADDGROUP, and ALTGROUP commands is changed for the UID and GID options of the OMVS operand. Any attempt to assign an ID already in use fails with message IRR52174I being issued. Similarly, if you attempt to assign the same ID to a group of names on a single command, the command fails with message IRR52185I being issued. Once you define the SHARED.IDS profile, if you want to make an exception to the enforcement of UNIX identity uniqueness, you must use the SHARED operand.
542
z/OS UNIX
Examples:
ADDUSER SUPERONE OMVS(UID(0) SHARED HOME(/) PROGRAM(/bin/echo)) NOPASSWORD ALTGROUP DUDES OMVS(GID(99) SHARED)
To specify the SHARED operand, you must have the SPECIAL attribute or at least READ authority to the SHARED.IDS profile in the UNIXPRIV class. Example: To authorize another user to create a user or group with a shared UNIX ID, issue the following commands:
PERMIT SHARED.IDS CLASS(UNIXPRIV) ID(userid) ACCESS(READ) SETROPTS RACLIST(UNIXPRIV) REFRESH
If specified, the SHARED operand is ignored when any of the following conditions are true: v The SHARED.IDS profile is not RACLISTed. v The UID or GID operand is omitted. v The specified UID or GID value is unique. v The specified UID or GID value is identical to the current UID or GID value.
543
z/OS UNIX
To use this method, the RACF database must be at least at AIM stage 3. For implementation details, see Automatically assigning unique IDs through UNIX services on page 545.
Upon successful command completion, informational message IRR52177I is issued to indicate the assigned value. Example:
IRR52177I User MARCY was assigned an OMVS UID value of 5344.
For the ALTUSER and ALTGROUP commands, the AUTOUID and AUTOGID options cannot be used to change the ID value if one exists for the user. However, it is not considered an error if the existing ID is unique, meaning it is not shared. If it is not unique, the command fails and message IRR52178I is issued. If you attempt to use the AUTOUID or AUTOGID option with a list of users or groups, the command will fail with message IRR52184I being issued. Example (incorrect):
ADDUSER (TOM DICK HARRY) OMVS(AUTOUID)
Notes: v The RACF database must be at least at stage 2 of application identity mapping (AIM). v Implementing SHARED.IDS and BPX.NEXT.USER is a prerequisite to successful automatic assignment of unique UNIX identities. v The AUTOUID and AUTOGID operands cannot be specified with the SHARED operand. Doing so results in command failure and message IRR52186I being issued. v AUTOUID is ignored if UID or NOUID is specified. v AUTOGID is ignored if GID or NOGID is specified. For more information on these commands, refer to the z/OS Security Server RACF Command Language Reference.
544
z/OS UNIX
The APPLDATA field contains the starting UID or GID value or range of values separated by a forward slash (/). The starting value is the value RACF attempts to use in ID assignment, after determining that the ID is not in use. If it is in use, the value is incremented until an appropriate value is found. For example, to have RACF start automatic assignment with a UID value of 1 and a GID value of 0, issue: Example:
RDEFINE FACILITY BPX.NEXT.USER APPLDATA(1/0)
When the maximum value of 2147483647 is reached, subsequent automatic ID assignment attempts fail and message IRR52181I is issued. The starting value used is chosen at your discretion. For example, if UID values 02000 are already in use, and GID values 0200 are already in use, you should use a UID starting value of 2001 and a GID starting value of 201. Example:
RALTER FACILITY BPX.NEXT.USER APPLDATA(2001/201)
Specifying NOAUTO as a qualifier in the APPLDATA, or omitting the qualifier, prevents automatic ID assignment. For example, if you use employee serial numbers as the convention for assigning UIDs and do not want to use automatic assignment, but want to use automatic GID assignment starting at 3000, issue: Example:
RDEFINE FACILITY BPX.NEXT.USER APPLDATA(NOAUTO/3000)
Ranges can be useful in an RRSF environment. Specify a starting and ending value separated by a dash () if you want to include a range of values. Both values must be valid UID or GID values and the second must be greater than the first. Ranges can be specified independently for UIDs or GIDs. Examples:
RDEFINE RDEFINE RDEFINE RDEFINE FACILITY FACILITY FACILITY FACILITY BPX.NEXT.USER BPX.NEXT.USER BPX.NEXT.USER BPX.NEXT.USER APPLDATA(50000-80000/3000-10000) APPLDATA(50000/3000-10000) APPLDATA(50000-80000/3000) APPLDATA(NOAUTO/3000-10000)
Notes: v You cannot specify blanks in the APPLDATA string. v Syntax checking of APPLDATA does not occur until AUTOUID and AUTOGID operands are specified on the ADDUSER, ALTUSER, ADDGROUP, and ALTGROUP commands. v If you have defined BPX.NEXT.USER with incorrect APPLDATA, issuing AUTOUID or AUTOGID fails with message IRR52187I being issued. v You can change the APPLDATA values at any time. v After successful automatic ID assignment, RACF updates the APPLDATA starting value with either the next potential value or end of range.
545
z/OS UNIX
when you use AUTOUID and AUTOGID keywords on the user and group commands, as described in Automatically assigning unique IDs using RACF commands on page 544. However, when you have a large number of users without OMVS segments who need access to z/OS UNIX services, such as FTP, you might choose not to assign UNIX identities in advance of their need to use the services. In these cases, use this method to enable RACF to automatically assign unique UIDs and GIDs at the time they are neededwhen users without OMVS segments access certain z/OS UNIX services. Many z/OS UNIX services, either directly or indirectly, invoke the following SAF callable services to retrieve the UID associated with a user or to retrieve the GID associated with a group: v initUSP (IRRSIU00) callable service: Initialize USP v getUMAP (IRRSUM00) callable service: Get UID-to-user-ID mapping v getGMAP (IRRSGM00) callable service: Get GID-to-group-name mapping RACF automatically assigns unique identities when z/OS UNIX invokes these SAF callable services to initialize the user security environment or determine a UID or GID, and all of the following requirements are met: 1. The RACF database is enabled for application identity mapping (AIM) stage 3. 2. The UNIXPRIV class profile SHARED.IDS is defined, and the UNIXPRIV class is active and RACLISTed. 3. The FACILITY class profile BPX.NEXT.USER is defined and its APPLDATA field has valid ID values or ranges. 4. The FACILITY class profile BPX.UNIQUE.USER is defined. 5. No OMVS segment is defined in the user or group profile. When RACF generates and returns a new unique UID, it saves that value in the new OMVS segment of the user profile. Similarly, when RACF generates and returns a new unique GID, it saves that value in the new OMVS segment of the group profile. This ensures that the UID or GID remains assigned to the same user or group for all future uses of z/OS UNIX services. RACF assigns unique UIDs and OMVS segments for users independently from the GIDs and OMVS segments it assigns for the user's current connect group, based on what the callable service requires. For instance, when the initUSP callable service calls RACF for a unique ID, a UID might be needed for the user, but the user's current connect group might already have a GID. Conversely, the callable service might require a GID for the user's current connect group but not a UID for the user. At your option, RACF can also propagate common program, home, and other OMVS attributes to first-time z/OS UNIX users. To do this, define a user profile to serve as a model for OMVS segment information. When you specify the profile name in the APPLDATA field of the BPX.UNIQUE.USER profile in the FACILITY class, RACF extracts the OMVS information (other than the UID) from the model profile and saves it in the user profile at the same time it assigns the user's unique UID.
546
z/OS UNIX
v If you are implementing this method to replace default OMVS segment processing, locate the default UID and GID values in the BPX.DEFAULT.USER profile in the FACILITY class. Then determine which resources the default UID and GID can access and authorize the new unique UIDs and GIDs to access the same resources. Do this to avoid disruption in UNIX services for users who previously used default OMVS segments to access z/OS UNIX services. v Ensure that your plan to maintain UNIX access control lists (ACLs) and GID memberships includes the new unique UIDs and GIDs generated by this method. Perform the following steps to enable RACF to automatically assign unique UIDs and GIDs for users who use z/OS UNIX services:
1.
See your system programmer to ensure that your RACF database is enabled for AIM stage 3. For details about using the IRRIRA00 utility to advance the RACF database to AIM stage 3, see z/OS Security Server RACF System Programmer's Guide. ______________________________________________________________________ Define the SHARED.IDS profile, if not already defined, in the UNIXPRIV class and activate and RACLIST the UNIXPRIV class. For instructions, see Defining the SHARED.IDS profile in the UNIXPRIV class on page 542. ______________________________________________________________________ Define the BPX.NEXT.USER profile in the FACILITY class, if not already defined. For instructions, see Setting up the BPX.NEXT.USER profile on page 544. ______________________________________________________________________ (Optional) Define a user profile to use as a model profile from which RACF can extract OMVS segment information. (You will specify the name of this profile in the APPLDATA field of the BPX.UNIQUE.USER profile in the FACILITY class in Step 5.) Guidelines: v Define the model profile to ensure that users who are automatically assigned unique UIDs are assigned adequate OMVS information to enable them to use UNIX services. v Omit UID for this profile. No UID is required for its intended purpose. v Use this user profile only as the model profile for the BPX.UNIQUE.USER profile. Do not use the user ID for any other purpose. Limit the use of this user ID by assigning the RESTRICTED and NOPASSWORD attributes. Grant no access authority to the user ID. Do not add the user ID to RACF access lists or connect it to RACF groups that might grant resource access. The following command defines a model profile that contains a HOME value in the OMVS segment. Example:
2.
3.
4.
| | |
______________________________________________________________________
5.
Define the BPX.UNIQUE.USER profile in the FACILITY class and specify the name of the model profile in the APPLDATA field. Example:
RDEFINE FACILITY BPX.UNIQUE.USER APPLDATA(BPXMODEL)
Chapter 17. RACF and z/OS UNIX
547
z/OS UNIX
Rule: Specify no generic characters in the BPX.UNIQUE.USER profile name. If you do not want to propagate any OMVS information from a model profile, do not specify APPLDATA. Example:
RDEFINE FACILITY BPX.UNIQUE.USER
______________________________________________________________________
6.
If the FACILITY class is RACLISTed, activate your new FACILITY profiles by refreshing the FACILITY class. Example:
SETROPTS RACLIST(FACILITY) REFRESH
You need not activate and RACLIST the FACILITY class to enable automatic assignment of unique IDs. However, if the FACILITY class is already RACLISTed, you must refresh the class. ______________________________________________________________________ You have now enabled RACF to automatically assign unique IDs for users without OMVS segments when they use z/OS UNIX services. All users are now able to access z/OS UNIX services because they are automatically assigned a UID when they attempt to access a z/OS UNIX service for the first time. If you want to prevent certain users from being able to access z/OS UNIX services, define an OMVS segment with no UID for those users. This prevents their user IDs from being automatically assigned a UID. When they attempt to use a z/OS UNIX service, the dub will fail, and a daemon will be unable to switch to these user IDs. Example:
ALTUSER TSOADM1 OMVS(NOUID)
548
z/OS UNIX
v If the BPX.UNIQUE.USER is defined but an error occurs during the processing for unique IDs, such as an error due to incorrect or missing APPLDATA information, RACF cannot use default OMVS segment processing even when the BPX.DEFAULT.USER profile is defined. Sharing the RACF database with downlevel systems: When you share the RACF database with downlevel systems, you can enable automatic assignment of unique IDs on your current systems and enable default OMVS segment processing on your downlevel systems. In this situation, the two methods can coexist. Guideline: If you use default OMVS segment processing, take advantage of this coexistence to migrate your systems to automatic assignment of unique IDs. If you share the RACF database with downlevel systems and both the BPX.UNIQUE.USER and BPX.DEFAULT.USER profiles are defined, the following conditions apply: v On the current systems, automatic assignment of unique IDs occurs because those systems support the BPX.UNIQUE.USER profile. v On the downlevel systems, default OMVS segment processing occurs because those systems do not support the BPX.UNIQUE.USER profile but they do support the BPX.DEFAULT.USER profile.
If RACF processes this ADDUSER command and arrives at a UID value of 4120 through unique ID processing, RRSF propagates the following command image to the target node:
ADDUSER SEYMOUR OMVS(AUTOUID UID(4120) HOME(/u/seymour) PROGRAM(/bin/sh))
As a result, no unique ID processing is done at the target node because it was already done at the source node. When the ADDUSER command executes at the target node, the AUTOUID option is ignored because UID is specified. Guidelines: To avoid ID collisions when multiple nodes on your RRSF network are enabled for automatic assignment of unique IDs, take one of the following actions:
549
z/OS UNIX
v Use non-overlapping ID ranges on each of the RRSF nodes to avoid conflicts when an automatic ID request is made on a given node and propagated to any other node. Because you do not want APPLDATA updates being propagated between nodes, be careful when defining and altering BPX.NEXT.USER if automatic command direction is active for the FACILITY class. Using the ONLYAT operand (on the RALTER and RDEFINE commands) when you change BPX.NEXT.USER prevents propagation of a node's APPLDATA. ONLYAT must be used whether you are creating the BPX.NEXT.USER profile on a local or remote node. Example: To define the BPX.NEXT.USER profile on the local node, issue:
RALTER FACILITY BPX.NEXT.USER APPLDATA(10000-19999/10000-19999) ONLYAT(.MYID)
Example: To define the BPX.NEXT.USER profile on a remote node called NODEB, issue:
RALTER FACILITY BPX.NEXT.USER APPLDATA(20000-29999/20000-29999) ONLYAT(NODEB.MYID)
v Ensure that user and group updates (specifically, those involving UID and GID requests) be performed on a single node, and propagated to other RRSF nodes from this node. Though you do not have to be concerned with the contents of BPX.NEXT.USER on any node other than the source node (whether or not automatic command direction or automatic direction of application updates is being used), all nodes should be running with SHARED.IDS implemented.
550
z/OS UNIX
1. Preferred method: Enable automatic assignment of unique UNIX identities by defining the BPX.UNIQUE.USER profile in the FACILITY class. The unique UID and GID are stored in the OMVS segment of the user or group profile. See Automatically assigning unique IDs through UNIX services on page 545. 2. Enable default OMVS segment processing to automatically assign a shared UID and GID by defining the BPX.DEFAULT.USER profile in the FACILITY class. The shared UID and GID are not stored in the OMVS segment of the user or group profile but are used only for the length of the user session. Important: When you enable default OMVS segment processing, RACF returns a shared (non-unique) UID and GID for users and groups that do not have OMVS segments. Using shared UNIX identities results in the loss of user accountability and might restrict the use of certain UNIX functions for users with default UNIX identities. To enable default OMVS segment processing, follow these steps: 1. Create a FACILITY class profile called BPX.DEFAULT.USER. 2. Specify a user ID, or a user ID and group name, in the application data field of that profile. 3. Ensure that a user profile exists for the user ID you specified in Step 2, and that a UID is specified in its OMVS segment. Similarly, ensure that a group profile exists for the group name, and that a GID is specified in its OMVS segment, if you specified a group name in Step 2. RACF command processing does not perform any checking to ensure that the application data points to a valid user ID, or a valid user ID and group name, or that the user and group profiles contain OMVS segments. However, in order for default OMVS segment processing to occur for users who do not have individual OMVS segments, the user or group profile must exist. z/OS UNIX user limits specified in the OMVS segment of the default user profile are used during default OMVS segment processing. Therefore, if you expect a large number of users to use the default user OMVS segment, you might consider setting user limits there rather than raising system limits. If any of the following are true, default OMVS segment processing will not occur: v The FACILITY class is inactive. v The FACILITY class profile BPX.UNIQUE.USER is defined. v The FACILITY class profile BPX.DEFAULT.USER does not exist. v There is no application data in the BPX.DEFAULT.USER profile. v The application data in the BPX.DEFAULT.USER profile does not contain the name of an existing user profile, or the names of existing user and group profiles. v When looking for a UID, the user profile found using the application data does not contain an OMVS segment, or its OMVS segment does not contain a UID. v When looking for a GID, the group profile found using the application data does not contain an OMVS segment, or its OMVS segment does not contain a GID. v The current user has no RACF user profile. The processing of the default OMVS segments for the user and the current connect group are independent of each other. The OMVS segment of the user specified on the initUSP callable service might be used to obtain the UID, and the GID might come from the group name specified in the FACILITY class profile. Similarly, when the default UID found through the user ID specified in the FACILITY class profile
Chapter 17. RACF and z/OS UNIX
551
z/OS UNIX
is used, the GID might come from the user's current connect group. Also, the user ID specified in the FACILITY class profile need not be a member of the group name specified in that profile. These values are used independently. In the following example, the security administrator sets up the default user and group OMVS segments in preparation for the installation's migration to z/OS UNIX. In this case, a new user and group profile will be created to contain the defaults, and the FACILITY class has already been activated.
ADDUSER OEDFLT NAME(OE DEFAULT USER) OMVS(UID(888888) HOME(/u/OEDFLT)) ADDGROUP OEGROUP OMVS(GID(17)) RDEFINE FACILITY BPX.DEFAULT.USER APPLDATA(OEDFLT/OEGROUP)
The format of the application data is exactly as shown when a default is being set up for both user and group OMVS segments. To set up a default for the user OMVS segment only, the format is:
APPLDATA(OEDFLT)
Note: When defining APPLDATA in the BPX.DEFAULT.USER profile, you can specify a user ID from which to obtain default OMVS segment information, or you can specify a user ID and a group name, but you cannot specify only a group name. If you want to use individual user OMVS segments but make use of a default group OMVS segment, you must specify both a valid user ID and a valid group name in the APPLDATA field. RACF will ignore the default user OMVS specification for any user who has an individual OMVS segment. Similarly, RACF will ignore the default group OMVS specification for any group that has an individual OMVS segment. At your option, you can define individual user OMVS segments that do not contain UIDs for certain user IDs. This will prevent these user IDs from being used to access z/OS UNIX services. For example, daemons will be unable to switch to these user IDs. As an alternative, you can use the default group OMVS segment but prevent most users at your installation from accessing z/OS UNIX services. Do this by defining a user OMVS segment that does not contain a UID in the user profile specified in the APPLDATA field of the BPX.DEFAULT.USER profile. RACF will ignore the default user OMVS specification for any users who have individual OMVS segments. If these users have UIDs defined in their OMVS segments, they will be able to access z/OS UNIX services.
552
z/OS UNIX
you will automatically take advantage of application identity mapping at the stage 3 level without running the IRRIRA00 conversion utility, and you will not need to use UNIXMAP to achieve improved performance.
553
z/OS UNIX
Table 33. The UNIXMAP class and VLF: Effects on performance for installations that have not reached stage 3 of application identity mapping State Active Active Active Inactive UNIXMAP class VLF UNIXMAP class VLF Performance Running in this state at all times will give you the best performance. If VLF is inactive, requests for UID-to-user-ID mapping and GID-to-group-name mapping must access a UNIXMAP class profile in the database, which degrades performance. Running with VLF inactive should be done only when you need to stop VLF to make changes to it. If the UNIXMAP class is inactive, requests for UID-to-user-ID mapping and GID-to-group-name mapping must search the entire RACF database when the UID or GID specified is not found in VLF. Running in this state degrades performance severely. The inactive state for the UNIXMAP class is provided as a migration aid. After migration is complete, you should never need to run with the UNIXMAP class inactive. Running with both VLF inactive and the UNIXMAP class inactive causes requests for UID-to-user-ID mapping and GID-to-group-name mapping to default to searching the RACF database on each request. Running in this state significantly degrades performance of these functions. It could also affect other systems in a complex sharing the RACF database because of the increased I/O to the database. It is recommended that you never run in this state.
Inactive Active
Inactive Inactive
You have the option to cache additional z/OS UNIX security information in VLF. This capability allows RACF to avoid accessing the RACF database when called to create a security environment for z/OS UNIX users. To use the cached user security (USP) packet, the IRRSMAP class must be defined to VLF. For more information, see z/OS Security Server RACF System Programmer's Guide. For information about the effect of certain RACF commands on VLF, see RACF Commands for Flushing a VLF Cache on page 370. For more information on VLF, see: v z/OS MVS Planning: Operations v z/OS MVS Initialization and Tuning Guide v z/OS MVS Initialization and Tuning Reference
554
z/OS UNIX
How to initially populate the UNIXMAP class: If your installation already uses z/OS UNIX, and has OMVS segments defined in group or user profiles, you should perform the following steps. If you do not use z/OS UNIX, you do not need to perform these steps. To initially populate the UNIXMAP class, do the following: 1. Quiesce administrative activity against users and groups. 2. Run the database unload utility (IRRDBU00) against the database. 3. Read instructions at the beginning of the REXX migration exec (in the IRR30858 member of SYS1.SAMPLIB) concerning what data sets are to be used in your environment. After reading the exec and modifying it appropriately, run it against the database unload utility output. It produces a file containing RDEFINE and PERMIT commands that will populate the UNIXMAP class. Do not execute this command file yet. 4. Issue SETROPTS NOADDCREATOR. This is very important because you do not want the ID of the user who runs the command file produced in Step 3 on the access list of all the profiles in this new class. 5. Execute the command file produced in Step 3. When you execute this file, you might see messages ICH408I and ICH10102I, indicating that some profile is already defined to the UNIXMAP class. This occurs if a UID maps to more than one user ID or if a GID maps to more than one group name. 6. If SETROPTS ADDCREATOR was in effect prior to Step 4, issue SETR ADDCREATOR now to restore that setting. 7. Issue SETROPTS CLASSACT(UNIXMAP). The UNIXMAP profiles will now be used to do UID and GID lookups. To maintain performance, it is recommended that the UNIXMAP class remain active. Administrative activity can now be resumed against users and groups. From this point, RACF automatically keeps the UNIXMAP profiles synchronized with the user and group profiles.
555
z/OS UNIX
ADDUSER ORTIZ OMVS(UID(13))
RACF creates a UNIXMAP profile named U13 with ORTIZ contained on the access list. If the following command is subsequently issued:
ALTUSER ORTIZ OMVS(UID(55))
RACF deletes the U13 profile and creates a U55 profile with ORTIZ contained on the access list. In general, you should not alter these profiles. However, it is possible that they might get inadvertently deleted, or damaged by database corruption. If a profile is deleted, or if the user is not contained in its access list, RACF will not be able to retrieve information for the UID or GID that the profile represented. RACF will be unable to locate the mapping profile and will send z/OS UNIX a return code indicating that the UID or GID is not known. If this happens, an authorized user needs to repair the damage. First, see if the user name associated with the UID or the group name associated with the GID can be determined from a message displayed by RACF. For example, suppose you received an error message associated with user ORTIZ. You should display the UID associated with the user profile for ORTIZ by entering:
LISTUSER ORTIZ OMVS NORACF
If, for example, LISTUSER displays a UID of 13, you would then enter:
RDEFINE UNIXMAP U13 UACC(NONE) PERMIT U13 CLASS(UNIXMAP) ACCESS(NONE) ID(ORTIZ) PERMIT U13 CLASS(UNIXMAP) ID(your-userid) DELETE
If your environment has the SETROPTS NOADDCREATOR option in effect, the second PERMIT command is not necessary because RDEFINE does not put the profile creator on the access list. If you are unable to determine the user name or group name from a RACF message, look at the output from the database unload utility (IRRDBU00) to find the user ID or group associated with a given UID or GID. The mapping profiles should then be added, changed, or deleted as appropriate to be consistent.
556
z/OS UNIX
See z/OS UNIX System Services Planning for a list of the resource names available in the UNIXPRIV class, the z/OS UNIX privilege associated with each resource, and the level of access required to grant the privilege.
Note: Generic profile names are generally permitted for resources in the UNIXPRIV class, though there are certain exceptions such as the CHOWN.UNRESTRICTED resource. These examples are documented in their appropriate sections. If you want to authorize all file-system privileges, you can use generics and define a profile called SUPERUSER.FILESYS.**. 2. Authorize selected users or groups as appropriate:
PERMIT SUPERUSER.FILESYS.CHOWN CLASS(UNIXPRIV) ID(appropriate-groups-and-users) ACCESS(READ)
Note: If you do not activate the UNIXPRIV class and activate SETROPTS RACLIST processing for the UNIXPRIV class, only superusers will be allowed to transfer ownership of any file. 4. You must activate SETROPTS RACLIST processing for the UNIXPRIV class, if it is not already active. For a complete description of this function, see SETROPTS RACLIST Processing on page 138.
SETROPTS RACLIST(UNIXPRIV)
Note: If SETROPTS RACLIST processing is already in effect for the UNIXPRIV class, you must refresh SETROPTS RACLIST processing in order for new or changed profiles in the UNIXPRIV class to take effect.
SETROPTS RACLIST(UNIXPRIV) REFRESH
557
z/OS UNIX
Note: If you do not activate the UNIXPRIV class and activate SETROPTS RACLIST processing for the UNIXPRIV class, only superusers will be allowed to transfer ownership of files to others. 3. You must activate SETROPTS RACLIST processing for the UNIXPRIV class, if it is not already active. For a complete description of this function, see SETROPTS RACLIST Processing on page 138.
SETROPTS RACLIST(UNIXPRIV)
Note: If SETROPTS RACLIST processing is already in effect for the UNIXPRIV class, you must refresh SETROPTS RACLIST processing in order for the CHOWN.UNRESTRICTED profile to take effect.
SETROPTS RACLIST(UNIXPRIV) REFRESH
558
z/OS UNIX
Steps for setting up the FILE.GROUPOWNER.SETGID profile: Perform the following steps to set up the FILE.GROUPOWNER.SETGID profile:
1. 2. 3.
Define the FILE.GROUPOWNER.SETGID profile. Generic characters cannot be used in this profile name.
RDEFINE UNIXPRIV FILE.GROUPOWNER.SETGID
Activate the SETROPTS RACLIST processing for the UNIXPRIV class if it is not already active.
SETROPTS RACLIST(UNIXPRIV)
If SETROPTS RACLIST processing is already in effect for the UNIXPRIV class, you must refresh SETROPTS RACLIST processing in order for the FILE.GROUPOWNER.SETGID profile to take effect.
SETROPTS RACLIST(UNIXPRIV) REFRESH
Attention: When a new file system is mounted, you must turn on the set-gid bit of its root directory if you want new objects within the file system to have their group owner set to that of the parent directory.
Administering ACLs
The z/OS UNIX setfacl command is used to create, modify, and delete ACLs. The z/OS UNIX getfacl command is used to display the contents of ACLs. To create and administer an ACL for a file, you must either be the file owner or you must have superuser authority by having UID(0) or READ access to SUPERUSER.FILESYS.CHANGEPERMS in the UNIXPRIV class.
Chapter 17. RACF and z/OS UNIX
559
z/OS UNIX
You can also use setfacl to create default (or model) ACLs for directories. When new objects are created within the directory, the default ACL is automatically inherited by the new object. See z/OS UNIX System Services Planning for complete information on using ACLs. You must activate the FSSEC class before ACLs can be used in access decisions. You can define and display ACLs while the FSSEC class is inactive, however they will not be used for authorization checking. Similarly, if you have defined default ACLs on directories, the ACLs will be inherited by new objects while the FSSEC class is inactive but they will not be used for authorization checking. The following command can be used to activate the FSSEC class. Example:
SETROPTS CLASSACT(FSSEC)
When a security decision is needed, the file system calls RACF, supplying the ACL, if present, and the FSP. RACF provides authorization checking and auditing, and then returns control to the file system. See Authorization Checking for RACF-Protected Resources on page 753 for details.
1.
Define a resource called RESTRICTED.FILESYS.ACCESS in the UNIXPRIV class with UACC(NONE). To prevent all restricted users, do not permit any users or groups. Example:
RDEFINE UNIXPRIV RESTRICTED.FILESYS.ACCESS UACC(NONE)
______________________________________________________________________
2.
If needed, explicitly allow certain restricted users to access certain files using the usual authorization method of adding those users, or one of their groups, to the file's ACL using the setfacl command. (See z/OS UNIX System Services Command Reference for details.) Example:
setfacl -m user:thabo:rwx MyFile
Authorization changes made using the setfacl command take effect immediately. ______________________________________________________________________
3.
If needed, grant exceptions to certain restricted users to allow them to gain access based on the file's other bits. Add those users, or one of their groups, to the access list with READ authority. Example:
560
z/OS UNIX
PERMIT RESTRICTED.FILESYS.ACCESS CLASS(UNIXPRIV) ID(RSTDUSER) ACCESS(READ)
Do not attempt to deny access to certain restricted users by defining this resource with UACC(READ) and then permitting those users with access of NONE. The UACC of a resource cannot be used to allow access when the user is restricted. ______________________________________________________________________
4.
Refresh the UNIXPRIV class to activate changes from Steps 1 and 3. Example:
SETROPTS RACLIST(UNIXPRIV) REFRESH
For any given z/OS UNIX process, the result of the first check to the RESTRICTED.FILESYS.ACCESS resource will be cached for the life of the process. Therefore, subsequent authorization changes to this resource will not take effect for that process. ______________________________________________________________________
1.
Define a resource called SUPERUSER.FILESYS.ACLOVERRIDE in the UNIXPRIV class with UACC(NONE). To prevent all users, do not permit any users or groups. Example:
RDEFINE UNIXPRIV SUPERUSER.FILESYS.ACLOVERRIDE UACC(NONE)
______________________________________________________________________
2.
If needed, grant exceptions to certain users or groups to allow them to gain access based on their SUPERUSER.FILESYS authority. Add those users or groups to the access list with the same level of access they require for the SUPERUSER.FILESYS resource. Example:
PERMIT SUPERUSER.FILESYS.ACLOVERRIDE CLASS(UNIXPRIV) ID(PER) ACCESS(READ)
See z/OS UNIX System Services Planning for details about authorizing users for the SUPERUSER.FILESYS resource. ______________________________________________________________________
3.
Refresh the UNIXPRIV class to activate changes from Steps 1 and 2. Example:
SETROPTS RACLIST(UNIXPRIV) REFRESH
______________________________________________________________________ SUPERUSER.FILESYS.ACLOVERRIDE is checked only when a user's access was denied by a matching ACL entry based on the user's UID or one of the user's
Chapter 17. RACF and z/OS UNIX
561
z/OS UNIX
GIDs. If the user's access was denied by the file's permission bits, SUPERUSER.FILESYS is checked. See Authorizing Access to z/OS UNIX Files and Directories on page 764 for details.
For more information Administrative considerations of the z/OS UNIX pthread_security_np callable service are discussed in z/OS UNIX System Services Planning. Additional information regarding the pthread_security_np service is discussed in z/OS UNIX System Services Programming: Assembler Callable Services Reference. The C language support for this service is discussed in z/OS XL C/C++ Run-Time Library Reference.
562
z/OS UNIX
v Both the RACF user ID of the server and the RACF user ID of the client are used in local resource access control decisions. The use of the pthread_security_np service is in part protected by the RACF FACILITY class profile BPX.SERVER. v If the RACF user ID that is associated with an application server is permitted with UPDATE access to this profile, the application server is allowed to establish a thread-level (task-level) security environment for clients connecting to the server. With UPDATE authority to BPX.SERVER in the RACF FACILITY class, the server can act as a surrogate of the client. This means that the identity of the thread associated with the request from the server's client executes with the RACF user ID of the server's client. The RACF identity of the client determines the type of access allowed to system resources (such as data sets) and z/OS UNIX resources (such as file system resources), which are accessed by the client's thread in the server. v READ access allows the server to establish a thread-level security environment for the clients it services. However, the user ID of the server and the user ID of the client must be authorized to the resources the server accesses. A thread level security environment in which both the client's and server's identities are used in the access control decision, but a password was not supplied by the client, is called an unauthenticated client security environment. Depending on the design and implementation of the client/server application, a client might need to supply an authenticator to the server. For example, the client might be prompted to supply a password or a password substitute, such as a RACF PassTicket, to the server to prove its identity. If a RACF password or PassTicket is specified as a option on the pthread_security_np service, and the password or PassTicket is valid for the client user ID, only the RACF user ID of the client is used in rendering access control decisions. This task level security environment created by an application server is called an authenticated client security environment. Because the client has trusted the application server sufficiently to supply a RACF password or PassTicket to the server, the server is granted the capability of acting as a surrogate for that client. This capability enables you to determine: On behalf of which user IDs the server can act What resources the server can access when acting on behalf of one of its clients Potentially, for additional security checking, two audit records can be produced to audit: v The client accessing the resource v The server accessing the resource on behalf of the client If you choose to implement this additional security checking, you might need to authorize the identity associated with the application server to the resource profiles that protect the resources accessed by the server on behalf of its clients. See z/OS UNIX System Services Planning for a complete description of the administrative planning steps and requirements for using the pthread_security_service.
563
z/OS UNIX
564
z/OS UNIX
v The client/server relationship is not propagated from the application server. If you have implemented access control to resources that use both the server's RACF identity and the client's RACF identity in an access control decision, application servers that you do not trust should be treated as end points. These servers should not be allowed to submit batch jobs or use the services of other servers that run exclusively under the identity of the client. You must ensure that applications servers that do not meet this criteria are not authorized to the profile BPX.SERVER in the RACF FACILITY class.
565
566
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
568 568 569 570 571 571 571 572 572 572 572 573 574 575 575 576 577 578 579 580 580 581 583 583 588 590 590 590 590 591 591 591 591 592 592 593 594 595 595 595 595 596 596 598 598 599 600 600 600 601 601 601 603 605 605
567
Digital certificates
Excluding a certificate by using the NOTRUST option . . . . . . . . . . Mapping multiple user IDs using additional criteria . . . . . . . . . . RACLISTing the DIGTCRIT class . . . . . . . . . . . . . . . . Using application criteria . . . . . . . . . . . . . . . . . . Using system criteria . . . . . . . . . . . . . . . . . . . . Using multiple criteria . . . . . . . . . . . . . . . . . . . Activating additional criteria . . . . . . . . . . . . . . . . . Automatic registration of digital certificates . . . . . . . . . . . . . . Integrated Cryptographic Service Facility (ICSF) considerations. . . . . . . . Using a PCI cryptographic coprocessor to generate private keys . . . . . . Migrating an ICSF private key from one system to another . . . . . . . . Steps for migrating a certificate and its ICSF private key . . . . . . . . The irrcerta, irrmulti, and irrsitec user IDs. . . . . . . . . . . . . . . Renewing an expiring certificate . . . . . . . . . . . . . . . . . . Renewing a certificate with the same private key . . . . . . . . . . . Steps for renewing a certificate issued by an external CA. . . . . . . . Steps for renewing a certificate issued by a local CA . . . . . . . . . Steps for renewing a self-signed certificate in RACF . . . . . . . . . Renewing (rekeying) a certificate with a new private key . . . . . . . . . Steps for rekeying a certificate issued by an external CA . . . . . . . . Steps for rekeying a certificate issued by an local CA . . . . . . . . . Steps for rekeying a self-signed certificate in RACF. . . . . . . . . . Supplied digital certificates . . . . . . . . . . . . . . . . . . . . Steps to begin using a supplied CA certificate . . . . . . . . . . . . Implementation scenarios . . . . . . . . . . . . . . . . . . . . Scenario 1: Secure Server with a Certificate Signed by a Certificate Authority . . Scenario 2: Secure Server with a Locally Signed Certificate . . . . . . . . Scenario 3: Migrating an ikeyman or gskkyman Certificate . . . . . . . . Scenario 4: Secure Server-to-Server Session Enablement . . . . . . . . . Scenario 5: Creating Client Browser Certificates with a Locally Signed Certificate. Scenario 6: Enabling Secure Outbound FTP . . . . . . . . . . . . . Scenario 7: Sharing One Certificate Between Multiple Servers . . . . . . . Scenario 8: Using the IBM Encryption Facility for z/OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 606 607 607 608 609 610 610 611 611 611 612 613 613 614 614 614 615 615 616 617 618 618 619 620 620 621 622 623 624 625 626 627
568
Digital certificates
v One party can digitally sign data by encrypting a copy of the data using her own private key. If the signer's public key is known, the signature can be verified by decrypting the signed data using the signer's public key. If the recovered data matches the expected value (the original data), then it is the data signed by the original party, not forged by another, because only the original party has the matching private key. In practical terms, symmetric encryption algorithms, such as Data Encryption Standard (DES), perform much faster than asymmetric encryption algorithms. Therefore, public key protocols use a combination of symmetric and asymmetric encryption. For example, in SSL, the message data is symmetrically encrypted only after asymmetric encryption is used to exchange the symmetric encryption key. Also, to reduce the size of the message transmitted, the data to be digitally signed is compressed using a one-way hashing function before being encrypted with the signer's private key. The signature verifier then performs the same hashing function on the recovered data before comparing the signature.
X.509 certificates
Public keys can be freely disseminated. In fact, the success of the various public key protocols requires a systematic and trustworthy way of distributing public keys and securely storing their associated private keys. The X.509 digital certificate is the packaging that enables the distribution of a single public key. The X.509 standard is the subsection of the International Telecommunication Union (ITU) X.500 directory standard that defines certificates. The X.509 digital certificate is a data structure that contains, at minimum, the following fields: v The distinguished name of the owner of the public key, also called the subject's name v The distinguished name of the issuer of the certificate, also called the issuer's name v The public key itself v The time period during which the certificate is valid, also called the validity period v The certificate's serial number as designated by the issuer v The issuer's digital signature In addition to these required fields, an X.509 certificate might contain one or more extensions that hold information about how the key is to be used (a KeyUsage extension) or how the certificate authority conducts its business (a CertificatePolicies extension). In its simplest form, a digital certificate is a binding between a named entity (a person or device) and a public key. It is a declaration that, for example, party A owns public key 123. Digital certificates can be issued by certificate authorities or they can be self-issued. Certificate authorities (CAs) are often well-known commercial organizations or they can be local or internal organizations. When a certificate authority uses its private key to sign and issue a certificate, it makes the declaration that binds the entity (subject) to its public key. When an organization issues its own certificate with itself as subject and issuer, signing with its own private key, the certificate is a called a self-signed certificate.
569
Digital certificates
Certificate hierarchies
Certificate authorities digitally sign the certificates they issue using their own private key. Thus, another party can verify the information in a certificate, including its extensions, by validating the signature on the certificate with the certificate authority's own public key. The other party gets the certificate authority's public key from a certificate issued to the certificate authority and does a signature check that might involve the public key from yet another certificate. The chain of verification can be quite long, depending on the certificate hierarchy. Figure 44 illustrates an example of a simple certificate hierarchy.
CA #1
CA #2
Figure 44 is a representation of a certificate hierarchy containing four entities where the end-entity certificate is issued by subordinate certificate authority (CA #2). The certificate of CA #2 is issued by subordinate certificate authority (CA #1). The certificate of CA #1 is issued by the root certificate authority. The certificate of the root certificate authority is self-issued, meaning that its certificate is signed by its own private key (a self-signed certificate). The chain of signature verification begins with the end-entity certificate. The public key of CA #2 is used to verify the signature of the end-entity certificate. If the signature is valid, the public key of CA #1 is used to verify the signature of the CA #2 certificate. If the signature is valid, the public key of the root certificate is used to verify the signature of the CA #1 certificate. Finally, the signature of the root certificate is verified using its own public key. Signature verification for the self-signed root certificate simply provides assurance that the root certificate is unaltered. It does not guarantee that the information in the certificate, or the certificate authority itself, is trustworthy because anyone can create a self-signed certificate and claim to be a certificate authority. You must establish trust in your own selected set of certificate authorities and individual certificates before using public key protocols.
570
Digital certificates
Your selected set of trusted certificates or CAs might be referred to using various terms, such as your trusted roots, trusted signers, or, simply, your trust policy. RACF supports your trust policies through RACF key rings. For details, see RACF and key rings on page 593. RACF, like other security software that supports digital certificates, has a method for supplying a predefined set of trusted root certificates. RACF includes a base set of well-known certificate authority certificates that are added to the RACF database whenever the system is IPLed. Unlike with other security software, these certificates are initially disabled. They are supplied as a convenience so that you need not define them yourself. However, you must determine which of these certificate authorities to trust, if any, and you must enable trust for those. For details, see Supplied digital certificates on page 618. Remember: You must select and enable trust for the certificate-authority certificates supplied with RACF before using them. Perform Steps to begin using a supplied CA certificate on page 619.
RSA, developed by RSA Laboratories, is by far the most popular algorithm and supports digital signatures and data encryption. Elliptic Curve Cryptography (ECC) is a newer algorithm that offers shorter keys that achieve comparable strengths when compared with longer RSA keys. DSA implements the Digital Signature Standard (DSS) published by the National Institute of Standards and Technology (NIST) and is used for digital signatures only. Diffie-Hellman keys cannot be stored in RACF but they can be retrieved from a PKCS #11 token.
Certificate formats
X.509 digital certificates come in various formats for handling by system administrators and end users. It is important to understand these various formats because each is handled in a different way. RACF fully supports all of these forms, except as specified.
571
Digital certificates
Base64-encoded certificates
The binary certificate and the PKCS #7 and #12 binary packages can be additionally encoded using the base64 algorithm. Base64 encoding is a mechanism to convert binary data into text so that it can be easily transported as text, such as within an e-mail. When converting from binary to text, each three bytes of binary are converted into four characters from the following set: az, AZ, 09, \, and +. When you peek at a base64-encoded certificate on any platform, it looks similar to the following:
-----BEGIN CERTIFICATE----MIICYzCCAcygAwIBAgIBADANBgkqhkiG9w0BAQUFADAuMQswCQYDVQQGEwJVUzEM MAoGA1UEChMDSUJNMREwDwYDVQQLEwhMb2NhbCBDQTAeFw05OTEyMjIwNTAwMDBa Fw0wMDEyMjMwNDU5NTlaMC4xCzAJBgNVBAYTAlVTMQwwCgYDVQQKEwNJQk0xETAP BgNVBAsTCExvY2FsIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD2bZEo 7xGaX2/0GHkrNFZvlxBou9v1Jmt/PDiTMPve8r9FeJAQ0QdvFST/0JPQYD20rH0b imdDLgNdNynmyRoS2S/IInfpmf69iyc2G0TPyRvmHIiOZbdCd+YBHQi1adkj17ND cWj6S14tVurFX73zx0sNoMS79q3tuXKrDsxeuwIDAQABo4GQMIGNMEsGCVUdDwGG +EIBDQQ+EzxHZW5lcmF0ZWQgYnkgdGhlIFNlY3VyZVdheSBTZWN1cml0eSBTZXJ2 ZXIgZm9yIE9TLzM5MCAoUkFDRikwDgYDVR0PAQH/BAQDAgAGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFJ3+ocRyCTJw067dLSwr/nalx6YMMA0GCSqGSIb3DQEB BQUAA4GBAMaQzt+zaj1GU77yzlr8iiMBXgdQrwsZZWJo5exnAucJAEYQZmOfyLiM D6oYq+ZnfvM0n8G/Y79q8nhwvuxpYOnRSAXFp6xSkrIOeZtJMY1h00LKp/JX3Ng1 svZ2agE126JHsQ0bhzN5TKsYfbwfTwfjdWAGy6Vf1nYi/rO+ryMO -----END CERTIFICATE-----
Remember: Base64-encoded certificates are text. When you transfer them to or from a z/OS system, you must transfer them as text to ensure that the ASCII translation to or from EBCDIC takes place. Using ASCII (not binary) FTP or a text cut-and-paste will suffice. Be sure to include the BEGIN and END lines in your transfer.
572
Digital certificates
client
Certificate Proof of possession Certificate Proof of possession Encrypted transactions
certificate
server
certificate
public key
public key
private key
trusted certificate authority certificates
private key
Figure 45. A high-level view of a secure z/OS handshake using a public key network protocol
573
Digital certificates
574
Digital certificates
Which certificate authorities will I trust? You need to decide which certificate authorities you will consider trusted enough to identify parties involved in the network protocol with your application. You need to trust at least one certificate authority, the one that issued the certificate for your application. Any others you choose are based on the needs of your application and its users. The set of certificate authorities that your application considers trusted comprise your application's trust policy, or RACF key ring.
1.
If you chose RACF as your certificate authority, use the RACDCERT GENCERT command to generate your certificate authority (CA) certificate, the associated public, and the private key pair in RACF. Set the certificate's validity period because the one-year default value is usually not long enough for a CA certificate. Use the RACDCERT GENCERT command to generate your application's end-entity certificate, and the associated public and private key pair, in RACF. v If you are using RACF as your certificate authority, sign the application certificate with your RACF certificate authority certificate. v If you are using an external certificate authority, create a self-signed certificate in RACF as a placeholder and use the RACDCERT GENREQ command to generate a certificate request, based on the placeholder certificate, to send to your external certificate authority. The certificate request (header line, footer line, and all data between them) is sent to the certificate authority who signs the certificate and returns it to you. Upon receipt, use RACDCERT ADD to replace the self-signed certificate with your new CA-signed certificate. If you peek at a request data set before you send it to the certificate authority, you will notice the following header and footer lines. (Certificate requests are always DER-encoded and then base64-encoded, like base64-encoded certificates.)
-----BEGIN NEW CERTIFICATE REQUEST----. . . -----END NEW CERTIFICATE REQUEST-----
2.
3.
Establish the trust policy for your application. (For details, see RACF and key rings on page 593.) v Use the RACDCERT ADDRING command to define a key ring in RACF and associate it with your application's user ID. v Use the RACDCERT CONNECT command to connect certificates to the key ring. Be sure to connect your trusted certificate authority certificates and the certificate that represents your application.
575
Digital certificates
environment element (ACEE), to the user's address space. Subsequently, units of work initiated by the client are tagged with the client's identity, or security context. In this environment, the client's user ID and password provide identification and authentication. In the z/OS digital certificate environment, the secure handshake protocol depicted in Figure 45 on page 573 accomplishes identification and authentication when the client presents its certificate as identification and its proof-of-possession as authentication. The client's ACEE is created when the application invokes the SAF callable service called initACEE (IRRSIA00) to determine the client's user ID based on information in the client's certificate.
Certificate mapping
When RACF is called by initACEE to determine the user ID to associate with the client certificate, it does so based on your installation's set of certificate mapping rules. RACF can only determine the user ID for a given certificate if a rule covering that certificate was created prior to the certificate's use. RACF provides the following mechanisms for defining certificate mapping rules: v One-to-one certificate to user ID association v Certificate name filtering v The hostIdMappings certificate extension One-to-one certificate to user ID association: Whenever you generate a certificate using the RACDCERT GENCERT command, RACF registers it to a user ID and adds it to the RACF database. You can also store a previously generated certificate and register it to a user ID using the RACDCERT ADD command. These methods establish a direct one-to-one association, or mapping, between each certificate and one specific user ID. You can create direct mappings for each of your users by simply adding individual certificates for each user to the RACF database. However, the administrative cost of this approach might only be feasible for you when handling a limited number of certificates. Registered certificates are stored in certificate profiles. These profiles contain an exact copy of the certificate and, for user IDs on this system, the private key, if it exists. Certificates stored in this way can be used to simply associate a certificate with a user ID or they can be gathered into a collection, or key ring, for use by other applications as part of a secure network protocol. For details, see Using the RACDCERT command to administer certificates on page 579 and RACF and key rings on page 593. Certificate name filtering: For some applications, directly mapping each client certificate to a user ID is neither practical nor desirable. An alternative is to create one or more certificate name filters using the RACDCERT MAP command. A certificate name filter allows you to associate many certificates with one user ID, based on rules concerning portions of the subject's or issuer's distinguished names in the certificate, such as the subject's corporate affiliation or department. With carefully chosen certificate name filters, a large number of client certificates can be mapped to a limited number of user IDs with very little administrative cost. This benefit is limited to some degree by a loss of granularity in access control. For example, if you create a certificate name filter to map the certificates of all company employees in the Systems division to user ID SDUSER, then all such employees are given the resource authorizations of the user ID SDUSER. However,
576
Digital certificates
you retain full auditing accountability because the subject's and issuer's distinguished names in the client's certificate appears in every audit record created on behalf of the client's unit of work. This mapping option is explored in detail in Certificate name filtering on page 598. The hostIdMappings certificate extensions: The hostIdMappings certificate extension is used to communicate the user's host identity for one or more host systems. The extension contains a sequence of host name and user ID value pairs. (Each pair can also have an encrypted password, but this field is not used by RACF.) When RACF is called to create an ACEE from a certificate containing a hostIdMappings extension, RACF examines the extension to determine the appropriate user ID for the ACEE. For more information how RACF uses this extension, see Using a hostIdMappings extension on page 632. When you use hostIdMappings extensions, you need not create certificate profiles nor name filters prior to using certificates. However, as with all other extensions in a certificate, the hostIdMappings extension is created by the certificate's issuer at the time the certificate is generated. If you operate as your own certificate authority and you know the respective user IDs of your clients at the time their certificates are created, using hostIdMappings extensions is your lowest administrative cost option. Restriction: PKI Services for z/OS supports the creation of hostIdMappings extensions. However, other commercial certificate-authority software might not support them, so check with your software vendor.
577
Digital certificates
entity, such as a peer VPN server. This category of certificate can also be used to share a single certificate and its private key among multiple RACF user IDs. When used for sharing, a certificate might be referred to as a placeholder certificate.
| | |
RSA key stored in the RACF database RSA key stored in the ICSF PKDS as a CRT key token DSA key RSA key stored in the ICSF PKDS as an ME key token NISTECC key BPECC key
Key strength considerations: Shorter keys of the ECC type, which are generated when you specify NISTECC or BPECC, achieve comparable key strengths when compared with longer RSA keys. RSA, NISTECC, and BPECC keys of the following sizes are comparable in strength:
RSA key size 1024 bits 2048 bits 3072 bits 7680 bits 15360 bits NISTECC key size 192 bits 224 bits 256 bits 384 bits 521 bits BPECC key size 160 or 192 bits 224 bits 256 or 320 bits 384 bits 512 bits
578
Digital certificates
Hashing algorithm used for signing: RACF signs certificates using a set of secure hash algorithms based on the SHA-1 or SHA-2 hash functions. When the signing key is a DSA type, the SHA-1 algorithm is used for keys of all sizes. When the signing key is an RSA, NISTECC, or BPECC type, the size of the signing key determines the hashing algorithm used for signing, as follows:
Hashing algorithm used for signing SHA-1 SHA-256 SHA-384 SHA-512 Signing key size RSA Less than 2048 bits 2048 bits or longer NISTECC 192, 224, or 256 bits 384 bits 521 bits BPECC 160, 192, 224, 256, or 320 bits 384 bits 512 bits
DIGTRING
579
Digital certificates
rings and the certificates that are part of each key ring. Key rings are named collections of the personal, site and certificate-authority certificates associated with a specific user. For more information, see DIGTRING general resource profiles on page 594. DIGTNMAP Profiles in the DIGTNMAP class contain information about certificate name filters. For more information, see DIGTNMAP general resource profiles on page 600. Profiles in the USER class contain information about digital certificates that are associated with the user. This information is used by the RACDCERT command itself in its processing and by the DELUSER command to clean up certificate-related resources owned by the user ID being deleted. Restriction: Profiles in the DIGTCERT, DIGTRING, and DIGTNMAP classes are automatically maintained through RACDCERT command processing. You cannot administer profiles in these classes using the RDEFINE, RALTER, and RDELETE commands. These commands do not operate with profiles in the DIGTCERT, DIGTRING, and DIGTNMAP classes. Since these profiles contain lowercase characters, the SEARCH FILTER and RLIST commands are not intended for use and will deliver unpredictable results. You need not activate the DIGTCERT, DIGTCRIT, and DIGTRING classes to use resources in those classes. However, performance is improved when you activate and RACLIST the DIGTCERT and DIGTCRIT classes. See RACLISTing the DIGTCERT class on page 592 and RACLISTing the DIGTCRIT class on page 607. See z/OS Security Server RACF Command Language Reference for more information about the RACDCERT command. See RRSF considerations for digital certificates on page 456 for information about propagating updates made by the RACDCERT command to other nodes in an RRSF network.
USER
580
Digital certificates
UPDATE access to IRR.DIGTCERT.function to issue the RACDCERT command for others. CONTROL access to IRR.DIGTCERT.function to issue the RACDCERT command for SITE and CERTAUTH certificates. (This authority also has other uses.) For detailed information about the RACDCERT command and the authority required to execute each command, see z/OS Security Server RACF Command Language Reference. Note that users who have insufficient authority to the IRR.DIGTCERT.LIST resource can use the RACDCERT CHECKCERT command to display some digital certificate information if they have READ authority to the data set containing the certificate. The output they receive reflects only the certificate information contained in the data set. Because they lack sufficient authority to the IRR.DIGTCERT.LIST resource, they will not receive certificate information contained in the RACF database, such as the TRUST status, the LABEL, or the RACF user ID associated with the certificate. For an example of this output, see Examples of checking digital certificate information on page 588.
581
Digital certificates
RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE RDEFINE PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT PERMIT
FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY FACILITY
IRR.DIGTCERT.ADD IRR.DIGTCERT.ADDRING IRR.DIGTCERT.ALTER IRR.DIGTCERT.ALTMAP IRR.DIGTCERT.BIND IRR.DIGTCERT.CONNECT IRR.DIGTCERT.DELETE IRR.DIGTCERT.DELMAP IRR.DIGTCERT.DELRING IRR.DIGTCERT.EXPORT IRR.DIGTCERT.EXPORTKEY IRR.DIGTCERT.GENCERT IRR.DIGTCERT.GENREQ IRR.DIGTCERT.LIST IRR.DIGTCERT.LISTMAP IRR.DIGTCERT.LISTRING IRR.DIGTCERT.MAP IRR.DIGTCERT.REKEY IRR.DIGTCERT.REMOVE IRR.DIGTCERT.ROLLOVER
UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) UACC(NONE) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(WEBADMIN) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ID(*) ACCESS(CONTROL) ACCESS(UPDATE) ACCESS(CONTROL) ACCESS(UPDATE) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(UPDATE) ACCESS(UPDATE) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(UPDATE) ACCESS(UPDATE) ACCESS(UPDATE) ACCESS(CONTROL) ACCESS(CONTROL) ACCESS(CONTROL)
IRR.DIGTCERT.ADD IRR.DIGTCERT.ADDRING IRR.DIGTCERT.ALTER IRR.DIGTCERT.ALTMAP IRR.DIGTCERT.BIND IRR.DIGTCERT.CONNECT IRR.DIGTCERT.DELETE IRR.DIGTCERT.DELMAP IRR.DIGTCERT.DELRING IRR.DIGTCERT.EXPORT IRR.DIGTCERT.EXPORTKEY IRR.DIGTCERT.GENCERT IRR.DIGTCERT.GENREQ IRR.DIGTCERT.LIST IRR.DIGTCERT.LISTMAP IRR.DIGTCERT.LISTRING IRR.DIGTCERT.MAP IRR.DIGTCERT.REKEY IRR.DIGTCERT.REMOVE IRR.DIGTCERT.ROLLOVER IRR.DIGTCERT.ADD IRR.DIGTCERT.ADDRING IRR.DIGTCERT.ALTER IRR.DIGTCERT.ALTMAP IRR.DIGTCERT.BIND IRR.DIGTCERT.CONNECT IRR.DIGTCERT.DELETE IRR.DIGTCERT.DELMAP IRR.DIGTCERT.DELRING IRR.DIGTCERT.EXPORT IRR.DIGTCERT.EXPORTKEY IRR.DIGTCERT.GENCERT IRR.DIGTCERT.GENREQ IRR.DIGTCERT.LIST IRR.DIGTCERT.LISTMAP IRR.DIGTCERT.LISTRING IRR.DIGTCERT.MAP IRR.DIGTCERT.REKEY IRR.DIGTCERT.REMOVE IRR.DIGTCERT.ROLLOVER
CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY) CLASS(FACILITY)
ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ) ACCESS(READ)
PERMIT IRR.DIGTCERT.LIST CLASS(FACILITY) ID(HELPDESK) ACCESS(CONTROL) PERMIT IRR.DIGTCERT.LISTMAP CLASS(FACILITY) ID(HELPDESK) ACCESS(UPDATE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(HELPDESK) ACCESS(UPDATE)
582
Digital certificates
2. User RACFADM with SPECIAL authority requests the addition of a digital certificate for user NETB0Y. RACFADM has placed the digital certificate in data set RACFADM.NETB0Y.CERT and wants the status of the certificate to be trusted. In addition, RACFADM wants to associate the saved certificate for user NETB0Y with a label called Savings Account. RACFADM issues the following RACDCERT command:
RACDCERT ID(NETB0Y) ADD(RACFADM.NETB0Y.CERT) TRUST WITHLABEL(Savings Account)
583
Digital certificates
Digital certificate information for user GEORGEM: Label: New Cert Type - Ser # 00 Certificate ID: 2QfHxdbZx8XU1YWmQMOFmaNA46iXhUBgQOKFmUB7QPDw Status: TRUST Start Date: 2010/04/18 03:01:13 End Date: 2020/02/13 03:01:13 Serial Number: >00< Issuers Name: >OU=Internet Demo CertAuth.O=The Cert Software Inc.< Subjects Name: >OU=Internet Demo CertAuth.O=The Cert Software Inc.< Key Type: RSA Mod-Exp Key Size: 1024 Private Key: YES PKDS Label: IRR.DIGTCERT.GEORGEM.SY1.BD7103108611F42F Ring Associations: Ring Owner: GEORGEM Ring: >GEORGEMsNewRing01< Ring Owner: GEORGEM Ring: >GEORGEMsRing< Label: New Type Cert - VsignC1 Certificate ID: 2QfHxdbZx8XU1YWmQOOol4VAw4WZo0BgQOWiiYeVw/FA Status: TRUST Start Date: 2010/04/22 23:23:26 End Date: 2020/01/15 23:23:26 Serial Number: >3511A552906FE7D029A44019D411FC3E< Issuers Name: >OU=Class 1 Public Primary Certification Authority.O=VeriSign, Inc..C=< >US< Subjects Name: >OU=VeriSign Class 1 CertAuth - Individual Subscriber.O=VeriSign, Inc..L=Int< >ernet< Key Type: RSA Key Size: 512 Private Key: YES Ring Associations: Ring Owner: GEORGEM Ring: >GEORGEMsNewRing01< Label: New Type Cert - VsignC2 Certificate ID: 2QfHxdbZx8XU1YWmQOOol4VAw4WZo0BgQOWiiYeVw/JA Status: NOTRUST Start Date: 2010/03/19 15:39:52 End Date: 2020/03/19 15:39:52 Serial Number: >50D35294912F79D315E32B31AC8548F0< Issuers Name: >OU=Class 2 Public Primary Certification Authority.O=VeriSign, Inc..C=< >US< Subjects Name: >OU=VeriSign Class 2 CertAuth - Individual Subscriber.O=VeriSign, Inc..L=Int< >ernet< Key Type: NIST ECC Key Size: 256 Private Key: NO Ring Associations: *** No rings associated *** Figure 47. Output from the RACDCERT LIST command
584
Digital certificates
2. User RACFADM with SPECIAL authority requests the listing of user ID GEORGEM's key rings by issuing the RACDCERT command with the LISTRING operand. User ID GEORGEM has three key rings with certificates and one key ring which has no certificates. Figure 48 shows the output of the following command:
RACDCERT ID(GEORGEM) LISTRING
Digital ring information for user GEORGEM: Ring: >GEORGEMsNewRing01< Certificate Label Name -------------------------------New Cert Type - Ser # 00 New Type Cert - VsignC1 New Type Cert - VsignC2 65 Ring: >GEORGEMsRing< Certificate Label Name -------------------------------GEORGEMs Cert # 48 GEORGEMs Cert # 84 New Cert Type - Ser # 00 Ring: >GEORGEMsRing#2< Certificate Label Name -------------------------------GEORGEMs Cert # 84 GEORGEMs Cert # 48 Ring: >GEORGEMsRing#3< *** No certificates connected *** Figure 48. Output from the RACDCERT LISTRING command
DEFAULT ------YES NO NO NO
DEFAULT ------NO NO
3. User NETB0Y requests the listing of his Savings Account digital certificate to ensure it has been defined, and that it is marked trusted. He has READ authority to the FACILITY class resource IRR.DIGTCERT.LIST. He issues the RACDCERT command with the LIST operand, specifying the label to identify his certificate. Figure 49 on page 586 shows the output of the following command:
RACDCERT LIST(LABEL(Savings Account))
585
Digital certificates
Digital certificate information for user NETB0Y: Label: Savings Account Certificate ID: 2QbVxePC1ujigaWJlYeiQMGDg5aklaNA Status: TRUST Start Date: 2010/11/10 00:00:00 End Date: 2011/11/10 23:59:59 Serial Number: >5D666C20207A6638727A413872D8413B< Issuers Name: >OU=BobsBank Savers.O=BobsBank.L=Internet< Subjects Name: >CN=S.S.Smith.OU=Digital ID Class 1 - NetScape.OU=BobsBank Class 1 - S< >avingsAcct.O=BobsBank.L=Internet< Key Type: Brainpool ECC Key Size: 192 Private Key: YES Ring Associations: *** No rings associated *** Figure 49. Output from the RACDCERT LIST command with LABEL
4. User RACFADM with SPECIAL authority uses the RLIST DIGTCERT * command to request the listing of all DIGTCERT profiles. This RLIST command lists information about the profiles that contain digital certificates, rather than information about the certificates themselves. (Use the RACDCERT LIST command to list detailed information about certificates.) Figure 50 on page 587 shows a partial sample of the output of the following command:
RLIST DIGTCERT *
The RLIST command lists the universal access value for a profile in the DIGTCERT class differently based on the TRUST status of the digital certificate contained in the profile:
Trust status Trusted Untrusted Universal access ALTER ???????
Figure 50 on page 587 shows the listing of a profile containing a certificate-authority certificate that was supplied with your RACF system. For more information about these certificates, see Supplied digital certificates on page 618.
586
Digital certificates
RLIST DIGTCERT * CLASS NAME -------DIGTCERT [email protected]=ThawtePersonalBasicCA.OU=Certific ationServicesDivision.O=ThawteConsulting.L=CapeTown.SP=WesternCape.C=ZA LEVEL OWNER ----- -------00 IBMUSER INSTALLATION DATA ----------------NONE APPLICATION DATA ---------------irrcerta AUDITING -------FAILURES(READ) NOTIFY -----NO USER TO BE NOTIFIED . . . Figure 50. Output from the RLIST DIGTCERT command UNIVERSAL ACCESS ---------------??????? YOUR ACCESS ----------NONE WARNING ------NO
5. User RACFADM with SPECIAL authority uses the SEARCH CLASS(DIGTCERT) command to find the names of all DIGTCERT profiles. (For detailed listings of certificate information, use the RACDCERT LIST command.) Figure 51 on page 588 shows sample output from the following command:
SEARCH CLASS(DIGTCERT)
Figure 51 on page 588 shows several listings of profiles containing certificate-authority certificates that are supplied with your RACF system. For more information, see Supplied digital certificates on page 618.
587
Digital certificates
SEARCH CLASS(DIGTCERT) [email protected]=ThawtePersonalBasicCA.OU=CertificationServic esDivision.O=ThawteConsulting.L=CapeTown.SP=WesternCape.C=ZA [email protected]=ThawtePersonalFreemailCA.OU=Certification ServicesDivision.O=ThawteConsulting.L=CapeTown.SP=WesternCape.C=ZA [email protected]=ThawtePersonalPremiumCA.OU=CertificationSe rvicesDivision.O=ThawteConsulting.L=CapeTown.SP=WesternCape.C=ZA 00BA5AC94C053B92D6A7B6DF4ED053920D.OU=Class2PublicPrimaryCertificationAutho rity.O=VeriSign,Inc..C=US 00E49EFDF33AE80ECFA5113E19A4240232.OU=Class3PublicPrimaryCertificationAutho rity.O=VeriSign,Inc..C=US [email protected]=ThawtePremiumServerCA.OU=CertificationServic esDivision.O=ThawteConsultingcc.L=CapeTown.SP=WesternCape.C=ZA [email protected]=ThawteServerCA.OU=CertificationServicesDivisio n.O=ThawteConsultingcc.L=CapeTown.SP=WesternCape.C=ZA 02AD667E4E45FE5E576F3C98195EDDC0.OU=SecureServerCertificationAuthority.O=RSA DataSecurity,Inc..C=US 325033CF50D156F35C81AD655C4FC825.OU=Class1PublicPrimaryCertificationAuthori ty.O=VeriSign,Inc..C=US 3381F595.CN=IntegrionCertificationAuthorityRoot.O=IntegrionFinancialNetwork .C=US 33820AD2.CN=IBMWorldRegistryCertificationAuthority.O=IBMWorldRegistry.C=US . . . Figure 51. Output from the SEARCH CLASS(DIGTCERT) command
588
Digital certificates
RACDCERT CHECKCERT(NETADMN.SOMEONZ.CERT) Digital certificate information for user GTM: Label: LABEL00000001 Certificate ID: 2QPH49TH49RAw4WZo4mGiYOBo4VA Status: NOTRUST Start Date: 2010/11/11 00:00:00 End Date: 2011/11/11 23:59:59 Serial Number: >84< Issuers Name: >CN=BobsBank Class 2< Subjects Name: >[email protected]=G.T.Miles.T=President.OU=Loans.O=BobsBank,INC< >..SP=NY.L=Internet.C=USA< Key Type: RSA Key Size: 1024 Private Key: NO
2. User USERA finds a digital certificate and is uncertain who it belongs to, and whether or not it has been defined to RACF. The digital certificate is contained in data set NETADMN.SOMEONZ.CERT and is associated with user GTM. USERA has READ authority to the data set NETADMN.SOMEONZ.CERT. He issues the following RACDCERT command. The output he receives reflects only the certificate information contained in the data set, and does not include certificate information contained in the RACF database. Note that the listing contains the same level of information that NETADMN receives in Example 3.
RACDCERT CHECKCERT(NETADMN.SOMEONZ.CERT) Start Date: 2010/11/11 00:00:00 End Date: 2011/11/11 23:59:59 Serial Number: >84< Issuers Name: >CN=BobsBank Class 2< Subjects Name: >[email protected]=G.T.Miles.T=President.OU=Loans.O=BobsBank,INC< >..SP=NY.L=Internet.C=USA<
3. User NETADMN has a digital certificate in a data set, and is uncertain who it belongs to, and whether or not it has been defined. The digital certificate is in data set NETADMN.SOMELSZ.CERT. NETADMN has CONTROL authority to the FACILITY class resource IRR.DIGTCERT.LIST. He issues the following RACDCERT, and the output he receives indicates that the certificate is not associated with a user ID.
589
Digital certificates
RACDCERT CHECKCERT(NETADMN.SOMELSZ.CERT) Start Date: 2010/03/18 14:58:37 End Date: 2011/03/17 14:58:37 Serial Number: >79< Issuers Name: >CN=BobsBank Class 2< Subjects Name: >[email protected]=J. Miles.T=Manager.OU=Branch2.O=BobsBank,INC< >..SP=NY.L=Internet.C=USA<
When you delete a certificate that is connected to a key ring, the certificate is automatically removed from the key ring.
590
Digital certificates
Because PKCS #11 tokens are managed by ICSF, not RACF, when you delete a certificate that is bound in a token, the equivalent certificate object in the token is unchanged. For detailed syntax and usage information, see z/OS Security Server RACF Command Language Reference.
591
Digital certificates
When the combined length of the value of serial-number.issuer's-distinguished-name is 246 characters or less, the name of the DIGTCERT profile uses the following format:
serial-number.issuers-distinguished-name
Example: If the certificate's serial number is 41D87A3B05DE6FBD466C2069661E3872 and the issuer's distinguished name is OU=VeriSign Class1.O=VeriSign.L=Internet, the profile name of the DIGTCERT profile is as follows:
41D87A3B05DE6FBD466C2069661E3872.OU=VeriSignClass1.O=VeriSign.L=Internet
When the combined length of the value of serial-number.issuer's-distinguished-name exceeds 246 characters, the name of the DIGTCERT profile uses the following format, where the certificate-hash value is a hexadecimal representation of the certificate in a hashed form:
serial-number.<first-portion-of-IDN><certificate-hash><last-portion-of-IDN>
Example: If the certificate's serial number is 0E and the issuer's distinguished name is as follows, the resulting profile name is as shown: Issuer's distinguished name:
CN=Entrust Certification Authority - L1B.OU=(c) 2008 Entrust,Inc ..OU=www.entrust.net/CPS is incorporated by reference.OU=CPS CON TAINS IMPORTANT LIMITATIONS OF WARRANTIES AND LIABILITY.OU=AND A DDITIONAL TERMS GOVERNING USE AND RELIANCE.OU=Entrust,Inc.C=US
When a DIGTCERT profile name contains a certificate hash value, each occurrence of the equal sign (=) delimiter is replaced with a colon (:).
592
Digital certificates
If the DIGTCERT class is not RACLISTed, digital certificates can still be used but performance might be impacted when applications that retrieve certificates from RACF must wait while RACF retrieves them from the RACF database instead of from virtual storage. Rule: You must activate each class you want to RACLIST. For example:
SETROPTS RACLIST(DIGTCERT) CLASSACT(DIGTCERT)
After creating a new digital certificate, refresh the DIGTCERT class by issuing the SETROPTS RACLIST(DIGTCERT) REFRESH command. If you do not refresh the RACLISTed DIGTCERT profiles, RACF will still use the new digital certificate. However, performance might be impacted because applications that retrieve certificates from RACF will wait while RACF retrieves the new certificate from the RACF database. Restriction: Any RACLISTed digital certificates that you alter, re-add or delete will not reflect your changes until you refresh the DIGTCERT class. This is because RACF uses RACLISTed profiles before profiles in the RACF database. Therefore, to make your changes effective, refresh the DIGTCERT class.
The most common type is the CERTAUTH virtual key ring, which is used when an application validates the certificates of others but has no need for its own certificate and private key. See Using a virtual key ring on page 595 for an example. System SSL and other security middleware use the R_datalib callable service (IRRSDL00 or IRRSDL64) to retrieve certificate information from RACF. In order for applications to retrieve certificates and private keys from RACF, the certificates must be connected to a RACF key ring (including a virtual key ring) or a z/OS PKCS #11 token. The key ring or token is the data store that R_datalib opens, reads, and closes as directed by the application. Applications can also use R_datalib callable service to manage keys rings (virtual key rings are not included). Authorized applications can create key rings and
Chapter 18. RACF and digital certificates
593
Digital certificates
connect certificates to key rings. See R_datalib (IRRSDL00 or IRRSDL64) callable service on page 634 for information about controlling applications that use this callable service. The usage assigned to a certificate when it is connected to a key ring indicates its intended purpose. Personal certificates are to be used by the local server application to identify itself. Certificate-authority certificates are to be used to verify the peer entity's certificate. Peers with certificates issued by certificate authorities connected to the key ring are considered trusted network entities. Peers possessing certificates that cannot be verified because the certificate-authority certificate is not available can also be considered trusted if their personal certificates are connected to the key ring as a trusted site certificate. Restrictions: 1. Use caution when connecting a peer's certificate to a key ring as a trusted site certificate. The normal certificate verification tests performed by the server on the peer's certificate are bypassed in this case. Hence, even expired certificates are considered trusted. 2. Certificates marked NOTRUST cannot be retrieved using the R_datalib callable service even if they are connected to a key ring. RACF hides them from the calling application and does not indicate that they are connected to the key ring.
When you delete a user ID, DELUSER command processing deletes the user's key rings by deleting the associated resources in the DIGTRING class. The certificates referenced in the key ring are not deleted unless they too are associated with the user ID being deleted. Important: Do not enable generic profile checking for the DIGTRING class by issuing the SETROPTS GENERIC(DIGTRING) or SETROPTS GENERIC(*) command. Some classes, such as DIGTCERT and DIGTRING, do not support generic profile checking. These and other classes might already have profile names that contain generic characters (*, &, and %). If a class already has profile names that contain generic characters, avoid issuing the SETROPTS GENERIC(classname) command for
594
Digital certificates
that class. Enabling generic profile checking for such a class prevents RACF from using previously defined profiles that contain generic characters in the name.
v The user directs FTP to use TLS by specifying -a TLS or -r TLS on the FTP command:
ftp r TLS ftp.ibm.com
v Client authentication is not required and the virtual key ring is used only to authenticate the FTP server.
595
Digital certificates
UNBIND: Removes a certificate and its keys from an existing token. IMPORT: Adds a certificate to RACF from an existing token. See z/OS Security Server RACF Command Language Reference for syntax and usage information about these functions of the RACDCERT command. v You can authorize applications to use the R_datalib (IRRSDL00 or IRRSDL64) callable service to read and extract token information. For details, see RACF Authorization for R_datalib (IRRSDL00 or IRRSDL64) in z/OS Security Server RACF Callable Services. v You can use resources in the CRYPTOZ class to control access to tokens. See Controlling access to tokens in z/OS Cryptographic Services ICSF Writing PKCS #11 Applications. Because tokens are managed by ICSF, not RACF, other applications can use ICSF functions to change tokens without updating the certificate information in the RACF database. Similarly, RACF changes to digital certificates already bound to a token are not reflected in the token information maintained by ICSF. Therefore, the following restrictions apply: Restrictions: v Deleting, altering, or renewing a RACF certificate that is bound to a token has no affect on the equivalent token objects managed by ICSF. v Deleting or altering a certificate object in a token has no effect on the following objects: The equivalent RACF certificate. The equivalent certificate objects in other tokens.
596
Digital certificates
1.
Create two new tokens using your installation's naming convention for tokens. The naming convention used in this example requires the high-level qualifier of the token name to match the owning user ID. In this example, the user IDs associated with the FTP and Web servers are FTPSRV and WEBSRV. Examples:
RACDCERT ADDTOKEN(ftpsrv.ftp.server.pkcs11.token) RACDCERT ADDTOKEN(websrv.web.server.pkcs11.token)
______________________________________________________________________
2.
______________________________________________________________________
3.
Bind the end-entity root certificates to their respective tokens. Define each certificate as the default in its token. Examples:
RACDCERT BIND(ID(FTPSRV) LABEL(FTP Key) TOKEN(ftpsrv.ftp.server.pkcs11.token) DEFAULT) RACDCERT BIND(ID(WEBSRV) LABEL(Web Key) TOKEN(websrv.web.server.pkcs11.token) DEFAULT)
______________________________________________________________________ You have now created and populated PKCS #11 tokens for the FTP server and the Web server. To begin using the new tokens, the Web server administrator must now configure each server to use its new token. For example, if the Web server uses IBM HTTP Server, a keyfile directive must be added to its httpd.conf file: Example:
keyfile *TOKEN*/WEBSRV.WEB.SERVER.PKCS11.TOKEN SAF
Note: In this example, the SAF option indicates to SSL that the keyfile is a SAF key ring, rather than a key database file. The leading characters *TOKEN*/ in the keyfile name indicate to SAF that the key ring is, in fact, a token. For details about adding a keyfile directive, see z/OS HTTP Server Planning, Installing, and Using. Similarly for the FTP server, a KEYRING definition must be added to its configuration file (FTP.DATA): Example:
KEYRING *TOKEN*/FTPSRV.FTP.SERVER.PKCS11.TOKEN
Note: The leading characters *TOKEN*/ in the key ring name indicate to SAF that the key ring is, in fact, a token.
597
Digital certificates
The distinguished names contained in the certificates shown in Table 34 are represented in the X.500 directory information tree shown in Figure 52 on page 599. For a list of the components of the subject's X.509 distinguished name, see the syntax of the RACDCERT command in z/OS Security Server RACF Command Language Reference.
598
Digital certificates
| / \ / \ / \ / \ O=World Sales Corp L=Internet / \ / O=VeriSign, Inc. / \ OU=US OU=VeriSign Class 1 / \ Individual Subscriber / \ / \ OU=New York OU=Los Angeles / \ \ / \ \ OU=Sales OU=Admin OU=Sales / \ \ / \ \ CN=Agneta Berglund CN=Hiro Ogura CN=Timo Kokkonen Figure 52. Example of an X.500 directory information tree
Now, let's look at the left branch of the tree in Figure 52 as representing a hierarchical organization, with each level of the tree, or node, representing a different level within an organization. For example, Agneta works in the Sales department in New York for the US division of the World Sales Corporation. If viewed as a hierarchy of user groups, each level of the tree might represent increased access authority, with each group consisting of the groups below it. For example, as an employee of World Sales, Agneta might have access to the internal phone numbers of all World Sales employees. As a member of the US division, she might also have access to the US division internal Web site, in addition to the phone numbers of all employees. Being in New York might allow her to run sales reports for the New York office, as well as to access the Web site and employee phone numbers. Being in the Sales department might allow her to place customer orders, in addition to all other access authorities. You can associate a user ID with each node in a directory information tree using certificate name filtering. Each user ID can represent a number of users, each of whom has one or more digital certificates. Therefore, you can administer several certificates and the access authorities for several users, through a single user ID. For each node that you associate with a user ID, you create a certificate name filter that contains partial or full distinguished names, depending on where the node falls in the hierarchy.
599
Digital certificates
The RACDCERT MAP command shown in Figure 53 creates a certificate name filter based on the full issuer's distinguished name. This filter associates the user ID WEBUSER to any user presenting a certificate issued by VeriSign Class 1, who does not have an individual certificate registered with RACF on your system.
RACDCERT ID(WEBUSER) MAP WITHLABEL(INTERNET OTHERS) TRUST IDNFILTER(OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet) SETROPTS RACLIST(DIGTNMAP) REFRESH
Figure 53. Sample RACDCERT MAP command for creating an issuer's name filter
See z/OS Security Server RACF Command Language Reference for more information about the RACDCERT MAP command.
The PROTECTED attribute protects the user ID from being used to logon directly to the system and from being revoked through incorrect password and password phrase attempts. See Defining protected user IDs on page 90. The RESTRICTED attribute ensures that the user ID is not used to access protected resources it is not specifically authorized to access. See Defining restricted user IDs on page 91.
Once SETROPTS RACLIST processing is active for the DIGTNMAP class, you must refresh the DIGTNMAP class in order for new or changed certificate name filters to take effect. After creating or changing a certificate name filter, you must issue the following command:
SETROPTS RACLIST(DIGTNMAP) REFRESH
600
Digital certificates
The SEARCH FILTER and RLIST commands are not intended for use with profiles in the DIGTNMAP class and will deliver unpredictable results. These profiles can only be displayed using the RACDCERT LISTMAP command: For example:
RACDCERT ID(WEBUSER) LISTMAP
Based on the output of the RACDCERT LISTMAP command shown in Figure 54, there is one certificate name filter associated with the WEBUSER user ID.
Mapping information for user WEBUSER: Label: INTERNET OTHERS Status: TRUST Issuers Name Filter: >OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet< Subjects Name Filter: ><
Figure 54. Sample output from the LISTMAP command for an issuer's name filter
See z/OS Security Server RACF Command Language Reference for more information about the RACDCERT LISTMAP command.
601
Digital certificates
RACDCERT ID(NYSALES) MAP WITHLABEL(NY SALES REPS) TRUST SDNFILTER(OU=Sales.OU=New York.OU=US.O=World Sales Corp) RACDCERT ID(NYUSER) MAP WITHLABEL(NY OTHERS) TRUST SDNFILTER(OU=New York.OU=US.O=World Sales Corp) SETROPTS RACLIST(DIGTNMAP) REFRESH
Figure 55. Sample RACDCERT MAP commands for creating subject's name filters
The filter labeled NY SALES REPS contains the portion of the subject's distinguished name that identifies the user as an employee of the Sales department in the New York office of the US division of the World Sales Corporation. Based on this filter, RACF will associate the user ID NYSALES to any user presenting a certificate containing this significant portion of the subject's distinguished name, who does not have an individual certificate registered with RACF. The filter labeled NY OTHERS contains the portion of the subject's distinguished name that identifies the user as an employee in the New York office of the US division of the World Sales Corporation. Based on this filter, RACF will associate the user ID NYUSER to any user presenting a certificate containing this significant portion of the subject's distinguished name, who does not have an individual certificate registered with RACF. Users that present certificates that contain subject's distinguished names that match both filters will be associated with the user ID of the most specific filter. In this case, the most specific filter is the filter labeled NY SALES REPS. For example, if the users Agneta and Hiro, whose certificate information is shown in Table 34 on page 598, present certificates while these two subject's name filters are in effect, the following will result: 1. Agneta will be associated with the user ID NYSALES, based on the filter labeled NY SALES REPS. 2. Hiro will be associated with the user ID NYUSER, based on the filter labeled NY OTHERS. Note: If either Agneta or Hiro had individual certificates registered to RACF, they would have been assigned the user ID specified when the certificates were registered. Details about processing subject's name filters: Using the previous example, Hiro presents a certificate that is not registered with RACF. The following represents the sequence of processing that RACF, specifically the initACEE callable service, will complete to process a subject's name filter. 1. The sequence shown in How RACF processes certificate name filters on page 605 is followed, until the full subject's name is used to check for a matching profile in the DIGTNMAP class, to determine if there is an applicable certificate name filter. Result: No DIGTNMAP profile is found to match: CN=Hiro Ogura.OU=Admin.OU=New York.OU=US.O=World Sales Corp 2. A partial subject's name is formed by removing the most specific node (the CN node) and used to check for a matching profile in the DIGTNMAP class. Result: No DIGTNMAP profile is found to match: OU=Admin.OU=New York.OU=US.O=World Sales Corp
602
Digital certificates
3. The next partial subject's name is formed by removing the next most specific node (OU=Admin) and used to check for a matching profile in the DIGTNMAP class. Result: A DIGTNMAP profile is found to match: OU=New York.OU=US.O=World Sales Corp 4. Processing by initACEE continues using the user ID NYUSER for Hiro's certificate.
RACDCERT ID(NYADMIN) MAP WITHLABEL(NY ADMIN) TRUST SDNFILTER(OU=Admin.OU=New York.OU=US.O=World Sales Corp) IDNFILTER(OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet) SETROPTS RACLIST(DIGTNMAP) REFRESH
Figure 56. Sample RACDCERT MAP command for creating a subject's and issuer's name filter
This filter contains the portion of the subject's distinguished name that identifies the user as an employee of the Administration department in the New York office of the US division of the World Sales Corporation, and the full issuer's distinguished name that identifies the issuer as VeriSign Class 1. Based on this filter, RACF will associate the user ID NYADMIN to any user presenting a certificate issued by VeriSign Class 1 containing this significant portion of the subject's distinguished name, who does not have an individual certificate registered with RACF.
603
Digital certificates
Therefore, if the users Timo and Hiro, whose certificate information is shown in Table 34 on page 598, present certificates while all defined name filters are in effect, the following will result: 1. Hiro will be associated with the user ID NYADMIN, based on the filter labeled NY ADMIN. 2. Timo will be associated with the user ID WEBUSER, based on the filter labeled INTERNET OTHERS. Note: If either Hiro or Timo had individual certificates registered to RACF, they would have been assigned the user ID specified when the certificates were registered. Details for processing subject's and issuer's name filters: Timo presents a digital certificate that is not registered with RACF. The following represents the sequence of processing that RACF, specifically the initACEE callable service, will complete in order to process full and partial subject's names. 1. The sequence shown in How RACF processes certificate name filters on page 605 is followed, until the full subject's name and issuer's name is used to check for a matching profile in the DIGTNMAP class, to determine if there is an applicable certificate name filter. Result: No DIGTNMAP profile is found to match: CN=Timo Kokkonen.OU=Sales.OU=Los Angeles.OU=US.O=World Sales Corp | OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet 2. A partial subject's name is formed by removing the most specific node (the CN node) and used to check for a matching profile in the DIGTNMAP class. Result: No DIGTNMAP profile is found to match: OU=Sales.OU=Los Angeles.OU=US.O=World Sales Corp | OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet 3. The next partial subject's name is formed by removing the next most specific node (OU=Sales) and used to check for a matching profile in the DIGTNMAP class. Result: No DIGTNMAP profile is found to match: OU=Los Angeles.OU=US.O=World Sales Corp | OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet 4. The next partial subject's name is formed by removing the next most specific node (OU=Los Angeles) and used to check for a matching profile in the DIGTNMAP class. Result: No DIGTNMAP profile is found to match: OU=US.O=World Sales Corp | OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet 5. The last partial subject's name is formed by removing the next most specific node (OU=US) and used to check for a matching profile in the DIGTNMAP class. Result: No DIGTNMAP profile is found to match: O=World Sales Corp | OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet 6. The full issuer's name is then used to check for a matching profile in the DIGTNMAP class. Result: A DIGTNMAP profile is found to match: OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet 7. Processing by initACEE continues using the user ID WEBUSER for the Timo's certificate.
604
Digital certificates
As soon as a matching certificate name filter is found, the user ID associated with the filter is used to identify the user of the certificate. Note that searching is not done for the following values:
subjects-full-name.issuers-partial-name subjects-partial-name.issuers-partial-name
Each step of the search using a partial name might actually involve a series of searches for partial name values based on the full name. Each partial name value in the series is determined by removing the next most specific node in the name. For details on searching for a series of partial name values, see the next example using Timo's certificate.
The RACDCERT MAP commands shown in Figure 57 on page 606 can be used to create certificate name filters using Ines Soto's certificate as a model. Note that only the starting point for each filter needs to be specified to indicate where the filter name should begin.
605
Digital certificates
RACDCERT ID(WEBUSER) MAP(CERTADM.SOTO) WITHLABEL(INTERNET OTHERS) IDNFILTER(OU=) TRUST RACDCERT ID(NYUSER) MAP(CERTADM.SOTO) WITHLABEL(NY OTHERS) SDNFILTER(OU=N) TRUST RACDCERT ID(NYADMIN) MAP(CERTADM.SOTO) WITHLABEL(NY SALES REPS) SDNFILTER(OU=) IDNFILTER(OU=) TRUST SETROPTS RACLIST(DIGTNMAP) REFRESH
The RACDCERT MAP commands in Figure 58 can be used to create the same certificate name filters as those created by the RACDCERT MAP commands in Figure 57. Note that the RACDCERT commands in Figure 57 using the model certificate are shorter and might minimize typographic errors when defining long filter names.
RACDCERT ID(WEBUSER) MAP WITHLABEL(INTERNET OTHERS) TRUST IDNFILTER(OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet) RACDCERT ID(NYUSER) MAP WITHLABEL(NY OTHERS) TRUST SDNFILTER(OU=New York.OU=US.O=World Sales Corp) RACDCERT ID(NYADMIN) MAP WITHLABEL(NY ADMIN) TRUST SDNFILTER(OU=Admin.OU=New York.OU=US.O=World Sales Corp) IDNFILTER(OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet) SETROPTS RACLIST(DIGTNMAP) REFRESH
Figure 58. Sample RACDCERT MAP commands not using a model certificate
RACDCERT ID(NYADMIN) MAP WITHLABEL(NOT FRANS) NOTRUST SDNFILTER(CN=Frans De Graaff.OU=Admin.OU=New York.OU=US.O=World Sales Corp) IDNFILTER(OU=VeriSign Class 1 Individual Subscriber.O=VeriSign, Inc.L=Internet) SETROPTS RACLIST(DIGTNMAP) REFRESH
Figure 59. Sample RACDCERT MAP command using the NOTRUST option
606
Digital certificates
Certificate name filtering allows you to associate more than one user ID to a certificate using additional criteria, such as APPLID and SYSID. Other criteria, such as SSL encryption level, can be used if this information passed with the certificate by the caller of the initACEE callable service. For information about passing additional criteria to initACEE, see z/OS Security Server RACF Callable Services. You specify multiple user IDs for a filter using the RACDCERT MAP command with the MULTIID option, and creating one general resource profile in the DIGTCRIT class for each user ID you want to associate with the filter. The name of the DIGTCRIT profile consists of one or more criteria values. The user ID is specified as the APPLDATA value. When you use RACDCERT MAP with the MULTIID option, you do not specify a user ID. Instead, you use the CRITERIA option of RACDCERT MAP to specify one or more variable names that correspond to values in the DIGTCRIT profile names. Therefore, each MULTIID filter is associated with profiles in the DIGTCRIT class instead of a user ID.
Any RACLISTed criteria that you alter or delete will not reflect your changes until you refresh the DIGTCRIT class. This is because RACF uses RACLISTed profiles before profiles in the RACF database. Therefore, to make your changes effective, refresh the DIGTCRIT class. Example:
SETROPTS RACLIST(DIGTCRIT) REFRESH
607
Digital certificates
RACDCERT MULTIID MAP WITHLABEL(All Michaels Music Employees) TRUST IDNFILTER(OU=Michaels Music General Subscriber.O=VeriSign, Inc.L=Internet) CRITERIA(APPLID=&APPLID) SETROPTS RACLIST(DIGTNMAP) REFRESH RDEFINE DIGTCRIT APPLID=EROYAL APPLDATA(ROYALID) RDEFINE DIGTCRIT APPLID=EINV APPLDATA(INVID) SETROPTS RACLIST(DIGTCRIT) REFRESH
Figure 60. Sample RACDCERT MAP and RDEFINE commands for mapping multiple user IDs
You can display mapping information for a MULTIID filter using the RACDCERT LISTMAP command with the LABEL option. For example:
RACDCERT MULTIID LISTMAP(LABEL(All Michaels Music Employees))
Mapping information for MULTIID: Label: All Michaels Music Employees Status: TRUST Issuers Name Filter: >OU=Michaels Music General Subscriber.O=VeriSign, Inc.L=Internet< Subjects Name Filter: >< Criteria: APPLID=&APPLID
Figure 61. Sample output from the LISTMAP command for a MULTIID filter
For details about using the RACDCERT MAP command with the MULTIID option, RACDCERT LISTMAP, and the RDEFINE command, see z/OS Security Server RACF Command Language Reference. If a user certificate is used for additional applications and should be associated with a user ID for these applications, you can create a generic DIGTCRIT profile named APPLID=* to cover all other applications. For example, the addition of the following DIGTCRIT profile to the MULTIID filter created in Figure 60 specifies that the ALLAPPS user ID should be associated with all certificates used to access all other applications.
SETROPTS GENERIC(DIGTCRIT) RDEFINE DIGTCRIT APPLID=* APPLDATA(ALLAPPS) SETROPTS RACLIST(DIGTCRIT) REFRESH
Note: If the caller of the initACEE callable service does not specify the APPLID variable, only the APPLID=* profile in the DIGTCRIT class will be used to determine the RACF user ID.
608
Digital certificates
command for MULTIID filters. You must use the RDEFINE command to create profiles in the DIGTCRIT class to associate each SYSID value with the user ID indicated by the APPLDATA value.
The RACDCERT MAP and DIGTCRIT commands shown in Figure 62 set up an issuer's name filter that uses multiple user IDs based on SYSID and ENCRLVL. In this example, there is a certificate available for use as a model in data set JAMALDC. The certificate contains the following issuer's name.
OU=Jamals Bank General Subscriber.O=VeriSign, Inc.L=Internet
RACDCERT MULTIID MAP(JAMALDC) WITHLABEL(All Jamals Users) IDNFILTER(OU) CRITERIA(SYSID=&SYSID.ENCRLVL=&ENCRLVL) SETROPTS RACLIST(DIGTNMAP) REFRESH SETROPTS RDEFINE RDEFINE RDEFINE SETROPTS GENERIC(DIGTCRIT) DIGTCRIT SYSID=SYSB.ENCRLVL=HIGH APPLDATA(ACCTREP) DIGTCRIT SYSID=SYSB.ENCRLVL=* APPLDATA(GENERAL) DIGTCRIT SYSID=SYSA.ENCRLVL=* APPLDATA(GENERAL) RACLIST(DIGTCRIT) REFRESH
Figure 62. Sample RACDCERT MAP and RDEFINE commands using multiple criteria
The issuer's name filter created in Figure 62 associates the following user IDs: GENERAL ACCTREP For all customers, and account representatives connecting with low-strength encryption. For account representatives connecting with high-strength encryption.
Details for processing an issuer's name filter with multiple criteria: For example, if a customer accesses the Jamal's Bank system using an unregistered user
609
Digital certificates
certificate, the following represents the sequence of processing that RACF, specifically the initACEE callable service, will complete to process multiple criteria using a DIGTCRIT profile. 1. The sequence shown in How RACF processes certificate name filters on page 605 is followed, until the full issuer's name is used to check for a matching profile in the DIGTNMAP class, to determine if there is an applicable certificate name filter. Result: A DIGTNMAP profile is found to match:
OU=Jamals Bank General Subscriber.O=VeriSign, Inc.L=Internet
2. The criteria definitions, SYSID=&SYSID.ENCRLVL=&ENCRLVL are found in the DIGTNMAP profile, and the supplied values are substituted for each variable: SYSID=SYSA and ENCRLVL=LOW. Result: A DIGTCRIT profile is found to match:
SYSID=SYSA.ENCRLVL=*
3. Processing by initACEE continues using the user ID GENERAL for the customer's certificate. Note: In this example, if the application calling the initACEE callable service does not pass the ENCRLVL variable, only the SYSID= value is used to determine the user ID. Therefore, the DIGTCRIT profile named SYSID=SYSA.ENCRLVL=* is found to match, and the user ID GENERAL is still used for the customer's certificate.
Once SETROPTS RACLIST processing is active for the DIGTCRIT class, you must refresh the DIGTCRIT class in order for new or changed profiles to take effect. After creating or changing a DIGTCRIT class profile, you must issue the following command:
SETROPTS RACLIST(DIGTCRIT) REFRESH
610
Digital certificates
See Registering user certificates on page 631 for details about using the registration function of the initACEE callable service.
611
Digital certificates
SECURE.KEY and is generated by the PCI cryptographic coprocessor. On the target system, the label of the migrated certificate will be MIGRATED.KEY and the label of its PKDS key will also be MIGRATED.KEY. For details about using the RACDCERT command, see z/OS Security Server RACF Command Language Reference.
Perform the following steps to generate a RACF certificate and its ICSF public/private key pair on system A (the source system), and migrate them to system B (the target system).
1.
|
______________________________________________________________________
2.
Extract the certificate from RACF and store it in an MVS data set called MY.CERT. (The ICSF private key is not extracted in this step.)
RACDCERT ID(SYSMAN) EXPORT(LABEL(SECURE.KEY)) DSN(MY.CERT) FORMAT(CERTDER)
______________________________________________________________________
3. 4. 5. 6.
Extract the encrypted private key from ICSF using a non-RACF utility, such as KEYXFER. ______________________________________________________________________ Transmit both the key and certificate data sets to system B. This step completes your work on system A. ______________________________________________________________________ Receive both the key and certificate data sets on system B. ______________________________________________________________________ Add the encrypted private key to ICSF using a non-RACF utility, such as KEYXFER, specifying the desired PKDS label for the key on system B, MIGRATED.KEY. ______________________________________________________________________
612
Digital certificates
7.
|
Add the certificate to RACF using the same RACF and PKDS label you used in Step 6, MIGRATED.KEY.
RACDCERT ID(SYSMAN) ADD(MY.CERT) WITHLABEL(MIGRATED.KEY) PKDS(*)
______________________________________________________________________
8.
List the migrated certificate to verify that RACF found the private key and assigned the private key to the certificate.
RACDCERT ID(SYSMAN) LIST(LABEL(MIGRATED.KEY))
Result: You should see similar information at the end of the certificate listing: | | | | | |
Key Type: RSA Key Size: 2048 Private Key: YES PKDS Label: MIGRATED.KEY Ring Associations: *** No rings associated ***
______________________________________________________________________ You have now generated a certificate and its ICSF public/private key pair on system A and migrated them to system B. Both system A and system B can now use the same certificate and key pair.
613
Digital certificates
The following procedures are shown as examples of common scenarios in which you will handle various types of expiring certificates by either renewing private keys or by replacing private keys.
1.
Optionally, create a certificate request based on the expiring certificate and store it in an MVS data set SYSADM.CERT.REQ by executing the following command:
RACDCERT ID(WEBSRV) GENREQ(LABEL(My Web Server Cert)) DSN(SYSADM.CERT.REQ)
If your CA retains your original certificate signing requests (CSR), you might not need to create and store a new request based on the expiring certificate. You might be able to request a renewal using the original CSR. ______________________________________________________________________
2.
Send the certificate request to the CA and receive the newly signed and reissued certificate back from the CA into MVS data set SYSADM.CERT.B64. Restriction: The certificate request data contained in the data set must be sent to, and received from, the external CA using the process defined by the CA. Those steps are not included. ______________________________________________________________________
3.
Add the newly signed certificate into RACF and replace the existing certificate by executing the following command:
RACDCERT ID(WEBSRV) ADD(SYSADM.CERT.B64)
______________________________________________________________________ You have now renewed a certificate that was issued by an external certificate authority using the same private key. All information in the certificate is updated to reflect the renewal, including the key ring connection information.
1.
Create a certificate request based on the expiring certificate and store it in an MVS data set SYSADM.CERT.REQ by executing the following command:
RACDCERT ID(WEBSRV) GENREQ(LABEL(My Web Server Cert)) DSN(SYSADM.CERT.REQ)
______________________________________________________________________
2.
614
Renew and replace the existing certificate by executing the following command:
Digital certificates
RACDCERT ID(WEBSRV) GENCERT(SYSADM.CERT.REQ) SIGNWITH(CERTAUTH LABEL(Local RACF CA))
______________________________________________________________________ You have now renewed a certificate that was signed by a local certificate authority and you renewed it using the same private key. All information in the certificate is updated to reflect the renewal, including the key ring connection information.
1.
Create a certificate request based on the expiring certificate and store it in an MVS data set YELENA.CERT.REQ by executing the following command:
RACDCERT ID(YELENA) GENREQ(LABEL(Yelenas Cert)) DSN(YELENA.CERT.REQ)
______________________________________________________________________
2.
Execute the following command to renew and replace the expiring self-signed certificate:
RACDCERT ID(YELENA) GENCERT(YELENA.CERT.REQ) SIGNWITH(LABEL(Yelenas Cert))
______________________________________________________________________ You have now renewed an expiring self-signed certificate using the same private key. All information in the certificate is updated to reflect the renewal, including the key ring connection information.
615
Digital certificates
In the following procedures, the expiring certificate was either issued by an external certificate authority, issued by a local certificate authority, or was self-signed within RACF. In each case, you will replace the private key with a new one.
1.
|
______________________________________________________________________
2.
Create a request for an external CA to sign the new public key and reissue the certificate. Create the request for the new key and store it in MVS data set SYSADM.CERT.REQ by executing the following command:
RACDCERT CERTAUTH GENREQ(LABEL(Local PKI CA-2)) DSN(SYSADM.CERT.REQ)
______________________________________________________________________
3.
Send the certificate request to the CA and receive the newly signed and reissued certificate back from the CA into MVS data set SYSADM.CERT.B64. Restriction: The certificate request data contained in the data set must be sent to, and received from, the external CA using the process defined by the CA. Those steps are not included. ______________________________________________________________________
4.
Add the newly signed certificate into RACF and replace the self-signed rekeyed certificate by executing the following command:
RACDCERT CERTAUTH ADD(SYSADM.CERT.B64)
______________________________________________________________________
5.
You are now ready to retire the original certificate and must stop all use of the original private key. If you are rekeying the PKI Services CA certificate, stop the PKI Services daemon. At this point, the original certificate and its private key exist in RACF with label Local PKI CA. The new certificate and its private key exist in a separate entry in RACF with label Local PKI CA-2. You can proceed to rollover the key. ______________________________________________________________________ Finalize the rollover by entering the following command:
RACDCERT CERTAUTH ROLLOVER(LABEL(Local PKI CA)) NEWLABEL(Local PKI CA-2)
6.
______________________________________________________________________
7.
If you rekeyed the PKI Services CA certificate for the PKI templates, restart the PKI Services daemon. ______________________________________________________________________
616
Digital certificates
You have now rekeyed a certificate that was issued by an external certificate authority, using a new private key. All information in the certificate is updated to reflect the renewal, including the key ring connection information. You have retired and replaced the old certificate. You can now begin to use the new certificate and its private key. You can continue to use the old certificate for signature verification purposes until it expires. However, you cannot use the old certificate to sign new certificates. Additionally, do not connect the old certificate to any key rings, as the default certificate.
1.
______________________________________________________________________
2.
Create a certificate request based on the new self-signed certificate and store it in an MVS data set SYSADM.CERT.REQ by executing the following command:
RACDCERT ID(FTPSRV) GENREQ(LABEL(My FTP Server Cert-2)) DSN(SYSADM.CERT.REQ)
______________________________________________________________________
3.
______________________________________________________________________
4.
You are now ready to retire the original certificate and must stop all use of the original private key. At this point, the original certificate and its private key exist in RACF with label My FTP Server Cert. The new certificate and its private key exist in a separate entry in RACF with label My FTP Server Cert-2. You can now proceed to rollover the key. ______________________________________________________________________
5.
______________________________________________________________________ You have now renewed a certificate that was signed by a local certificate authority and you renewed it using a new private key. All information in the certificate is updated to reflect the renewal, including the key ring connection information. You have retired and replaced the old certificate. You can now begin to use the new certificate and its private key. You can continue to use the old certificate for signature verification purposes until it expires. However, you cannot use the old certificate to sign new certificates. Additionally, do not connect the old certificate to any key rings, as the default certificate.
617
Digital certificates
1.
______________________________________________________________________
2.
You are now ready to retire the original certificate and must stop all use of the original private key. At this point, the original certificate and its private key exist in RACF with label My FTP Server Cert. The new certificate and its private key exist in a separate entry in RACF with label My FTP Server Cert-2. You can now proceed to rollover the key. Finalize the rollover by entering the following command:
RACDCERT ID(FTPSRV) ROLLOVER(LABEL(My FTP Server Cert)) NEWLABEL(My FTP Server Cert-2)
3.
______________________________________________________________________ You have now renewed an expiring self-signed certificate using a new private key. All information in the certificate is updated to reflect the renewal, including the key ring connection information. You have retired and replaced the old certificate. You can now begin to use the new certificate and its private key. You can continue to use the old certificate for signature verification purposes until it expires. However, you cannot use the old certificate to sign new certificates. Additionally, do not connect the old certificate to any key rings, as the default certificate.
618
Digital certificates
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. VeriSign Class 1 Public Primary Certification Authority - Generation 3 (G3) VeriSign Class 2 Public Primary Certification Authority - G3 VeriSign Class 3 Public Primary Certification Authority - G3 VeriSign Class 3 Public Primary Certification Authority - G4 VeriSign Class 3 Public Primary Certification Authority - G5 VeriSign Class 4 Public Primary Certification Authority - G3 VeriSign Universal Root Certification Authority Thawte Server Certification Authority Thawte Premium Server Certification Authority Thawte Personal Basic Certification Authority Thawte Personal Freemail Certification Authority Thawte Personal Premium Certification Authority Integrion Certification Authority Root Entrust Secure Server Root Certificate Authority Equifax Secure Certificate Authority ICP-Brasil Certificate Authority ICP-Brasil Certificate Authority - Version 1 STG Code-Signing Certificate Authority
| | |
1.
Determine which of the supplied certificates you want to use. You can issue the following command to view the current certificate information listing for all certificate-authority certificates on your system, or see Appendix C, Listings of RACF supplied certificates, on page 735 for a listing of each supplied certificate. Example:
RACDCERT CERTAUTH LIST
______________________________________________________________________
2.
______________________________________________________________________
3.
Add a key ring for your server application, such as your Web server. Example:
RACDCERT ADDRING(SSLring) ID(WEBSRV)
______________________________________________________________________
4.
619
Digital certificates
Repeat this step for each certificate you want your server to accept. ______________________________________________________________________
5.
Unless already done, generate or acquire a certificate and private key for your server. Certificates can be generated using a product such as z/OS Security Server PKI Services, or by RACF using the RACDCERT GENCERT command. ______________________________________________________________________
Implementation scenarios Scenario 1: Secure Server with a Certificate Signed by a Certificate Authority
Secure servers require the ability to retrieve the certificate that is associated with a particular server, along with the ability to perform operations with the private key of the server, such as establishing an SSL session. Assume that we have a secure server which has the distinguished name of OU=Inventory,O=XYZZY,C=US and a domain name of xyzzy.com. This server executes on z/OS with the user ID INVSERV. The steps to implement a server certificate are: 1. Generate a self-signed certificate for the server. This certificate is associated with the user ID that is associated with the secure server.
RACDCERT ID(INVSERV) GENCERT SUBJECTSDN(CN(xyzzy.com) OU(Inventory) O(XYZZY) C(US)) WITHLABEL(Inventory Server)
Note: Some SSL applications require that the common name (CN) be equal to the domain name. 2. Create a certificate request to send to our chosen certificate authority. The certificate request that we are creating is based on the certificate that we created in the previous step. Place this certificate into the data set MARKN.INVSERV.GENREQ.
RACDCERT ID(INVSERV) GENREQ(LABEL(Inventory Server)) DSN(MARKN.INVSERV.GENREQ)
3. Send the certificate request to the certificate authority. The certificate request is in base64-encoded text. Typically, the request is sent to the certificate authority by using "cut and paste" to place the certificate request into an e-mail that is sent to the certificate authority. Note: RACF is not involved with this step. 4. The certificate authority validates the certificate. If the certificate is approved by the certificate authority, it is signed by the certificate authority, and returned to the requestor. Note: RACF is not involved with this step. 5. Receive the returned certificate into a data set (for example,MARKN.INVSERV.CERT). The returned certificate is in base64-encoded text. This can be done with "cut and paste", FTP, or other technique. Note: RACF is not involved with this step.
620
Digital certificates
6. Replace the self-signed certificate with the certificate signed by the certificate authority. Note that the certificate is only replaced if the user ID that is specified as the ID value on the RACDCERT ADD command is the same user ID that was specified when the certificate was created. If the ID is not the same, then the certificate is added anew.
RACDCERT ID(INVSERV) ADD(MARKN.INVSERV.CERT) WITHLABEL(Inventory Server)
7. Connect the certificate to INVSERV's existing key ring and mark it as the default certificate.
RACDCERT ID(INVSERV) CONNECT(LABEL(Inventory Server) RING(RING01) DEFAULT)
8. Assuming the chosen certificate authority certificate has already been added to RACF under CERTAUTH with the label of External Inventory CA, connect it to the key ring as well. This completes the certificate hierarchy from root to inventory server.
RACDCERT ID(INVSERV) CONNECT(CERTAUTH LABEL(External Inventory CA) RING(RING01))
10. Configure INVSERV's software to use RING01 for SSL. For example, for z/OS HTTP Server, set the keyFile directive to KeyFile RING01 SAF. Note: RACF is not involved with this step.
Note: RACF is not involved with this step. 4. Configure WebSphere Application Server to recognize the file /u/loccerta/certauth.cacert as a certificate-authority MIME type.
Chapter 18. RACF and digital certificates
621
Digital certificates
Note: RACF is not involved with this step. 5. Each end user must point their browser to the z/OS UNIX file containing the certificate and run an acceptance dialog to allow the browser to accept the self-signed certificate. Each browser has its own mechanism for performing this step. Note: RACF is not involved with this step. 6. Logon to the server user ID INVSERV and create a certificate for the server, signed with the certificate-authority certificate that was created in Step 1 on page 621.
RACDCERT ID(INVSERV) GENCERT SUBJECTSDN(CN(xyzzy.com) OU(Inventory) O(XYZZY) C(US)) WITHLABEL(Inventory Server) SIGNWITH(CERTAUTH LABEL(XYZZY Local Certificate Authority))
7. Connect the certificate to INVSERV's existing key ring and mark it as the default certificate.
RACDCERT ID(INVSERV) CONNECT(LABEL(Inventory Server) RING(RING01) DEFAULT)
8. Connect the local certificate authority certificate to the key ring as well. This completes the certificate hierarchy from root to inventory server.
RACDCERT ID(INVSERV) CONNECT(CERTAUTH LABEL(XYZZY Local Certificate Authority) RING(RING01))
10. Configure INVSERV's software to use RING01 for SSL. For example, for z/OS HTTP Server, set the keyFile directive to KeyFile RING01 SAF. Note: RACF is not involved with this step.
3. Add the certificate to the RACF database and assign it a user. Assume that ikeyman or gskkyman encrypted the certificate with the password xyz.
622
Digital certificates
RACDCERT ID(MARKN) ADD(MARKN.IMPORTED.CERT) WITHLABEL(Marks Personal Certificate) TRUST PASSWORD(xyz)
Now you can use the certificate on z/OS as desired. Important: Delete the ikeyman or gskkyman copy of the certificate so that the private key cannot be used inadvertently.
Authority required: CLAUTH for the USER class and JOIN in the default group to which they are connected. 2. Create the internal certificate authority.
RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN(ACME CA) O(ACME) C(US)) WITHLABEL(ACME)
Authority required: CONTROL to the IRR.DIGTCERT.GENCERT and IRR.DIGTCERT.ADD resources in the FACILITY class. 3. Add the external certificate authority certificate.
RACDCERT CERTAUTH ADD(REALBIG.CERTIF) TRUST WITHLABEL(Really Big)
Authority required: CONTROL to the IRR.DIGTCERT.ADD resource in the FACILITY class. 4. Generate the server certificates and the associated private keys. On platforms other than z/OS, this is performed using a facility such as mkkf, ikeyman, or equivalent. On z/OS, this is performed using the RACDCERT GENCERT command. To generate the certificates for the two servers, these two RACDCERT commands are required:
RACDCERT ID(INSS) GENCERT SUBJECTSDN(CN(Internal Secure Server) C(US)) WITHLABEL(INSS-001) SIGNWITH(CERTAUTH LABEL(ACME))
623
Digital certificates
RACDCERT ID(EXSS) GENCERT SUBJECTSDN(CN(External Secure Server) C(US)) WITHLABEL(EXSS-001)
The internal server certificate was signed by the internal certificate authority. However, the external server certificate must be signed by the "Really Big" external certificate authority. To do that, follow Steps 26 in Scenario 1 replacing the ID and LABEL values specified with ID(EXSS) and LABEL(EXSS-001). Authority required: UPDATE to the resources IRR.DIGTCERT.ADD and IRR.DIGTCERT.GENREQ in the FACILITY class, along with CONTROL to the resource IRR.DIGTCERT.GENCERT in the FACILITY class. 5. Create key rings for the secure servers.
RACDCERT ID(EXSS) ADDRING(RING01) RACDCERT ID(INSS) ADDRING(RING01)
Authority required: UPDATE to the resource IRR.DIGTCERT.ADDRING in the FACILITY class. 6. Connect the certificates to INSS's key ring.
RACDCERT ID(INSS) CONNECT(ID(INSS) LABEL(INSS-001) RING(RING01) DEFAULT) RACDCERT ID(INSS) CONNECT(CERTAUTH LABEL(ACME) RING(RING01))
Authority required: CONTROL to the resource IRR.DIGTCERT.CONNECT in the FACILITY class. 7. Connect the certificates to EXSS's key ring.
RACDCERT ID(EXSS) CONNECT(ID(EXSS) LABEL(EXSS-001) RING(RING01) DEFAULT) RACDCERT ID(EXSS) CONNECT(CERTAUTH LABEL(ACME) RING(RING01)) RACDCERT ID(EXSS) CONNECT(CERTAUTH LABEL(Really Big) RING(RING01))
Authority required: CONTROL to the resource IRR.DIGTCERT.CONNECT in the FACILITY class. 8. Give user INSS permission to read its own key ring.
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(INSS) ACCESS(READ)
9. Configure INSS's software to use RING01 for SSL. For example, for z/OS HTTP Server, set the keyFile directive to KeyFile RING01 SAF. Note: RACF is not involved with this step. 10. Give user EXSS permission to read its own key ring.
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(EXSS) ACCESS(READ)
11. Configure EXSS's software to use RING01 for SSL. For example, for z/OS HTTP Server, set the keyFile directive to KeyFile RING01 SAF. Note: RACF is not involved with this step.
624
Digital certificates
2. User MARKN can obtain a local browser certificate for himself using the following command:
RACDCERT ID(MARKN) GENCERT SUBJECTSDN(CN(Mark Napolitano) OU(Local Certificate Authority) O(XYZZY) C(US)) WITHLABEL(My Browser Cert) KEYUSAGE(HANDSHAKE) SIGNWITH(CERTAUTH LABEL(XYZZY Local Certificate Authority))
3. Export the certificate and private key to an MVS data set in PKCS #12 binary form where the password is The circus is coming:
RACDCERT ID(MARKN) EXPORT LABEL(My Browser Cert) DSN(MARKN.BROWSERC.P12BIN) PASSWORD(The circus is coming) FORMAT(PKCS12DER)
4. Use FTP to send the exported certificate data set in binary format to the target workstation. Use the appropriate browser-specific procedure to import the PKCS #12 package. Note: RACF is not involved with this step. 5. Optionally, the certificate labeled My Browser Cert can be deleted from the RACF database if an appropriate certificate name filter is available to provide a user ID association, and the specific association between this certificate and the user ID MARKN is not required.
2. Create a key ring to hold the three certificate authority certificates. (This key ring represents the FTP trust policy for this company.) The key ring must be associated with a single user ID even though it will be shared by multiple users. Therefore, the key ring in this scenario is associated with the local FTP server daemon user ID, FTPD:
RACDCERT ID(FTPD) ADDRING(RING01)
3. Connect the three certificate authority (CA) certificates to the FTP server's key ring. Because this key ring will contain only CA certificates, it will not have a default certificate. Therefore, the DEFAULT keyword is not specified.
RACDCERT ID(FTPD) CONNECT(CERTAUTH LABEL(CA For FTP Server 1) RING(RING01)) RACDCERT ID(FTPD) CONNECT(CERTAUTH LABEL(CA For FTP Server 2) RING(RING01)) RACDCERT ID(FTPD) CONNECT(CERTAUTH LABEL(CA For FTP Server 3) RING(RING01))
Chapter 18. RACF and digital certificates
625
Digital certificates
4. Authorize access to the shared key ring for the ring owner (FTPD) and for the z/OS users (USER01 and USER02) who need to invoke FTP:
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(FTPD) ACCESS(READ) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(USER01,USER02) ACCESS(UPDATE)
5. Configure the FTP client to use the shared key ring by specifying its fully qualified name for the KEYRING directive:
KEYRING FTPD/RING01
2. Create a certificate request to send to your chosen certificate authority. The certificate request that we are creating is based on the certificate that we created in the previous step. Place this certificate into the data set MARKN.SHRSERV.GENREQ.
RACDCERT GENREQ(LABEL(Shared Server)) SITE DSN(MARKN.SHRSERV.GENREQ)
3. Send the certificate request to the CA and receive the returned certificate from the CA into data set MARKN.SHRSERV.CERT. Restriction: The certificate request data contained in the data set must be sent to, and received from, the external CA using the process defined by the CA. Those steps are not included. 4. Replace the self-signed certificate with the certificate signed by the certificate authority. The example command uses the SITE keyword because the self-signed placeholder certificate was created under SITE and will only be replaced if the SITE keyword is specified on the RACDCERT ADD command. If SITE is not specified, then the certificate is added as a new certificate.
RACDCERT SITE ADD(MARKN.SHRSERV.CERT) WITHLABEL(Shared Server)
5. Create a key ring to be shared between the two user IDs. (The key ring must be associated with a single user ID even though it will be shared by the two servers. Therefore, associate the key ring with the user ID of one of the two servers.) Then, connect the shared certificate to INVSERV's key ring and mark it as the default certificate.
RACDCERT ID(INVSERV) ADDRING(RING01) RACDCERT ID(INVSERV) CONNECT(SITE LABEL(Shared Server) RING(RING01) USAGE(PERSONAL) DEFAULT))
6. Protect the shared key ring and permit the user IDs of each server access to read it. (Because the key ring is associated with INVSERV, the user ID for the inventory server needs only READ access.)
626
Digital certificates
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(INVSERV) ACCESS(READ) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(FTPD) ACCESS(UPDATE)
7. Protect the private key and permit the user IDs of each server to access it. They both need CONTROL access.
RDEFINE FACILITY IRR.DIGTCERT.GENCERT UACC(NONE) PERMIT IRR.DIGTCERT.GENCERT CLASS(FACILITY) ID(INVSERV,FTPD) ACCESS(CONTROL)
8. Configure each server to use the shared key ring. Because the key ring is associated with INVSERV, the KEYRING directive need not be fully qualified for when you configure the INVSERV server. For the FTP server, specify the fully qualified name. Server user ID INVSERV FTP Key ring directive KEYRING RING01 KEYRING INVSERV/RING01
2. She lists the certificate to see the PKDS label generated by RACF. Here is her RACDCERT LIST command and her output:
RACDCERT LIST(LABEL(Wen Tings certificate)) Digital certificate information for user WENTING: Label: Wen Tings certificate Certificate ID: 2QfHxdbZx8XUaqweQMOFmaNA46iXhUBgQOKFmUB7QPDw Status: TRUST Start Date: 2005/08/11 00:00:00 End Date: 2020/08/10 23:59:59 Serial Number: >00< Issuers Name: >CN=Wen Tings certificate< Subjects Name: >CN=Wen Tings certificate< Key Type: RSA Key Size: 2048 Private Key: YES PKDS Label: IRR.DIGTCERT.WENTING.SY1.BD7103108611F42F Ring Associations: *** No rings associated ***
| | |
3. Wen Ting needs to send her new certificate to Yun so that he can send her his encrypted data. Before doing this, she exports the certificate using this RACDCERT EXPORT command:
RACDCERT EXPORT(LABEL(Wen Tings certificate)) DSN(FOR.YUN.CRT)
627
Digital certificates
4. She sends the exported certificate to Yun using e-mail or FTP. (RACF is not involved with this step.) The exported certificate does not contain the private key so the data set she transmits need not be protected in any way. 5. When Yun receives the file, he adds it to his company's RACF data base as a site certificate using the RACDCERT ADD command and calls it WenTing. To use the IBM Encryption Facility, he also needs the public key for this certificate stored in the ICSF PKDS. Yun chooses to add the certificate from Wen Ting as a site certificate on his system (using the SITE operand). The SITE designation is most appropriate for this certificate because it will not be used as a CA certificate (so CERTAUTH is not correct) and because Wen Ting is not a user on his system (so USER is not required). Here is Yun's RACDCERT ADD command:
RACDCERT SITE ADD(WENTING.CRT) WITHLABEL(WenTing) ICSF(*)
6. Yun lists the new certificate to see the PKDS label. Here is his RACDCERT LIST command and his output:
RACDCERT SITE LIST(LABEL(WenTing)) Digital certificate information for SITE: Label: WenTing Certificate ID: egljcv8XUaqweQMOFmaNA46iXhUBgQOKFmUB7QPDw Status: TRUST Start Date: 2005/08/11 00:00:00 End Date: 2020/08/10 23:59:59 Serial Number: >00< Issuers Name: >CN=Wen Tings certificate< Subjects Name: >CN=Wen Tings certificate< Key Type: RSA Key Size: 2048 Private Key: No PKDS Label: WENTING
| | |
Compare Wen Ting and Yun's output listings. They now share the same certificate and can begin exchanging encrypted information.
628
This topic provides information about using RACF to authorize applications that invoke certain SAF callable services. It also provides additional usage information specific to the RACF implementation of SAF callable services. SAF callable services are supported by RACF and might be supported by other security products. See z/OS Security Server RACF Callable Services for detailed information about invoking these services.
Authorizing applications
In general, applications that run in system key or in supervisor state do not require RACF authorization to use callable services. Applications that do not run in system key or in supervisor state require RACF authorization. Certain callable services, such as R_admin (IRRSEQ00) for envelope retrieval functions, are exceptions. Before you can use RACF to authorize applications that do not run in system key or supervisor state, you must define RACF user IDs for them. Then, permit at least READ access to the appropriate general resource, usually in the FACILITY class, as described in following topics for each callable service.
629
Callable services
If your installation maintains profiles for the general resource class in storage using SETROPTS RACLIST processing, you must issue the following command to refresh the class after you define or alter any profiles in the class. Example:
SETROPTS RACLIST(FACILITY) REFRESH
In general, if the resource class is not active or the appropriate resource is not defined when an application invokes the callable service, only applications running in system key or supervisor state can use the callable service.
630
Callable services
631
Callable services
If the caller has CONTROL authority to the IRR.DIGTCERT.ADD resource but the previously registered certificate-authority certificate is not eligible for replacement, it will not be replaced. The input certificate will be added as a user certificate and will be associated with the user ID of the caller. See Registering user certificates on page 631.
Note: You should assign protected user IDs for servers using the NOPASSWORD option. See Assigning RACF User IDs to Started Procedures on page 154. Define resources in the SERVAUTH class using the following format:
IRR.HOST.host-name
Permit servers to access this resource with at least READ authority. This will allow them to accept logins for the host name specified in the resource name. For example, to allow the servers in the WEBSRVGP to accept logins for the host system called MVSDSN1, execute the following commands:
RDEFINE SERVAUTH IRR.HOST.MVSDSN1 UACC(NONE) PERMIT IRR.HOST.MVSDSN1 CLASS(SERVAUTH) ID(WEBSRVGP) ACCESS(READ) SETROPTS CLASSACT(SERVAUTH)
632
Callable services
In this example, if a server running under the authority of user ID WEBSRV1 presents a client certificate issued by a certificate authority with HIGHTRUST status and the certificate contains a hostIdMappings extension that includes a user ID mapping for host name MVSDSN1, a security context (ACEE) will be created for the user ID mapped to MVSDSN1, as indicated in the hostIdMappings extension.
See z/OS Security Server RACF Command Language Reference for details about syntax and authorization required for using the RACDCERT command.
633
Callable services
User certificates
An application can increment the "last serial number issued" (CERTLSER) for a user certificate if the following conditions are met: 1. The caller's user ID is the user ID associated with the certificate. 2. The caller's user ID has at least READ authority to the resource IRR.DIGTCERT.GENCERT in the FACILITY class.
634
Callable services
For detailed information about invoking the R_dcekey callable service, see z/OS Security Server RACF Callable Services. For callers not running in system key or supervisor state, all of the following conditions must be met: v The caller must be running in a clean environment. (For more information, see Maintaining a clean environment in BASIC or ENHANCED mode on page 327.) v The caller's user ID or group must be authorized for at least READ authority to either one of the following FACILITY class profiles: BPX.SERVER IRR.RDCEKEY When authorizing applications using the BPX.SERVER resource, the caller is defined as the user ID associated with the ACEE of the address space. When authorizing applications using the IRR.RDCEKEY resource, the caller is defined as the user ID associated with the ACEE of the current TCB or, if no ACEE is associated with the current TCB, then the ACEE associated with the address space is used to locate the user ID.
635
Callable services
requests. You authorize these applications by administering RACF resources in the FACILITY class, based on whether the application requests end-user functions or administrative functions. See z/OS Security Server RACF Callable Services for the details of invoking IRRSPX00.
For end-user functions, FACILITY class resources protect this interface. Access authority is based on the user ID for the application (the user ID from the ACEE associated with the address space). To determine the user ID for the application, the current TCB is checked for an ACEE. If one is found, the authority of that user is checked. If there is no ACEE associated with the current TCB, the ACEE associated with the address space is used to locate the user ID. The form for the FACILITY class resources is:
IRR.RPKISERV.function[.ca_domain]
function Specifies one of the end-user function names in the preceding list. ca_domain Optionally specifies the PKI Services certificate authority (CA) domain name. Use this when your installation has established multiple PKI Services CAs and the CA_domain parameter is provided with IRRSPX00. Restriction: If the name of your initial CA domain is longer than 8 characters, you must truncate it to exactly 8 characters when you define the resource name in the FACILITY class. Example: For the GENCERT function, when the ca_domain is named Customers and the CA_domain parameter is provided with IRRSPX00, then the FACILITY class
636
Callable services
resource controlling the function is IRR.RPKISERV.GENCERT.CUSTOMER. (The name Customers was truncated to CUSTOMER. See the restriction for the ca_domain parameter.) When the CA_domain parameter is not provided with IRRSPX00, the FACILITY class resource is IRR.RPKISERV.GENCERT. The access authorities you can assign for these FACILITY class resources have the following effects: NONE READ UPDATE Access is denied. Access is permitted based on subsequent access checks against the caller's user ID. Access is permitted based on subsequent access checks against the application's user ID.
CONTROL (or user ID has RACF SPECIAL) Access is permitted, and no subsequent access checks are made. Example: If you defined the FACILITY class profile IRR.RPKISERV.GENCERT.CUSTOMER to control access to the GENCERT function on the CA domain named Customers, you can prevent the user ID MYAPP from using the GENCERT function on that CA domain by issuing the command:
PERMIT IRR.RPKISERV.GENCERT.CUSTOMER CLASS(FACILITY) ID(MYAPP) ACCESS(NONE)
For SAF GENCERT and EXPORT requests where the application has READ and UPDATE access, subsequent access checks are performed against the IRR.DIGTCERT.function FACILITY resources. These are identical to the checks the RACDCERT TSO command makes. See z/OS Security Server RACF Command Language Reference for more information. For PKI Services EXPORT, GENCERT, GENRENEW, QRECOVER, REQCERT, REQRENEW, RESPOND, REVOKE, SCEPREQ, and VERIFY requests in which the application has READ and UPDATE access, subsequent access checks are performed against the IRR.DIGTCERT.function FACILITY resources. The following table summarizes the access requirements for the user ID whose access is checked.
Table 35. Summary of access authorities required for PKI Services requests Request EXPORT Access v IRR.DIGTCERT.EXPORT READ access if PassPhrase is specified or if CertID is specified as PKICACERT. UPDATE access if the PassPhrase parameter is not specified with IRRSPX00. CONTROL access if you want to export a PKCS #7 certificate. GENCERT v IRR.DIGTCERT.GENCERT CONTROL access v IRR.DIGTCERT.ADD UPDATE access if any hostIdMappings information is specified in the certificate request parameter list or the UserId field in the certificate request parameter list indicates the certificate is being requested for another user other than the caller READ access otherwise
637
Callable services
Table 35. Summary of access authorities required for PKI Services requests (continued) Request GENRENEW Access v IRR.DIGTCERT.GENRENEW READ access v IRR.DIGTCERT.GENCERT CONTROL access Note: It is assumed that the calling application has already verified the input certificate using the VERIFY function. QRECOVER REQCERT REQRENEW v IRR.DIGTCERT.QRECOVER READ access v IRR.DIGTCERT.REQCERT READ access v IRR.DIGTCERT.REQRENEW READ access Note: It is assumed that the calling application has already verified the input certificate using the VERIFY function. RESPOND REVOKE v IRR.DIGTCERT.RESPOND READ access v IRR.DIGTCERT.REVOKE READ access Note: It is assumed that the calling application has already verified the target certificate using the VERIFY function. SCEPREQ VERIFY v IRR.DIGTCERT.SCEPREQ READ access v IRR.DIGTCERT.VERIFY READ access Note: It is assumed that the calling application has already verified that the end user possesses the private key that correlates to the input certificate.
For the all administrative functions, the following single FACILITY class resource protects this interface.
IRR.RPKISERV.PKIADMIN[.ca_domain]
ca_domain Optionally specifies the PKI Services certificate authority (CA) domain name. Use this when your installation has established multiple PKI Services CAs and the CA_domain parameter is provided with IRRSPX00.
638
Callable services
Restriction: If the name of your initial CA domain is longer than 8 characters, you must truncate it to exactly 8 characters when you define the resource name in the FACILITY class. v If the caller is RACF SPECIAL, no further access is necessary. v Otherwise, the caller needs: READ access to perform read operations (QUERYREQS, QUERYCERTS, REQDETAILS, and CERTDETAILS) UPDATE access for the action operations (PREREGISTER, MODIFYREQS and MODIFYCERTS). Example: For administrative functions, when the ca_domain is named Customers and the CA_domain parameter is provided with IRRSPX00, the FACILITY class resource controlling this interface is IRR.RPKISERV.PKIADMIN.CUSTOMER. (The name Customers was truncated to CUSTOMER. See the restriction for the ca_domain value.) When the CA_domain parameter is not provided with IRRSPX00, IRR.RPKISERV.PKIADMIN is the name of the FACILITY class resource. To determine the appropriate access level of the caller, the current TCB is checked for an ACEE. If one is found, the authority of that user is checked. If there is no ACEE associated with the current TCB, the ACEE associated with the address space is used to locate the user ID. Attention: UPDATE access to the IRR.RPKISERV.PKIADMIN[.ca_domain] resource also controls who can act as PKI Services administrators. PKI Services administrators play a very powerful role in your organization. The decisions they make when managing certificates and certificate requests determine who will access your computer systems and what privileges they will have when doing so. Guideline: Give UPDATE authority to only highly trusted individuals, but avoid allowing these same individuals to have direct access to the end-user functions of the R_PKIServ callable service described in Authorizing end-user functions on page 636. This helps to maintain a secure separation of duties.
639
Callable services
640
This topic provides information on using RACF with the z/OS LDAP server. It covers two topics: v Defining proxy information about the z/OS LDAP server so that other products can communicate with an LDAP directory. (Using a PROXY segment in the LDAPBIND profile is required for this communication.) v Setting up LDAP event notification for changes to RACF users, groups, and general resources. (Using a PROXY segment in the LDAPBIND profile is not required for LDAP event notification.)
You can list the PROXY segment with the RLIST command. Note that the bind password is not displayed and only an indication of whether or not it is present (YES or NO).
RLIST LDAPBIND CLASS -------LDAPBIND MY.LDAP.SERVER PROXY NORACF NAME -----MY.LDAP.SERVER1
641
LDAP
To get PKI Services to use the above information, you must update the PKI Services configuration to specify the LDAPBIND class profile. Example:
[LDAP] NumServers=1 BindProfile1=MY.LDAP.SERVER1
Optionally, default LDAP binding information can be defined in the PROXY segment of the IRR.PROXY.DEFAULTS profile in the FACILITY class. Example:
RDEFINE FACILITY IRR.PROXY.DEFAULTS PROXY(LDAPHOST(ldap://some.ldap.host:389) BINDDN(cn=Joe User,ou=Poughkeepsie,o=IBM,c=US) BINDPW(MYPASS1))
In this case, no BindProfile statement should appear in the PKI Services configuration file for that server. For more information, refer to z/OS Cryptographic Services PKI Services Guide and Reference. For information on how EIM uses the above information, see z/OS Integrated Security Services EIM Guide and Reference. For information about storing keys that encrypt LDAP bind passwords, see Storing encryption keys using the KEYSMSTR class on page 297.
642
LDAP
Table 36. LDAP event notification of RACF profile changes Resource in the RACFEVNT class NOTIFY.LDAP.USER Change event type Password and password phrase changes, regardless of the command or method used Updates to a user's revoke status (that is, changes to the FLAG4 field in the USER profile), regardless of the command or method used Users added using the ADDUSER command User modifications made using the ALTUSER or PASSWORD command Users deleted using the DELUSER command NOTIFY.LDAP.GROUP Groups added using the ADDGROUP command Group modifications made using ALTGROUP command Groups deleted using the DELGROUP command NOTIFY.LDAP.CONNECT Group membership changes made using any of the following commands: v ALTUSER command, only when issued with GROUP, UACC, or AUTHORITY operand v CONNECT command v REMOVE command Users established in their default groups using the ADDUSER command NOTIFY.LDAP.class-name General resources added using the RDEFINE command General resource modifications made using the RALTER command Changes made using the PERMIT command to the standard or conditional access list of a general resource General resource deletions made using the RDELETE command Notes: v The RACF panels and the R_admin callable service (IRRSEQ00) internally issue TSO commands, so these interfaces are supported. v The RACF panels can generate multiple commands while processing a user profile, and this might result in multiple change log entries. v An application that updates supported profiles, using methods other than TSO commands, can create its own change log entry using the R_proxyserv callable service (IRRSPY00), documented in z/OS Security Server RACF Callable Services. Restrictions: v Other RACF commands that update user and general resource profiles, such as RACDCERT, RACLINK, and RACMAP are not supported. v Commands issued from the RACF parameter library during RACF subsystem initialization are not logged because logging occurs only when the subsystem address space is fully functional. By contrast, parameter library commands issued as a result of a SET INCLUDE command are logged because the subsystem address space is initialized when it processes the SET command.
643
LDAP
resource profile was added, modified or deleted. The changes attribute does not identify the user or group permission that was added, modified, or removed. In the case of a password or password phrase change, the changes attribute of the change log entry identifies the password or password phrase field as the changed field. The changes attribute does not contain the actual password or password phrase value but contains one of the following values: *ComeAndGetIt* This indicates there is an encrypted password envelope or password phrase envelope that can be subsequently retrieved. (See Chapter 21, Password and password phrase enveloping, on page 647 for details about envelopes.) *NoEnvelope* This indicates there is no password envelope or password phrase envelope. When other fields in a user's profile are changed in the same request that updates the values of the password and password phrase, three LDAP change log entries are created: one entry to log the password update, one to log the password phrase update, and another entry to log the information about the other changed fields. Removal of a user's password phrase does not create a separate log entry. (See Example 2.) Example 1: An administrator issues the following command for a revoked user who is eligible for both password and password phrase enveloping.
ALTUSER userid PASSWORD(newpass) PHRASE(newphrase) RESUME OWNER(group-name)
If successful, this command causes three entries to be created to log the user profile changes. v One entry identifies the password field as changed and contains the *ComeAndGetIt* value. v A second entry identifies the password phrase field as changed and contains the *ComeAndGetIt* value. v A third entry identifies changes in the user's revoke status and owning group. Example 2: An administrator issues the following command to update a user's password, remove the password phrase, and change the user's name.
ALTUSER userid PASSWORD(newpass) NOPHRASE NAME(new-user-name)
If successful, this command causes two entries to be created to log the user profile changes. v One entry identifies the password field as changed and contains the *ComeAndGetIt* value. v A second entry contains information about the change in the user's name and removal of the password phrase. Example 3: An administrator issues the following command to remove a user's password phrase and change the user's name.
ALTUSER userid NOPHRASE NAME(new-user-name)
If successful, this command causes one entry to be created to log the user profile changes. This entry contains information about the change in the user's name and removal of the password phrase. For more information about the LDAP change log, see Change logging in IBM Tivoli Directory Server Administration and Use for z/OS.
644
LDAP
You might also define a generic profile to activate multiple general resource classes. The following example activates the JES-related classes called JESINPUT, JESJOBS, and JESSPOOL. Example:
SETROPTS GENERIC(RACFEVNT) RDEFINE RACFEVNT NOTIFY.LDAP.JES*
645
LDAP
To resume LDAP change notification and password enveloping, issue the following command.
SETROPTS CLASSACT(RACFEVNT) RACLIST( RACFEVNT)
To suppress LDAP change notifications without disabling enveloping, do not deactivate the RACFEVNT class. Instead, delete only the RACFEVNT profiles you defined in Step 1 of Activating LDAP change notification on page 645. Example:
RDELETE RACFEVNT NOTIFY.LDAP.* SETROPTS RACLIST(RACFEVNT) REFRESH
To resume LDAP change notifications, follow the steps in Activating LDAP change notification on page 645.
646
This topic provides information about creating password envelopes and password phrase envelopes to enable authorized applications to recover user passwords and password phrases. Envelopes are used by IBM Tivoli Directory Integrator, in conjunction with LDAP notification (see LDAP event notification on page 642), to enable a heterogeneous password synchronization solution.
Overview of enveloping
RACF can be configured to save user passwords and password phrases so that an authorized application can recover them in clear text. This ability can be restricted to a subset of your users and can be further limited to only passwords or password phrases. When an eligible user's password or password phrase is changed, the new value is encrypted under a public key within a key ring associated with the user ID of the RACF subsystem address space. The encrypted value is then stored in the user's profile. When an application requests the password or password phrase, RACF decrypts the value, and then encrypts it in PKCS #7 format for recipients whose digital certificates have been placed on the same RACF key ring. An authorized application can then decrypt the password envelope or password phrase envelope using the recipient's private key. The R_Admin callable service (IRRSEQ00) provides the interface by which an application can retrieve an envelope. See z/OS Security Server RACF Callable Services for interface documentation, including a description of the envelope structure. For the most part, new passwords and new password phrases are enveloped for an eligible user, with the following exceptions: v Initial ADDUSER passwords and password phrases. v When the new value of the password or password phrase is the same as the current value.
Copyright IBM Corp. 1994, 2011
647
Enveloping
v When the ALTUSER or PASSWORD command is used to change the password, and the new password is equal to the user's default group name. v When an application uses RACROUTE or ICHEINTY, rather than a RACF command, to set the password, and the password contains characters that are not accepted by the RACF commands. The RACF commands only accept the uppercase characters AZ, lowercase az, 09, X'5B' ($), X'7B' (#), and X'7C' (@). In addition, when SETROPTS PASSWORD(NOMIXEDCASE) is in effect, lowercase characters az are not accepted. v When an application uses RACROUTE or ICHEINTY to set the password and specifies ENCRYPT=NO. v When an application uses ICHEINTY to set the password phrase but the password phrase does not have a valid (9100 character) length.
648
Enveloping
Example (correct):
ALTUSER userid PASSWORD(new-password) PHRASE(new-password-phrase) RESUME
Example (correct):
ALTUSER userid RESUME ALTUSER userid PASSWORD(new-password) PHRASE(new-password-phrase)
Example (incorrect):
ALTUSER userid PASSWORD(new-password) PHRASE(new-password-phrase) ALTUSER userid RESUME
When you use the correct examples, the revoked user's new password and password phrase are enveloped.
Signing hash algorithm and encryption strength used to create the envelope
Both the signing hash algorithm and encryption strength are configurable attributes. Use application data (APPLDATA) in the RACFEVNT resource profiles to specify the signing hash algorithm that signs the PKCS #7 envelope, and the encryption strength used when encrypting the envelope. The syntax of the APPLDATA string consists of a character string indicating the signing hash algorithm, followed by a forward slash (/), followed by a string indicating the encryption strength. Examples:
RDEFINE RACFEVNT PASSPHRASE.ENVELOPE UACC(NONE) APPLDATA(MD5/STRONG) RALTER RACFEVNT PASSWORD.ENVELOPE APPLDATA(MD5/STRONG)
Allowable values for the signing hash algorithm: v MD5 (default) v SHA1 Allowable values for the encryption strength: v STRONG (default) v MEDIUM v WEAK Guideline: Use the strongest encryption possible. If you must use weaker encryption, for example, due to export regulations, then protect yourself against offline attacks by carefully controlling access to the RACF database and any other repository where envelopes might be stored after being retrieved from RACF.
Encryption strength value STRONG MEDIUM WEAK Data encryption method Triple DES (a 168-bit encryption key) DES (a 56-bit encryption key) RC2 (a 40-bit encryption key)
Note: Strong encryption might not be available at all installations based on government export regulations. See z/OS Cryptographic Services System SSL Programming for more information. If the APPLDATA is not specified in the profile, the defaults are taken as noted above. If an empty qualifier exists in the APPLDATA, then the default value is used for that qualifier. For example, if the APPLDATA is specified as SHA1, then SHA1 is used as the signing hash algorithm, and triple DES is used as the
Chapter 21. Password and password phrase enveloping
649
Enveloping
encryption algorithm. If the APPLDATA is specified as /MEDIUM, then MD5 is used as the signing hash algorithm, and DES is used as the encryption algorithm. If the APPLDATA is specified incorrectly, an error message is issued to the console. Thereafter, the default values are used whenever users who are eligible for enveloping change their passwords or password phrases, or whenever an application requests the retrieval of an envelope. The APPLDATA can be changed at any time.
You can set the audit options for these resources to log successes, and thus maintain a history of whose passwords and password phrases are retrieved, and by whom. Failures can also be logged. (The log string identifies the user whose password or password phrase was retrieved.)
Setting up enveloping
There are several RACF setup steps to perform in order for recipients to be able to retrieve user password and password phrase changes. See the setup steps in the following topics: 1. Preparing the address space of the RACF subsystem on page 651
650
Enveloping
Generating a local CA certificate using RACF as the CA Generating an X.509 V3 certificate for the RACF address space on page 652 Generating an X.509 V3 certificate for the envelope recipient on page 653 Copying the certificates to the host system (if generated elsewhere) on page 655 6. Exporting RACF's certificate to the recipient key database on page 656 7. Authorizing the envelope recipient on page 657 8. Activating enveloping on page 657. 2. 3. 4. 5. Tip: While you are initially configuring and testing this function, check the console for error messages. As RACF detects errors during the enveloping process, they will be reported to the console, not to the end user who initiates a password or password phrase change.
Note: If your installation uses default OMVS segment processing, you need not perform this step to add OMVS segments. (See Enabling default OMVS segments processing on page 550.) Guideline: If your installation did not implement default OMVS segment processing, perform this step to assign explicit values or use automatic assignment. Do not implement default OMVS segment processing solely for the enveloping function. v If the RACF subsystem identity does not have the TRUSTED or PRIVILEGED attribute, it will require the necessary FACILITY class authorization in order to extract certificates from a key ring. (The certificate setup is described in Generating an X.509 V3 certificate for the RACF address space on page 652.)
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(RACFSUB) ACCESS(READ)
You might already be protecting this resource, perhaps with a generic profile. Modify this step as needed for your environment. Guideline: If your installation uses RACF remote sharing facility (RRSF), assign the TRUSTED attribute to the RACF address space user ID.
651
Enveloping
enveloping process. Command values, such as subjectsdn, organization, and country, can be modified to reflect the naming structure and conventions used at your installation.
RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN(RACFCA) O(ibm) C(us)) WITHLABEL(RACFCA) NOTAFTER(DATE(2020-12-31)) ICSF
Guideline: Use ICSF to store private keys, as shown in the RACDCERT CERTAUTH example. If you do not use ICSF, then omit this operand from the command. Note: Certificates signed with this local CA certificate show an issuer of cn=RACFCA,o=ibm,c=us when listed with the RACDCERT LIST command. RACF signs the envelope so that a recipient can verify that the envelope signature was created using RACF's certificate (created in Generating an X.509 V3 certificate for the RACF address space). If the recipient also wants to check the veracity of RACF's certificate, this CA certificate is needed.
Steps for generating a certificate and private key for the RACF address space
Before you begin: v The RACDCERT commands shown in the following steps are examples. Your values might be different. In this example, the user ID of the RACF address space is RACFSUB. The actual user ID for your RACF address space is defined by setting up a started task identity using either the started procedures table (ICHRIN03), or by defining a profile in the STARTED class. See z/OS Security Server RACF System Programmer's Guide for information about setting up the RACF subsystem. The label of the new certificate generated in these steps is RASP1. You can specify a label of your own choice. The new certificate in these steps is signed by RACF, which is the certificate authority used in the context of this example. The local CA certificate for RACF is identified by the label RACFCA. v After completing these steps, avoid changing RACF's private key. If you change it, RACF will not be able to build PKCS #7 envelopes for existing passwords or password phrases. (Because the passwords and password phrases were encrypted under the old public key, they cannot be decrypted under the new private key.) Normal operation will resume as users subsequently change their passwords and password phrases. Guidelines: If available, use ICSF to store the private key created in Step 1 on page 653. Unless you use ICSF to store private keys, any user with READ access to the RACF database, or a user authorized to invoke a RACROUTE REQUEST=EXTRACT request, can obtain the default certificate's private key and any user's encrypted password or password phrase. As always, protect the RACF database and its copies against inappropriate access. Further, verify that applications retrieving envelopes do so using only the R_admin interface.
652
Enveloping
Perform the following steps to generate an X.509 V3 certificate and associated private key, and prepare them for RACF use during the enveloping process.
1.
Generate a digital certificate containing a private key for the RACF address space. Example:
RACDCERT ID(RACFSUB) GENCERT SUBJECTSDN(CN(RACF AddrsSpace System 1)O(ibm)C(us)) WITHLABEL(RASP1) SIGNWITH(CERTAUTH LABEL(RACFCA)) KEYUSAGE(HANDSHAKE DATAENCRYPT DOCSIGN) NOTAFTER(DATE(2020-12-31)) ICSF
If you do not use ICSF, then omit this operand from the command. ______________________________________________________________________
2.
Create a RACF key ring named IRR.PWENV.KEYRING. Note that the name of the key ring is case-sensitive. Example:
RACDCERT ID(RACFSUB) ADDRING(IRR.PWENV.KEYRING)
______________________________________________________________________
3.
Connect the certificate you created for the RACF address space in Step 1 to the key ring. You must connect it as the default certificate as shown in the following example. Example:
RACDCERT ID(RACFSUB) CONNECT(LABEL(RASP1) RING(IRR.PWENV.KEYRING) DEFAULT USAGE(PERSONAL))
______________________________________________________________________
4.
Verify that your new certificate is marked trusted by listing it using the RACDCERT LIST command. (This also applies to the other certificates you create during setup for enveloping.) If the certificate is not trusted, use the following command to mark it trusted. Example:
RACDCERT ID(RACFSUB) ALTER (LABEL(RASP1)) TRUST
______________________________________________________________________ You have now created an X.509 V3 certificate and associated private key for the RACF address space, and connected them to RACF's key ring. Once you complete these steps, if you change the user ID under which the RACF subsystem runs, you will need to repeat these steps using the new RACF user ID.
653
Enveloping
Guideline: In general, authorize only trusted applications, not users, to extract envelopes. Certificates for intended recipients might be created by RACF, and exported to non-z/OS processes, for instance. The creation of the certificates might be accomplished using the following sample RACDCERT commands that generate certificates for IDI1 and APP2 (the identities of processes that are authorized to retrieve envelopes). These certificates are signed with the local CA (RACF) certificate that is identified by the label RACFCA. Example:
RACDCERT ID(IDI1) GENCERT SUBJECTSDN(CN(IBM Tivoli Directory Integrator Server 1) O(ibm) C(us)) WITHLABEL(IDI1) SIGNWITH(CERTAUTH LABEL(RACFCA)) KEYUSAGE(HANDSHAKE DATAENCRYPT DOCSIGN) RACDCERT ID(APP2) GENCERT SUBJECTSDN(CN(Application Server 2) O(ibm) C(us)) WITHLABEL(APP2) SIGNWITH(CERTAUTH LABEL(RACFCA)) KEYUSAGE(HANDSHAKE DATAENCRYPT DOCSIGN)
Rule: The KEYUSAGE attributes HANDSHAKE, DATAENCRYPT and DOCSIGN must be specified for the certificates. You might also create certificates directly on the recipient platform and import them into RACF. Any key management system can be used to create the recipient key pair and certificate, as long as it can export certificates in an industry standard format understood by the RACDCERT command. The following example uses keytool, the key management tool available with many Java virtual machines (JVMs), including the JVM shipped with IBM Tivoli Directory Integrator. You might not need to perform all of the steps below if you already have a key management infrastructure. The examples below assume you are starting new. Create certificates: Use of RSA as a key algorithm is required. If keytool uses the default value DSA, you must change it to RSA. Example:
keytool -genkey -alias IDI1 -keypass xxxxxx -storepass xxxxxx -keystore recipient.jks -dname "CN=(IBM Directory Tivoli Integrator Server 1),O=(ibm),C=(us)" -keyalg RSA keytool -genkey -alias APP2 -keypass xxxxxx -storepass xxxxxx -keystore recipient.jks -dname "CN=(Application Server 2),O=(ibm),C=(us)" -keyalg RSA
The keytool commands above create two self-signed certificates. For example purposes, this is sufficient. In a production environment, you might want to use something other than a self-signed certificate. Export certificates: The rfc keyword specifies base64-encoded output.
654
Enveloping
Example:
keytool -export -alias IDI1 -file IDI1.b64 -keystore recipient.jks -storepass xxxxxx -rfc keytool -export -alias APP2 -file APP2.b64 -keystore recipient.jks -storepass xxxxxx -rfc
The following example uses IBM Key Management, running on Windows 2000. The commands are slightly different from those in the previous example, but the procedure is the same. Create key database: Example:
gsk5cmd.exe -keydb -create -db recipient.kdb -pw xxxx
The gsk5cmd commands above create two self-signed certificates. For example purposes, this is sufficient. In a production environment, you might want to use something other than a self-signed certificate. Export certificates: Example:
gsk5cmd.exe -cert -extract -db recipient.kdb -pw xxxx -label "IDI1" -target IDI1.b64 -format ascii gsk5cmd.exe -cert -extract -db recipient.kdb -pw xxxx -label "APP2" -target APP2.b64 -format ascii
At this point, using either example above, the contents of the certificates are contained in the files IDI1.b64 and APP2.b64.
655
Enveloping
If you created self-signed certificates, RACF will warn that the certificate authority is not defined to RACF, but will properly import the certificates. Connect the recipient certificates to the key ring. RACF will encrypt the password or password phrase for up to 20 recipient certificates: Example:
RACDCERT ID(RACFSUB) CONNECT(ID(IDI1) LABEL(IDI1) RING(IRR.PWENV.KEYRING) USAGE(PERSONAL)) RACDCERT ID(RACFSUB) CONNECT(ID(APP2) LABEL(APP2) RING(IRR.PWENV.KEYRING) USAGE(PERSONAL))
RACF constructs the PKCS #7 envelope at the time the envelope is requested. So, if you add a certificate for a principal, that principal will be able to decrypt envelopes for any eligible user whose current password or password phrase has already been changed (assuming the principal has the authorization described in the next step). Likewise, if a certificate is removed from the key ring, the principal will not be able to decrypt envelopes, even if the password or password phrase was changed while the certificate was on the ring, and even if the authorization described in the next step is not removed for the principal.
These files must be transferred to the recipient system. Use FTP (ASCII mode) or simply cut and paste them to create the racfca.cert and rasp.cert files. Then, import the files: Using the keytool command: Example:
keytool -import -alias RACFCA -file racfca.cert -keystore recipient.jks -storepass xxxxxx keytool -import -alias RASP1 -file rasp.cert -keystore recipient.jks -storepass xxxxxx
656
Enveloping
Example 2:
RDEFINE FACILITY IRR.RADMIN.EXTRACT.* UACC(NONE) PERMIT IRR.RADMIN.EXTRACT.* CLASS(FACILITY) ID(IDI1 APP2) ACCESS(READ)
Guideline: In general, authorize only trusted applications, not users, to extract envelopes. Failed access attempts to these resources are logged by default. The log string of the audit record contains the user ID whose envelope is being retrieved. If you use a generic profile (shown in Example 2), look for the resource name in the audit record and you can distinguish whether a password envelope or password phrase envelope was retrieved. Guideline: Given the sensitive nature of this function, you should log successful accesses as well. For example, a user with the RACF AUDITOR attribute can execute the following command:
RALTER FACILITY IRR.RADMIN.EXTRACT.* GLOBALAUDIT(ALL(READ))
If the FACILITY class is already ACTIVE and RACLISTed, refresh the class.
SETROPTS RACLIST(FACILITY) REFRESH
Activating enveloping
This procedure involves defining resources in the RACFEVNT class, and activating this class. 1. Define the RACFEVNT resources to control enveloping. You can define each resource separately (PASSWORD.ENVELOPE and PASSPHRASE.ENVELOPE) or define a generic profile (shown in Example 2) to control both. The APPLDATA field of this profile specifies the hash algorithm to use when signing the PKCS #7 envelope, and the encryption strength to use when encrypting the envelope. The following examples specify the strongest signing and encryption: Example 1:
RDEFINE RACFEVNT PASSWORD.ENVELOPE UACC(NONE) APPLDATA(MD5/STRONG) RDEFINE RACFEVNT PASSPHRASE.ENVELOPE UACC(NONE) APPLDATA(MD5/STRONG)
Example 2:
657
Enveloping
SETROPTS GENERIC(RACFEVNT) RDEFINE RACFEVNT PASS*.ENVELOPE UACC(NONE) APPLDATA(MD5/STRONG)
Example 3: If you previously implemented password enveloping by defining the PASSWORD.ENVELOPE resource and want to add support for password phrases using a generic profile (shown in Example 2), you can model the new generic profile on your previously defined resource and then delete the old profile. For example:
SETROPTS GENERIC(RACFEVNT) RDEFINE RACFEVNT PASS*.ENVELOPE FROM(PASSWORD.ENVELOPE) RDELETE RACFEVNT PASSWORD.ENVELOPE
Guidelines: v Define separate discrete profiles (as shown in Example 1) if you need the flexibility to envelope only passwords or only password phrases. Using separate profiles also allows you to authorize a set of users eligible for password enveloping and a different set eligible for password phrase enveloping. (See Step 2 for information about authorizing users.) v In general, avoid assigning UACC(READ) to the resources that control enveloping because UACC(READ) enables enveloping for all users (except RESTRICTED users), including highly privileged users such as system-SPECIAL users and user IDs that you use for emergency recovery purposes. Consider assigning UACC(READ) only if you specifically authorize sensitive user IDs with ACCESS(NONE). This prevents their passwords and password phrases from being enveloped. 2. Enable enveloping for users whose passwords or password phrases are to be encrypted for the intended recipients (whose digital certificates are connected to the IRR.PWENV.KEYRING key ring). This is done by permitting a given user or group to the appropriate envelope resources in the RACFEVNT class. Example 1:
PERMIT PASSWORD.ENVELOPE CLASS(RACFEVNT) ID(USER1 USER2 GROUPA) ACCESS(READ) PERMIT PASSPHRASE.ENVELOPE CLASS(RACFEVNT) ID(USER1 USER2 GROUPA GROUPB) ACCESS(READ)
Example 2:
PERMIT PASS*.ENVELOPE CLASS(RACFEVNT) ID(USER1 USER2 GROUPA GROUPB) ACCESS(READ)
Restrictions: v If you specified UACC(READ) in Step 1 on page 657, you must specifically permit restricted users with ACCESS(READ) by user ID or group if you want their passwords or password phrases to be enveloped. (Restricted user IDs are not authorized by the UACC in profiles.) v Protected user IDs are not eligible for enveloping because they have no passwords or password phrases. If you specified UACC(NONE) in Step 1 on page 657, you must include newly added users and groups into the access scheme so that passwords and password phrases are properly enveloped or not, over time. In particular, you might want to have intended group connections in place for all new users before their initial logons when they must change their passwords and password phrases. Also, keep in mind that if a user is connected to several groups, his effective authority is the highest allowed by any of his groups (assuming he isn't specifically permitted by user ID, in which case this authority overrides that granted by any of his groups).
658
Enveloping
For example, if list-of-groups processing (SETROPTS GRPLIST option) is active, and user BOB is connected to groups GROUP1 and GROUP2, and GROUP1 is permitted to PASSWORD.ENVELOPE with ACCESS(NONE), GROUP2 is permitted with ACCESS(READ), and BOB is not explicitly permitted, then BOB's effective access to PASSWORD.ENVELOPE is READ, and BOB's password will be enveloped. 3. Optionally, activate LDAP change log notification for USER profile changes so an LDAP change log entry is created whenever a user's new password or password phrase is enveloped. This step is required if you use an application like IBM Tivoli Directory Integrator to implement a heterogeneous password synchronization solution. Example:
RDEFINE RACFEVNT NOTIFY.LDAP.USER UACC(READ)
Optionally, you can use a generic profile to activate LDAP change log notification. See LDAP event notification on page 642 for details. 4. Enable enveloping by activating the RACFEVNT class. It can be RACLISTed to improve performance but this is not required.
SETROPTS CLASSACT(RACFEVNT) RACLIST(RACFEVNT)
5. Stop and restart the RACF subsystem address space after defining the needed enveloping resources in the RACFEVNT class and activating the RACFEVNT class. If the RACF subsystem address space is already up and running when you configure enveloping and you do not stop and restart the address space, it will not have the proper environment set up to perform the function and will fail any request to envelope passwords or password phrases.
Disabling enveloping
If you delete the generic profile or the resources that control enveloping in the RACFEVNT class (defined in Step 1 on page 657), you disable enveloping. However, when you delete these resources, RACF does not automatically delete your existing envelopes, nor can you directly delete them using the RACF commands. If you want to remove existing envelopes from user profiles to minimize the size of your RACF database, perform the following steps. To temporarily disable enveloping, do not perform these steps. Instead, issue SETROPTS NOCLASSACT(RACFEVNT) NORACLIST(RACFEVNT). This command disables LDAP change notification and enveloping without removing existing envelopes. To resume enveloping, issue SETROPTS CLASSACT(RACFEVNT) RACLIST( RACFEVNT). To temporarily disable enveloping without removing existing envelopes and without disabling LDAP change notification, follow only Step 2 of the following steps. However, before doing so, make note of the access list entries or consider copying the access list to a new profile for later use. For example, issue: RDEFINE RACFEVNT STASHPROF FROM(PASS*.ENVELOPE) Perform the following steps to prepare RACF to systematically delete (during an interim time period that you determine) each existing envelope when the user's password or password phrase is changed. These steps show command examples using generic profiles. If you defined individual resource names when you implemented enveloping, modify the commands shown.
659
Enveloping
1.
Delete the IRR.RADMIN.EXTRACT.* resource in the FACILITY class and refresh the FACILITY class. This prevents applications that use the R_admin callable service (IRRSEQ00) from retrieving envelopes. Example:
RDELETE FACILITY IRR.RADMIN.EXTRACT.* SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________
2.
Alter the PASS*.ENVELOPE profile to update the UACC to NONE (if not already specified) and remove all access authorizations. Then, refresh the RACFEVNT class. This step disallows password and password phrase enveloping for all users. Examples:
RALTER RACFEVNT PASS*.ENVELOPE UACC(NONE) PERMIT PASS*.ENVELOPE CLASS(RACFEVNT) RESET SETROPTS RACLIST(RACFEVNT) REFRESH
______________________________________________________________________
3.
Determine the current change interval for passwords and password phrases by inspecting the password processing options listed in the output of the SETROPTS LIST command. Sample output:
PASSWORD PROCESSING OPTIONS: PASSWORD CHANGE INTERVAL IS 180 DAYS.
______________________________________________________________________
4.
Choose the length of your interim period (for instance, 240 days) to allow the change interval to elapse while the RACFEVNT class continues to remain active. Consider a time period long enough to maximize the number of users who will be active. During this period, user passwords and password phrases will expire and the users who log on will be forced to change them to new values. Because you disallowed enveloping for all users in Step 2, RACF will not envelope the new values and will systematically delete existing envelopes. ______________________________________________________________________ (Optional) Before the end of your interim period, gauge your progress by running the IRRDBU00 utility (see Using the RACF Database Unload Utility (IRRDBU00) on page 388) to report on users who still have envelopes. (Envelopes will remain for users who are inactive during your interim period.) Revise the length of your interim period if needed. ______________________________________________________________________ At the end of your interim period, disable enveloping for passwords and password phrases by deleting the PASS*.ENVELOPE profile and refreshing the RACFEVNT class.
RDELETE RACFEVNT PASS*.ENVELOPE SETROPTS RACLIST(RACFEVNT) REFRESH
5.
6.
______________________________________________________________________
660
Enveloping
7.
If you do not need the RACFEVNT class for LDAP event notification (see LDAP event notification on page 642), deactivate the RACFEVNT class and remove any RACLISTed profiles for the RACFEVNT class.
SETROPTS NOCLASSACT(RACFEVNT) NORACLIST(RACFEVNT)
______________________________________________________________________
8.
Delete the RACF key ring you created for enveloping. Also, delete any unneeded certificates you created for enveloping. Example:
RACDCERT ID(RACFSUB) DELRING(IRR.PWENV.KEYRING)
______________________________________________________________________ When you are finished, you have disabled enveloping for both passwords and password phrases in a manner that allowed RACF to systematically delete existing envelopes. If some users were inactive during your interim period, their envelopes still remain.
661
Enveloping
notification, provides a simpler way for such applications to subscribe to password and password phrase changes, but does not by itself provide a higher or lower degree of security than is already put in place by such applications. Ultimately, you must rely on the application to maintain the security of RACF passwords and password phrases from the point those values are intercepted. For example, the application should not send a password or password phrase across a network in clear text and should protect any repository that might contain these values in clear text. It is the installation's choice to evaluate password synchronization software, and enable PKCS #7 enveloping in support of such software. Part of deploying such software is ensuring proper user education and network security. Several RACF implementation features help to minimize the risks: v As with all new RACF enhancements, enveloping is not enabled by default. You must enable it before any passwords or password phrases are enveloped and retrievable. v Public key cryptography protects the envelopes as they are sent across the network, and makes them available only to authorized principals whose certificates you connect to a RACF key ring. Using RACF key rings to authorize principals keeps the trust policy within your scope, as the RACF security administrator. v The encryption and retrieval of envelopes is fully dynamic with respect to key ring changes. (The envelope is created on demand when it is requested, using the current contents of the key ring.) Therefore, if the private key of a recipient is compromised, you can remove the recipient's certificate from the RACF key ring to dynamically render envelopes indecipherable to the thief of the recipient's private key. Even if the thief is able to masquerade as the intended recipient, bind to LDAP, and retrieve an envelope under the recipient's identity, he will not be able to decipher it using the stolen private key. v Profiles in the RACFEVNT class establish your enveloping policy. This policy allows you to scope password and password phrase enveloping to a subset of RACF users, allowing you to exclude sensitive user IDs, and control enveloping for passwords and password phrases independently, at your discretion. v Policy changes are logged to SMF for each privileged operation associated with enveloping, such as changes to the key ring, changes to the enveloping policy, and actual retrievals of envelopes from RACF.
662
This topic describes how to define and use custom fields. It contains a task roadmap (Task roadmap for defining and using custom fields on page 664) and detailed implementation instructions.
663
Custom fields
v The acceptable values for the data in each field based on data type. You can customize several options, including the following: For character fields, you can customize maximum length, restrict the character contents, and allow mixed-case characters. For numeric fields, you can customize maximum value and minimum value. For hexadecimal fields, you can customize the maximum length. Your installation can provide additional customization by tailoring exit routines to validate custom field data. For details, see Custom field validation exit (IRRVAF01) in z/OS Security Server RACF System Programmer's Guide. Define custom fields and their attributes for user and group profiles using the RDEFINE command. Each custom field and its attributes is stored in the CFDEF segment of a general resource profile in the CFIELD class. (For details about naming the CFIELD profiles that define your custom fields, see Profiles in the CFIELD class on page 665.) Add custom field data to user and group profiles using the ADDUSER or ALTUSER command for users, or the ADDGROUP or ALTGROUP command for groups. For example, if a custom field named DIVISION is defined at your installation, you might add a division name for a user by issuing the following command: Example:
ALTUSER ROBIN CSDATA(DIVISION(SALES))
Custom field data in user and group profiles is stored in the CSDATA segment of these profiles. You can list custom field data using the CSDATA keyword of the LISTUSER and LISTGRP commands.
664
Custom fields
Based on the data type you choose for the custom field, you can specify several additional options or accept the defaults for RDEFINE command processing. See detailed command syntax for the RDEFINE and RALTER commands in z/OS Security Server RACF Command Language Reference. To prevent errors and simplify the task of defining custom fields, the RDEFINE command provides extensive default processing to set appropriate initial values based on the data type of your custom field. You can specify the data type or accept CHAR as the default. You cannot change the data type of a custom field using the RALTER command. Guidelines: v Take advantage of the extensive default processing with the CFDEF operand of the RDEFINE command to ensure that your custom field is defined with appropriate values for its data type. The CFDEF operand of the RALTER command does not provide default processing. When you want to make changes to an existing custom field, see Changing attributes of an existing custom field on page 674. v Consider using the RACF ISPF panels to add CFIELD class profiles with CFDEF segment values. The ISPF panels display appropriate keyword choices based on the data type of the custom field you are creating.
665
Custom fields
v For group profiles, the ADDGROUP and ALTGROUP commands. Users can use the custom-field-name as a keyword to do the following: v Add and change data values for this custom field in the CSDATA segment. Examples:
ALTUSER user-ID CSDATA(EMPSER(value)) ALTGROUP group CSDATA(COMPADDR(value))
v Remove the data from this custom field in the CSDATA segment, when prefixed with the NO characters. Examples:
ALTUSER user-ID CSDATA(NOEMPSER) ALTGROUP group CSDATA(NOCOMPADDR)
Syntax rules for custom field names: v 18 characters in length. v Valid characters include 09, AZ, # (X'7B'), $ (X'5B'), @ (X'7C'), and several special characters. TSO/E syntax requirements apply. For details about TSO/E syntax requirements, see Syntax requirements for command and subcommand names in z/OS TSO/E Programming Services. Restriction: If TSO/E disallows the command keywords associated with your custom field name, the custom field is not usable. Guidelines: v Avoid defining custom field names that begin with the NO characters because they might conflict with another custom field and cause unpredictable results. For example, if you define two custom fields called THING and NOTHING for user profiles, when a user issues the ALTUSER command with the NOTHING keyword, it is unclear whether the user intends to remove THING data from the user profile or add NOTHING data. v Avoid custom field names that are ambiguous subsets of your other custom field names, such as HOMEADDR and HOME. For examples, see Common errors when defining and using custom fields on page 679.
1.
666
Issue the RDEFINE command to define a new custom field and its attributes.
Custom fields
Example 1Defining a numeric custom field: Suppose you want to define a numeric field called EMPSER as an employee serial number in a user profile. Employee serial numbers in your company are 68 numeric digits.
RDEFINE CFIELD USER.CSDATA.EMPSER UACC(NONE) CFDEF(TYPE(NUM) FIRST(NUMERIC) OTHER(NUMERIC) MAXLENGTH(8) MINVALUE(100000) MAXVALUE(99999999) HELP(EMPLOYEE SERIAL NUMBER, 6 - 8 DIGITS) LISTHEAD(EMPLOYEE SERIAL=))
Notes: v Because the EMPSER field is defined as TYPE(NUM), values for serial numbers must be specified as numbers when they are added to user profiles. v Because NUM is the data type, FIRST(NUMERIC) and OTHER(NUMERIC) are the only valid options. They are the default values for TYPE(NUM) and need not be specified with the RDEFINE command. v For information about listing numeric fields, see the note in Step 2 of Steps for adding data to a custom field on page 670. Example 2Defining a character custom field: Suppose you want to define a character field called ADDRESS as an employee's home address in a user profile. You want to define a second character field called PHONE as the employee's home telephone number.
RDEFINE CFIELD USER.CSDATA.ADDRESS UACC(NONE) CFDEF(TYPE(CHAR) MAXLENGTH(100) FIRST(ANY) OTHER(ANY) HELP(HOME ADDRESS, UP TO 100 CHARACTERS) MIXED(YES) LISTHEAD(HOME ADDRESS =)) RDEFINE CFIELD USER.CSDATA.PHONE UACC(NONE) CFDEF(TYPE(CHAR) MAXLENGTH(20) FIRST(ANY) OTHER(ANY) HELP(HOME PHONE, UP TO 20 CHARACTERS) MIXED(NO) LISTHEAD(HOME PHONE =))
Notes: v TYPE(CHAR) is the default data type and needs not be specified with the RDEFINE command. v Because FIRST(ANY) and OTHER(ANY) are specified, the values for ADDRESS and PHONE can be added as quoted strings. v Because MIXED(YES) is specified, the ADDRESS value can contain upper and lower case characters. Example 3Defining a flag custom field: Suppose you want to define a flag field in a user profile that indicates whether or not an employee is active.
RDEFINE CFIELD USER.CSDATA.ACTIVE UACC(NONE) CFDEF(TYPE(FLAG) FIRST(NONATABC) OTHER(NONATABC) MAXLENGTH(3) HELP(CURRENTLY ACTIVE?))
Notes:
Chapter 22. Defining and using custom fields
667
Custom fields
v Because the ACTIVE field is defined as TYPE(FLAG), values must be either YES or NO when adding the flags to user profiles. v Because FLAG is the data type, the following options are the only valid options. They are the default values for TYPE(FLAG) and need not be specified with the RDEFINE command. FIRST(NONATABC) OTHER(NONATABC) MAXLENGTH(3) Example 4Defining a hexadecimal custom field: Suppose you want to define an employee code field in a user profile that can be extracted and processed by the payroll program. The employee code is a string of 8 hexadecimal characters.
RDEFINE CFIELD USER.CSDATA.CODE UACC(NONE) CFDEF(TYPE(HEX) MAXLENGTH(8) FIRST(NONATNUM) OTHER(NONATNUM) HELP(EMPLOYEE CODE, ENTER 8 HEX CHARACTERS) LISTHEAD(EMPLOYEE CODE =))
Notes: v Because the CODE field is defined as TYPE(HEX), the data must be specified as characters AF and 09. v Because the data type is HEX, FIRST(NONATNUM) and OTHER(NONATNUM) are the only valid options. They are the default values for TYPE(HEX) and need not be specified with the RDEFINE command. v For the MAXLENGTH of a TYPE(HEX) custom field, specify an even number because hexadecimal data is stored and displayed as an even number of characters. Example 5Defining a maximum-length character field: Suppose you want to define a maximum-length character field called COMPADDR to store the company address in a group profile. Because the address value will include blank characters, COMPADDR will be a quoted string. The address value will also contain mixed-case characters. Default values for all other attributes, including TYPE, are provided by RDEFINE default processing.
RDEFINE CFIELD GROUP.CSDATA.COMPADDR UACC(NONE) CFDEF(FIRST(ANY) OTHER(ANY) MIXED(YES))
Notes: v Because FIRST(ANY) and OTHER(ANY) are specified, the value for the COMPADDR field can be added as a quoted string. v Because HELP and LISTHEAD are not specified, they default as shown in the example of the RLIST command output in Step 2. ______________________________________________________________________
2.
Issue the RLIST command to list the new custom field. Review the results of default RDEFINE processing. Example:
RLIST CFIELD GROUP.CSDATA.COMPADDR CFDEF NORACF CLASS ----CFIELD NAME ---GROUP.CSDATA.COMPADDR
668
Custom fields
CFDEF INFORMATION ----------------TYPE = CHAR MAXLENGTH = 00001100 MAXVALUE = NONE MINVALUE = NONE FIRST = ANY OTHER = ANY MIXED = YES HELP = COMPADDR LISTHEAD = COMPADDR=
______________________________________________________________________ You have now defined a new custom field. If you encountered errors, see the appropriate messages documentation and check Common errors when defining and using custom fields on page 679.
1.
______________________________________________________________________
2.
Notify your system programmer to issue the IRRDPI00 command using the command options as follows. a. Optionally, execute the IRRDPI00 CHECK command. When the CFIELD class is active, the output of the IRRDPI00 CHECK command indicates errors in your custom field definitions in the CFIELD class. _________________________________________________________________ b. Execute the IRRDPI00 UPDATE command. When the CFIELD class is active, the IRRDPI00 UPDATE command activates new and changed custom fields. _________________________________________________________________
Chapter 22. Defining and using custom fields
669
Custom fields
c. Optionally, execute the IRRDPI00 LIST command. When the CFIELD class is active, the IRRDPI00 LIST command lists the custom fields in effect. Examples:
IRRDPI00 LIST(USER CSDATA) IRRDPI00 LIST(GROUP CSDATA)
_________________________________________________________________ d. If RACF is enabled for sysplex communication, execute IRRDPI00 UPDATE on each system in the sysplex. _________________________________________________________________ e. If you have a RACF remote sharing facility (RRSF) network and you propagate commands that define fields in the CFIELD class, execute IRRDPI00 UPDATE on each target system. ______________________________________________________________________
3.
Confirm with your system programmer that the IRRDPI00 UPDATE command was issued on the required systems. If you proceed to the next task, Adding data to a custom field, and are unable to add data to the new custom field, it might be because IRRDPI00 UPDATE was not executed.
You have now activated your new or changed custom field. You can begin to use the custom field.
670
Custom fields
v If you delegate authority to view custom field definitions (using Step 1 of Steps for authorizing users to define custom fields on page 672), authorized users can issue the RLIST command to review CFIELD profiles. Perform the following steps to add data to a custom field.
1.
Add custom field data to the CSDATA segment of a user or group profile. Example 1: To add data to multiple custom fields in the user profile of ANDREW, issue the following:
ALTUSER ANDREW CSDATA(EMPSER(256400) ADDRESS(14 Main Street, Anywhere, IL 01234) PHONE(555-555-5555) CODE(FC01B2D8) ACTIVE(NO))
Example 2: To add data to the COMPADDR field in the profile of the ABCSUPLY group, issue the following:
ALTGROUP ABCSUPLY CSDATA(COMPADDR(75 Industrial Way, Someplace, NC 55555))
______________________________________________________________________
2.
Issue the LISTUSER or LISTGRP command to review the contents of the CSDATA segment for the changed user or group profile. Example 1:
LISTUSER ANDREW CSDATA NORACF USER=ANDREW CSDATA INFORMATION -------------------------------------ACTIVE= NO HOME ADDRESS= 14 Main Street, Anywhere, IL 01234 EMPLOYEE CODE= FC01B2D8 EMPLOYEE SERIAL= 0000256400 HOME PHONE= 555-555-5555
Example 2:
LISTGRP ABCSUPLY CSDATA NORACF INFORMATION FOR GROUP ABCSUPLY CSDATA INFORMATION -------------------------------------COMPADDR= 75 Industrial Way, Someplace, NC 55555
Note: When listing numeric custom fields, the value is always displayed using 10 integers, with leading zeros if necessary. Therefore, the length of a displayed numeric field might not match the length as defined by the MAXLENGTH attribute for the custom field. For example, the listed value for EMPLOYEE SERIAL (as shown in the LISTUSER example) is correctly listed as 0000256400 while the MAXLENGTH attribute for EMPSER is 8 (as defined in Step 1 Example 1 of Steps for defining a custom field and its attributes on page 666). ______________________________________________________________________ You have now added data to a custom field of a user or group profile. If you encountered errors, see the appropriate messages documentation and check Common errors when defining and using custom fields on page 679.
671
Custom fields
Optionally, perform the following steps to delegate the authority to view and define custom fields.
1.
Authorize all users to use the RLIST command to view all fields in the CFDEF segment of CFIELD profiles. When you authorize UACC(READ) for the appropriate FIELD profiles, users can use the RLIST command to display custom field names and attributes for those fields. This information is useful to users who add CSDATA for those fields. Example:
SETROPTS GENERIC(FIELD) RDEFINE FIELD CFIELD.CFDEF.* UACC(READ) SETROPTS CLASSACT(FIELD) RACLIST(FIELD) or, if the FIELD class is already in use: SETROPTS RACLIST(FIELD) REFRESH
______________________________________________________________________
2.
Authorize selected users and groups to use the RDEFINE and RALTER commands to define and modify all fields in the CFDEF segment of CFIELD profiles. When you authorize UPDATE access to the appropriate FIELD profiles, you delegate authority to define custom fields. Example:
ALTUSER USERADM CLAUTH(CFIELD) PERMIT CFIELD.CFDEF.* CLASS(FIELD) ID(USERADM) ACCESS(UPDATE) SETROPTS RACLIST(FIELD) REFRESH
You have now authorized users and groups to update fields in the CFDEF segment of CFIELD profiles. This allows them to view and define custom fields. It does not allow them to add or view data in the CSDATA of user and group profiles. To
672
Custom fields
authorize users to add or view data in CSDATA segments, perform the steps in Authorizing users to update data in a custom field.
Authorizing users for the ISPF panels to update custom field data
To enable users to use the ISPF panels to update data in custom fields, you must first create FACILITY class profiles that define the IRR.RADMIN.LISTUSER and IRR.RADMIN.LISTGRP resources. The ALTUSER and ALTGROUP panels that support custom fields invoke the R_admin callable service on behalf of the ISPF user. Therefore, users who update data in custom fields must be authorized with READ access to the appropriate IRR.RADMIN resource. At your option, you can enable generics for the FACILITY class and define the IRR.RADMIN.LIST* resource. Tip: Use the UACC(READ) option rather than authorizing each user or group to the appropriate IRR.RADMIN resource. Otherwise, if you use UACC(NONE), you must individually authorize each user or group to use the ISPF panels. To authorize users for the ISPF panels, create FACILITY class profiles, if not already defined, that define the IRR.RADMIN.LISTUSER and IRR.RADMIN.LISTGRP resources. Examples:
SETROPTS RDEFINE SETROPTS or, if SETROPTS GENERIC(FACILITY) FACILITY IRR.RADMIN.LIST* UACC(READ) CLASSACT(FACILITY) RACLIST(FACILITY) the FACILITY is already in use: RACLIST(FACILITY) REFRESH
673
Custom fields
Optionally, perform the following steps to authorize selected users and groups to view, add, and update data in a custom field. Steps 1 through 4 show various methods you can use to authorize users. If you perform any of these steps, you must perform Step 5 to activate your changes.
1.
Use the &RACUID variable to authorize users to view and update their own user information in a custom field. Example: Suppose you want to authorize all users to update their own home addresses and telephone numbers in the ADDRESS and PHONE fields.
RDEFINE FIELD USER.CSDATA.ADDRESS UACC(NONE) RDEFINE FIELD USER.CSDATA.PHONE UACC(NONE) PERMIT USER.CSDATA.ADDRESS CLASS(FIELD) ID(&RACUID) ACCESS(UPDATE) PERMIT USER.CSDATA.PHONE CLASS(FIELD) ID(&RACUID) ACCESS(UPDATE)
______________________________________________________________________
2.
Authorize selected users and groups to add and update data in the custom fields of user profiles. Example: Suppose you want to authorize the HR group to view and update each user's ACTIVE and EMPSER fields.
RDEFINE FIELD USER.CSDATA.ACTIVE UACC(NONE) RDEFINE FIELD USER.CSDATA.EMPSER UACC(NONE) PERMIT USER.CSDATA.ACTIVE CLASS(FIELD) ID(HR) ACCESS(UPDATE) PERMIT USER.CSDATA.EMPSER CLASS(FIELD) ID(HR) ACCESS(UPDATE)
______________________________________________________________________
3.
Authorize selected users and groups to view data in the custom fields of user profiles. Example: Suppose you want to authorize the HELPDESK group to view each user's CODE field.
RDEFINE FIELD USER.CSDATA.CODE UACC(NONE) PERMIT USER.CSDATA.CODE CLASS(FIELD) ID(HELPDESK) ACCESS(READ)
______________________________________________________________________
4.
Authorize selected users and groups to update data in the custom fields of group profiles. Example: Suppose you want to authorize the procurement department to update each group's COMPADDR field.
RDEFINE FIELD GROUP.CSDATA.COMPADDR UACC(NONE) PERMIT GROUP.CSDATA.COMPADDR CLASS(FIELD) ID(PROCGRP) ACCESS(UPDATE)
______________________________________________________________________
5.
______________________________________________________________________ You have now authorized selected users to view, add, and update custom field information for users and groups at your installation.
674
Custom fields
When you define a custom field with the RDEFINE CFIELD command, some custom field attributes are assigned default values. You can change most attributes in the definition of a custom field using the RALTER CFIELD command with the CFDEF operand. However, if you use the RALTER command, default attributes are not assigned or changed. Therefore, you might change an attribute to a value that is incompatible with the data type. Certain attributes are interrelated so if you use the RALTER command, make changes carefully. When you make a change to a custom field definition (whether you use RALTER or you delete it using RDELETE and redefine it using RDEFINE), any CSDATA values that you have already added for the custom field are not changed. For example, if you use the HOMEADDR keyword of the ALTUSER command to add a 50-character HOMEADDR value to the profiles of five users, and you subsequently reduce the maximum length of the HOMEADDR custom field to 20 characters, the HOMEADDR values for those five users are not changed. In this case, those five users will have 50-character HOMEADDR values even though the maximum length for the custom field is now defined as 20 characters. Guideline: Consider using the RACF ISPF panels to modify CFDEF segment values in CFIELD class profiles. The ISPF panels will display the current values in a CFDEF segment and allow you to update them using a simple user interface. After you change a custom field definition, you must activate your change by having your system programmer execute the IRRDPI00 UPDATE command to rebuild the dynamic parse tables on all systems that will use the changed custom field. Restrictions: You cannot change certain attributes of a custom field. v You cannot change the TYPE attribute using the RALTER command. If you need to change the TYPE, see When you need to change the data type for instructions about redefining a custom field. v You can update but you cannot remove the MAXLENGTH value. (See When you need to change the MAXLENGTH of a numeric field on page 676.) v You can update but you cannot remove the LISTHEAD value. v You can update but you cannot remove the HELP value. v You can update but you cannot remove the FIRST value. v You can update but you cannot remove the OTHER value. v You can update but you cannot remove the MIXED value.
675
Custom fields
RACF database as character fields. This might confuse users who list these values because numeric fields and character fields are displayed differently.
1.
Optionally, delete all CSDATA values that were previously defined for the custom field you want to change. This step is not required. For example, to delete all occurrences of the PHONE field in all user profiles, execute the database unload utility (IRRDBU00) to locate all PHONE keywords in the CSDATA segments of user profiles. Then, issue the following command for each user that has a CSDATA PHONE field. Example:
ALTUSER user-ID CSDATA(NOPHONE)
(See Using the RACF Database Unload Utility (IRRDBU00) on page 388 for details about using IRRDBU00.) ______________________________________________________________________
2.
Issue the RLIST command to review attributes of the custom field. Record the attributes you want to keep unchanged. Example:
RLIST CFIELD USER.CSDATA.PHONE NORACF CFDEF
______________________________________________________________________
3.
Issue the RDELETE command to remove the custom field definition. Example:
RDELETE CFIELD USER.CSDATA.PHONE
______________________________________________________________________
4.
Redefine the custom field, specifying your new data type. For instructions, see Steps for defining a custom field and its attributes on page 666. Example:
RDEFINE CFIELD USER.CSDATA.PHONE CFDEF(TYPE(CHAR) MAXLENGTH(20) FIRST(ANY) OTHER(ANY))
______________________________________________________________________
5.
Activate the new custom field using the IRRDPI00 UPDATE command to refresh the dynamic parse definitions on each system that will use the custom field. For instructions, see Steps for activating a custom field on page 669. ______________________________________________________________________
You have now changed the data type of custom field by deleting and redefining the custom field. You have also optionally removed any CSDATA values that were previously defined for the custom field. You can now begin to add data for the new custom field. New CSDATA values that you define for this field will now be stored using the new data type.
676
Custom fields
because the maximum value and minimum value might have been assigned with default values when you defined the numeric custom field using the RDEFINE CFIELD command.
1.
Issue the RLIST command to review the attributes of the custom field. Record the values for the MAXLENGTH, MAXVALUE, and MINVALUE attributes. Example:
RLIST CFIELD USER.CSDATA.SALRYCAP NORACF CFDEF CLASS ----CFIELD NAME ---USER.CSDATA.SALRYCAP
CFDEF INFORMATION ----------------TYPE= NUM MAXLENGTH= 00000006 MAXVALUE= 0000999999 MINVALUE= 0000000100 FIRST= NUMERIC OTHER= NUMERIC MIXED= NO HELP= SALARY MAXIMUM, 3-6 DIGITS LISTHEAD= SALARY CAP =
______________________________________________________________________
2.
Issue the RALTER command to update the values for MAXLENGTH and other related attributes, as needed. Example:
RALTER CFIELD USER.CSDATA.SALRYCAP CFDEF(MAXLENGTH(8) MAXVALUE(99999999) MINVALUE(1000) HELP(SALARY MAXIMUM, 4-8 DIGITS))
______________________________________________________________________
3.
Reissue the RLIST command to review attributes of the updated custom field. Example:
RLIST CFIELD USER.CSDATA.SALRYCAP NORACF CFDEF CLASS ----CFIELD NAME ---USER.CSDATA.SALRYCAP
CFDEF INFORMATION ----------------TYPE= NUM MAXLENGTH= 00000008 MAXVALUE= 0099999999 MINVALUE= 0000001000 FIRST= NUMERIC OTHER= NUMERIC MIXED= NO HELP= SALARY MAXIMUM, 4-8 DIGITS LISTHEAD= SALARY CAP =
______________________________________________________________________
677
Custom fields
4.
Activate the new custom field using the IRRDPI00 UPDATE command to refresh the dynamic parse definitions on each system that will use the custom field. For instructions, see Steps for activating a custom field on page 669. ______________________________________________________________________
You have now changed the MAXLENGTH and other related attributes for a numeric field using the RALTER command. You can now begin to add data for the changed custom field.
1.
Delete all CSDATA values that were previously defined for the custom field you want to remove. For example, to delete all occurrences of the CODE field in GROUP profiles, execute the database unload utility (IRRDBU00) to locate all CODE keywords in the CSDATA segments of group profiles. Then, issue the following command for each group that has a CSDATA CODE field. Example:
ALTGROUP group CSDATA(NOCODE)
(See Using the RACF Database Unload Utility (IRRDBU00) on page 388 for details about using IRRDBU00.) ______________________________________________________________________
2.
Issue the RDELETE command to remove the custom field definition. Example:
RDELETE CFIELD GROUP.CSDATA.CODE
______________________________________________________________________
3.
Activate your custom field deletion by notifying your system programmer to refresh the dynamic parse definitions by issuing the IRRDPI00 UPDATE command on each system that no longer needs the custom field. (For related information about using IRRDPI00, see Activating a custom field on page 669.) ______________________________________________________________________
You have now deleted a custom field and removed any CSDATA values that were previously defined in user and group profiles for the custom field.
678
Custom fields
Similarly, if you specify the first qualifier of the profile name as other than USER or GROUP, or specify the second qualifier as other than CSDATA, you receive a message similar to the following: Examples:
RDEFINE CFIELD GROUPX.CSDATA.ADDR CFDEF UACC(NONE) IKJ56702I INVALID ENTITY, GROUPX.CSDATA.ADDR RDEFINE CFIELD USER.CFDATA.ADDR CFDEF UACC(NONE) IKJ56702I INVALID ENTITY, USER.CFDATA.ADDR
Similarly, if you attempt to add an unacceptable value for a character custom field, a message is issued. For example, when you add a numeric value in a character field that requires only alphabetic characters, you receive a message similar to the following: Example:
IKJ56702I INVALID SURNAME, PATEL24
679
Custom fields
names that are ambiguous subsets of each other, such as the names HOME and HOMEADDR, when you attempt to add data for the HOME field, you receive messages similar to the following: Examples:
IRR52119I Keyword name abbreviation HOME is ambiguous. IKJ56716I EXTRANEOUS INFORMATION WAS IGNORED:
The custom field operand might be undefined for any one of several reasons. For example, one of the following errors might have occurred: v The custom field was not defined using the RDEFINE command. v The custom field was defined with attributes that are inconsistent with its data type. v The IRRDPI00 UPDATE command was not issued to refresh the dynamic parse definitions. (Use the IRRDPI00 LIST command to determine if the custom field is active.) v The CFIELD class was not active when the IRRDPI00 UPDATE command was issued. v The custom field keyword was incorrectly specified due to a typographical error and does not match the custom field name.
(For IRRVAF01 details, see Custom field validation exit (IRRVAF01) in z/OS Security Server RACF System Programmer's Guide.)
680
Custom fields
681
682
This topic describes how to authorize several common security tasks to the representatives of your installation's help desk, or customer call center. Many installations delegate certain security tasks to help desk representatives in an effort to decentralize portions of user administration and reduce cost. The most commonly delegated tasks are meant to address the most frequently reported problems related to user security, such as forgotten passwords and logon failures. In general, help desk representatives have less authority than security administrators. Security administrators are usually authorized with the SPECIAL or group-SPECIAL attribute, which gives them full authority over user profiles within their scope. By contrast, help desk representatives are not usually authorized with these attributes. Therefore, you must delegate to them the specific security tasks they need. The following topics describe how to delegate the following authorities to the general users or groups on the staff of your installation's help desk or call center: v Delegating the authority to list user information on page 684 v Delegating the authority to reset passwords and password phrases on page 689.
683
Help desk
Steps for delegating the authority to list user information in any user profile
Before you begin: Make sure an existing generic profile in the FACILITY class does not inadvertently grant this authority. Perform the following steps to authorize a general user or group to list user information in any user profile.
1.
Define a profile to protect the IRR.LISTUSER resource in the FACILITY class. Example:
RDEFINE FACILITY IRR.LISTUSER UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
2.
684
Help desk
______________________________________________________________________
3.
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now authorized a general user or group to list the base segment of the user profile for any user, including a protected user, and excluding users with the SPECIAL, OPERATION, or AUDITOR attribute.
Delegating the authority to list user information in only selected user profiles
You can limit the authority of a general user or group to list user information by authorizing the user or group to list only a selected set of user profiles. You can limit the selected set of user profiles in the following ways: v Delegating by owner You can limit the authority of a general user or group to list user information in user profiles based on the owner of the user profile. To do this, authorize the LISTUSER command issuer with READ authority to the IRR.LU.OWNER.owner resource in the FACILITY class. For details, see Delegating the authority to list user information by owner on page 686. v Delegating by group tree You can limit the authority of a general user or group to list user information in only user profiles that are within the scope of a selected group tree. To do this, authorize the LISTUSER command issuer with READ authority to the IRR.LU.TREE.owner resource in the FACILITY class. For details, see Delegating the authority to list user information by group tree on page 687. v Excluding user profiles You can exclude selected user profiles from the scope of IRR.LU.OWNER.owner and IRR.LU.TREE.owner processing. To do this, protect the IRR.LU.EXCLUDE.user-ID resource in the FACILITY class. For details, see Excluding selected user profiles on page 688. To authorize a general user or group to list user information in only selected user profiles, define a profile to protect the appropriate IRR.LU.OWNER or IRR.LU.TREE resource in the FACILITY class and grant READ access to authorize users and groups. If you do not define this profile, standard LISTUSER authority checking applies when RACF determines whether the command issuer is authorized. The IRR.LU.OWNER and IRR.LU.TREE authorities authorize a general user to list the base segment in the profile of any userbased on owner or scope of the group treeincluding protected users. Restriction: These authorities do not apply when the target of the LISTUSER command has the SPECIAL, AUDITOR, or OPERATIONS attribute.
Chapter 23. Authorizing help desk functions
685
Help desk
RACF does not log failed access attempts to IRR.LU resources. Successful accesses to IRR.LU resources are logged at the installation's discretion.
1.
Define the following generic profiles in the FACILITY class, if not already defined. Doing so ensures that an existing generic profile does not inadvertently prevent you from successfully limiting this authority. Example:
RDEFINE FACILITY IRR.LISTUSER.** UACC(NONE) RDEFINE FACILITY IRR.LU.** UACC(NONE) RDEFINE FACILITY IRR.LU.EXCLUDE.** UACC(READ)
2.
Define a profile to protect the IRR.LU.OWNER.owner resource in the FACILITY class, where owner is the user ID or group that owns the user profiles. Example:
RDEFINE FACILITY IRR.LU.OWNER.GROUP3 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
3.
______________________________________________________________________
4.
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now authorized a general user or group to list the base segment of user profiles for selected usersincluding protected users, and excluding users with the SPECIAL, OPERATION, or AUDITOR attributebased on the owner of the user profile.
686
Help desk
Steps for delegating the authority to list user information by group tree
Before you begin: v Make sure the LISTUSER command issuer does not have READ access to the IRR.LISTUSER resource in the FACILITY class. v Ensure that list-of-groups-checking (SETROPTS GRPLIST) is enabled. Perform the following steps to authorize a general user to list user information in selected user profiles based on the scope of a group tree.
1.
Define the following generic profiles in the FACILITY class, if not already defined. Doing so ensures that an existing generic profile does not inadvertently prevent you from successfully limiting this authority. Example:
RDEFINE FACILITY IRR.LISTUSER.** UACC(NONE) RDEFINE FACILITY IRR.LU.** UACC(NONE) RDEFINE FACILITY IRR.LU.EXCLUDE.** UACC(READ)
2.
Define a profile to protect the IRR.LU.TREE.owner resource in the FACILITY class, where owner is the group that is at the top of a group tree. Example:
RDEFINE FACILITY IRR.LU.TREE.GROUP1 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
3.
______________________________________________________________________
4.
687
Help desk
SETROPTS CLASSACT(FACILITY)
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now authorized a general user or group to list the base segment of user profiles for selected usersincluding protected users, and excluding users with the SPECIAL, OPERATION, or AUDITOR attributebased on the scope of a group tree.
688
Help desk
1.
Define the following generic profiles in the FACILITY class, if not already defined. Doing so ensures that an existing generic profile does not inadvertently prevent you from successfully excluding selected user profiles. Example:
RDEFINE FACILITY IRR.LISTUSER.** UACC(NONE) RDEFINE FACILITY IRR.LU.** UACC(NONE) RDEFINE FACILITY IRR.LU.EXCLUDE.** UACC(READ)
2.
Define a profile to protect the IRR.LU.EXCLUDE.excluded-user resource in the FACILITY class using UACC(NONE), where excluded-user is the user ID you want to exclude. Examples:
RDEFINE FACILITY IRR.LU.EXCLUDE.SHANNON UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) RDEFINE FACILITY IRR.LU.EXCLUDE.GRPADM* UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
3.
Optionally, authorize selected users and groups with READ access to the IRR.LU.EXCLUDE.excluded-user resource. Perform this step only when certain users or groups who are authorized to an IRR.LU resource need to list the profile of the excluded user. Example:
PERMIT IRR.LU.EXCLUDE.SHANNON CLASS(FACILITY) ID(HELPMGR) ACCESS(READ)
______________________________________________________________________
4.
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now excluded selected user profiles from the authority of a general user or group that is authorized through the IRR.LU.OWNER.owner or IRR.LU.TREE.owner resource in the FACILITY class.
689
Help desk
Excluding selected users on page 695.
Levels of authority
When you can delegate authority to a general user or group for resuming user IDs and resetting passwords and password phrases, define profiles in the FACILITY class to protect one or more of the following resources based on the scope of authority you need to delegate. IRR.PASSWORD.RESET Use this resource when the scope of authority includes all users. IRR.PWRESET.OWNER.owner Use this resource when the scope of authority is a limited set of selected users based on owner of the user ID. IRR.PWRESET.TREE.owner Use this resource when the scope of authority is a limited set of selected users based on scope of a group tree. IRR.PWRESET.EXCLUDE.excluded-user Use this resource to exclude a user profile from the scope of IRR.LU.OWNER.owner and IRR.LU.TREE.owner authority. Restriction: You cannot delegate authority through the IRR.PASSWORD.RESET or IRR.PWRESET resources to authorize a general user or group to resume a revoked user or reset the password or password phrase for a user with any of the following attributes. Only users with the SPECIAL attribute, or the appropriate group-SPECIAL attribute, have resume and reset authorities for users with these attributes: v SPECIAL v OPERATIONS v AUDITOR v PROTECTED. The following table describes the authorities you can delegate based on access level to the IRR.PASSWORD.RESET or IRR.PWRESET resources in the FACILITY class.
Access authority to the IRR.PASSWORD.RESET IRR.PWRESET.OWNER IRR.PWRESET.TREE IRR.PWRESET.EXCLUDE resources READ
Authorities for using the ALTUSER command that you can delegate to a general user or group v Permits use of the PASSWORD operand to change a user's password to the default password value (and set as expired). v Permits use of the PHRASE operand to change a user's password phrase (and set as expired). Restriction: You cannot use the PHRASE operand to add a password phrase for a user who does not have one. v Permits use of the RESUME operand, without specifying a date, to resume a revoked user.
UPDATE
v Permits all authorities of READ access. v Permits use of the NOEXPIRED operand with the PASSWORD or PHRASE operand. (See Notes.)
690
Help desk
Access authority to the IRR.PASSWORD.RESET IRR.PWRESET.OWNER IRR.PWRESET.TREE IRR.PWRESET.EXCLUDE resources CONTROL
Authorities for using the ALTUSER command that you can delegate to a general user or group v Permits all authorities of UPDATE access. v Permits use of the PASSWORD or PHRASE operand to reset a user's password or password phrase within the system's minimum change interval.
Notes: 1. Neither being the owner of the user profile, nor having the group-SPECIAL attribute, provides sufficient authority to use the NOEXPIRED operand. 2. Only users who have the SPECIAL attribute can use the NOEXPIRED operand for users who have the SPECIAL, OPERATIONS, or AUDITOR attribute.
Steps for delegating the authority to reset the password for any user
Perform the following steps to authorize a general user or group to use the ALTUSER command to resume a revoked user or reset a user's password or password phrase.
1.
Define a profile to protect the IRR.PASSWORD.RESET resource in the FACILITY class. Example:
RDEFINE FACILITY IRR.PASSWORD.RESET UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
2.
______________________________________________________________________
3.
691
Help desk
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now authorized a general user or group to use the ALTUSER command to resume the user ID or reset the password or password phrase for any user, excluding protected users and users with the SPECIAL, OPERATION, or AUDITOR attribute.
692
Help desk
1.
Define the following generic profiles in the FACILITY class, if not already defined. Doing so ensures that an existing generic profile does not inadvertently prevent you from successfully limiting this authority. Example:
RDEFINE FACILITY IRR.PASSWORD.RESET.** UACC(NONE) RDEFINE FACILITY IRR.PWRESET.** UACC(NONE) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.** UACC(READ)
2.
Define a profile to protect the IRR.PWRESET.OWNER.owner resource in the FACILITY class, where owner is the user ID or group that owns the user profiles. Example:
RDEFINE FACILITY IRR.PWRESET.OWNER.GROUP3 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
3.
______________________________________________________________________
4.
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________
693
Help desk
You have now authorized a general user or group to resume user IDs and reset passwords and password phrases for selected usersexcluding protected users, and users with the SPECIAL, OPERATION, or AUDITOR attributebased on the owner of the user profile.
1.
Define the following generic profiles in the FACILITY class, if not already defined. Doing so ensures that an existing generic profile does not inadvertently prevent you from successfully limiting this authority. Example:
RDEFINE FACILITY IRR.PASSWORD.RESET.** UACC(NONE) RDEFINE FACILITY IRR.PWRESET.** UACC(NONE) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.** UACC(READ)
2.
Define a profile to protect the IRR.PWRESET.TREE.owner resource in the FACILITY class, where owner is the group that is at the top of a group tree. Example:
694
Help desk
RDEFINE FACILITY IRR.PWRESET.TREE.GROUP1 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
3.
______________________________________________________________________
4.
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________ You have now authorized a general user or group to resume user IDs and reset passwords and password phrases for selected usersexcluding protected users, and users with the SPECIAL, OPERATION, or AUDITOR attributebased on the scope of a group tree.
695
Help desk
Tip: If you want to exclude a set of users with similar user IDs, use a generic name (such as GRPADM*) in place of the excluded user ID. Restriction: Users who are authorized by the IRR.PASSWORD.RESET resource are not limited when you exclude user profiles with the IRR.PWRESET.EXCLUDE.excluded-user resource. Excluded users are excluded only when the general user or group has authority through the IRR.PWRESET.OWNER.owner or IRR.PWRESET.TREE.owner resource. Protected users and users with the SPECIAL, AUDITOR, or OPERATIONS attribute cannot be resumed, or have their passwords or password phrases reset, by users with authority through the IRR.PWRESET resources. Therefore, you need not exclude users with these attributes using the IRR.PWRESET.EXCLUDE.excluded-user resource.
1.
Define the following generic profiles in the FACILITY class, if not already defined. Doing so ensures that an existing generic profile does not inadvertently prevent you from successfully excluding selected users. Example:
RDEFINE FACILITY IRR.PASSWORD.RESET.** UACC(NONE) RDEFINE FACILITY IRR.PWRESET.** UACC(NONE) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.** UACC(READ)
2.
Define a profile to protect the IRR.PWRESET.EXCLUDE.excluded-user resource in the FACILITY class, where excluded-user is the user ID you want to exclude. Examples:
RDEFINE FACILITY IRR.PWRESET.EXCLUDE.SHANNON UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.GRPADM* UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ))
______________________________________________________________________
3.
Optionally, authorize selected users and groups with at least READ access to the IRR.PWRESET.EXCLUDE.excluded-user resource. Perform this step only when certain users or groups who are authorized to an IRR.PWRESET resource need to resume the user ID or reset the password or password phrase of the excluded user. Example:
PERMIT IRR.PWRESET.EXCLUDE.SHANNON CLASS(FACILITY) ID(HELPMGR) ACCESS(READ)
______________________________________________________________________
4.
If the FACILITY class is already active and RACLISTed, refresh the FACILITY class profiles.
SETROPTS RACLIST(FACILITY) REFRESH
______________________________________________________________________
696
Help desk
You have now excluded selected user profiles from the authority of a general user or group that is authorized through the IRR.PWRESET.OWNER.owner or IRR.PWRESET.TREE.owner resource.
SYS1
GROUP1
USER1
USERX USER4
Con
nec
Figure 63. Sample group and user structure for delegating help desk authorities
697
Help desk
v User ANDREW needs the abilities to view user profile information, reset passwords and password phrases, resume user IDs, and use the NOEXPIRED operand for users that are owned by TEAMLDR. Examples:
RDEFINE FACILITY IRR.LU.OWNER.TEAMLDR UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.LU.OWNER.TEAMLDR CLASS(FACILITY) ACCESS(READ) ID(ANDREW) RDEFINE FACILITY IRR.PWRESET.OWNER.TEAMLDR UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.PWRESET.OWNER.TEAMLDR CLASS(FACILITY) ACCESS(UPDATE) ID(ANDREW) SETROPTS CLASSACT(FACILITY) or, if the FACILITY already active and RACLISTed: SETROPTS RACLIST(FACILITY) REFRESH
v The users connected to group HLPDESK8 need the abilities to view user profile information, reset passwords and password phrases, and resume user IDs for users that are owned by group AREA8. The following commands also prevent the user profile of the help desk administration user ID (HELPADM) from being listed and prevent its password from being reset. Examples:
RDEFINE FACILITY IRR.LU.OWNER.AREA8 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.LU.OWNER.AREA8 CLASS(FACILITY) ACCESS(READ) ID(HLPDESK8) RDEFINE FACILITY IRR.LU.EXCLUDE.HELPADM UACC(NONE) RDEFINE FACILITY IRR.PWRESET.OWNER.AREA8 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.PWRESET.OWNER.AREA8 CLASS(FACILITY) ACCESS(READ) ID(HLPDESK8) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.HELPADM UACC(NONE) SETROPTS CLASSACT(FACILITY) or, if the FACILITY already active and RACLISTed: SETROPTS RACLIST(FACILITY) REFRESH
v The users connected to group HLPDESK8 need the abilities to reset passwords and password phrases and resume user IDs for users that are in the scope of group GROUP1. The following commands also prevent the password of a group-SPECIAL user called USER1 from being reset. Examples:
RDEFINE FACILITY IRR.PWRESET.TREE.GROUP1 UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.PWRESET.TREE.GROUP1 CLASS(FACILITY) ACCESS(READ) ID(HLPDESK8) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.USER1 UACC(NONE)
698
Help desk
SETROPTS CLASSACT(FACILITY) or, if the FACILITY already active and RACLISTed: SETROPTS RACLIST(FACILITY) REFRESH
Delegating help desk authorities for all users, excluding selected users
In this scenario, an installation currently delegates the ability to reset passwords and list users to a group called HELPDESK by authorizing READ access to the IRR.PASSWORD.RESET profile and the IRR.LISTUSER profile in the FACILITY class. The installation wants to continue to delegate these abilities to the HELPDESK group but now wants to prevent the passwords of two users from being reset. In other words, users who are members of the HELPDESK group need to be authorized to reset passwords and list user profiles for all users except the group-SPECIAL users SHANNON and ANDREW. The following examples remove the previous authorities from the HELPDESK group and then delegate the authority to reset passwords and list profiles for all users, excluding the two selected users. 1. Remove the HELPDESK group from the access list of the IRR.PASSWORD.RESET and IRR.LISTUSER profiles. Examples:
PERMIT IRR.PASSWORD.RESET CLASS(FACILITY) ID(HELPDESK) RESET PERMIT IRR.LISTUSER CLASS(FACILITY) ID(HELPDESK) RESET SETROPTS CLASSACT(FACILITY) or, if the FACILITY already active and RACLISTed: SETROPTS RACLIST(FACILITY) REFRESH
2. Delegate help desk authorities to the HELPDESK group using the IRR.LU and IRR.PWRESET profiles, excluding selected users. Examples:
RDEFINE FACILITY IRR.LU.OWNER.* UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.LU.OWNER.* CLASS(FACILITY) ACCESS(READ) ID(HELPDESK) RDEFINE FACILITY IRR.PWRESET.OWNER.* UACC(NONE) AUDIT(FAILURES(NONE) SUCCESSES(READ)) PERMIT IRR.PWRESET.OWNER.* CLASS(FACILITY) ACCESS(READ) ID(HELPDESK) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.ANDREW UACC(NONE) RDEFINE FACILITY IRR.PWRESET.EXCLUDE.SHANNON UACC(NONE) RDEFINE FACILITY IRR.LU.EXCLUDE.ANDREW UACC(NONE) RDEFINE FACILITY IRR.LU.EXCLUDE.SHANNON UACC(NONE) SETROPTS CLASSACT(FACILITY) or, if the FACILITY already active and RACLISTed: SETROPTS RACLIST(FACILITY) REFRESH
Note: In this scenario, there are no other profiles beginning with IRR.PWRESET.OWNER or IRR.LU.OWNER. If there are, then the HELPDESK group must be given READ access to each such profile.
699
Help desk
700
This topic provides information about how to map a distributed identity to a RACF user ID and administer distributed identity filters using the RACMAP command.
701
Example:
RACMAP ID(GUSKI) MAP USERDIDFILTER(NAME(UID=RICH,OU=Web Sales,O=Rich Radio Ham,L=Internet)) REGISTRY(NAME(ldaps://us.richradioham.com)) WITHLABEL(Richs name filter)
For complete syntax, authorization requirements, and usage details for the RACMAP command, see z/OS Security Server RACF Command Language Reference. Note: The MAP, DELMAP and LISTMAP functions of the RACMAP command are unrelated to the MAP, DELMAP and LISTMAP functions of the RACDCERT command.
702
703
704
For complete syntax details for defining the USERDIDFILTER value using the RACMAP command, see z/OS Security Server RACF Command Language Reference. The user name value is stored in the IDIDMAP profile as the profile name in UTF-8 data. For information about the encoded UTF-8 data in IDIDMAP profiles, see Restrictions for UTF-8 data values on page 708. For details about how RACF matches the distributed user's registry and user name with your specified filter values, see How RACF matches filter values on page 706.
705
706
707
For example, you might define a default RACMAP filter to map a RACF user ID, such as WEBUSER, to any user of z/OS transactions that access information of general or public interest. This is useful when you want to serve selected information, such as product catalogs, to any Web user. In these cases, the user's distributed identity, and the registry that was used for authentication, are unimportant. Guideline: When implementing a default RACMAP filter, map the filter to a RACF user ID that is restricted and protected. For more information, see Defining restricted user IDs on page 91 and Defining protected user IDs on page 90. Example:
ALTUSER WEBUSER RESTRICTED NOPASSWORD
708
1.
______________________________________________________________________
2.
Activate the IDIDMAP class and enable it for RACLIST processing. Example:
SETROPTS CLASSACT(IDIDMAP) RACLIST(IDIDMAP)
If the IDIDMAP class is already active and enabled for RACLIST processing, refresh the IDIDMAP class profiles.
SETROPTS RACLIST(IDIDMAP) REFRESH
______________________________________________________________________
3.
Results:
Mapping information for user DENICE: Label: Filter for Denice from Registry01 Distributed Identity User Name Filter: >DENICE< Registry name: >Registry01<
______________________________________________________________________
709
710
1.
______________________________________________________________________
2.
Activate the IDIDMAP class and enable it for RACLIST processing. Example:
SETROPTS CLASSACT(IDIDMAP) RACLIST(IDIDMAP)
If the IDIDMAP class is already active and enabled for RACLIST processing, refresh the IDIDMAP class profiles.
SETROPTS RACLIST(IDIDMAP) REFRESH
______________________________________________________________________
3.
Results:
Mapping information for user RLCOOK: Label: Accounting boss Distributed Identity User Name Filter: >UID=BobC,CN=Bob Cook,OU=Accounting,O=BobsMart,C=US< Registry name: >ldaps://us.bobsmarturl.com<
______________________________________________________________________ You have implemented a distributed identity filter that specifies the user name as a full X.500 distinguished name. This filter assigns the RACF user ID RLCOOK to only one distributed identity that matches all RDNs of the user name and matches the LDAP URL specified as the registry name. If you want to map other users in the same organization who have lower levels of access authority, you might add additional filters. For examples, see Steps for defining a filter using selected RDNs.
711
1.
Note: The user name in this example is based on the DN from the example in Steps for defining a filter for a full X.500 DN on page 710, and omits the most specific RDNs for UID and CN. ______________________________________________________________________
2.
Activate the IDIDMAP class and enable it for RACLIST processing. Example:
SETROPTS CLASSACT(IDIDMAP) RACLIST(IDIDMAP)
If the IDIDMAP class is already active and enabled for RACLIST processing, refresh the IDIDMAP class profiles.
SETROPTS RACLIST(IDIDMAP) REFRESH
______________________________________________________________________
3.
Results:
Mapping information for user ACCTUSER: Label: Accounting office workers Distributed Identity User Name Filter: >OU=Accounting,O=BobsMart,C=US< Registry name: >ldaps://us.bobsmarturl.com<
______________________________________________________________________ You have implemented a distributed identity filter that specifies the user name as a string of selected RDNs of an X.500 distinguished name. This filter assigns the RACF user ID ACCTUSER to any distributed identity that matches the selected components specified in the user name and matches the LDAP URL specified as registry name. If you want to map other users in the same organization who have lower levels of access authority, you might add additional filters. For example, if all DNs in the us.bobsmarturl.com registry contain the O=BobsMart,C=US RDNs, you might map all users in the us.bobsmarturl.com registry by adding another filter as follows:
RACMAP ID(BOBSUSER)MAP USERDIDFILTER(NAME(O=BobsMart,C=US)) REGISTRY(NAME(ldaps://us.bobsmarturl.com)) WITHLABEL(All BobsMart employees)
712
1.
______________________________________________________________________
2.
713
714
APPCSERV APPCSI APPCTP APPL CACHECLS CBIND CDT CFIELD CONSOLE DASDVOL DBNFORM DEVICES
Controlling access to MCS consoles. Also, conditional access to other resources for commands originating from an MCS console. DASD volumes. Reserved for future IBM use. Used by MVS allocation to control who can allocate devices such as: v Unit record devices (printers and punches) (allocated only by PSF, JES2, or JES3) v Graphics devices (allocated only by VTAM) v Teleprocessing (TP) or communications devices (allocated only by VTAM)
DIGTCERT
715
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name DIGTCRIT DIGTNMAP DIGTRING DIRAUTH Description Specifies additional criteria for certificate name filters. Mapping class for certificate name filters. Contains a profile for each key ring and provides information about the digital certificates that are part of each key ring. Setting logging options for RACROUTE REQUEST=DIRAUTH requests. Also, if the DIRAUTH class is active, security label authorization checking is done when a user receives a message sent through the TPUT macro or the TSO SEND, or LISTBC commands. 5 The data lookaside facility. Miscellaneous uses. Profiles are defined in this class so resource managers (typically elements of z/OS or z/VM) can check a user's access to the profiles when the user takes some action. Examples are the profiles used to control execution of RACDCERT command functions and the profiles used to control privileges in the z/OS UNIX environment. RACF does not document all of the resources used in the FACILITY class by other products. For information on the FACILITY class resources used by a specific product (other than RACF itself), see that product's documentation. FIELD GDASDVOL GLOBAL GMBR GSDSF GTERMINL GXFACILI IBMOPC IDIDMAP JESINPUT JESJOBS JESSPOOL KEYSMSTR Fields in RACF profiles (field-level access checking). Resource group class for DASDVOL class. Global access checking table entry.
1 4 1 1 1
DLFCLASS FACILITY
Member class for the GLOBAL class. Resource group class for SDSF class.
Resource group class for TERMINAL class. Grouping class for XFACILIT resources.
Controlling access to OPC/ESA subsystems. Contains distributed identity filters created with the RACMAP command. Conditional access support for commands or jobs entered into the system through a JES input device. Controlling the submission and cancellation of jobs by job name. Controlling access to job data sets on the JES spool (that is, SYSIN and SYSOUT data sets). Contains profiles that hold keys to encrypt data stored in the RACF database, such as LDAP BIND passwords, DCE passwords, and Distributed File Service (DFS) Server Message Block (SMB) passwords. Controls authorization roles for LDAP administration. Contains the LDAP server URL, bind distinguished name, and bind password. Controls system logger resources, such as log streams and the coupling facility structures associated with log streams. Controlling the following on MVS systems: v Whether jobs are allowed to enter the system from other nodes v Whether jobs that enter the system from other nodes have to pass user identification and password verification checks
716
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name NODMBR OPERCMDS PMBR PROGRAM PROPCNTL Description Member class for the NODES class.
4
Controlling who can issue operator commands (for example, JES and MVS, and operator commands). 2 Member class for the PROGRAM class. Protects executable programs.
1 4
Controlling if user ID propagation can occur, and if so, for which user IDs (such as the CICS or IMS main task user ID), user ID propagation is not to occur. Used by PSF to perform security functions for printing, such as separator page labeling, data page labeling, and enforcement of the user printable area. PassTicket key class enables the security administrator to associate a RACF secured signon secret key with a particular mainframe application that uses RACF for user authentication. Examples of such applications are IMS, CICS, TSO, z/VM, APPC, and MVS batch. Contains profiles that control the following events: v LDAP change log notification for changes to certain RACF profiles v New password and password phrase enveloping for a given user. Used by IBM Health Checker for z/OS. Contains profiles that list the resources to check for each installation-defined health check. 1 RACF variables. In this class, profile names, which start with & (ampersand), act as RACF variables that can be specified in profile names in other RACF general resource classes. Class of profiles that hold the results of RACROUTE REQUEST=LIST,GLOBAL=YES or a SETROPTS RACLIST operation. Used by IBM Health Checker for z/OS. Member class for the RACFHC class. 1 Used to control use of the R_datalib callable service (IRRSDL00 or IRRSDL64). Used to control RACF remote sharing facility (RRSF) functions. Member class for the RACFVARS class. Member class for the SECDATA class.
4 4
PSFMPL
PTKTDATA
RACFEVNT
RACFHC RACFVARS
RACGLIST RACHCMBR RDATALIB RRSFDATA RVARSMBR SCDMBR SDSF SECDATA SECLABEL SECLMBR SERVAUTH
Controls the use of authorized commands in the System Display and Search Facility (SDSF). See also GSDSF class. Security classification of users and data (security levels and security categories). 1 If security labels are used, and, if so, their definitions. Member class for the SECLABEL class.
4 2
Contains profiles used by servers to check a client's authorization to use the server or to use resources managed by the server. Also, can be used to provide conditional access to resources for users entering the system from a given server. Controlling the server's ability to register with the daemon. Controlling to which users a user can send messages (TSO only). Controlling the client's ability to invoke the method in the class. Used in preference to the started procedures table to assign an identity during the processing of an MVS START command.
Appendix A. Supplied RACF resource classes
717
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name SURROGAT SYSMVIEW TAPEVOL TEMPDSN TERMINAL VTAMAPPL WRITER XFACILIT Description If surrogate submission is allowed, and if allowed, which user IDs can act as surrogates. Controlling access by the SystemView for MVS Launch Window to SystemView for MVS applications. Tape volumes. Controlling who can access residual temporary data sets. Terminals (TSO or z/VM). See also GTERMINL class. Controlling who can open ACBs from non-APF authorized programs. Controlling the use of JES writers. Miscellaneous uses. Profile names in this class can be longer than 39 characters in length. Profiles are defined in this class so that resource managers (typically elements of z/OS) can check a user's access to the resources when the users take some action. CICS classes ACICSPCT BCICSPCT CCICSCMD CPSMOBJ CICS program control table.
2 1 5
Used to verify that a user is permitted to use CICS system programmer commands such as INQUIRE, SET, PERFORM, and COLLECT. 1 Used by CICSPlex System Manager, which provides a central point of control when running multiple CICS systems, to determine operational controls within a CICS complex. Used by CICSPlex System Manager to identify exemptions from security controls within a CICS complex. CICS destination control table.
2 2 2 1
CPSMXMP DCICSDCT ECICSDCT FCICSFCT GCICSTRN GCPSMOBJ HCICSFCT JCICSJCT KCICSJCT MCICSPPT NCICSPPT PCICSPSB QCICSPSB RCICSRES SCICSTST TCICSTRN UCICSTST VCICSCMD WCICSRES
Resource group class for the DCICSDCT class. CICS file control table.
Resource group class for TCICSTRN class. Resource grouping class for CPSMOBJ.
Resource group class for the FCICSFCT class. CICS journal control table.
2 1
Resource group class for the JCICSJCT class. CICS processing program table.
2
Resource group class for the MCICSPPT class. CICS program specification blocks (PSBs). Resource group class for the PCICSPSB class. CICS document templates. CICS temporary storage table. CICS transactions. Resource group class for SCICSTST class.
1 2 1
Resource group class for the CCICSCMD class. Resource group class for the RCICSRES class. DB2 classes
DSNADM
718
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name DSNR GDSNBP GDSNCL GDSNDB GDSNJR GDSNPK GDSNPN GDSNSC GDSNSG GDSNSM GDSNSP GDSNSQ GDSNTB GDSNTS GDSNUF GDSNUT MDSNBP MDSNCL MDSNDB MDSNJR MDSNPK MDSNPN MDSNSC MDSNSG MDSNSM MDSNSP MDSNSQ MDSNTB MDSNTS MDSNUF MDSNUT Description Controls access to DB2 subsystems. Grouping class for DB2 buffer pool privileges. Grouping class for DB2 collection privileges. Grouping class for DB2 database privileges. Grouping class for Java archive files (JARs). Grouping class for DB2 package privileges. Grouping class for DB2 plan privileges. Grouping class for DB2 schemas privileges. Grouping class for DB2 storage group privileges. Grouping class for DB2 system privileges. Grouping class for DB2 stored procedure privileges. Grouping class for DB2 sequences. Grouping class for DB2 table, index, or view privileges. Grouping class for DB2 tablespace privileges. Grouping class for DB2 user-defined function privileges. Grouping class for DB2 user-defined distinct type privileges. Member class for DB2 buffer pool privileges. Member class for DB2 collection privileges. Member class for DB2 database privileges. Member class for Java archive files (JARs). Member class for DB2 package privileges. Member class for DB2 plan privileges. Member class for DB2 schema privileges. Member class for DB2 storage group privileges. Member class for DB2 system privileges. Member class for DB2 stored procedure privileges. Member class for DB2 sequences. Member class for DB2 table, index, or view privileges. Member class for DB2 tablespace privileges. Member class for DB2 user-defined function privileges. Member class for DB2 user-defined distinct type privileges. DCE class DCEUUIDS Used to define the mapping between a user's RACF user ID and the corresponding DCE principal UUID. Also, used to enable encrypted password support for Distributed File Service (DFS) Server Message Block (SMB) users. Enterprise Identity Mapping (EIM) class RAUDITX Controls auditing for Enterprise Identity Mapping (EIM). Enterprise Java Beans classes EJBROLE GEJBROLE Member class for Enterprise Java Beans authorization roles. Grouping class for Enterprise Java Beans authorization roles.
Appendix A. Supplied RACF resource classes
719
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name JAVA Description Contains profiles that are used by Java for z/OS applications to perform authorization checking for Java for z/OS resources. IMS classes AIMS CIMS DIMS FIMS GIMS HIMS IIMS JIMS LIMS MIMS OIMS PIMS QIMS RIMS SIMS TIMS UIMS WIMS Application group names (AGN). Command. Grouping class for command. Field (in data segment). Grouping class for transaction. Grouping class for field. Program specification block (PSB). Grouping class for program specification block (PSB). Logical terminal (LTERM). Grouping class for logical terminal (LTERM). Other. Database. Grouping class for database. Open Transaction Manager Access (OTMA) transaction pipe (TPIPE). Segment (in database). Transaction (trancode). Grouping class for segment. Grouping class for other. Integrated Cryptographic Service Facility (ICSF) classes CRYPTOZ CSFKEYS CSFSERV GCSFKEYS GXCSFKEY XCSFKEY Controls access to PKCS #11 tokens. Controls access to ICSF cryptographic keys. Controls access to ICSF cryptographic services. Resource group class for the CSFKEYS class. Resource group class for the XCSFKEY class.
1 1
PRINTSRV
Controls access to printer definitions for Infoprint Server. Information/Management (Tivoli Service Desk) classes
GINFOMAN INFOMAN
Grouping class for Information/Management (Tivoli Service Desk) resources. Member class for Information/Management (Tivoli Service Desk) resources. LFS/ESA classes
LFSCLASS
ILMADMIN
Lotus Notes for z/OS and Novell Directory Services for OS/390 classes NDSLINK Mapping class for Novell Directory Services for OS/390 user identities.
720
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name NOTELINK Description Mapping class for Lotus Notes for z/OS user identities. MQSeries classes GMQADMIN GMQCHAN GMQNLIST GMQPROC GMQQUEUE MQADMIN MQCHAN MQCMDS MQCONN MQNLIST MQPROC MQQUEUE Grouping class for MQSeries administrative options. Reserved for MQSeries. Grouping class for MQSeries namelists. Grouping class for MQSeries processes. Grouping class for MQSeries queues.
1 1 1 1
Protects MQSeries administrative options. Reserved for MQSeries. Protects MQSeries commands. Protects MQSeries connections. Protects MQSeries namelists. Protects MQSeries processes. Protects MQSeries queues. NetView classes
Controlling which NetView commands the NetView operator can issue. Controlling which NetView commands the NetView operator can issue against the resources in this span. NetView/Access Services. Used by NetView/Access Services Secured Single Signon to store information needed when generating a PassTicket. NetView Remote Operations. NetView Resource Object Data Manager (RODM). z/OS Network Authentication Service classes
KERBLINK
Contains profiles that map local and foreign principals to RACF user IDs. Also controls which users are authorized to use the SKRBKDC started procedure to decrypt service tickets for a given principal. 3 Used to define the local and foreign realms. SMS (DFSMSdfp) classes
3
REALM
SMS management classes. SMS storage classes. Authorizes a subsystem (such as a particular instance of CICS) to open a VSAM ACB and use VSAM record level sharing (RLS) functions. Tivoli classes
ROLE
Specifies the complete list of resources and associated access levels that are required to perform the particular job function this role represents and defines which RACF groups are associated with this role. Maps the user IDs of Tivoli administrators to RACF user IDs. TSO classes
TMEADMIN
TSO account numbers. TSO performance groups. TSO user authorities such as OPER and MOUNT.
721
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name TSOPROC Description TSO logon procedures. WebSphere MQ classes GMXADMIN GMXNLIST GMXPROC GMXQUEUE GMXTOPIC MXADMIN MXNLIST MXPROC MXQUEUE MXTOPIC Grouping class for WebSphere MQ administrative options. Grouping class for WebSphere MQ namelists. Grouping class for WebSphere MQ processes. Grouping class for WebSphere MQ queues. Grouping class for WebSphere MQ topics. Protects WebSphere MQ administrative options. Protects WebSphere MQ namelists. Protects WebSphere MQ processes. Protects WebSphere MQ queues. Protects WebSphere MQ topics. z/OSMF classes ZMFAPLA GZMFAPLA Member class for z/OSMF authorization roles. Grouping class for z/OSMF authorization roles. z/OS UNIX classes DIRACC Controls auditing (using SETROPTS LOGOPTIONS) for access checks for read/write access to z/OS UNIX directories. This class need not be active to control auditing. 5 Controls auditing (using SETROPTS LOGOPTIONS) of z/OS UNIX directory searches. This class need not be active to control auditing.
5
| | |
DIRSRCH FSOBJ
Controls auditing (using SETROPTS LOGOPTIONS) of all access checks for z/OS UNIX file system objects except directory searches. Controls auditing (using SETROPTS AUDIT) of creation and deletion of z/OS UNIX file system objects. This class need not be active to control auditing. 5 Controls auditing (using SETROPTS LOGOPTIONS) of changes to the security data (FSP) for z/OS UNIX file system objects. This class need not be active to control auditing. When this class is active, it also controls whether ACLs are used during authorization checks to z/OS UNIX files and directories. 5 Controls auditing (using SETROPTS LOGOPTIONS) of access checks for interprocess communication (IPC) objects and changes to security information of IPC objects. Controls auditing (using SETROPTS AUDIT) of the creation and deletion of IPC objects. This class need not be active to control auditing. 5 Controls auditing (using SETROPTS LOGOPTIONS) of functions that look at data from, or affect the processing of, z/OS UNIX processes. This class need not be active to control auditing. 5 Controls auditing (using SETROPTS LOGOPTIONS) of changes to UIDs and GIDs of z/OS UNIX processes. Controls auditing (using SETROPTS AUDIT) of dubbing and undubbing of z/OS UNIX processes. This class need not be active to control auditing. 5 Contains profiles that are used to map z/OS UNIX UIDs to RACF user IDs and z/OS UNIX GIDs to RACF group names. Contains profiles that are used to grant z/OS UNIX privileges.
FSSEC
IPCOBJ
PROCACT
PROCESS
UNIXMAP UNIXPRIV
722
CDT classes
Table 37. Resource classes for z/OS systems (continued) Class name Restrictions: 1. Do not specify this class name on the GENCMD, GENERIC, and GLOBAL/NOGLOBAL operands of the SETROPTS command. 2. Do not specify this class name on the GLOBAL operand of SETROPTS or, if you do, the GLOBAL checking is not performed. 3. Do not specify this class name on the GENCMD and GENERIC operands of the SETROPTS command. 4. Do not specify this class name with any RACF command. This is a member class associated with a grouping class that has a special use. 5. Profiles are not allowed in this class. Description
Terminals whose IDs do not fit into generic profile naming conventions. When class is active, PSF/VM performs separator and data page labeling as well as auditing. PassTicket key class. Used by NetView/Access Services Secured Single Signon to store information needed when generating a PassTicket. RACF variables. In this class, profile names, which start with & (ampersand), act as RACF variables that can be specified in profile names in other RACF general resource classes. Member class for RACFVARS.
3 3
RVARSMBR SCDMBR
723
CDT classes
Table 38. Resource classes for z/VM systems (continued) Class name SECDATA SECLABEL SFSCMD TAPEVOL TERMINAL VMBATCH VMBR VMCMD Description Security classification of users and data (security levels and security categories). 1 If security labels are used and, if so, their definitions.
2
Controls the use of shared file system (SFS) administrator and operator commands. Tape volumes. Terminals (TSO or z/VM). See also GTERMINL class. Alternate user IDs. Member class for VMEVENT class.
3
Certain CP commands and other requests on z/VM. Controls access to z/VM real devices. Auditing and controlling security-related events (called z/VM events) on z/VM systems. Controls access to z/VM guest LANs and virtual switches. Used in conjunction with the SECLABEL class to provide security label authorization for some z/VM events. 4 z/VM minidisks. RSCS nodes. z/VM unit record devices (virtual reader, virtual printer, and virtual punch). Restricted segments, which can be named saved segments (NSS) and discontiguous saved segments (DCSS). Member class for VMXEVENT class.
3
VMDEV VMEVENT VMLAN VMMAC VMMDISK VMNODE VMRDR VMSEGMT VXMBR VMXEVENT VMPOSIX WRITER Restrictions:
Auditing and controlling security-related events (called z/VM events) on z/VM systems. Contains profiles used by OpenExtensions for z/VM. z/VM print devices.
1. Do not specify this class name on the GENCMD, GENERIC, and GLOBAL/NOGLOBAL operands of the SETROPTS command. 2. Do not specify this class name on the GLOBAL operand of SETROPTS or, if you do, the GLOBAL checking is not performed. 3. Do not specify this class name with any RACF command. This is a member class associated with a grouping class that has a special use. 4. Profiles are not allowed in this class.
724
ADDSD
ADDUSER
ALTDSD
v Change one or more discrete or generic data set profiles. v Protect a single volume of a multivolume, non-VSAM DASD data set. v Remove protection from a single volume of a multivolume, non-VSAM DASD data set. v Change information in one or more group profiles (such as the superior group, owner, or model profile name). v Change or delete a custom field for a group. v Change or delete the default DFP information for a group. v Add, change, or delete information for the z/OS UNIX group. v Change information in one or more user profiles (such as the owner, universal access authority, or security level). v Revoke or reestablish one or more users' privileges to access the system. v Specify logging of information about the user, such as the commands the user issues. v Change the password or password phrase for one or more users. v Add, change, or delete information related to one or more segments, such as the TSO and OMVS segments, of the user profile.
ALTGROUP
ALTUSER
725
DELDSD
LISTGRP
LISTUSER
PASSWORD or PHRASE
PERMIT
RACDCERT
v List information about the certificates for a specified RACF-defined user ID, or your own user ID. v Add a certificate and associate it with a specified RACF-defined user ID, or your own user ID, and set the TRUST status. v Check to see if a certificate has been defined to RACF. v Alter the TRUST status or label for a certificate. v Delete a certificate. v List a certificate contained in a data set and determine if it is associated with a RACF-defined user ID. v Add or remove a certificate from a key ring. v Create, delete, or list a key ring. v Generate a public/private key pair and certificate, replicate a digital certificate with a new public/private key pair, or retire the use of an existing private key. v Write (export) a certificate or certificate package to a data set. v Create a certificate request. v Create, alter, delete, or list a certificate name filter (user ID mapping). v Add, delete, or list a z/OS PKCS #11 token. v Bind a certificate to a z/OS PKCS #11 token. v Remove (unbind) a certificate from a z/OS PKCS #11 token. v Import a certificate (with its private key, if present) from a z/OS PKCS #11 token and add it to RACF. v Define, approve, and delete (undefine) a user ID association. v List information related to a user ID association. v Establish password synchronization between user IDs. v Create an association between a distributed user identity and a RACF user ID. v Define, delete, list, and query a distributed identity filter. v List, activate, and inactivate the user's write-down setting. v Reset the user's write-down setting to the installation-defined default.
RACLINK
RACMAP
|
RACPRIV
726
RDEFINE
RDELETE
RVARY
SEARCH
SET
727
SIGNOFF STOP
| TARGET | | | | | | | |
728
PASSWORD or PHRASE with all operands PERMIT RALTER RACDCERT RACLINK RACMAP RDEFINE RDELETE REMOVE RLIST SEARCH SETROPTS with all operands with all operands except GLOBALAUDIT with all operands. You must have the SPECIAL attribute to issue the RACDCERT command. Group-SPECIAL does not suffice. with all operands with all operands. You must have the SPECIAL attribute to issue the RACMAP command. Group-SPECIAL does not suffice. with all operands with all operands with all operands with all operands with all operands with all operands except AUDIT, NOAUDIT, CMDVIOL, NOCMDVIOL, APPLAUDIT, NOAPPLAUDIT, LOGOPTIONS, OPERAUDIT, NOOPERAUDIT, SAUDIT, NOSAUDIT, SECLABELAUDIT, NOSECLABELAUDIT, SECLEVELAUDIT, and NOSECLEVELAUDIT, which require the AUDITOR attribute. Users with the group-SPECIAL attribute can only issue REFRESH GENERIC and LIST.
This command applies to z/OS systems. However, you can issue this command on a z/VM system to maintain a RACF database that is shared by z/OS and z/VM systems.
729
only with GLOBALAUDIT only with UAUDIT or NOUAUDIT with all operands, lists GLOBALAUDIT option with all operands with all operands, lists UAUDIT or NOUAUDIT operand only with GLOBALAUDIT with all operands, lists GLOBALAUDIT option with all operands only with APPLAUDIT, NOAPPLAUDIT, AUDIT, NOAUDIT, CMDVIOL, NOCMDVIOL, LOGOPTIONS, OPERAUDIT, NOOPERAUDIT, SAUDIT, NOSAUDIT, SECLABELAUDIT, NOSECLABELAUDIT, SECLEVELAUDIT, NOSECLEVELAUDIT, LIST, REFRESH GENERIC, or REFRESH RACLIST
This command applies to z/OS systems. However, you can issue this command on a z/VM system to maintain a RACF database that is shared by z/OS and z/VM systems.
when adding new profiles for group data sets with all operands except GLOBALAUDIT with all operands except GLOBALAUDIT with all operands only with REFRESH
This command applies to z/OS systems. However, you can issue this command on a z/VM system to maintain a RACF database that is shared by z/OS and z/VM systems.
with all operands except OPERATIONS, NOOPERATIONS, SPECIAL, NOSPECIAL, AUDITOR or NOAUDITOR only with CLAUTH or NOCLAUTH only with ADDVOL with all operands (special rules apply to ADDMEM)
RDEFINE4,
730
This command applies when you have the CLAUTH attribute of USER and you either are the owner of a group, have JOIN authority in the default group specified in the command, or the profile is within the scope of a group in which you have the group-SPECIAL attribute. This command applies when you have the CLAUTH attribute for the class to be added or deleted, the class name is in the class descriptor table (CDT), and either you are the owner of the user's profile, or the profile is within the scope of a group in which you have the group-SPECIAL attribute. This command applies when you have the CLAUTH attribute of TAPEVOL and you also have sufficient authority to issue the command. These commands apply when you have the CLAUTH attribute for the specified class. For ADDMEM, special rules apply, depending on access to individual resources. For more information, see the description of the ADDMEM operand in z/OS Security Server RACF Command Language Reference.
4 5
Group Authority
If you have a group authority, you can issue the commands and operands shown in Table 44.
Table 44. Commands and operands you can issue if you have a group authority
Group authorities USE CREATE CONNECT Commands and operands you can issue if you have this authority For group resources, the authority allowed the group. ADDSD1 ADDSD1,5 ALTUSER CONNECT LISTGRP REMOVE JOIN ADDGROUP2 ADDSD
1,5 3 4
with all operands except NOSET with all operands except NOSET only with GROUP, AUTHORITY or UACC with all operands except SPECIAL, NOSPECIAL, OPERATIONS, NOOPERATIONS, AUDITOR, or NOAUDITOR only with group name with all operands with all operands with all operands except NOSET with all operands except OPERATIONS, SPECIAL or AUDITOR only with SUPGROUP only with GROUP, AUTHORITY or UACC with all operands except SPECIAL, NOSPECIAL, OPERATIONS, NOOPERATIONS, AUDITOR, or NOAUDITOR with all operands only with group name with all operands
ADDUSER
This command applies to group data sets only. This command applies to the superior group. This command applies only if you have the JOIN group authority in the default group specified in the ADDUSER command and if you also have the CLAUTH(USER) attribute. This command applies to current and new superior groups. You can have JOIN authority in one group and be owner of or be connected with the group-SPECIAL attribute to another group. This command applies to z/OS systems. However, you can issue this command on a z/VM system to maintain a RACF database that is shared by z/OS and z/VM systems.
731
Access Authority
If you have an access authority, you can issue the commands and operands shown in Table 45.
Table 45. Commands and operands you can issue if you have an access authority
Access authorities NONE EXECUTE READ UPDATE CONTROL Commands and operands you can issue if you have this authority None
with all operands except AUTHUSER or ALL with all operands except AUTHUSER or ALL with all operands with all operands except OWNER, NOSET or GLOBALAUDIT with all operands except NOSET with all operands with all operands with all operands except OWNER, ADDVOL3 or GLOBALAUDIT with all operands with all operands
ALTER
ALTDSD1,2 DELDSD
1,2 1,2
LISTDSD PERMIT
2 2
RALTER
RDELETE2 RLIST
1 2
This command applies to z/OS systems. However, you can issue this command on a z/VM system to maintain a RACF database that is shared by z/OS and z/VM systems. This command applies to discrete profiles only. This command applies to ADDVOL operand only if you also have CLAUTH attribute for TAPEVOL.
2 3
DELUSER LISTUSER
732
with all operands with all operands except OPERATIONS, SPECIAL or AUDITOR with all operands only with GROUP, AUTHORITY or UACC with all operands except SPECIAL, NOSPECIAL, OPERATIONS or NOOPERATIONS with all operands with all operands with all operands with all operands except NOSET or GLOBALAUDIT with all operands except NOSET with all operands with all operands
with all operands except GLOBALAUDIT with all operands with all operands with all operands
This command applies to CLAUTH or NOCLAUTH only if you have the CLAUTH attribute for the class to be added or deleted, and the class name is in the class descriptor table (CDT). This command applies to the superior group. This command applies to the default group specified and only if you have the CLAUTH attribute of USER. This command applies to current and new superior groups. You can have JOIN authority in one group and be owner of another group. This command applies to the superior group or group to be deleted. This command applies to the ADDVOL operand only when you also have CLAUTH attribute of TAPEVOL. This command applies to z/OS systems. However, you can issue this command on a z/VM system to maintain a RACF database that is shared by z/OS and z/VM systems.
2 3 4
5 6 7
Other Authorities
Table 47 shows the commands and operands you can issue for reasons not already covered previously.
Table 47. Commands and operands you can issue for miscellaneous reasons
User ID relationship User ID is current user Commands and operands you can issue if you have this authority ALTUSER LISTUSER only with NAME or DFLTGRP only with user ID
733
RACF MVS Operator Commands: DISPLAY Authority granted by OPERCMDS class: See Table 21 on page 277 and z/OS Security Server RACF Command Language Reference. RESTART SET SIGNOFF Authority granted by OPERCMDS class Authority granted by OPERCMDS class Authority granted by OPERCMDS class: See Table 21 on page 277 and z/OS Security Server RACF Command Language Reference. STOP TARGET Authority granted by OPERCMDS class Authority granted by OPERCMDS class
Although no special authority is needed to issue this command, the system operator must supply the appropriate RVARY password, as established by the SETROPTS command with the RVARYPW operand, to approve any change in RACF status.
734
Generation 2 (G2) G2 G2 G2
8. VeriSign Class 1 Public Primary Certification Authority - Generation 3 (G3) 9. VeriSign Class 2 Public Primary Certification Authority - G3 10. VeriSign Class 3 Public Primary Certification Authority - G3 | | | 11. 12. 13. 14. 15. VeriSign Class 3 Public Primary Certification Authority - G4 VeriSign Class 3 Public Primary Certification Authority - G5 VeriSign Class 4 Public Primary Certification Authority - G3 VeriSign Universal Root Certification Authority Thawte Server Certification Authority
16. Thawte Premium Server Certification Authority 17. Thawte Personal Basic Certification Authority 18. Thawte Personal Freemail Certification Authority 19. 20. 21. 22. | Thawte Personal Premium Certification Authority Integrion Certification Authority Root Entrust Secure Server Root Certificate Authority Equifax Secure Certificate Authority
23. ICP-Brasil Certificate Authority 24. ICP-Brasil Certificate Authority - Version 1 25. STG Code-Signing Certificate Authority For more information about the certificate authority certificates that RACF supplies, see Supplied digital certificates on page 618. For instructions about how to use a supplied certificate, see Steps to begin using a supplied CA certificate on page 619. For steps to begin using the STG Code-Signing Certificate Authority, see Steps for preparing RACF to verify signed programs (one-time setup) on page 365. The following listings of the supplied CA certificates were created using the RACDCERT LIST command, which is the preferred method for listing certificate information. The RACF profiles that contain the supplied certificates can also be listed using the RLIST and SEARCH commands. For examples, see Figure 50 on page 587 and Figure 51 on page 588. Note: Start times and end times are listed in Greenwich Mean Time (GMT).
Copyright IBM Corp. 1994, 2011
735
Certificate listings
1. VeriSign Class 1 Public Primary Certification Authority
Label: Verisign Class 1 Primary CA Certificate ID: 2QiJmZmDhZmjgeWFmYmiiYeVQMOTgaKiQPFA15mJlIGZqEDDwUBA Status: NOTRUST Start Date: 1996/01/29 00:00:00 End Date: 2020/01/07 23:59:59 Serial Number: >325033CF50D156F35C81AD655C4FC825< Issuers Name: >OU=Class 1 Public Primary Certification Authority.O=VeriSign, Inc..C=< >US< Subjects Name: >OU=Class 1 Public Primary Certification Authority.O=VeriSign, Inc..C=< >US< Key Type: RSA Key Size: 1024 Private Key: NO Ring Associations: *** No rings associated ***
736
Certificate listings
>4CC7EAAA983E71D39310F83D3A899192< Issuers Name: >OU=VeriSign Trust Network.OU=(c) 1998 VeriSign, Inc. - For authorized< > use only.OU=Class 1 Public Primary Certification Authority - G2.O=Ve< >riSign, Inc..C=US< Subjects Name: >OU=VeriSign Trust Network.OU=(c) 1998 VeriSign, Inc. - For authorized< > use only.OU=Class 1 Public Primary Certification Authority - G2.O=Ve< >riSign, Inc..C=US< Key Type: RSA Key Size: 1024 Private Key: NO Ring Associations: *** No rings associated ***
737
Certificate listings
Issuers Name: >OU=VeriSign Trust Network.OU=(c) 1998 VeriSign, Inc. - For authorized< > use only.OU=Class 4 Public Primary Certification Authority - G2.O=Ve< >riSign, Inc..C=US< Subjects Name: >OU=VeriSign Trust Network.OU=(c) 1998 VeriSign, Inc. - For authorized< > use only.OU=Class 4 Public Primary Certification Authority - G2.O=Ve< >riSign, Inc..C=US< Key Type: RSA Key Size: 1024 Private Key: NO Ring Associations: *** No rings associated ***
738
Certificate listings
>CN=VeriSign Class 3 Public Primary Certification Authority - G3.OU=(c< >) 1999 VeriSign, Inc. - For authorized use only.OU=VeriSign Trust Net< >work.O=VeriSign, Inc..C=US< Subjects Name: >CN=VeriSign Class 3 Public Primary Certification Authority - G3.OU=(c< >) 1999 VeriSign, Inc. - For authorized use only.OU=VeriSign Trust Net< >work.O=VeriSign, Inc..C=US< Key Type: RSA Key Size: 2048 Private Key: NO Ring Associations: *** No rings associated ***
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
739
Certificate listings
Issuers Name: >CN=VeriSign Class 4 Public Primary Certification Authority - G3.OU=(c< >) 1999 VeriSign, Inc. - For authorized use only.OU=VeriSign Trust Net< >work.O=VeriSign, Inc..C=US< Subjects Name: >CN=VeriSign Class 4 Public Primary Certification Authority - G3.OU=(c< >) 1999 VeriSign, Inc. - For authorized use only.OU=VeriSign Trust Net< >work.O=VeriSign, Inc..C=US< Key Type: RSA Key Size: 2048 Private Key: NO Ring Associations: *** No rings associated ***
| | | | | | | | | | | | | | | | | | | | | |
740
Certificate listings
>n Services Division.O=Thawte Consulting cc.L=Cape Town.SP=Western Cap< >e.C=ZA< Subjects Name: >[email protected]=Thawte Premium Server CA.OU=Certificatio< >n Services Division.O=Thawte Consulting cc.L=Cape Town.SP=Western Cap< >e.C=ZA< Key Type: RSA Key Size: 1024 Private Key: NO Ring Associations: *** No rings associated ***
741
Certificate listings
>pe.C=ZA< Subjects Name: >[email protected]=Thawte Personal Premium CA.OU=Certific< >ation Services Division.O=Thawte Consulting.L=Cape Town.SP=Western Ca< >pe.C=ZA< Key Type: RSA Key Size: 1024 Private Key: NO Ring Associations: *** No rings associated ***
742
Certificate listings
Key Type: RSA Key Size: 1024 Private Key: NO Ring Associations: *** No rings associated ***
| | | | | | | | | | | | | | | | | | | |
743
Certificate listings
744
Specifying a UACC of NONE for the SYS1.* profile protects any system data sets that are added to the system by new products. If new system data sets need a UACC higher than NONE or a SECLABEL of SYSLOW, you can create more specific profiles for them. You should also create specific profiles for particular data sets (or groups of data sets, such as SYS1.DUMPxx data sets), using the information in Table 48. For any data set that is listed with a UACC of READ or higher, you should consider creating an entry in the global access checking table. For more information, see Setting Up the Global Access Checking Table on page 218. For system data sets that are listed in the table with a UACC higher than NONE, you might prefer to specify UACC(NONE) and create an access list entry of ID(*) ACCESS(access-authority). This entry prevents restricted users and users who are not defined to RACF from accessing the data sets. Restricted users enter the system with a user ID that is defined with the RESTRICTED attribute, and might be shared by many users. Restricted users are prevented from gaining access to protected resources through the global access checking table, UACC, or the ID(*) entry on the access list. User IDs defined with the RESTRICTED attribute must be specifically authorized with sufficient authority on the access list of any protected resource they must access. Therefore, to allow restricted users to access any data set listed with UACC of READ or higher in Table 48, each user ID with the RESTRICTED attribute must be specifically authorized at the level of access indicated by the UACC value.
Table 48. UACC values for system data sets Data set APF libraries Checkpoint data sets Distribution library data sets UACC NONE NONE NONE Comments Authorized program facility libraries.
745
JES2 offload data sets Load libraries Master catalog Page data sets
NONE READ READ NONE Includes PLPA, common, and local page data sets. See z/OS MVS Initialization and Tuning Guide.
PSF secure font data sets PSF secure overlay data sets PSF secure page segment data sets RMF data sets Security definitions data sets SMP data sets Swap data sets SYS1.AMACLIB SYS1.AMODGEN SYS1.ASAMPLIB SYS1.BRODCAST SYS1.CMDLIB SYS1.DAE SYS1.DUMPxx SYS1.HELP SYS1.IMAGELIB SYS1.JESPARM SYS1.JES3LIB SYS1.LINKLIB SYS1.LOGREC SYS1.LPALIB
NONE NONE NONE NONE NONE NONE NONE READ READ READ READ READ NONE NONE READ NONE NONE READ READ NONE READ UACC can be NONE or READ depending on your installation's security policy. See z/OS MVS Initialization and Tuning Reference. TSO online help. VSAM data sets.
READ NONE READ READ READ READ SMF data sets. See z/OS MVS Initialization and Tuning Reference.
746
SYS1.PROCLIB SYS1.RACF
READ NONE Includes data sets that comprise the active and backup RACF databases, split data sets created with the IRRUT400 utility, and archival copies. Your installation might use other data set names.
SYS1.SAMPLIB SYS1.SAXREXEC
READ READ System REXX library, or any libraries defined in the REXXLIB concatenation. UACC can be NONE or READ depending on your installation's security policy.
SYS1.STGINDEX SYS1.SVCLIB SYS1.TELCMLIB SYS1.UADS SYS1.VTOCIX... SYS1.VVDS... SYS1.VTAMLIB SYS1.VTAMLST Trace data sets User catalogs User dump data sets
NONE NONE READ NONE NONE NONE READ NONE NONE UPDATE NONE
747
748
This topic explains how to debug the profile definitions in the RACF database and the current RACF options. It also discusses RACF authorization checking and refresh timing. This topic describes how to debug problems with your profile definitions. It is designed to help you determine how your current RACF options and profiles work for you. For example, if users have access to resources that they should not have, or if users do not have access to resources that they should have, this topic might be helpful in determining how to correct the problem. Note: If you have a problem that you suspect is caused by RACF, and not by your use of RACF, see z/OS Security Server RACF Diagnosis Guide for information on correcting the problem.
749
Debugging
v If the ICH408I message indicates that access was denied because of a revoked user ID, you might want to resume that user ID. Check if the user ID is associated with the started procedure. If there was a user ID associated with the started procedure, this started procedure could not have begun successfully. After you resume the user ID, you must restart the started procedure or re-IPL. v If the ICH408I message indicates that access was denied because of a profile, check the profile listing to make sure the user or job should have access. You should check not only the UACC and access lists, but the security classification of the resource profile and the user. Note that installation exits (both RACF exits and certain exits in products that call RACF, such as JES) can affect a user's access to resources. To check the user's access to the resource, ask the user who had the problem to list the profile protecting the resource and check the YOUR ACCESS field of the listing. For general resources, the user can issue the RLIST command. For data sets, the user can issue the LISTDSD command. If no data set profile is found, or the data set profile allows the user sufficient access, check if the TAPEVOL class is active. If active, ask the user to issue the RLIST command against the FROM profile in the TAPEVOL class. v If the user cannot issue the LIST command, do it yourself. In the listing supplied by RACF, the following fields can, by themselves, deny access to a user: The security level or security category, or both The security label The standard access list (ID and ACCESS) The universal access authority (UACC) v If the profile listing indicates that the user or job should have access, and the profile is in a class for which SETROPTS RACLIST processing or SETROPTS GENLIST processing is in effect, make sure that any in-storage profiles are refreshed by doing the following: If the resource is protected by a generic profile in a class that is not RACLISTed or GENLISTed, ask the user to log off and log on again, or resubmit the job. This refreshes the user's copy of the profile. Issue the SETROPTS GENERIC(classname) REFRESH or SETROPTS RACLIST(classname) REFRESH command again. For information about SETROPTS REFRESH processing on shared systems, see Refreshing Shared Systems (REFRESH Option) on page 142. v You can use audit records to gather information that you would not otherwise have. In particular, you can request that audit records be generated for all accesses to protected resources, or for only failed accesses. You can also request that audit records be kept for a particular user. With the auditing in effect, you can use the RACF report writer to view the access requests associated with the access requests. Note: In some cases (such as some resources in the OPERCMDS class), a RACROUTE request from a resource manager can include a log string, which is a string of characters to be placed in the SMF record if the access is audited. The log string can be useful in determining what kind of action the user was taking. For example, the log string might include the exact operator command, as the operator issued it.
| | |
750
Debugging
Note: Do not ignore the presence of entries containing &RACGPID or &RACUID. v If the profile is a generic profile, use the SETROPTS LIST command to ensure that generic profile checking is in effect for the class. v Make sure you know which profile is actually protecting the resource. For example, a more specific profile might actually be used instead of the generic profile you believe protects the resource. The more specific profile might grant the user the access. To do this, issue the LISTDSD and RLIST command, specifying the resource name. For the LISTDSD command, if you receive a message indicating that no profile is found, issue the command again with the GENERIC operand to check for any generic profiles that might protect the resource. v Check the user's access to the resource. You can do this in two ways: Ask the user to list the profile protecting the resource. For example, the user can issue the LISTDSD and RLIST command, specifying the resource name. For the LISTDSD command, if the user receives a message indicating that no profile is found, have the user issue the command again with the GENERIC operand to check for any generic profiles that might protect the resource. Have the user check the YOUR ACCESS field in the profile listing. If this field indicates that the user or job should have access, use the steps described in Authorizing Access to RACF-Protected Resources on page 754 to analyze the profile for reasons why the user or job has that access. If the user cannot issue the LIST command, do it yourself. In the listing supplied by RACF, the following fields can, by themselves, allow access to a user: - For data sets and minidisks, the high-level qualifier
Appendix E. Debugging problems in the RACF database
751
Debugging
- The standard access list - The conditional access list - UACC - WARNING If list-of-groups processing is in effect on your system, check to see if a group of which the user is a member is in the access list. Check both the standard access list and the conditional access list. Also, note that installation exits (both RACF exits and certain exits in products that call RACF, such as JES) can affect a user's access to resources. v If your analysis of the protecting profile shows that the user should not have access, continue with the following checks. v If the SETROPTS RACLIST processing or SETROPTS GENLIST processing is in effect, make sure that any in-storage profiles are refreshed. If the resource is protected by a generic profile in a class that is not RACLISTed or GENLISTed, ask the user to log off and log on again, or resubmit the job. This refreshes the user's copy of the profile. Issue the SETROPTS GENERIC(classname) REFRESH or SETROPTS RACLIST(classname) REFRESH command again. For information about SETROPTS REFRESH processing on shared systems, see Refreshing Shared Systems (REFRESH Option) on page 142. v You can use audit records to gather information that you would not otherwise have. In particular, you can request that audit records be generated for all accesses to protected resources, or for only successful accesses. You can also request that audit records be kept for a particular user. With the auditing in effect, you can use the RACF report writer to view the access requests associated with the access requests. Note: In some cases (such as some resources in the OPERCMDS class), a RACROUTE request from a resource manager can include a log string, which is a string of characters to be placed in the SMF record if the access is audited. The log string can be useful in determining what kind of action the user was taking. For example, the log string might include the exact operator command, as the operator issued it.
If the user is logged on, the system displays a message indicating that a job with the letters TSU in it is executing. v If the user is logged on and has not yet opened the data set or a data set protected by the same generic profile (for example, by browsing or editing). If the user is logged on and has opened the data set, and you change his access, two situations could occur: v If the profile is a discrete profile, the user's access changes after closing the data set.
752
Debugging
v If the profile is a generic profile, the user's access changes after one of the following occurs: The user issues the LISTDSD command as follows:
LISTDSD DATASET(data-set-protected-by-the-profile) GENERIC
This places a fresh copy of the profile in the user's address space. A SETROPTS GENERIC(DATASET) REFRESH is issued on the system the user is logged on to or from another system in the RACF sysplex data sharing group, if RACF is enabled for sysplex communication. The user references more than the default or installation-specified number of data sets with different high-level qualifiers for this address space, and the data sets are protected by generic profiles. (The installation specifies the number with the GENERICANCHOR option of the SET command. Four is the default number.) The user logs off and then logs back on.
7. If the RACHECK macro is issued instead of RACROUTE, authorization processing begins at Step 6 on page 754. Appendix E. Debugging problems in the RACF database
753
Debugging
For general resource classes, the default return code is the not protected return code, unless otherwise specified in the class descriptor table (CDT) entry for the class. For the DATASET class, the default return code is the not protected return code, unless the SETROPTS PROTECTALL(FAILURES) option is in effect, in which case the default return code is the not authorized return code. If the not protected return code is issued, the resource manager then either fails or allows the request. Most resource managers allow the request. RACF issues a message indicating that the resource is not protected. Notes: 1. SMF log records or messages might be generated, depending on the options in effect and whether RACF granted or denied access to the resource. 2. When checking authorization for a directed command, RACF uses the authorization of the target user ID, not the issuing user ID.
754
Debugging
v If the user has the privileged attribute, RACF grants the request (unless the CSA or PRIVATE operand was specified on the authorization request). Such requests cannot be audited. 7. RACF invokes the naming convention table if: v The naming convention routine exists v The resource being checked is a CLASS data set The naming convention table can continue REQUEST=AUTH processing or deny the request. 8. The REQUEST=AUTH preprocessing exit (ICHRCX01) can grant or deny the request. 9. If the requesting user has a default user token (created by SAF), RACF denies the request. 10. If SETROPTS MLQUIET is in effect (see Quiescing RACF Activity (MLQUIET Option) on page 146), RACF denies the request unless the user has the SPECIAL attribute, has the privileged or trusted attribute, or is logged on at a system console. 11. If the user ID in the RTOKEN for the resource matches the user ID in the UTOKEN for the user making a request, RACF grants the request. This allows a user to cancel one of the user's own jobs using the TSO CANCEL command without being affected by the user's current security label. RTOKEN processing typically applies to resources in the JESSPOOL class, but it might not apply to all JESSPOOL resources based on processing by the application or resource manager. 12. If global access checking is active for the class, RACF searches the global access table (unless the CSA or PRIVATE operand was specified on the authorization request). If RACF finds a matching entry that allows access to the resource, RACF grants the request for all users, except those with the RESTRICTED attribute. 13. RACF looks for a profile in storage or in the RACF database. If no profile is found that protects the resource, RACF returns the default return code of the class. See the entry for the class in the class descriptor table (CDT) described in z/OS Security Server RACF Macros and Interfaces.) Specifically, no profile is found in the following cases: v Profiles for the class exist in the user's storage or in a data space, but no profile matches the resource name. v Profiles for the class do not exist in the user's storage, in a data space, or in the RACF database. Note: If you expect generic profiles to be used by RACF authorization checking, list their profile names using the SEARCH command. If the profile names listed by the SEARCH command are not followed by (G), RACF does not treat them as generic profiles. To recover, perform the following steps: a. Issue SETROPTS NOGENERIC(classname). b. Issue SETROPTS NOGENCMD(classname). c. Delete the profiles. (If the profiles have complicated specifications, such as long access lists, you might want to define dummy profiles modeled on them before deleting them. Specify the FROM operand on the RDEFINE command. d. Issue SETROPTS GENERIC(classname). e. Define the profiles again.
755
Debugging
14. If your installation has activated the SECLABEL class, RACF performs security label authorization checking. For a complete description, see Security Label Authorization Checking on page 770. If security label authorization checking succeeds, RACF authorization checking continues with Step 16. 15. If the SECLABEL class is not active, the SECDATA class is active, and the requested resource has a security level or security category specified, RACF makes two checks in the sequence described below. a. RACF compares the security level (SECLEVEL) in the user profile with the security level in the resource profile. If the resource has a higher security level than the user, or if the user has no security level, RACF denies the request. For a terminal session, RACF uses the lower of the user's SECLEVEL and the terminal's SECLEVEL when authorizing access to a resource. For example, if the user has a SECLEVEL of 100 and the terminal has a SECLEVEL of 50, RACF uses the terminal's SECLEVEL during authorization checking. Thus, in this case, the user cannot access, through the terminal, any resource with a SECLEVEL greater than 50. (If the terminal is not defined to RACF or is defined without a SECLEVEL, RACF uses the user's SECLEVEL to determine the resources that can be accessed.) If the security level check passes, authorization checking continues with the following check. b. RACF compares the list of security categories in the user profile with the list of security categories in the resource profile. If the resource profile contains a security category that is not in the user's profile, RACF denies the request. Unlike the security level check, RACF uses only the user's security category list for a terminal session. If both checks succeed, RACF continues authorization checking with Step 16. 16. If users attempt to access their own resources, RACF grants the request. For example: v For tape and DASD data sets, if the user ID of the requesting user is the high-level qualifier of the data set name, RACF grants the request. v For spool data sets, if the JESSPOOL class is active, RACF compares the user ID and node of the requester with the user ID and node of the creator of the spool data set (using the security token). If the user IDs match, RACF grants the request. 17. RACF checks the user's access authority in the standard access list. If the user is in the list and if the specified access authority is sufficient to allow access, RACF grants the request. If the user is in the list and if the specified access authority is less than the requested access, RACF continues processing at Step 22 on page 757 (conditional access list checking). This prevents access based on ID(*), UACC, or the OPERATIONS attribute. This could happen if, for example, user JOE requests UPDATE access, and the standard access list includes ID(JOE) ACCESS(READ). 18. RACF determines whether the user has access to the resource because the user is a member of a group and the group is on the standard access list. Which group is used depends on whether list-of-groups processing is in effect. (List-of-groups processing is in effect if the SETROPTS command has been issued with the GRPLIST operand.) RACF determines which group to use according to the following rules:
756
Debugging
v If list-of-groups processing is not in effect, RACF uses only the user's current connect group. v If list-of-groups processing is in effect, RACF finds all of the groups to which the user is connected that are also in the access list. Of these groups, RACF uses the group that has the highest access authority to the resource. (For example, assume that a user is a member of groups A, B, and C. If group A has NONE access authority, group B has READ access authority, and group C has UPDATE access authority, RACF uses group C to determine the user's access.) If the highest access authority is sufficient to allow the requested access, RACF grants the request. If the highest group that was found in the list does not have the requested authority, RACF continues processing at Step 22 (conditional access list checking). This prevents access based on ID(*), UACC, or the OPERATIONS attribute. 19. If a user ID of * is found on the standard access list, the current user is defined to RACF without the RESTRICTED attribute, and the access authority granted to * is: v Sufficient to allow the requested access, RACF grants the request. v Not sufficient to allow the requested access, RACF continues processing at Step 21 (OPERATIONS attribute checking). 20. If the universal access authority (UACC) for the resource provides sufficient access authority and the requesting user is not defined with the RESTRICTED attribute, RACF grants the request. 21. If the requesting user has the OPERATIONS attribute (or group-OPERATIONS if the resource is within the scope of that group) and OPERATIONS access is allowed for the class, RACF grants the request. 22. RACF checks the user's access authority in the conditional access list specified with WHEN(TERMINAL), WHEN(CONSOLE), WHEN(APPCPORT), WHEN(JESINPUT) or WHEN(SERVAUTH). If the user is in the list, if the user meets the specified condition (such as logged on at the specified terminal), and if the specified access authority is sufficient to allow access, RACF grants the request. If the user is in the list with insufficient access authority, RACF authorization processing continues at Step 25 on page 758. 23. RACF determines whether the user has access to the resource because the user is a member of a group that meets a condition specified on the conditional access list specified with WHEN(TERMINAL), WHEN(CONSOLE), WHEN(APPCPORT), WHEN(JESINPUT) or WHEN(SERVAUTH). Which group is used depends on whether list-of-groups processing is in effect. (List-of-groups processing is in effect if the SETROPTS command has been issued with the GRPLIST operand). RACF determines which group to use according to the following rules: v If list-of-groups processing is not in effect, RACF uses only the user's current connect group. v If list-of-groups processing is in effect, RACF finds all of the groups to which the user is connected that are also in the access list. Of these groups, RACF uses the group that has the highest access authority to the resource. (For example, assume that a user is a member of groups A and B. If A has READ access authority and B has UPDATE access authority, RACF uses group B to determine the user's access.) If the group to be used according to the preceding rules has sufficient access authority to allow the requested access, RACF authorization processing continues at Step 25 on page 758. If none of the user's groups has sufficient authority, RACF does not grant the request, and continues with the next step.
Appendix E. Debugging problems in the RACF database
757
Debugging
24. If a user ID of * is found on the conditional access list specified with WHEN(TERMINAL), WHEN(CONSOLE), WHEN(APPCPORT), WHEN(JESINPUT) or WHEN(SERVAUTH), and if the current user is defined to RACF without the RESTRICTED attribute, and if the current user meets the specified condition (such as logged on at the specified terminal), and the access authority granted to * is sufficient to allow the requested access, RACF grants the request. 25. RACF checks the user's access authority in the conditional access list specified with WHEN(PROGRAM). If the user is in the list, if the user meets the specified condition (such as running the specified program), and if the specified access authority is sufficient to allow access, RACF grants the request. Note: For DASD data sets, if program control is active and a controlled program is executing, RACF performs authorization checking for program access to data sets. If the user/program combination is in the conditional access list with sufficient authority to allow access to the data sets, RACF grants the request. If the user/program combination is in the conditional access list with insufficient authority, RACF denies the request. For more information, see Authorization checking for access control to data sets on page 344. RACF determines whether the user has access to the resource because the user is a member of a group that meets a condition specified on the conditional access list (such as running a specified program). Which group is used depends on whether list-of-groups processing is in effect. (List-of-groups processing is in effect if the SETROPTS command has been issued with the GRPLIST operand.) RACF determines which group to use according to the following rules: v If list-of-groups processing is not in effect, RACF uses only the user's current connect group. v If list-of-groups processing is in effect, RACF finds all of the groups to which the user is connected that are also in the access list. Of these groups, RACF uses the group that has the highest access authority to the resource. (For example, assume that a user is a member of groups A and B. If A has READ access authority and B has UPDATE access authority, RACF uses group B to determine the user's access.) If the group to be used according to the preceding rules has sufficient access authority to allow the requested access, RACF grants the request. If the group is specified in the list with insufficient access authority, RACF denies the request. If a user ID of * is found on the conditional access list specified with WHEN(PROGRAM), and if the current user is defined to RACF without the RESTRICTED attribute, and if the current user meets the specified condition (such as logged on at the specified terminal or running the specified program), and the access authority granted to * is sufficient to allow the requested access, RACF grants the request. If the WARNING flag is ON in the profile (set using the WARNING operand on the ADDSD, ALTDSD, RDEFINE, or RALTER command), RACF grants the request. If SETROPTS CATDSNS(FAILURES) is in effect, RACF denies the request unless at least one of the following is true: v The data set is newly created in this job, or is a system temporary data set. v The data set is on tape, and the request is for UPDATE access. v The data set is protected by a discrete profile.
26.
27.
28.
29.
758
Debugging
v The data set is cataloged in the master catalog. v The user has access to FACILITY resource ICHUNCAT.data-set-name (truncated to 39 characters, if necessary). v The user has the SPECIAL attribute. Note: If the user gains access through having the SPECIAL attribute and none of the prior conditions were true, RACF issues a warning message and creates an SMF record as though CATDSNS(WARNING) were in effect. 30. The postprocessing exit (ICHRCX02) can grant or deny the request. 31. For the DATASET class, if no profile is found and the SETROPTS PROTECTALL(FAILURES) option is in effect, RACF denies the request. If no profile is found and the SETROPTS PROTECTALL(WARNING) option is in effect, RACF grants the request.
RACROUTE call
Figure 64. Process flow of callers of RACF for RACROUTE REQUEST=AUTH requests
Note: For information about exits that affect RACROUTE calls, see the documentation for the calling product.
759
Debugging
RACROUTE SAF router exit (ICHRTX00 or ICHRTX01 can do a security check as desired and provide a return code. Pass Pass Not protected
RC from RACF
Return to Caller
Figure 65. Process flow of SAF router for RACROUTE REQUEST=AUTH requests
760
Debugging
Numbered Steps
Class has matching entry in RACF router table with ACTION=NONE? No No RACF decision
No RACF decision RACF class is active? Yes Class must be RACLISTed but currently is not? Yes Control passes to RACROUTE REQUEST=AUTH processing No RACF decision
761
Debugging
Numbered Steps 6
Privileged or trusted No
Pass
10 Deny
11
Pass
762
Debugging
12
Pass
13
No
Default RC of class
14 15
SECLEVEL/CATEGORY Okay or not active Pass User owns resource Insufficient Access
16
17 18 19
Pass
20
Pass
21
Pass
22 23 24
Conditional access list (WHEN(TERMINAL, CONSOLE, APPCPORT, or JESINPUT)): -User -Group -ID(*) except RESTRICTED users
Pass
25 26 27
Conditional access list (WHEN(PROGRAM)): -User -Group -ID(*) except RESTRICTED users
Pass
28 Deny
WARNING indicator on
763
Debugging
29
Deny
For data sets, if CATDSNS(FAILURES) is on, a special check can deny the request.
Deny
For data sets, if CATDSNS(FAILURES) is on, a special check can deny the request.
30
REQUEST=AUTH postprocessing exit (ICHRCX02) could change existing return code to any other (such as deny to pass, pass to deny, and so forth).
PROTECTALL(FAILURES) 31
Pass
764
Debugging
2. If the system (kernel) is the caller, then access is failed if either of the following conditions occurs: v The request includes execute authority for a file and execute authority cannot be granted. In this condition, none of the permissions bits grant execute access, and, if an ACL is present and the FSSEC class is active, no ACL entry grants execute access. v Security label authorization checking fails. In this condition, the SECLABEL class is active, the object being accessed is a directory, the directory's SECLABEL is not SYSMULTI, and the CRED contains a SECLABEL. Otherwise, access is granted. 3. If the SECLABEL class is not active, then go to Step 14. 4. If the user has the TRUSTED or PRIVILEGED attribute, then access is granted automatically unless the user is executing a file. If the user is executing a file, access is denied only if none of the permissions bits grant execute access, and, if an ACL is present and the FSSEC class is active, no ACL entry grants execute access. Otherwise, access is granted. 5. If the user has the RACF AUDITOR attribute, and has read or search access for a directory is requested, access is granted. 6. If SETROPTS MLFSOBJ is active and the file does not have a security label, the request is failed. 7. If SETROPTS MLS is active (either in WARNING or FAILURES mode) and all of the following conditions occur, the request is failed. v The user has a security label. v The file has no security label. v The user explicitly requested write access but is not in writedown mode. Note: The SETROPTS MLS(WARNING) option is not supported for UNIX files and directories, and it is treated the same as MLS(FAILURES). 8. If the file has a security label but the user does not, then the request is failed. 9. If the user's security label is equivalent to the security label of the file (this condition is also satisfied if either security label is SYSMULTI), then continue at Step 15. 10. If ANY access is requested, then two security label dominance checks (RACROUTE REQUEST=DIRAUTH) are performed: one for READ and one for WRITE. If either succeeds, then continue at Step 15. Otherwise, the request is failed. 11. If the user is requesting write access along with read or search/execute access, then a READWRITE dominance check is performed. If it succeeds, then continue at Step 15. Otherwise, the request is failed. 12. If the user is requesting only read or search/execute access, then a READ dominance check is performed. If it succeeds, then continue at Step 15. Otherwise, the request is failed. 13. If the user is requesting only write access, then a WRITE dominance check is performed. If it succeeds, then continue at Step 15. Otherwise, the request is failed. 14. If the user has the RACF AUDITOR attribute, and read or search access for a directory is requested, access is granted. 15. If the user has UID(0), then access is granted automatically unless the user is executing a file. If the user is executing a file, access is denied only if none of the permissions bits grant execute access, and, if an ACL is present and the FSSEC class is active, no ACL entry grants execute access. Otherwise, access is granted.
Appendix E. Debugging problems in the RACF database
765
Debugging
16. If the UID matches the file owner UID, the file's owner permission bits are checked. If the owner bits allow the requested access, then access is granted. Otherwise, go to Step 26. 17. If the FSSEC class is active, and an ACL exists, and there is an ACL entry for the requesting UID, then the permission bits of that ACL entry are checked. If the ACL entry allows the requested access, then access is granted. Otherwise, go to Step 25. 18. If the GID matches the file owner GID, the file's group permission bits are checked. If the group bits allow the requested access, then access is granted. 19. If the FSSEC class is active, and an ACL exists, and there is an ACL entry for the requesting GID, then the permission bits of that ACL entry are checked. If the ACL entry allows the requested access, then access is granted. If not, then the next ACL entry is checked until there are no more entries. 20. If any of the user's supplemental GIDs match the file owner GID, the file's group permission bits are checked. If the group bits allow the requested access, then access is granted. 21. If the FSSEC class is active, and an ACL exists, and there is an ACL entry for any of the user's supplemental GIDs, then the permission bits of that ACL entry are checked. If the ACL entry allows the requested access, then access is granted. If not, then the next ACL entry is checked until there are no more entries. 22. If at least one matching ACL entry was found for the GID, or any of the supplemental GIDs, then processing continues with Step 25. If the GID, or any of the supplemental GIDs, matched the file owner GID, then processing continues with Step 26. Otherwise (neither the GID nor any of the supplemental GIDs matched either the file owner GID or an ACL entry), processing continues with the next step. 23. If the requesting user has the RESTRICTED attribute, and the UNIXPRIV class is active and RACLISTed, and the RESTRICTED.FILESYS.ACCESS resource is protected by a profile in the UNIXPRIV class, and the user does not have at least READ access, then go to Step 26. 24. The file's other permission bits are checked. If the other bits allow the requested access, then access is granted. Otherwise, go to Step 26. 25. If the UNIXPRIV class is active and RACLISTed, and if the SUPERUSER.FILESYS.ACLOVERRIDE resource is protected by a profile in the UNIXPRIV class, then the user must have the correct access level as documented for the ck_access (IRRSKA00) callable service in z/OS Security Server RACF Callable Services. If the profile exists, it determines whether file access is granted or denied. 26. If the UNIXPRIV class is active and RACLISTed, and if the SUPERUSER.FILESYS resource is protected by a profile in the UNIXPRIV class, then the user must have the correct access level as documented for the ck_access (IRRSKA00) callable service in z/OS Security Server RACF Callable Services. If the profile exists, it determines whether file access is granted or denied. 27. Access is denied. 28. The SAF callable services router exit (IRRSXT00) can grant or deny access after RACF authorization processing occurs.
766
Debugging
TERMINAL class is active, RACF performs authorization checking to verify that the user is permitted use of the terminal. RACF performs this authorization checking during REQUEST=VERIFY processing at the same time as it performs user identification and verification. RACF performs terminal authorization checking in the following sequence: 1. If your installation has activated the SECLABEL class, RACF performs security label authorization checking. For a complete description, see Security Label Authorization Checking on page 770. If security label authorization checking succeeds, RACF authorization checking continues with the next step. 2. If the requesting user has at least READ access authority to the terminal, RACF processing continues at Step 5. If the user's access authority is NONE, RACF denies use of the terminal and stops terminal authorization checking. 3. If the requesting user's current connect group (or, if you activate list-of-groups checking, one of the user's other connect groups) has at least READ access authority to the terminal, RACF processing continues at Step 5. If the group's access authority is NONE, RACF denies use of the terminal and stops terminal authorization checking. 4. If the profile has a universal access authority (UACC) of at least READ and your installation has not specified NOTERMUACC for the user's current connect group, RACF processing continues at Step 5. Otherwise, RACF denies use of the terminal and stops terminal authorization checking. Note: For defined terminals, you can specify the universal access authority (UACC) with the RDEFINE or RALTER command. For undefined terminals, you can specify the universal access authority with the TERMUACC operand of the SETROPTS command. For more information, see Limiting Specific Groups of Users to Specific Terminals on page 249. 5. If your installation authorizes the use of the terminal on this particular day and time, RACF grants access to the terminal. (You can specify the terminal time and day-of-week restrictions with the RDEFINE and RALTER commands.) RACF also checks whether your installation has authorized the user to access the system on this particular day and time. (You can specify the user time and day-of-week restrictions with the ADDUSER and ALTUSER commands.) Notes: 1. The REQUEST=AUTH and REQUEST=VERIFY preprocessing and postprocessing exit routines are available during terminal authorization checking. 2. Global access checking is not available during terminal authorization checking performed by REQUEST=VERIFY. 3. Profiles in the GTERMINL class are ignored unless SETROPTS RACLIST processing is in effect.
Authorizing Access to Consoles, JES Input Devices, APPC Partner LUs, or IP Addresses
When a RACF-defined user logs on to a JES or MCS console, submits a batch job from a JES input device, submits an APPC request from a partner LU, or accesses the network through an IP address, RACF can perform authorization checking to verify that the user is permitted use of the RACF-protected console, JES input device, partner LU, or IP address. RACF performs this authorization checking during REQUEST=VERIFY processing at the same time as it performs user
Appendix E. Debugging problems in the RACF database
767
Debugging
identification and verification. For RACF to perform this authorization checking, your installation must activate the appropriate class, as follows: v For JES or MCS consoles, activate the CONSOLE class. v For JES input devices, activate the JESINPUT class. v For APPC partner LUs, activate the APPCPORT class. v For IP addresses, activate the SERVAUTH class. The resource must be protected by a profile in the appropriate class. If no profile exists for the resource, RACF fails the request. Notes: 1. If the resource is a terminal, console, partner LU, JES writer, or IP address, RACF compares the security level of the user with the security level of the resource. If the resource has a higher security level than the user, RACF denies the request. For a terminal session, the security level that RACF uses for the user is the lower of the user's SECLEVEL and the terminal's SECLEVEL. Thus, if the terminal has a SECLEVEL of 50 and the user has a SECLEVEL of 100, the user cannot access through that terminal any data that has a SECLEVEL of over 50. 2. RACF compares the list of security categories in the user's profile with the list of security categories in the resource's profile. If RACF finds any security category in the resource profile that is not in the user's profile, RACF denies the request. If RACF does not deny the request, RACF continues with authorization processing. If there are no categories in the resource profile, RACF continues with authorization processing. The rest of this topic uses the term device authorization checking to refer to the authorization checking done for any of the above resources. RACF performs device authorization checking in the following sequence: 1. If your installation has activated the SECLABEL class, RACF performs security label authorization checking. For a complete description, see Security Label Authorization Checking on page 770. If security label authorization checking succeeds, RACF authorization checking continues with the next step. 2. If the requesting user has at least READ access authority to the device, RACF grants the request with no further processing. If the user's access authority is NONE, RACF denies use of the device and stops device authorization checking. If the requesting user is not in the access list, device authorization checking continues with the next step. 3. If the requesting user's current connect group (or, if you activate list-of-groups checking, one of the user's other connect groups) has at least READ access authority to the device, RACF grants the request with no further processing. If the group's access authority is NONE, RACF denies use of the device and stops device authorization checking. If the group is not in the access list, device authorization checking continues with the next step. 4. If the profile has a universal access authority (UACC) of at least READ, RACF grants the request with no further processing. Otherwise, RACF denies use of the device and stops device authorization checking. Notes: a. The TERMUACC operand of the SETROPTS command has no effect on consoles or JES input devices. b. You cannot specify time or day-of-week restrictions for consoles or JES input devices. (You can specify user time and day-of-week restrictions with the ADDUSER and ALTUSER commands.)
768
Debugging
Notes: 1. The REQUEST=AUTH and REQUEST=VERIFY preprocessing and postprocessing exit routines are available during device authorization checking. 2. Global access checking is not available during device authorization checking performed by REQUEST=VERIFY.
769
Debugging
770
Debugging
5. If the SETROPTS MLS(WARNING) option is in effect for this resource class, RACF makes the same checks as in Step 4 on page 770. If any test fails the request, RACF issues a warning message and grants the request. 6. If the SETROPTS NOMLS option is in effect, RACF makes the tests shown in Table 51 on page 773 and fails the request if the test fails. If the SETROPTS COMPATMODE option is in effect, RACF checks to see if the user's UTOKEN indicates that the ACEE was created with an older protocol (pre-RACF 1.9.0). If both are true, then RACF checks to see if the user has access to a security label that could allow the requested access to the resource. v If the user has no access to any such security label, RACF fails the request. v If the user does have access to such a security label, RACF continues authorization checking and logs the request. If the resource is a JES spool data set, RACF uses the security label in the token associated with the data set (specified on the RTOKEN parameter of the RACROUTE REQUEST=AUTH macro). Otherwise, RACF uses the security label kept in the resource profile protecting the resource, in the FSP for files, or in the ISP for IPC objects.
reverse MAC
equal MAC
The MAC authorization types described in Table 49 are used for the following levels of authorization request for resource access. (See Security Labels on page 102 for descriptions and examples of each requested access level.) v Read-only v Read-write v Write-only
Appendix E. Debugging problems in the RACF database
771
Debugging
The security label relationships for each MAC authorization type are applied differently depending on the setting of the SETROPTS MLS option. See Authorization Summary for SETROPTS MLS(FAILURES) and MLS(WARNINGS) and Authorization Summary for SETROPTS NOMLS.
Notes: 1 z/OS does not support write-only requests for data sets or tape volumes. All write-only requests are tested as both read-only and write-only requests. Therefore, the security labels must be equivalent. 2 Users cannot write to a resource that has a lower security label than the user's current security label. This inability to writedown is enforced when SETROPTS MLS(FAILURES) is in effect to ensure that a user does not declassify data. 3 The test for write-only is not supported for classes defined with the reverse MAC attribute.
772
Debugging
Table 51. Security label authorization checking when SECLABEL class is active and either SETROPTS NOMLS is in effect or the user is in "writedown" mode. Requested access Read-only Read-write Write-only
1
Notes: 1 z/OS does not support write-only requests for data sets or tape volumes. All write-only requests are tested as both read-only and write-only requests. Therefore, the security labels must be equivalent. 2 If SETROPTS MLS(WARNING) is active instead of NOMLS in these cases, an ICH408I warning message is written to the security console. 3 The test for write-only is not supported for classes defined with the reverse MAC attribute.
773
Debugging
Table 52. Effects of MLACTIVE settings on security label authorization Missing user security label (resource security label is present) Fail1 Fail Missing resource security label (user security label is present) Fail Pass and warning message sent to security console Pass Pass Pass Pass Missing both user and resource security labels Fail1 Pass and warning message sent to security console Pass Pass1 Pass Pass
Environment MLACTIVE(FAILURES) and resource class requires security labels MLACTIVE(WARNING) and resource class requires security labels NOMLACTIVE and resource class requires security labels MLACTIVE(FAILURES) and resource class does not require security labels MLACTIVE(WARNING) and resource class does not require security labels NOMLACTIVE and resource class does not require security labels
Note: 1 In these cases, the user has a missing security label while SETROPTS MLACTIVE(FAILURES) is in effect because the user logged in without a security label before SETROPTS MLACTIVE(FAILURES) was activated. Authorization requests are passed or failed according to the entries in Table 52. If such a user attempts to log on to the system while SETROPTS MLACTIVE(FAILURES) was in effect, the user is not allowed to log on unless the user has access to the SYSLOW security label. Users who have access to SYSLOW at logon time when MLACTIVE(FAILURES) is active will be assigned and run with SYSLOW.
Relationships among the SECLABEL class, SETROPTS MLS(FAILURES), SETROPTS MLACTIVE(FAILURES) and SETROPTS MLQUIET
Table 53 shows the relationships of the SECLABEL class and the SETROPTS MLS, MLACTIVE(FAILURES) and MLQUIET options.
Table 53. Relationships among the SECLABEL class, SETROPTS MLS(FAILURES), SETROPTS MLACTIVE(FAILURES), and SETROPTS MLQUIET SECLABEL class Inactive MLS (FAILURES) Off MLACTIVE (FAILURES) Off MLQUIET Off Effect Security labels have no effect on authorization checking.
774
Debugging
Table 53. Relationships among the SECLABEL class, SETROPTS MLS(FAILURES), SETROPTS MLACTIVE(FAILURES), and SETROPTS MLQUIET (continued) SECLABEL class Active Active Active MLS (FAILURES) Off On On MLACTIVE (FAILURES) Off Off On MLQUIET Off Off Off Effect RACF uses security labels and allows writing to a lower security label. RACF uses security labels and prevents writing to a lower security label (no write down). All resources must be labeled, RACF uses security labels, and RACF prevents writing to a lower security label. Those resources required to have security labels by definition in the class descriptor table (CDT), resources in the DATASET class, and users must have security labels. All attempts to access the system or resources fail (unless the attempt is made by the trusted computing base, a security administrator, or a console operator).
Active
Off
On
Off
Active
Either
Either
On *
Note: * To activate SETROPTS MLQUIET, you must also enable SETROPTS MLSTABLE.
775
Debugging
Notes: 1. The REQUEST=VERIFY and REQUEST=VERIFYX preprocessing and postprocessing exit routines are available during verification processing. 2. RACF authorization checks can be requested by RACF or the application (for example, to determine if a user is authorized to use a particular terminal). REQUEST=AUTH preprocessing and postprocessing exits are available during this authorization processing. 3. SMF log records or messages can be generated. (Failures are always recorded. Successes can be recorded if the application requests it on the REQUEST=VERIFY request).
776
Debugging
Exits in the caller of RACF, such as JES or TSO The REQUEST=VERIFY exits.
Table 54. Resource classes checked for logon and job initialization requests Type of session TSO logons Classes that might be checked TERMINAL, SECLABEL, TSOPROC, ACCTNUM, PERFGRP, TSOAUTH, and (depending on the user's TSO logon procedure) DATASET or others TERMINAL, SECLABEL, and APPL TERMINAL, SECLABEL, and APPL CONSOLE and SECLABEL JESINPUT, SECLABEL, JESJOBS, SURROGAT NODES, JESINPUT, SECLABEL, JESJOBS, SURROGAT NODES, JESINPUT, SECLABEL JESINPUT, SECLABEL, FACILITY (checks for existence of RJE.userid profile) CONSOLE, NODES, SECLABEL, OPERCMDS, FACILITY (for each command, a check is made against the NJE.userid or RJE.userid profile in the FACILITY class) Check the STARTED class or started procedures table (ICHRIN03) entry APPCPORT, APPCLU, APPCTP, APPCSERV, APPCSI, SECLABEL, APPL, DATASET
CICS signons IMS signons Operators logging on to MCS consoles Batch jobs Inbound NJE jobs Inbound SYSOUT RJE remote signons or logons For NJE and RJE remote (commands)
MOUNT (MVS operator requests that a DASD device be made active), system address space, and started procedures APPC/MVS allocation requests
777
Debugging
778
Appendix F. Accessibility
Publications for this product are offered in Adobe Portable Document Format (PDF) and should be compliant with accessibility standards. If you experience difficulties when using PDF files, you may view the information through the z/OS Internet Library website or the z/OS Information Center. If you continue to experience problems, send an email to [email protected] or write to: IBM Corporation Attention: MHVRCFS Reader Comments Department H6MA, Building 707 2455 South Road Poughkeepsie, NY 12601-5400 U.S.A. Accessibility features help a user who has a physical disability, such as restricted mobility or limited vision, to use software products successfully. The major accessibility features in z/OS enable users to: v Use assistive technologies such as screen readers and screen magnifier software v Operate specific or equivalent features using only the keyboard v Customize display attributes such as color, contrast, and font size
z/OS information
z/OS information is accessible using screen readers with the BookServer or Library Server versions of z/OS books in the Internet library at:
http://www.ibm.com/systems/z/os/zos/bkserv/
779
780
Notices
This information was developed for products and services offered in the U.S.A. or elsewhere. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 U.S.A For license inquiries regarding double-byte character set (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to: Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan, Ltd. 1623-14, Shimotsuruma, Yamato-shi Kanagawa 242-8502 Japan The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.
Copyright IBM Corp. 1994, 2011
781
Notices
IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact: Site Counsel IBM Corporation 2455 South Road Poughkeepsie, NY 12601-5400 USA Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee. The licensed program described in this information and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement, or any equivalent agreement between us. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. All statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only. If you are viewing this information softcopy, the photographs and color illustrations may not appear. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. COPYRIGHT LICENSE: This information contains sample application programs in source language, which illustrates programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or
782
Notices
imply reliability, serviceability, or function of these programs. The sample programs are provided "AS IS", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs. This product contains code licensed from RSA Data Security Incorporated.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml. Adobe is a registered trademark of Adobe Systems Incorporated in the United States, other countries, or both. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle, its affiliates, or both. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries. Other company, product, and service names might be trademarks or service marks of others.
Notices
783
784
Glossary
This glossary includes technical terms and abbreviations for RACF. The following cross-references are used in this glossary: v See refers you from a term to a preferred synonym, or from an acronym or abbreviation to the defined full form. v See also refers you to a related or contrasting term. If you do not find the term you are looking for, visit http://www.ibm.com/software/ globalization/terminology/.
access list. Synonym for standard access list. Contrast with conditional access list. ACEE. (accessor environment element) A control block that contains a description of the current user's security environment, including user ID, current connect group, user attributes, and group authorities. An ACEE is constructed during user identification and verification. See ENVR object. ADAU. See automatic direction of application updates. ADSP. See automatic data set protection. ADSP attribute. A user attribute that establishes an environment in which all permanent DASD data sets created by the user are automatically defined to RACF and protected with a discrete profile. See automatic data set protection. Advanced Program-to-Program Communication (APPC). A set of interprogram communication services that support cooperative transaction processing in an SNA network. APPC is the implementation, on a given system, of SNA's LU type 6.2. See LU type 6.2 and APPC/MVS. AIM. See application identity mapping (AIM). APF-authorized. A type of system authorization using the authorized program facility (APF) that allows an installation to identify system or user programs that can use sensitive system functions. To maintain system security and integrity, a program must be authorized by the APF before it can access restricted functions, such as supervisor calls (SVC) or SVC paths. API. See application programming interface. APPC. See Advanced Program-to-Program Communication. APPC application. See transaction program (TP). APPC/MVS. The implementation of SNA's LU 6.2 and related communication services in the MVS base control program. application identity mapping (AIM). Allows mapping between RACF user IDs and various application identities, such as those associated with z/OS UNIX, Novell Directory Services, and Lotus Notes. application programming interface (API). A software interface that enables applications to communicate with each other. An API is the set of programming language constructs or statements that can be coded in an
A
access. The ability to use a protected resource. access authority. (1) The privileges granted to a particular user or group when accessing a protected resource (such as the ability to read or to update a data set). For resources protected by RACF profiles, the access authorities are NONE, EXECUTE, READ, UPDATE, CONTROL, and ALTER. These authorities are hierarchical, with READ also granting EXECUTE, UPDATE granting READ, and so forth. (2) RACF also has access authorities of READ, WRITE, and EXECUTE (or SEARCH) when dealing with z/OS UNIX files and directories. Note that these authorities are not hierarchical, and that z/OS UNIX files are not protected by RACF profiles, although they do have access authorities. access ACL. An ACL that is used to provide protection for a file system object. access control. In computer security, ensuring that the resources of a computer system can be accessed only by authorized users in authorized ways. access control list (ACL). (1) In computer security, a collection of all access rights for one object. In computer security, a list associated with an object that identifies all the subjects that can access the object and their access rights; for example, a list associated with a file that identifies users who can access the file and identifies their access rights to that file. (2) In z/OS UNIX, an extension to the base POSIX permission bits. Similar to the access list of a RACF profile, an ACL for a file system object contains entries that specify access permissions for individual users and groups. ACL. See access control list.
Copyright IBM Corp. 1994, 2011
785
Glossary
application program to obtain the specific functions and services provided by an underlying operating system or service program. application user identity. An alternate name by which a RACF user can be known to an application. appropriate privileges. Describes which users can perform an action (such as execute a command, issue a syscall, and so forth) in a UNIX environment. Usually refers to having superuser authority or an appropriate subset of superuser authority. attribute. See user attribute and group-related user attribute. AUDIT request. The issuing of the RACROUTE macro with REQUEST=AUDIT specified. An AUDIT request is a general-purpose security request that a resource manager can use to audit. AUDITOR attribute. A user attribute that allows the user to specify logging options on the RACF commands and list any profile (including its auditing options) using the RACF commands. Contrast with group-AUDITOR attribute. AUTH request. The issuing of the RACROUTE macro with REQUEST=AUTH specified. The primary function of an AUTH request is to check a user's authorization to a RACF-protected resource or function. The AUTH request replaces the RACHECK function. See authorization checking. authentication. (1) Verification of the identity of a user or the user's eligibility to access an object. (2) Verification that a message has not been altered or corrupted. (3) A process used to verify the user of an information system or protected resources. See also password. authority. The right to access objects, resources, or functions. See access authority, class authority, and group authority. authorization checking. The action of determining whether a user is permitted access to a protected resource. Authorization checking refers to the use of RACROUTE REQUEST=AUTH, RACROUTE REQUEST=FASTAUTH, or any of the RACF callable services unless otherwise stated. Note, however, that other RACF functions can also perform authorization checking as a part of their processing. For example, RACROUTE REQUEST=VERIFY can also check a user's authority to use a terminal or application. automatic command direction. An RRSF function that enables RACF to automatically direct certain commands to one or more remote nodes after running the commands on the issuing node. Commands can be automatically directed based on who issued the command, the command name, or the profile class related to the command. Profiles in the RRSFDATA class control to which nodes commands are automatically directed. See automatic direction of application updates, automatic password direction and command direction. automatic data set protection (ADSP). A system function, enabled by the SETROPTS ADSP specification and the assignment of the ADSP attribute to a user with ADDUSER or ALTUSER, that causes all permanent data sets created by the user to be automatically defined to RACF with a discrete RACF profile. automatic direction. See automatic command direction, automatic password direction, and automatic direction of application updates. automatic direction of application updates. An RRSF function that automatically directs ICHEINTY and RACROUTE macros that update the RACF database to one or more remote systems. Profiles in the RRSFDATA class control which macros are automatically directed, and to which nodes. See automatic command direction and automatic password direction. automatic password direction. An RRSF function that extends password synchronization and automatic command direction to cause RACF to automatically change the password for a user ID on one or more remote nodes after the password for that user ID is changed on the local node. Profiles in the RRSFDATA class control for which users and nodes passwords are automatically directed. See password synchronization, automatic command direction, and automatic direction of application updates. automatic profile. A tape volume profile that RACF creates when a RACF-defined user protects a tape data set. When the last data set on the volume is deleted, RACF automatically deletes the tape volume profile. Contrast with nonautomatic profile.
B
backup data set. A data set in the backup RACF database. For each data set in the primary RACF database, an installation should define a corresponding backup data set. See backup RACF database. backup RACF database. A RACF database that reflects the contents of the primary RACF database. Backup RACF databases might be designated in the data set name table (ICHRDSNT) or specified at IPL time. You can switch to a backup database without a re-IPL if the primary RACF database fails. See primary RACF database. base ACL entry. Same as permission bits (owner, group, other). The permissions can be changed using chmod. They are not physically part of the ACL.
786
Glossary
base segment. The portion of a RACF profile that contains the fundamental information about a user, group, or resource. The base segment contains information that is common to all applications that use the profile. BER. This term represents the Basic Encoding Rules specified in ISO 8825 for encoding data units described in abstract syntax notation 1 (ASN.1). See also DER. block update command (BLKUPD). A RACF diagnostic command used to examine or modify the content of individual physical records in a RACF data set. DATASET classes. The CDT contains the classes supplied by IBM and the installation-defined classes. When this term appears without the preceding modifiers dynamic or static, it refers to the combination of the dynamic CDT, if it exists, and the static CDT. classification model 1. See single-subsystem scope. classification model 2. See multiple-subsystem scope. CLAUTH attribute. See class authority. command direction. An RRSF function that allows a user to issue a command from one user ID and direct that command to run in the RACF address space on the same system or on a different RRSF node, using the same or a different user ID. Before a command can be directed from one user ID to another, a user ID association must be defined between them using the RACLINK command. command prefix facility (CPF). An MVS facility that provides a registry for command prefixes. CPF ensures that two or more subsystems do not have the same or overlapping command prefixes for MVS operator commands. Commercial Data Masking Facility (CDMF). An encryption function that uses a weaker key (40 bit) of the Data Encryption Standard (DES) algorithm. RACF uses CDMF to mask the data portion of RRSF transaction processing message packets. CDMF is part of the IBM Common Cryptographic Architecture. common programming interface (CPI). An evolving application programming interface (API), supplying functions to meet the growing demands from different application environments and to achieve openness as an industry standard for communications programming. CPI-C provides access to interprogram services such as sending and receiving data, synchronizing processing between programs, and notifying a partner of errors in the communication. conditional access list. The portion of a resource profile that specifies the users and groups that might access the resource at a specified level when a specified condition is true. For example, with program access to data sets, the condition is that the user must be executing the program specified in the access list. Contrast with standard access list. coordinator system. In a RACF data sharing group, the system on which the system operator or administrator enters a RACF command that is propagated throughout the group. Contrast with peer system. coupling facility. The hardware element that provides high-speed caching, list processing, and locking functions in a sysplex. CPF. See command prefix facility.
Glossary
C
cache structure. A coupling facility structure that contains data accessed by systems in a sysplex. callable service. In z/OS UNIX, a request by an active process for a service. Synonymous with syscall. category. See security category. CDMF. See Commercial Data Masking Facility. CDT. See class descriptor table. certificate. See digital certificate. certificate authority. An organization that issues digital certificates. The certificate authority authenticates the certificate owner's identity and the services that the owner is authorized to use, issues new certificates, renews existing certificates, and revokes certificates belonging to users who are no longer authorized to use them. certificate-authority certificate. A type of certificate managed by RACF. See digital certificate. certificate name filter. A general resource profile created by the RACDCERT MAP command that maps multiple user IDs to a digital certificate in order to simplify administration of certificates, conserve storage space in the RACF database, maintain accountability, or maintain access control granularity. CICS. See Customer Information Control System. class. A collection of RACF-defined entities (users, groups, and resources) with similar characteristics. Classes are defined in the class descriptor table (CDT), except for the USER, GROUP, and DATASET classes. class authority (CLAUTH). An attribute enabling a user to define RACF profiles in a class defined in the class descriptor table. A user can have class authorities to zero or more classes. class descriptor table (CDT). A table consisting of an entry for each class except the USER, GROUP, and
787
Glossary
CPI-C. See common programming interface. current connect group. The group specified by a user when logging on to the system, or the user's default group if the user did not specify a group when logging on. With SETROPTS NOGRPLIST in effect, RACF uses the user's authority and this group's authority during access checking. With SETR GRPLIST in effect, RACF includes the authority of the user's other groups, if any, but the user still has only one "current connect group". You can use the &RACGPID variable in members of GLOBAL profiles to refer to the user's current connect group. current security label. The security label that RACF uses in RACF authorization checking if the SECLABEL class is active. For interactive users, this is the security label specified when the user logged on, or (if no security label was specified) the default security label in the user's user profile. For batch jobs, this is the security label specified in the SECLABEL operand of the JOB statement, or (if no security label was specified) the user's current security label in the user profile associated with the job. custom field. A field in a user or group profile that can be used to store installation data, and for which the installation can customize the keyword name and attributes. A custom field is defined in the CFDEF segment of a general resource profile in the CFIELD class. Installation data contained in a custom field is stored in the CSDATA segment of the user or group profile. Customer Information Control System (CICS). A program licensed by IBM that provides online transaction processing services and management for critical business applications. CICS runs on many platforms (from the desktop to the mainframe) and is used in various types of networks that range in size from a few terminals to many thousands of terminals. The CICS application programming interface (API) enables programmers to port applications among the hardware and software platforms on which CICS is available. Each product in the CICS family can interface with the other products in the CICS family, thus enabling interoperability. require DASDVOL authority. Contrast with OPERATIONS attribute, and group-OPERATIONS attribute. data lookaside facility (DLF). A facility that processes DLF objects. A DLF object contains data from a single data set managed by Hiperbatch. The user (an application program) is connected to the DLF object, and the connected user can then access the data in the object through normal QSAM or VSAM macro instructions. data security. The protection of data from intentional or unintentional unauthorized disclosure, modification, or destruction. data security monitor (DSMON). A RACF auditing tool that produces reports enabling an installation to verify its basic system integrity and data security controls. data set profile. A profile that provides RACF protection for one or more data sets. The information in the profile can include the data set profile name, profile owner, universal access authority, access list, and other data. See discrete profile and generic profile. data sharing group, RACF. A collection of one or more instances of RACF in a sysplex that have been identified to XCF and assigned to the group defined for RACF sysplex data sharing. RACF joins group IRRXCF00 when enabled for sysplex communication. data sharing mode. An operational RACF mode that is available when RACF is enabled for sysplex communication. Data sharing mode requires installation of coupling facility hardware. DB2 administrative authority. A set of privileges, often covering a related set of objects, and often including privileges that are not explicit, have no name, and cannot be specifically granted. For example, the ability to terminate any utility job is included in the SYSOPR authority. DB2 explicit privilege. A privilege that has a name, and is held as the result of an SQL GRANT statement. default ACL. An ACL that is specifically associated with a directory, and which gets inherited by an object created within the directory. default group. The group specified in a user profile that provides a default current connect group for the user. See current connect group. DEFINE request. The issuing of the RACROUTE macro with REQUEST=DEFINE specified or using a RACF command to add or delete a resource profile causes a DEFINE request. The DEFINE request replaces the RACDEF function.
D
DASDVOL authority. A preferred alternative to assigning the OPERATIONS or group-OPERATIONS attribute, DASDVOL authority allows you to authorize operations personnel to access only those volumes that they must maintain. Using DASDVOL authority is also more efficient for functions such as volume dumping, because only one authorization check for the volume needs to be issued, instead of individual requests for each data set on the volume. Note that modern data management software (such as DFSMSdss) does not
788
Glossary
delegated resource. A general resource that is eligible to be accessed by specially programmed applications that request RACF to check the daemon or application's authority for a resource when the client's authority is insufficient. Applications programmed in this way, such as the FTP daemon, are said to contain support for nested ACEEs because the identity of the daemon is said to be nested beneath the identity of the client for authorization purposes. See nested ACEE. delegation. The act of giving users or groups the necessary authority to perform RACF operations. DER. This term represents the Distinguished Encoding Rules, which are a subset of the Basic Encoding Rules. See also BER. digital certificate. A digital document that binds a public key to the identity of the certificate owner, thereby enabling the certificate owner to be authenticated. A certificate is issued by a certificate authority. RACF can manage three types of digital certificates: v certificate-authority certificate. A certificate associated with a certificate authority and is used to verify signatures in other certificates. v site certificate. A certificate associated with a server, or network entity other than a user or certificate authority. v user certificate. A certificate associated with a RACF user ID that is used to authenticate the user's identity, and might also be used to represent a server. DIRAUTH request. The issuing of the RACROUTE macro with REQUEST=DIRAUTH specified. A DIRAUTH request works on behalf of the message-transmission managers to ensure that the receiver of a message meets authorization requirements based on the security label. directed command. A RACF command that is issued from a user ID on an RRSF node. It runs in the RACF subsystem address space on the same or a different RRSF node under the authority of the same or a different user ID. A directed command is one that specifies AT or ONLYAT. See command direction and automatic command direction. directory default ACL. A model ACL that gets inherited by subdirectories that are created within the parent directory. directory model ACL. See directory default ACL. discrete profile. A resource profile that provides RACF protection for a single resource. Contrast with generic profile and fully qualified generic profile. discretionary access control. An access control environment in which the resource owner determines who can access the resource. Contrast with mandatory access control. disjoint. Pertaining to security labels, when the set of security categories that defines the first does not include the set of security categories that defines the second, and the set of security categories that defines the second does not include the set of security categories that defines the first. This also means that the first does not dominate the second and the second does not dominate the first. See dominate. distributed identity filter. A mapping association between a RACF user ID and one or more distributed user identities which is stored in a general resource profile in the IDIDMAP class and administered using the RACMAP command. A distributed identity filter consists of one or more components of a distributed user's name and the name of the registry where the user is defined. DLF object. When data lookaside facility (DLF) is active, the first attempt to access a QSAM or VSAM data set defined to DLF creates a DLF object. A DLF object contains data from a single data set managed by Hiperbatch. The user (an application program) is connected to the DLF object, and the connected user can then access the data in the object through normal QSAM or VSAM macro instructions. dominate. One security label dominates a second security label when the security level that defines the first is equal to or greater than the security level that defines the second, and the set of security categories that defines the first includes the set of security categories that defines the second. A security label dominates itself since comparison of a security label with itself meets this definition. DSMON. See data security monitor. dynamic CDT. An optional portion of the class descriptor table that contains RACF classes built from profiles in the CDT general resource class. It does not include the required classes that comprise the supplied CDT (module ICHRRCDX) nor the optional classes that comprise the installation-defined CDT (module ICHRRCDE), if it exists. The dynamic CDT is processed as a logical extension of the static CDT. See also static CDT.
E
effective group identifier (effective GID). When the user connects to the system (for example, logs on to a TSO/E session), one group is selected as the user's current group. When a user becomes a z/OS UNIX user, the GID of the user's current group becomes the effective GID of the user's process. The user can access resources available to members of the user's effective GID. See group identifier (GID) and contrast with real GID. effective user identifier (effective UID). When a user becomes a z/OS UNIX user, the UID from the user's
Glossary
789
Glossary
RACF user profile becomes the effective UID of the user's process. The system uses the effective UID to determine if the user is a file owner. See user identifier (UID) and contrast with real UID. EIM. See Enterprise identity mapping. EIM domain. An LDAP name space that contains the enterprise identifiers, registry users, and relationships or associations between them. Enterprise identity mapping (EIM). An infrastructure that user administration applications, servers, operating systems, and auditing tools can use to store identity mappings in a centralized, distributed registry (LDAP). The information is stored in LDAP to allow one user ID to be mapped to another (as long as the identities belong to the same application) using this support. entity. A user, group, or resource (for example, a DASD data set) that is defined to RACF. envelope. A container stored in the user's profile that contains the user's encrypted password or password phrase so that it can be retrieved and decrypted by authorized users of the R_Admin callable service (IRRSEQ00) as part of a password synchronization solution, such as IBM Tivoli Directory Integrator. ENVR object. A transportable form of the ACEE that can be used within a single system to create the original ACEE without accessing the RACF database. It can be used, with limits, elsewhere in a single sysplex to recreate the original ACEE without accessing the RACF database. equivalence. Two security labels that contain the same security level and the same set of categories are considered equivalent, with each being dominated by and dominating the other. erase-on-scratch. The physical overwriting of data on a DASD data set when the data set is deleted (scratched). extended ACL entry. An ACL entry for an individual user or group. EXTRACT request. The issuing of the RACROUTE macro with REQUEST=EXTRACT specified. An EXTRACT request retrieves or replaces certain specified fields from a RACF profile or encodes certain clear-text (readable) data. The EXTRACT request replaces the RACXTRT function. sets. The resource manager decides on the action for general resource classes with a return code of 4. (2) Failsoft processing can also occur as the result of RVARY INACTIVE (temporary failsoft) or as the result of a serious system error requiring a re-IPL (permanent failsoft). FASTAUTH request. The issuing of the RACROUTE macro with REQUEST=FASTAUTH specified. The primary function of a FASTAUTH request is to check a user's authorization to a RACF-protected resource or function. A FASTAUTH request uses only in-storage profiles (brought into storage using RACF functions such as RACROUTE REQUEST=LIST) for faster performance than an AUTH request. The FASTAUTH request replaces the FRACHECK function. See authorization checking. field-level access checking. The RACF facility by which a security administrator can control access to segments, other than the base segment, in a RACF profile and fields in those segments. file default ACL. A model ACL that is inherited by files that are created within the parent directory. file model ACL. See file default ACL. file permission bits. In z/OS UNIX, information about a file that is used, along with other information, to determine if a process has read, write, or execute/search permission to a file or directory. The bits are divided into three parts, which are owner, group, and other. file security packet (FSP). In z/OS UNIX, a control block containing the security data (file's owner user identifier (UID), owner group identifier (GID), and the permission bits) associated with the file. This data is stored with the file in the file system. file system object. Used to generically refer to either a file or directory. file transfer protocol (FTP). In the Internet suite of TCP/IP-related protocols, an application layer protocol that transfers bulk data files between machines or hosts. FMID. See function modification identifier. FRACHECK request. RACROUTE REQUEST=FASTAUTH replaces the FRACHECK function. See FASTAUTH request. FSP. See file security packet. FTP. See File Transfer Protocol. failsoft processing. (1) Processing that occurs when no data sets in the primary RACF database are available (RACF is installed but inactive). RACF cannot make decisions to grant or deny access. The operator is prompted frequently to grant or deny access to data fully qualified generic profile. A DATASET profile that was defined using the GENERIC operand and has a name that contains no generic characters. A fully qualified generic profile protects only resources whose
790
Glossary
names exactly match the name of the profile. Contrast with discrete profile and generic profile. function modification identifier (FMID). A 7-character identifier that is used in elements associated with z/OS to identify the release of the element. global resource serialization. A mechanism using ENQ with the SYSTEMS option (or, in some older programs, the RESERVE option) to serialize resources across multiple z/OS images. It is used by RACF to serialize access to its database and to in-storage tables and buffers. globally RACLISTed profiles. In-storage profiles for RACF-defined resources that are created by RACROUTE REQUEST=LIST and that are anchored from an ACEE. Globally RACLISTed in-storage profiles are shared across a system, such as the way that in-storage profiles created by SETROPTS RACLIST are shared. Contrast with locally RACLISTed profiles. group. A collection of RACF-defined users who can share access authorities for protected resources. group-ADSP attribute. A group-related user attribute similar to the ADSP attribute for a user, but assigned by using the CONNECT command to restrict its effect to those cases where the user creates data sets with that group as the high level qualifier of the data set name (or as determined by the naming convention table or exit). group-AUDITOR attribute. A group-related user attribute similar to the AUDITOR attribute for a user, but assigned by using the CONNECT command to restrict the user's authority to resources that are within the scope of the group. Contrast with AUDITOR attribute. group authority. An authority specifying which functions a user can perform in a group. The group authorities are USE, CREATE, CONNECT, and JOIN. group data set. A RACF-protected data set in which either the high-level qualifier of the data set name or the qualifier supplied by an installation-naming convention table or exit routine is a RACF group name. group-GRPACC attribute. A group-related user attribute similar to the GRPACC attribute for a user, but assigned by using the CONNECT command to restrict its effect to the specific group. Contrast with GRPACC attribute. group ID. Obsolete term for group name. group identifier (GID). A number between 0 and 2147483647 that identifies a group of users to z/OS UNIX. The GID is associated with a RACF group name when it is specified in the OMVS segment of the group profile. See real GID. Contrast with effective group identifier (effective GID). group name. A string of 18 characters that identifies a group to RACF. The first character must be AZ, # (X'7B'), $ (X'5B'), or @ (X'7C'). The rest can be AZ, #, $, @, or 09.
G
GDG. See generation data group. general resource. Any resource, other than an MVS data set, that is defined in the class descriptor table (CDT). General resources include DASD volumes, tape volumes, load modules, terminals, IMS and CICS transactions, and installation-defined resource classes. general resource profile. A profile that provides RACF protection for one or more general resources. The information in the profile can include the general resource profile name, profile owner, universal access authority, access list, and other data. general user. A user who has limited RACF privileges, such as logging on, accessing resources, and creating data sets. General users typically use and create RACF-protected resources, but have no authority to administer resources other than their own. generation data group (GDG). A collection of data sets with the same base name, such as PAYROLL, that are kept in chronological order. Each data set in the GDG is called a generation data set, and has a name such as PAYROLL.G0001V00, PAYROLL.G0002V00, and so forth. generic profile. A resource profile that can provide RACF protection for zero or more resources. The resources protected by a generic profile have similar names and identical security requirements, though with RACFVARS, a generic profile can protect resources with dissimilar names, too. For example, a generic data set profile can protect one or more data sets. Contrast with discrete profile. global access checking. The ability to allow an installation to establish an in-storage table of default values for authorization levels for selected resources. RACF refers to this table before performing normal RACROUTE REQUEST=AUTH processing and grants the request without performing an AUTH request if the requested access authority does not exceed the global value. RACF uses this table to process AUTH requests faster and with less overhead (no checking of access lists, no auditing) when you have resources for which you decide to grant access to all users, except those with restricted user IDs. If the requested access does not exceed the access granted by the table, RACF bypasses most of its normal AUTH processing. Global access checking can grant the user access to the resource, but it cannot deny access.
Glossary
791
Glossary
group-OPERATIONS attribute. (1) A group-related user attribute similar to the OPERATIONS attribute for a user, but assigned by using the CONNECT command to restrict its effect to those resources that are within the scope of the group. (2) If a person needs to perform maintenance activities on DASD volumes, it is more efficient (for RACF processing) and better (for limiting the resources the person can access) to give the person authority to those volumes using the PERMIT command than to assign the person the OPERATIONS or group-OPERATIONS attribute. Contrast with DASDVOL authority and OPERATIONS attribute. group profile. A profile that defines a group. The information in the profile includes the group name, profile owner, and users in the group. grouping profile. A profile in a resource group class. group-related user attribute. A user attribute, assigned at the group level, that enables the user to control the resource, group, and user profiles associated with the group and its subgroups. Group-related user attributes include group-SPECIAL attribute, group-AUDITOR attribute, and group-OPERATIONS attribute. Contrast with user attribute. group-REVOKE attribute. Assigned through the CONNECT command that prevents the user from using that group as the current connect group. Also prevents RACF from considering that group during authorization checking. group-SPECIAL attribute. A group-related user attribute similar to the SPECIAL user attribute, but it is assigned by the CONNECT command to restrict the user's authority to users, groups, and resources within the scope of the group. Within this scope, it gives the user full control over everything except auditing options. However, it does not give the user authority to change global RACF options that will affect processing outside the group's scope. Contrast with SPECIAL attribute. GRPACC attribute. With this attribute, any group data sets that the user defines to RACF (through the ADSP attribute, the PROTECT operand on the DD statement, or the ADDSD command) are automatically made accessible to other users in the group at the UPDATE level of access authority if the user defining the profile is a member of the group. Contrast with group-GRPACC attribute. inheritance. The act of automatically associating an ACL with a newly created object without requiring administrative action. issued certificate list (ICL). PKI Services database containing the history of issued certificates. interprocess communication facilities (IPC). IPC facilities are services that allow different processes to communicate. Message passing (using message queues), semaphore sets, and shared memory services are forms of interprocess communication facilities. inventory control block (ICB). The first block in a RACF database. The ICB contains a general description of the database and, for the master primary data set, holds the RACF global options specified by SETROPTS. IPC. See interprocess communication facilities. installation-defined CDT. An optional portion of the CDT (module ICHRRCDE) that is installed by the installation. The function provided by this module can be replaced with the dynamic CDT function. issuer's distinguished name (IDN). The X.509 name that is associated with a certificate authority.
K
kernel. The part of z/OS UNIX that provides support for such services as UNIX I/O, process management, and general UNIX functionality. kernel address space. The address space in which the z/OS UNIX kernel runs. See kernel. key. In cryptography, a sequence of symbols that is used with a cryptographic algorithm for encrypting or decrypting data. See private key and public key. key ring. A named collection of certificates for a specific user or server application used to determine the trustworthiness of a client or peer entity. Contrast to virtual key ring.
L
label. A usable "handle" for a certificate. LDAP. See lightweight directory access protocol. lightweight access directory protocol (LDAP). Similar to directory access protocol (DAP), but simpler to use and has a programming interface; LDAP is composed of entries identified by their distinguished names. link pack area (LPA). An area of virtual storage containing reenterable routines from system libraries that are loaded at IPL time and can be used concurrently by all tasks in the system. The LPA presence in main storage saves loading time.
I
ICB. See inventory control block. ICL. See issued certificate list (ICL). ICHRIN03. See started procedures table.
792
Glossary
LIST request. The issuing of the RACROUTE macro with REQUEST=LIST specified. A LIST request builds in-storage profiles for a RACF general resource class. The LIST request replaces the RACLIST function. list-of-groups checking. A RACF option (SETROPTS GRPLIST) that enables a user to access all resources available to all groups of which the user is a nonrevoked member, regardless of the user's current connect group. For any particular resource, RACF allows access based on the highest access among the groups in which the user is a member. local logical unit (local LU). A logical unit that resides on the local system. Contrast with partner logical unit (partner LU), or remote logical unit (remote LU), which typically resides on a remote system. When both the local and partner LUs reside on the same system, the LU through which communication is initiated is the local LU, and the LU through which communication is received is the partner LU. local mode. An RRSF node is operating in local mode when it has no RRSF logical node connection with any other RRSF node. local transaction program (local TP). A transaction program that resides on the local system. Contrast with partner transaction program (partner TP), which typically resides on a remote system. locally RACLISTed profiles. In-storage profiles for RACF-defined resources that are created by RACROUTE REQUEST=LIST and that are anchored from an ACEE. Locally RACLISTed in-storage profiles are not shared across a system, the way that in-storage profiles created by SETROPTS RACLIST are shared. Contrast with globally RACLISTed profiles. logging. The recording of audit data about specific events. logical connection. See RRSF logical node connection. logical unit (LU). A type of network accessible unit that enables users to gain access to network resources and communicate with each other. logical unit type 6.2 (LU type 6.2). The SNA logical unit type that supports general communication between programs in a cooperative processing environment. Also, the SNA logical unit type on which CPI-C and APPC/MVS TP conversation services are built. LPA. See link pack area. LU. See logical unit. LU type 6.2. See logical unit type 6.2.
M
MAC. See mandatory access control. main system. The system on a multisystem RRSF node that is designated to receive most of the RRSF communications sent to the node. managed user ID association. A user ID association in which one of the associated user IDs is a managing user ID, and the other is a managed user ID. The managing user ID can run allowed RACF commands under the authority of the managed user ID. The managed user ID cannot run commands under the authority of the managing user ID. A managed user ID association does not allow password synchronization between the associated user IDs. Contrast with peer user ID association. mandatory access control (MAC). A means of restricting access to objects on the basis of the sensitivity (as represented by a label) of the information contained in the objects and the formal authorization (clearance) of subjects to access information of such sensitivity. mask. A technique to provide protection against casual viewing of a password that has been defined or altered, when an encryption function is not available. master primary data set. The first data set activated in the primary RACF database. MCS. See multiple console support. MCS console. A non-SNA device defined to MVS that is locally attached to an MVS system and is used to enter commands and receive messages. member. A user belonging to a group. member profile. A profile that defines a member and security level for that member. member system. Any one of the MVS system images in a multisystem RRSF node. model ACL. See default ACL. modeling. See profile modeling. multilevel security. A security policy that allows the classification of data and users based on a system of hierarchical security levels (for example: unclassified, secret, top secret) combined with a system of non-hierarchical security categories (for example: Project A, Project B, Project C). The system imposes mandatory access controls restricting which users can access data based on a comparison of the classification of the users and the data. multiple console support (MCS). The operator interface in an MVS system.
Glossary
793
Glossary
multiple-subsystem scope. A RACF classification model used in conjunction with the DB2 access control module, or RACF external security module, to construct DB2 resource names with the subsystem ID as part of the class name. Contrast with single-subsystem scope. multisystem node. See multisystem RRSF node. multisystem RRSF node. An RRSF node consisting of multiple MVS system images that share the same RACF database. One of the systems is designated to be the main system, and it receives the unsolicited RRSF communications sent to the node. MVS. (multiple virtual storage) The mainframe operating system that allows multiple users to work simultaneously using the full amount of virtual storage. OPERATIONS attribute. A user attribute that grants the equivalent of ALTER access to all data sets unless the user or one of the user's connect groups appears explicitly in the access list of a data set's profile. If a user needs to perform maintenance activities on DASD volumes, granting DASDVOL authority to those volumes using the PERMIT command is preferred over assigning the OPERATIONS or group-OPERATIONS attribute. Note that most modern DASD maintenance programs do not require the OPERATIONS attribute. Contrast with DASDVOL authority and group-OPERATIONS attribute. operator identification card (OIDCARD). A small card with a magnetic stripe encoded with unique characters and used to verify the identity of a terminal operator to RACF. owner. The user or group that creates a profile, or is specified as the owner of a profile. The owner can modify, list, or delete the profile.
N
NCSC. National Computer Security Center. The part of the U.S. Department of Defense that determines defense and security criteria. nested ACEE. An ACEE that contains the security environment (ENVR object) of a daemon nested beneath the security environment of the client to support daemon access to delegated resources. See ACEE and delegated resource. network-qualified name. An identifier for a partner LU in the form netid.luname, where netid is a 18 character network identifier and luname is a 18 character LU name. node. See RRSF node. nonautomatic profile. A tape volume profile that RACF creates when an RDEFINE command is issued or when tape data set protection is not active. A tape volume profile created in this manner is called a nonautomatic profile because RACF never deletes the profile except in response to the RDELETE command. Contrast with automatic profile. non-data sharing mode. One of two normal modes of operation when RACF is enabled for sysplex communication and is the mode in which RACF communicates information using sysplex facilities to other instances of RACF, but does not make use of the coupling facility in doing so.
P
PADS. See program access to data sets (PADS). partner logical unit (partner LU). A logical unit that typically resides on a remote system. Often synonymous with remote logical unit (remote LU). Contrast with local logical unit (local LU), which resides on the local system. When both the local and partner LUs reside on the same system, the LU through which communication is initiated is the local LU, and the LU through which communication is received is the partner LU. partner transaction program (partner TP). A transaction program that resides on a remote system. Contrast with local transaction program (local TP), which typically resides on the local system. PassTicket. An alternative to the RACF password that permits workstations and client machines to communicate with the host. It allows a user to gain access to the host system without sending the RACF password across the network. password. A string of characters known to a user who must specify it to gain full or limited access to a system and to the data stored within it. RACF uses a password to verify the identity of the user. password envelope. See envelope.
O
OpenExtensions for z/VM. A feature of z/VM systems that provides a set of UNIX-based programming interfaces, such as shells and utilities, in support of selected POSIX and X/OPEN portability guide (XPG) standards.
password synchronization. An option that can be specified when a peer user ID association is defined between two user IDs. If password synchronization is specified for a user ID association, then whenever the password for one of the associated user IDs is changed, the password for the other user ID is automatically changed to the newly defined password. See automatic password direction.
794
Glossary
password phrase. A longer string of mixed characters known to a user who must specify it to gain full or limited access to a system and to the data stored within it. RACF uses a password phrase to verify the identity of the user. Used as a more secure alternative to the password. password phrase envelope. See envelope. peer system. In a RACF data sharing group, any system to which RACF propagates a command entered by the system operator or administrator. Contrast with coordinator system. peer user ID association. A user ID association that allows either user ID to run allowed RACF commands under the authority of the other user ID using command direction. A peer user ID association can also establish password synchronization between the associated user IDs. Contrast with managed user ID association. permission bits. In z/OS UNIX, part of security controls for directories and files stored in the z/OS UNIX file system. Used to grant read, write, search (just directories), or execute (just files) access to owner, file or directory owning group, or all others. persistent verification (PV). A VTAM security option for conversation-level security between two logical units (LUs) that provides a way of reducing the number of password transmissions by eliminating the need to provide a user ID and password on each attach (allocate) during multiple conversations between a user and a partner LU. The user is verified during the signon process and remains verified until the user has been signed off the partner LU. PKCS. See public key cryptographic standards. PKI. See public key infrastructure. PKIX. See public key infrastructure standards. POSIT. A number specified for each class in the class descriptor table that identifies a set of flags that control RACF processing options. POSIX. (Portable Operating System Interface For Computer Environments) An IEEE standard for computer operating systems. primary data set. A data set in the primary RACF database. See master primary data set. primary RACF database. The RACF database designated in the data set name table (ICHRDSNT), or specified at IPL time, that contains the RACF profiles used for authorization checking. The primary RACF database might consist of as many as 90 data sets. See backup RACF database. private key. In public key cryptography, a key that is known only to its owner. Contrast with public key. problem state. A state during which a processing unit cannot execute input/output and other privileged instructions. Contrast with supervisor state. process. In z/OS UNIX, a function created by a fork() request. See task. profile. Data that describes the significant characteristics of a user, a group of users, or one or more computer resources. A profile contains a base segment, and optionally, a number of other segments. See data set profile, discrete profile, general resource profile, generic profile, group profile, and user profile. profile list. A list of profiles indexed by class (for general resources) or by the high-level qualifier (for data set profiles) and built in storage by the RACF routines. profile modeling. The ability for a user or an installation to copy information (such as universal access authority or access lists) from an existing resource profile when defining a new resource profile. This might occur automatically when using ADDSD based on the MODEL specification in a USER or group PROFILE, or manually with the FROM keyword of the ADDSD and RDEFINE commands, or with keywords on RACROUTE REQUEST=DEFINE. program access to data sets (PADS). A RACF function that enables an authorized user or group of users to access one or more data sets at a specified access authority only while running a specified RACF-controlled program. See program control. program control. A RACF function that enables an installation to control who can run RACF-controlled programs. See program access to data sets. protected resource. A resource defined to RACF for the purpose of controlling access to the resource. Some of the resources that can be protected by RACF are DASD volumes, tape volumes, load modules, terminals, IMS and CICS transactions, and installation-defined resource classes. protected user ID. A user ID that cannot enter the system by any means that requires a password or password phrase, and cannot be revoked by incorrect password and password phrase attempts. Assigning a protected user ID to z/OS UNIX, a UNIX daemon, or another important started task or subsystem assures that the ID cannot be used for other purposes, and that functions will not fail because the ID has been revoked. public key. In public key cryptography, a key that is made available to everyone. Contrast with private key. public key cryptography. Cryptography in which public keys and private keys are used for encryption
Glossary
795
Glossary
and decryption. One party uses a common public key and the other party uses secret private key. The keys are complementary in that if one is used to encrypt data, the other can be used to decrypt it. public key cryptographic standards (PKCS). Set of standards developed by RSA Corporation to facilitate interoperability for cryptographic protocols. public key infrastructure (PKI). The set of hardware, software, people, policies, and procedures needed to create, manage, store, distribute, and revoke public key certificates based on public key cryptography. public key infrastructure Standards (PKIX). Set of standards needed to support an X.509-based PKI. PV. See persistent verification. A data set that is RACF-protected by a discrete profile must also be RACF-indicated. RACF remote sharing facility (RRSF). RACF services that function within the RACF subsystem address space to provide network capabilities to RACF. RACF remove ID utility. A RACF utility that identifies references to user IDs and group names in the RACF database. The utility can be used to find references to residual user IDs and group names or specified user IDs and group names. The output from this utility is a set of RACF commands that can be used to remove the references from the RACF database after review and possible modification. See residual user ID. RACF report writer. A RACF function that produces reports on system use and resource use from information found in the RACF SMF records. However, the preferred method for producing RACF SMF reports is the RACF SMF data unload utility (IRRADU00). RACF segment. Obsolete term for base segment. RACF SMF data unload utility (IRRADU00). A RACF utility that enables installations to create a sequential file from the security-relevant audit data. The sequential file can be viewed directly, used as input for installation-written programs, and manipulated with sort/merge utilities. It can also be uploaded to a database manager (such as DB2) to process complex inquiries and create installation-tailored reports. See SMF records. RACF storage manager. Manages the allocation of storage for the RACF programs running on a system. RACHECK request. The AUTH request replaces the RACHECK function. See AUTH request. RACINIT request. The VERIFY request replaces the RACINIT function. See VERIFY request. RACLIST request. The LIST request replaces the RACLIST function. See LIST request. RACLISTed profiles. See locally RACLISTed profiles and globally RACLISTed profiles. RACROUTE macro. An assembler macro that provides a means of calling RACF to provide security functions, including the AUDIT request, AUTH request, DEFINE request, DIRAUTH request, EXTRACT request, FASTAUTH request, LIST request, SIGNON request, STAT request, TOKENBLD request, TOKENMAP request, TOKENXTR request, VERIFY request, and VERIFYX request. RACSTAT request. The STAT request replaces the RACSTAT function. See STAT request. RACXTRT request. The EXTRACT request replaces the RACXTRT function. See EXTRACT request.
R
RACDEF request. The DEFINE function replaces the RACDEF function. See DEFINE request. RACF. See Resource Access Control Facility. RACF access control module. A DB2 module that receives control from the DB2 access control authorization exit point (DSNX@XAC) to handle DB2 authorization checks. This term applies only to the DB2 module available beginning with DB2 Version 8. RACF DB2 external security module. A RACF module that receives control from the DB2 access control authorization exit point (DSNX@XAC) to handle DB2 authorization checks. This term applies to the RACF module available for DB2 Version 7 and earlier. RACF database. The repository for the security information that RACF maintains. RACF data set. One of the data sets comprising the RACF database. RACF-indicated. Pertaining to a data set for which the RACF indicator is set on. If a data set is RACF-indicated, a user can access the data set only if a RACF profile or an entry in the global access checking table exists for that data set. On a system without RACF, a user cannot access a RACF-indicated data set until the indicator is turned off. For VSAM data sets, the indicator is in the catalog entry. For non-VSAM data sets, the indicator is in the data set control block (DSCB). For data sets on tape, the indicator is in the RACF tape volume profile of the volume that contains the data set. RACF manager. The routines within RACF that provide access to the RACF database. Contrast with RACF storage manager. RACF-protected. Pertaining to a resource that has either a discrete profile or an applicable generic profile.
796
Glossary
RBA. See relative byte address. read-only mode. A recovery mode of operation when RACF is enabled for sysplex communication. Read-only mode does not allow updates to be made to the RACF database except for statistics generated during logon and job initiation. real GID. The attribute of a process that, at the time of process creation, identifies the group of the user who created the process. See group identifier (GID). Contrast with effective group identifier (effective GID). real UID. The attribute of a process that, at the time of process creation, identifies the user who created the process. See user identifier (UID). Contrast with effective user identifier (effective UID). relative byte address (RBA). The address in the RACF database. relative distinguished name (RDN). One component of a distinguished name. remote logical unit (remote LU). A logical unit that resides on a remote system. Often synonymous with partner logical unit (partner LU). Contrast with local logical unit (local LU), which typically resides on the local system. residual authority. References in the RACF database to group names and user IDs that have been deleted. residual group name. References in the RACF database to a group name that has been deleted. residual user ID. References in the RACF database to a user ID that has been deleted. Resource Access Control Facility (RACF). A component of z/OS Security Server that provides access control by identifying and verifying the users to the system, authorizing access to protected resources, logging detected unauthorized attempts to enter the system, logging unauthorized attempts to enter the system, and logging detected accesses to protected resources. RACF for z/VM is available as a feature of z/VM. resource group profile. A general resource profile in a resource grouping class. A resource group profile can provide RACF protection for one or more resources with unlike names. See resource grouping class. resource grouping class. A RACF class in which resource group profiles can be defined. A resource grouping class is related to another class, sometimes called a member class. For example, the resource grouping class GTERMINL is related to the class TERMINAL. See resource group profile. resource profile. A profile that provides RACF protection for one or more resources. USER, GROUP, and CONNECT profiles are not resource profiles. The information in a resource profile can include the profile name, profile owner, universal access authority, access list, and other data. Resource profiles can be discrete profiles or generic profiles. See discrete profile and generic profile. RESTRICTED attribute. A user attribute that can be assigned to a shared user ID, such as PUBLIC or ANONYMOS, or a user ID used with a certificate name filter, to prevent the user ID from being used to access protected resources it is not specifically authorized to access. Restricted users cannot gain access to protected resources through global access checking, UACC, or an ID(*) entry on the access list, and optionally, to a z/OS UNIX file system object through the 'other' bits. reverse mandatory access check. A mandatory access check in which the security label of the resource must dominate the security label of the user in order for the user to be granted access to the resource. REVOKE attribute. A user attribute that prevents a RACF-defined user from entering the system. role. In Tivoli products, a functional grouping of user authorizations. A ROLE profile represents a role and identifies the authorizations associated with that role. RRSF. See RACF remote sharing facility. RRSF logical node connection. Two RRSF nodes are logically connected when they are properly configured to communicate through APPC/MVS, and they have each been configured by the TARGET command to have an OPERATIVE connection to the other. RRSF network. Two or more RRSF nodes that have established RRSF logical node connections to each other. RRSF node. An MVS system image or a group of MVS system images sharing a RACF database, which has been defined as an RRSF node, single-system RRSF node, or multisystem RRSF node to RACF by a TARGET command. See RRSF logical node connection. RTOKEN. The RACF resource security token. An RTOKEN is an encapsulation or representation of the security characteristics of a resource. Resource managers, for example JES, can assign RTOKENs to the resources they manage; for example, JES spool files. See UTOKEN and STOKEN.
S
SAF. See System Authorization Facility. secured signon. A RACF function providing an alternative to the RACF password and also providing enhanced security across a network. security. See data security.
Glossary
797
Glossary
security category. A non-hierarchical grouping of sensitive information used to control access to data. security classification. The use of security categories, a security level, or both, to impose additional access controls on sensitive resources. An alternative way to provide security classifications is to use security labels. security label. An installation-defined name that corresponds to a specific RACF security level with a set of zero or more security categories. This is equivalent to the NCSC term sensitivity label. security level. An installation-defined name that corresponds to a numerical security level; the higher the number, the higher the security level. security token. A collection of identifying and security information that represents data to be accessed, a user, or a job. This contains a user ID, group name, security label, node of origin, and other information. segment. A portion of a profile. The format of each segment is defined by a template. SETROPTS RACLISTed profiles. See globally RACLISTed profiles. SFS. See Shared File System. shared GID. An OMVS GID value that has been assigned to more than one group. shared UID. An OMVS UID value that has been assigned to more than one user. shared file system (SFS). On z/VM, a part of CMS that lets users organize their files into groups known as directories and selectively share those files and directories with other users. signed-on-from list. A list of user entries identifying those users who have been signed on from a partner LU to a local LU and is associated with persistent verification. SIGNON request. The issuing of the RACROUTE macro with REQUEST=SIGNON specified. A SIGNON request is used to manage the signed-on-from lists associated with persistent verification. single-subsystem scope. A classification model used in conjunction with the DB2 access control module, or RACF external security module, to construct DB2 classes with the subsystem ID as part of the class name. Contrast with multiple-subsystem scope. single-system node. See single-system RRSF node. single-system RRSF node. An RRSF node consisting of one MVS system image. site certificate. A type of certificate managed by RACF. See digital certificate. SMF. See System Management Facility. SMF data unload utility. See RACF SMF data unload utility. SMF records. (1) Records and system or job-related information collected by the System Management Facility (SMF) and used in billing users, reporting reliability, analyzing the configuration, scheduling jobs, summarizing direct access volume activity, evaluating data set activity, profiling system resource use, and maintaining system security. (2) Variable-length process or status records from the SMF data set that are written to the SMF log data set. These records vary in layout based on the type of system information they contain. See RACF SMF data unload utility. SMS. See Storage Management Subsystem. SNA. See System Network Architecture (SNA). source user ID. The source half of a source user ID and target user ID pair that has an established user ID association between them. For command direction the source user ID is the user ID that issued the command that is being directed. For password synchronization the source user ID is the user ID whose password changed, causing a change to the password of the target user ID. Contrast with target user ID. SPECIAL attribute. A user attribute that gives the user full control over all of the RACF profiles in the RACF database and allows the user to issue all RACF commands, except for commands and operands related to auditing. Contrast with group-SPECIAL attribute. split database. A RACF database that has been divided among multiple data sets. standard access list. The portion of a resource profile that specifies the users and groups that might access the resource and the level of access granted to each. Synonymous with access list. Contrast with conditional access list. started procedures table (ICHRIN03). Associates the names of started procedures with specific RACF user IDs and group names. It can also contain a generic entry that assigns a user ID or group name to any started task that does not have a matching entry in the table. However, it is recommended that you use the STARTED class for most cases rather than the started procedures table. static CDT. The non-dynamic portion of the class descriptor table that is contained in the supplied CDT (module ICHRRCDX) and the optional installation-defined CDT (module ICHRRCDE). See also dynamic CDT. STAT request. The issuing of the RACROUTE macro with REQUEST=STAT specified. A STAT request determines if RACF is active and (optionally) if a given
798
Glossary
resource class is defined to RACF and active. The STAT request replaces the RACSTAT function. STOKEN. A UTOKEN associated with a user who has submitted work. See UTOKEN and RTOKEN. Storage Management Subsystem (SMS). A DFSMS facility used to automate and centralize storage management by providing the storage administrator with control over data class, storage class, management class, storage group, and automatic class selection routine definitions. structure. See cache structure. stub. (1) A function that connects with the specified library, but remains outside the specified library. (2) A protocol extension procedure. subject's distinguished name (SDN). The X.509 name in a digital certificate that is associated with the name of the subject. superuser. In z/OS UNIX, a system user who operates with the special privileges needed to perform a specified administrative task. superuser authority. In z/OS UNIX, the unrestricted authority to access and modify any part of the operating system, usually associated with the user who manages the system. supervisor. The part of a control program that coordinates the use of resources and maintains the flow of processing unit operations. Synonym for supervisory routine. supervisor state. A state during which a processing unit can execute input/output and other privileged instructions. Contrast with problem state. supervisory routine. A routine, usually part of an operating system, that controls the execution of other routines and regulates the flow of work in a data processing system. Synonymous with supervisor. supplied CDT. The required portion of the CDT (module ICHRRCDX) that is supplied by IBM and shipped with RACF. Classes defined in the supplied CDT must not be modified by the installation. syscall. See callable service. sysplex (system complex). Multiple systems communicating and cooperating with each other through multisystem hardware elements and software services to process the installation's workloads. sysplex communication. An optional RACF function that allows the system to use XCF services and communicate with other systems that are also enabled for sysplex communication. system authorization facility (SAF). An interface defined by MVS that enables programs to use system authorization services in order to control access to resources, such as data sets and MVS commands. SAF either processes security authorization requests directly or works with RACF, or other security product, to process them. system call. In z/OS UNIX, a synonym for callable service. system complex. See sysplex. System Management Facility (SMF). The part of the operating system that collects and records system and job-related information used in billing users, reporting reliability, analyzing the configuration, scheduling jobs, summarizing direct access volume activity, evaluating data set activity, profiling system resource use, and maintaining system security. The information is recorded in the SMF log data set. Systems Network Architecture (SNA). The IBM architecture that defines the logical structure, formats, protocols, and operational sequences for transmitting information units through, and controlling the configuration and operation of, networks. The layered structure of SNA allows the ultimate origins and destinations of information, that is, the users, to be independent of and unaffected by the specific SNA network services and facilities used for information exchange.
T
tape volume set. The collection of tape volumes on which a multivolume data set resides. A volume set is represented in one RACF profile. tape volume table of contents (TVTOC). Information about a tape data set that RACF stores in the tape volume profile for the volume on which the data set resides. The TVTOC includes the data set name, data set sequence number, creation date, and an indicator as to whether a discrete tape data set profile exists. target node. An RRSF node that a given RRSF node is logically connected to, as a result of a TARGET command. See local node and remote node. target user ID. The target half of a source user ID and target user ID pair that has an established user ID association between them. For command direction, the target user ID is the user ID specified on the AT or ONLYAT keyword, and is the user ID under whose authority the command is run on the specified node. For password synchronization, the target user ID is the user ID whose password RACF automatically updates when the password for the source user ID is changed. Contrast with source user ID.
Glossary
799
Glossary
task. A basic unit of work to be performed or a process and the procedures that run the process. template. Contains mappings of the profiles on the RACF database. token. A real or virtual device that stores cryptographic data objects such as keys and digital certificates. TOKENBLD request. The issuing of the RACROUTE macro with REQUEST=TOKENBLD specified. A TOKENBLD request builds a UTOKEN. TOKENMAP request. The issuing of the RACROUTE macro with REQUEST=TOKENMAP specified. A TOKENMAP request maps a token in either internal or external format, allowing a caller to access individual fields within the UTOKEN. TOKENXTR request. The issuing of the RACROUTE macro with REQUEST=TOKENXTR specified. A TOKENXTR request extracts a UTOKEN from the current address space, task or a caller-specified ACEE. TP. See transaction program. tranquility. Keeping the security classification of a resource constant while it is in use; keeping the security classification of a user constant while active. transaction program (TP). A program that processes transactions in an SNA network. TVTOC. See tape volume table of contents. user. The user attributes are SPECIAL, AUDITOR, CLAUTH, OPERATIONS, GRPACC, ADSP, and REVOKE. user attribute data set (UADS). In TSO, a partitioned data set with a member for each authorized user. Each member contains the appropriate passwords, user identifications, account numbers, LOGON procedure names, and user characteristics that define the user. user certificate. A type of certificate managed by RACF. See digital certificate. user data set. A data set defined to RACF in which either the high-level qualifier of the data set name or the qualifier supplied by an installation exit routine is a RACF user ID. user ID. A RACF user ID. A string of 18 alphanumeric characters that uniquely identifies a RACF user, procedure, or batch job to the system. For TSO users, the user ID cannot exceed 7 characters and must begin with an alphabetic, #, $, or @ character. The user ID is defined by a user profile in the RACF database and is used as the name of the profile. user ID association. A relationship between two user IDs, established through the RACLINK command, which is required for command direction and password synchronization between the user IDs. See peer user ID association and managed user ID association. user identification. See user ID. user identification and verification. The acts of identifying and verifying a RACF-defined user to the system during logon or batch job processing. RACF identifies the user by the user ID and verifies the user by the password, password phrase, PassTicket, verified digital certificate, or operator identification card supplied during logon processing or the password supplied on a batch JOB statement. user identifier (UID). A number between 0 and 2147483647 that identifies a user to z/OS UNIX. The UID is associated with a RACF user ID when it is specified in the OMVS segment of the user profile. It can be contained in an object of type uid_t, that is used to identify a system user. When the identity of the user is associated with a process, a UID value is referred to as a real UID, an effective UID, or an (optional) saved set UID. See real UID. Contrast with effective user identifier (effective UID). user name. In RACF, 120 alphanumeric characters that represent a RACF-defined user. Contrast with user ID. user profile. A description of a RACF-defined user that includes the user ID, user name, default group name, password, password phrase, profile owner, user
U
UACC. See universal access authority. UADS. See user attribute data set. universal access authority (UACC). The default access authority that applies to a resource if the user or group is not specifically permitted access to the resource, unless the user is restricted. The universal access authority can be any of the access authorities. universal group. A user group defined using the UNIVERSAL operand of the ADDGROUP command. Universal groups are expected to have a large number of members and are unlikely to be deleted. Group profiles for universal groups do not contain complete membership information, and the LISTGRP command is not recommended to list members. Using the output of the database unload utility (IRRDBU00) is the best way to list members of a universal group. user. A person who requires the services of a computing system. user attribute. The extraordinary privileges, restrictions, and processing environments assigned to a
800
Glossary
attributes, and other information. A user profile can include information for subsystems such as TSO and DFP. UTOKEN. The RACF user security token. A UTOKEN is an encapsulation or representation of the security characteristics of a user. RACF assigns a UTOKEN to each user in the system. See STOKEN and RTOKEN. writedown privilege. The ability of users to set their address spaces to writedown mode in which they are able to write data to an object with a lower security label than the user's current security label on a system where writedown is normally disallowed because the RACF MLS(FAILURES) option is in effect.
X
X.500. ITU/ISO 9594 standard for an open system directory information tree; includes protocols for access and security.
V
verification. See user identification and verification. VERIFY request. The issuing of the RACROUTE macro with REQUEST=VERIFY specified. A VERIFY request is used to verify the authority of a user to enter work into the system. The VERIFY request replaces the RACINIT function. VERIFYX request. The issuing of the RACROUTE macro with REQUEST=VERIFYX specified. A VERIFYX request verifies a user and builds a UTOKEN, and handles the propagation of submitter ID. virtual key ring. The set of certificates owned by a user ID and used by a user or server application to determine the trustworthiness of a client or peer entity. Each RACF user ID is associated with a virtual key ring. In contrast to a real key ring, a virtual key ring is not added to RACF. In addition, the private key cannot be retrieved from a CERTAUTH or SITE virtual key ring, as it can be from a real key ring. The most common type is the CERTAUTH virtual key ring which is used when an application uses a key ring to validate the certificates of others but has no need for its own certificate and private key. virtual machine (VM). (1) An operating system that appears to be at the exclusive disposal of the particular user, but whose functions are accomplished by sharing the resources of a real data processing system. (2) In z/VM, the operating system that represents the virtual processors, virtual storage, virtual devices, and virtual channel subsystem allocated to a single user. A virtual machine also includes any expanded storage dedicated to it. VM. See virtual machine.
Z
z/OS. A program licensed by IBM that not only includes and integrates functions previously provided by many IBM software products, including the MVS operating system, but also: 1. Is an open, secure operating system for IBM enterprise servers 2. Complies with industry standards 3. Is based on the new 64-bit z/Architecture 4. Supports technology advances in networking server capability, parallel processing, and object-oriented programming. z/OS UNIX group identifier (GID). See group identifier (GID). z/OS UNIX System Services (z/OS UNIX). The set of functions provided by the shells, utilities, kernel, file system, debugger, Language Environment, and other elements of the z/OS operating system that allows users to write and run application programs that conform to UNIX standards. z/OS UNIX user identifier (UID). See user identifier (UID).
W
workspace data sets. VSAM data sets used by RACF for queuing requests sent to and received from target nodes in an RRSF environment. writedown mode. The setting of an address space at which it can create output data at a lower security label than the current security label of the address space on a system where writedown is normally disallowed because the RACF MLS(FAILURES) option is in effect.
Glossary
801
Glossary
802
Numerics
3480 tape drives with IDRC feature and IEC.TAPERING profile in FACILITY class 201 3490 tape drives and IEC.TAPERING profile in FACILITY class 201 4-digit device using 267
A
ACBs controlling who can open 288 access attempts logging 4 access authority description 8 for applications 770 for consoles 252 for DASD data sets 181 for tape volume profiles 191 granting or denying for general resource class 216 required by IBM support personnel 383 required for terminals 766 responsibility for assigning 3 summary of authorities and commands 732 TSO resources 530 using started procedures 153 access control lists (ACLs) for z/OS UNIX data 559 access list assigning access authorities for consoles 252 assigning access authorities for DASD data sets 181 authority of a user not in for data set 174 authority of a user not in for general resource 216 conditional data set profiles 173 general resource profiles 217
803
ADDMEM operand (continued) RDEFINE command protecting terminals with a GTERMINL profile 248 ADDUSER command NOPASSWORD option 90 NOPHRASE option 90 RESTRICTED option 91 administration delegating tasks 12 RACF commands for group 16 RACF commands for user 16 sharing responsibilities 61 using groups to allow flexibility 53 administration, RACF classroom courses xviii administrative control allowed by RACF 9 administrative group defining 53 ADMINISTRATOR option DFSMSdss commands 186 ADSP (automatic data set protection) attribute bypassing system-wide 132 description of 18, 81 limitation on assigning 87 planning for the use of 41 to protect data set with discrete profile 167 when protecting tape data sets 190 when RACF is deactivated 535 advanced program-to-program communication See APPC AIMS class description 720 ALCSAUTH class description 715 algorithm, masking secured signon application key 258 ALLOCATE command (TSO) to protect data set with discrete profile 167 using the PROTECT operand on 179 using the SECMODEL operand on 179 allocation of devices controlling with DEVICES profiles 265 ALTER access authority as related to RACF commands 732 for general resources 216 for RACF-protected tape volume labels 203 to a tape volume 199 ALTUSER command NOPASSWORD option 90 NOPHRASE option 90 RESTRICTED option 91 APPC (advanced program-to-program communication) 289 protecting with RACF 289 APPC application defining PTKTDATA profiles 255 APPC transaction program protecting with APPCTP profiles 290
APPC transaction program (continued) WORKATTR segments 74 APPCLU class activating for VTAM LU 6.2 bind 244 conversation security options 291 defining for VTAM LU 6.2 bind 243 description 715 example for VTAM LU 6.2 bind 245 granting access 244 SESSION segment 244 SESSION segment fields 230 SETROPTS RACLIST not used 244 VTAM session interval 144 APPCPORT class authorization checking 768 conditional access 173, 217 description 715 protecting the port of entry (POE) 290 APPCSERV class authorizing APPC servers 292 description 715 APPCSI class description 715 protecting CPI-C side information 291 APPCTP class description 715 protecting APPC transaction programs 290 APPL class activating 245 authorization checking 770 controlling LU attach request 290 description 715 protecting applications 245 protecting conversations between partner LUs 291 SETROPTS RACLIST processing 245 application authorizing access to a RACF-protected 770 authorizing for SAF callable services 629 protecting with APPL profiles 245 application identity mapping 552 application key See secured signon key application name defining PTKTDATA profiles 257 application updates controlling automatic direction of 285 assigning access authorities to DASD data sets 182 group as owner of RACF profile 59 group authorities 61 optional user attributes 17 ownership of data set profile 166 ownership of RACF group 59 ownership of resource profile 23 user attributes 87 associations user ID approving 433 defining 432
associations (continued) user ID (continued) defining for other users 433 defining for your user ID 432 deleting 433 listing 434 managed 433 AT operand controlling use of 281 directing commands 435 attribute ADSP (automatic data set protection) bypassing system-wide 132 description of 18, 81 limitation on assigning 87 assigning user or group 17 AUDITOR description of 18, 77 listing users with 88 suggestions for assigning 87 checking user's group-related 120 CLAUTH (class authority) description of 18, 80 definition of user and group 7 group-AUDITOR description of 18, 78 scope of authority 83 group-OPERATIONS compared to DASDVOL authority 79 compared to DFSMSdss authorization 79, 186 description of 18, 79 scope of authority 83 group-SPECIAL description of 18, 77 illustration of scope of authority 86 scope of authority 83 GRPACC (group access) description of 18, 81 OPERATIONS compared to DASDVOL authority 79 compared to DFSMSdss authorization 79, 186 description of 18, 78 listing users with 88 suggestions for assigning 87 RESTRICTED 19 description of 82 REVOKE description of 80 listing users with 88 scope of control of group-level 17 SPECIAL description of 18, 77 listing users with 88 suggestions for assigning 87 summary 728 UNIVERSAL, for groups 56 user 76 assigning at the group level 82 verifying with DSMON reports 88
804
AUDIT operand using for general resource profiles 208 audit record debugging your security arrangements 750, 752 auditing message traffic 289 messages sent with TSO SEND, LISTBC, or TPUT 289 unknown operator command 276 auditing information authority to display 77 auditor defining example 374 duties of 12 responsibilities during implementation planning 38 AUDITOR attribute as related to RACF commands 730 description of 18, 77 listing users with 88 suggestions for assigning 87 authentication of passwords exit routines for 26 authentication, user ID brief description 775 authority checking after restarting a job 381 DASDVOL compared to DFSMSdss authorization 186 DASDVOL and DFSMSdss authorization 186 definition of group 7 delegation to group authority 61 EXECUTE restriction on dumps 264 limits at the group level 83 of auditor 77 of CLAUTH (class authority) user 80 of OPERATIONS user 78 of profile owner to access data set 166 of started procedure to access resources 154 of user with group-level attribute 82 of users and groups to use terminals 249 OPERATIONS and DASDVOL 79 OPERATIONS and DFSMSdss authorization 79, 186 required to access terminals 766 required to create a data set 165 required to issue RACF commands 725 required to open a nonlabeled tape 203 required to perform catalog operations on a protected VSAM catalog 183 required to refresh global access checking lists 142 required to refresh in-storage lists 142 required to run DSMON program 77
authority (continued) requirements for tape labels 203 requirements for TAPEVOL and TAPEDSN options 199 scope of for user with group-level attributes 83 structure at group level 85 summary 725 summary of authorities and commands 728 to access a general resource 216 to access applications 770 to access consoles 252 to access DASD data sets 181 to access data set when not in access list 174 to access protected tape data sets 188 to access protected tape volumes 189 to access tape volume profiles 191 to assign or revoke the ADSP attribute 82 to assign the GRPACC attribute 81 to assign the RESTRICTED attribute 82 to create profiles 22 to modify generic profiles 173 to modify or delete profiles 22, 23 to revoke a user from system 81 to work with profiles through attributes at group level 83 to write to a tape data set or tape volume 197 when owning a RACF group 59 when owning a user profile 76 authority for TSO user protecting 530 authorization checking bypassing for general resource classes 123 CICS transactions 769 description 3 for a tape data set 192 for access to protected consoles 767 for access to protected IP addresses 767 for access to protected JES input devices 767 for access to protected terminals 766 for fields in a RACF profile 225, 533 for multivolume tape data sets 202 for protected SMS classes 524 for RACF-protected resources 753 for security labels 770 for TSO resources 533 IMS transactions 769 repeating when restarting a job 381 SAF router exits 754 specifying for general resource classes 123 using exits to performing additional 25 authorized access attempts logging 4 authorized caller table report from DSMON 378
authorizing another user to submit jobs for you 475 controlling with DEVICES profiles 515 inbound work (JES) 487 outbound work 504 use of printers 515 authorizing only for RACF-defined users access to resources 382 automatic assignment of unique UNIX identities overview 543 through UNIX services 545 using RACF commands 544 automatic data set protection attribute See ADSP attribute automatic direction of application updates 439 controlling 285 of commands 439 controlling 282 of password phrases controlling 284 of passwords 439, 457 controlling 284 order considerations 438 automatic direction of commands 439 automatic password direction 457 automatic TVTOC tape volume profile 195
B
backup RACF database 385 base name profile access list in GDG 178 base segment group profile 54 user profile 66 BASIC attribute for programs defining 341 overview 340 BASIC program security mode maintaining a clean environment 327 migrating to ENHANCED mode 329 more complex controls 329 program control by SMFID 327 program control for SERVAUTH 338 simple program protection 324 using execute control 329 using program access to data sets (PADS) 333 batch job authority to access a data set 174 defining PTKTDATA profiles 255 preventing security exposures for 382 preventing unauthorized users from running 474 user identification with USER operand 383 batch monitor running jobs under execution batch monitor 474 batch user assigning user ID to 44 Index
805
BCICSPCT class description 718 benefits of using RACF groups 57 bind profile, LDAP 641 bind, password on RACF support for 243 BLKUPD command overview 28 block update command 28 BLP See bypass label processing (BLP) BPX.DEFAULT.USER profile 550 BPX.SERVER 635 BPX.UNIQUE.USER profile 544, 545 BPXPRMxx setting user limits 540 bypass label processing (BLP) authorizing with FACILITY profile 202 bypass password protection DSMON report 377 use by callers of RACF 381 bypassing ADSP attribute 132 authorization checking for general resource classes 123 password protection 21 password protection of tape data sets 188 password protection of tape volumes 189 protection of data sets when DASDVOL class is active 185 RACF protection of a system data set during system access 184 write-enable protection for tapes 201 bypassing PassTicket replay protection 261
C
CACHECLS class description 715 callable services, authorizing applications that invoke 629 CANCEL command (TSO) controlling job cancellation 484 cancelling jobs controlling 484 capturing output of RACF TSO commands 436 produced by password synchronization 432 capturing the output of RACF commands 29 catalog assigning access authority to 182 master catalog global access checking table entries 223 password and RACF authorization requirements for catalog operations 183 protecting 183 protecting with FACILITY profiles 183
catalog (continued) user catalog global access checking table entries 223 CATDSNS operand SETROPTS command 129 categories maintaining in an RRSF environment 104 CBIND class description 715 CCA (common cryptographic architecture) 258 CCICSCMD class description 718 CDT class description 715 CDTINFO field-level access checking 225 CDTINFO segment user profile FIELD profile names 228 certificate authorities 569 certificate name filters 598 certificates See digital certificates CFDEF field-level access checking 225 CFDEF segment user and group profile FIELD profile names 228 CFIELD class description 715 profile names 665 CHOWN.UNRESTRICTED profile 558 CICS general resource classes 718 using with RACF 292 CICS application defining a PTKTDATA profile 255 CICS segment description 20 field-level access checking 225 user profile contents of 67 FIELD profile names 228 CICS signon table deleting user entry 97 CICS transaction authorization checking 769 CIMS class description 720 class authority attribute See CLAUTH attribute class descriptor table See CDT class descriptor table (CDT) adding installation-defined classes details 301 overview 22 dynamic CDT classes 301 obtaining security report 378 supplied classes for z/OS systems 715 supplied classes for z/VM systems 723
class descriptor table report from DSMON 378 CLASSACT operand SETROPTS command 123 CLASSACT(*) operand SETROPTS command guidelines 115, 123 classes DCE KEYSMSTR 297 defining overview 22 KEYSMSTR activating 299 defining 298 names of supplied general resource classes for z/OS 715 names of supplied general resource classes for z/VM 723 RRSFDATA controlling access to RACLINK command 279 controlling access to RRSF functions 279 controlling automatic direction 282 controlling password and password phrase synchronization 280 controlling use of AT operand 281 controlling use of RACLINK DEFINE operand 279 controlling use of RACLINK PWSYNC operand 280 STARTED 155 and STDATA segment 155 setting up 155 STARTED profile names 156 UNIXMAP profiles for 555 z/OS UNIX considerations 553 z/OS UNIX event auditing DIRACC 565 DIRSRCH 565 FSOBJ 565 FSSEC 565 IPCOBJ 565 PROCACT 565 PROCESS 565 classifying data 101 users 101 classroom courses, RACF xviii CLAUTH (class authority) attribute as related to RACF commands 730 assigning for TAPEVOL class 191 delegating 80 description of 18, 80 example for JESSPOOL class 507 FACILITY class 233 with JOIN group authority 60 clean environment 327 client/server environment secured signon 252 CLIST creating user IDs with 76
806
command authorization in an MCS sysplex 274 command direction 434 AT option 435 on local node 435 on remote node 436 ONLYAT option 437 order considerations 438 commands AT operand controlling use of 281 automatic direction 439 controlling automatic direction of 282 ONLYAT operand controlling use of 281 output capturing 436 RACDCERT controlling access to 580 RACLINK controlling access to 279 controlling use of DEFINE operand 279 controlling use of PWSYNC operand 280 START 156 summary 725 common cryptographic architecture See CCA communications device controlling allocation with DEVICES profiles 265 COMPATMODE operand SETROPTS command 147 conditional access CONSOLE class 173, 217 MDSNTB class 218 OPERCMDS class 218, 276 conditional access list data set profiles 173 during authorization checking 757, 758 general resource profiles 217 CONNECT command using to specify attributes at the group level 82 connect group specifying on TSO LOGON command 535 using current connect group checking 121 CONNECT group authority as related to RACF commands 731 description 60 console access authorities for 252 conditional access 173, 217 creating a RACF user profile for 275 extended MCS OPERPARM segment in user profiles 71 protecting 251 protecting with SECLABEL profiles 252 RACF authorization checking for 767 CONSOLE class activating 252
CONSOLE class (continued) and SECLABEL class 252 authorization checking 768 conditional access 173, 217 description 715 LOGON 511 protecting MCS consoles 251 SETROPTS RACLIST processing 252 UACC authorities 252 CONSOLE command (TSO) and OPERPARM segment 71 CONTROL access authority as related to RACF commands 732 for general resources 216 controlled program example of command to define 349 conversation security options SESSION segment of APPCLU profile 291 conversion utility, IRRIRA00 552 CONVSEC field APPCLU profile 291 coordinating profile updates 369 courses about RACF xviii CPI-C side information protecting with APPCSI profiles 291 CPSMOBJ class description 718 CPSMXMP class description 718 CPU-ID field SMF CONTROL file 257 CREATE group authority allows OPERATIONS user to define data set profiles 79 as related to RACF commands 731 description 60 for protecting data sets in group 163 creating a new data set authority required 165 access list for field-level access checking 226 TVTOC (tape volume table of contents) 194 user data sets 164 cross-reference utility See IRRUT100 utility cryptographic architecture See CCA cryptographic product requirements for secured signon 258 CRYPTOZ class brief description 720 CSDATA field-level access checking 225 CSDATA segment adding custom field data 670 authorizing users to update data 673 group profile contents of 55 user and group profile FIELD profile names 228 user profile contents of 68 IRRDBU00 utility 389
CSFKEYS class description 720 CSFSERV class description 720 CSVLLA prefix FACILITY profile 268 current connect group checking activating 121 deactivating 121 custom fields activating 669 adding data to CSDATA segment 670 authorizing users to define 672, 673 authorizing users to update CSDATA 673 changing attributes 674 common errors 679 defining 664 overview 663 profiles in the CFIELD class 665 removing 678 RRSF considerations 681 task roadmap 664 Customer Information Control System See CICS
D
DAC See discretionary access control DADSM scratch function DASDVOL authority 185 daemon access to delegated resources 299 DASD data set access authorities for 181 DFP-managed preventing access to 129 erasing of scratched 182 multivolume considerations 180 protecting 21, 162, 181 protecting with discrete profile 167 protecting with discrete profile through ADSP attribute 81 protecting with the PROTECT operand on TSO ALLOCATE command 179 protecting with the SECMODEL parameter on TSO ALLOCATE command 179 scratching when protected with discrete profile 167 DASD volume authority 185 DASDVOL and DFSMSdss authorization 186 OPERATIONS and DASDVOL authority 79 OPERATIONS and DFSMSdss authorization 79, 186 RACF authorization checking for 754 requirements for RACF databases 385 DASDVOL class alternatives DFSMSdss authorization 186
Index
807
DASDVOL class (continued) bypassing protection of individual data sets 185 compared to OPERATIONS attribute 79, 185 description 715 OPERATIONS attribute allows access 78 recording statistics for 127 data classifying 101 data blocks number of resident 386 data control group defining 53 Data Facility Data Set Services (DFDSS) See DFSMSdss Data Facility Hierarchical Storage Manager (DFHSM) See DFSMShsm Data Facility Product (DFP) See DFSMSdfp data lookaside facility See DLF data security monitor See DSMON program data set accessing if critical profile deleted 128 activating or deactivating erase-on-scratch processing 135 activating tape data set protection 133 controlling creation of 165 creating with PROTECTALL in effect 128 defining automatically with ADSP attribute 18 determining owner of SMS-managed 524 dumping and restoring on a DASD volume 185 for which RACF protection is bypassed during system access 184 for which RACF protection is enforced during system access 184 generic profile checking 169 listing all invalid user IDs with access 400 logging real data set names 132 option for protecting all 128 overview of RACF protection 40 ownership of profile 166 password-protected 177 protecting data set that has single-qualifier name 164 protecting duplicate-named residing on different volumes 179 protecting for a group 165 protecting GDG 178 protecting non-VSAM with the JCL PROTECT parameter 179 protecting non-VSAM with the JCL SECMODEL parameter 179 protecting single-qualifier named data sets 132
data set (continued) protecting with a dummy group ID 166 protecting with discrete profile 167 protecting with discrete profile through ADSP attribute 81 protecting with generic profile 167 protecting with security category and security level 104 RACF authorization checking for 754 RACF authorization checking for user's own 756 recovering if critical profile deleted 128 security classification of 24, 101 system temporary data sets preventing access to 129 system-wide modeling options 131 table-driven naming conventions 163 transferring to another system 173 types that RACF can protect 21 uncataloged permanent data sets preventing access to 129 using a group to control 53 using discrete profiles to protect multivolume 180 using profile modeling when protecting 41 z/OS UNIX considerations for protecting files 559 z/OS UNIX file, considerations for 559 data set profile authority granted through group-level attributes 83 authority of OPERATIONS user over 78 conditional access list 173 controlling access to DFP segment 526 controlling who can create 164 default UACC for 174 default UACC when connected to a group 88 defining to protect program library 349 DFP segment 523 high-level qualifier of profile name 163 ownership of 166 preventing duplicate-named 179 protecting multivolume data set with discrete 180 protecting program dumps 263 rules for defining 162 sharing a common 179 when changes take effect 752 database sharing data between remote systems 386 database cross-reference utility See IRRUT100 utility database profiles synchronizing 459 database unload utility See IRRDBU00 utility
database, DB2 for IRRDBU00 output 401 database, RACF See RACF database DATASET class bypassing recording of statistics 127 OPERATIONS attribute allows access 78 recording statistics for 127 days of week terminal can access system 90, 250 user can access system 89 DB2 access control module 292 creating a DB2 table space for IRRDBU00 output 401 creating DB2 indexes for IRRDBU00 output 402 creating DB2 tables for IRRDBU00 output 401 creating optimization statistics for the DB2 database 403 database for IRRDBU00 output 401 DB2 utility statements required to delete the group records 403 deleting the IRRDBU00 data from the DB2 database 403 general resource classes 718, 719 loading the DB2 tables for IRRDBU00 output 403 reorganizing the unloaded RACF data in the DB2 database 403 SQL utility statements for creating a table for IRRDBU00 output 402 for creating indexes for IRRDBU00 output 402 for defining a table space 401 table names provided in SYS1.SAMPLIB 404 using with IRRDBU00 output 400 using with RACF 292 utility statements required to load the tables with IRRDBU00 output 403 DB2 load utility sample statements for IRRDBU00 output 400 DB2 queries sample statements for IRRDBU00 output 400 DBSYNC EXEC 459 DCE general resource class 719 KEYSMSTR class 297 DCE segment field-level access checking 225 user profile contents of 68 FIELD profile names 228 DCE.PASSWORD.KEY 634 DCICSDCT class description 718 DD statements (JCL) parameters related to RACF 380 ddname for IRRDBU00 input data sets 391
808
deactivating SETROPTS GENLIST processing 137 SETROPTS RACLIST processing 139 unused user ID 119 deadlocks avoiding 265 debugging problems with profile definitions 749 default group assigning a user to 7 connecting a user to 82 default NJE user ID ownership of SYSOUT based on NODES profiles 495 specifying with SETROPTS command 502 default OMVS segment processing 550 default user IDs concepts 501 description 501 DEFER mode logging access attempts when operating in 5 DEFINE operands RACLINK command controlling use of 279 defining general resources summary of steps 207 groups 16 groups and users 52 profiles for field-level access checking of DFP segment 525 RACF group summary of steps 61 resources with CLAUTH authority 80 rules for defining data set profiles 162 tape volume without a TVTOC 192 tape volumes to RACF 189 tape volumes with a TVTOC 191 user IDs 75 users 16 summary of steps 94 users to RACF using ICF 95 delegated resources 299 delegating administration 98 help desk functions 683 ownership of FACILITY profiles 233 resources 299 deleting groups summary of steps 62 DELMEM operand RALTER command for global access checking table 222 DELUSER processing with distributed identity filters 703 DES (data encryption standard) algorithm encrypting session keys 244 replacing 152 Device Support Facilities (ICKDSF) DASDVOL authority 185
DEVICES class activating 267, 516 controlling access to printers 515 controlling device allocation 265 defining profiles 516 description 715 example 267 SETROPTS RACLIST processing 267 UACC authorities 267, 515 DFP segment data set profile FIELD profile names 228 field-level access checking 524 RACF processing 524 SMS-managed data sets 523 description 20 field-level access checking 225 group profile contents of 55 DFSMSdss storage administrator 62 field-level access checking 524 overriding default values 523 RACF processing 524 SMS-managed data sets 522 user profile contents of 68 field-level access checking 524 overriding default values 523 RACF processing 524 SMS-managed data sets 522 DFP-managed temporary data sets protecting with TEMPDSN profiles 246 DFSMSdfp general resource classes 721 RACF support for 519 DFSMSdss ADMINISTRATOR option 186 and OPERATIONS attribute 78 authorized storage administration 79 authorizing with FACILITY profiles 186 compared to OPERATIONS attribute 79, 186 description 186 DASDVOL authority 185 DFSMShsm considerations for tape data sets 200 DFSORT ICETOOL 393 digital certificate name filters 598 digital certificates administering through initACEE callable service (IRRSIA00) 631 administering through R_datalib callable service (IRRSDL00 or IRRSDL64) 634 administering with the RACDCERT command 579 and WebSphere Application Server 592 applications that administer 631, 634 automatic registration using WebSphere Application Server 610 excluding 606 expiring 613
digital certificates (continued) exporting certificates using R_PKIServ callable service 635 extracting private keys 634 generating certificates using R_PKIServ callable service 635 grouped in a key ring 593 implementation scenarios 620 irrcerta, irrsitec, and irrmulti user IDs 613 issuer's X.509 distinguished name 598 key rollover 613 managing serial numbers 634 modeling 605 NOTRUST option 606 overview 568 RACF private key size restrictions 578 rekeying 613 renewing 613 retrieving certificates using R_PKIServ callable service 635 rollover 613 sharing with multiple servers 595 storing in Integrated Cryptographic Service Facility (ICSF) 611 subject's X.509 distinguished name 598 supplied 618 using the DIGTCERT class 592 using the DIGTCRIT class 607 X.500 directory information tree 598 digital signing of programs overview 351 task roadmap 355 digital verification of program signatures task roadmap 363 DIGTCERT class description 715 profile name 591 profile ownership 592 RACLISTing 592 DIGTCRIT class activating additional criteria 610 description 716 RACLISTing 607 using application criteria 607 DIGTNMAP class activating certificate name filtering 600 description 716 profile 600 DIGTRING class description 716 profile name 594 DIMS class description 720 DIRACC class description 722 z/OS UNIX event auditing 565 DIRAUTH class activating 289, 534 auditing all access attempts 289 checking security labels for messages 287 description 716 Index
809
directed command order considerations 438 DIRECTRY class description 723 DIRSRCH class description 722 z/OS UNIX event auditing 565 disability 779 discrete profile authority to create 22 authority to modify or delete 23 building for tape data set and tape volume 190 creating for data set through ADSP attribute 81 creating to control access to specific field in TSO segment 226 creating to protect non-VSAM data set with JCL PROTECT parameter 179 creating to protect non-VSAM data set with JCL SECMODEL parameter 179 creating with ADSP attribute 18 defining to protect GDG data set 178 defining with PROTECT parameter in JCL 201 description of 20 disposition of when scratching a DASD data set 185 protecting data sets with 167 protecting duplicate-named data sets with 179 protecting multivolume data sets with 180 user with GRPACC attribute 18 discretionary access control (DAC) definition 11 displaying auditing information 77 information from RACF profiles 29 user IDs or group names in RACF database 27 distributed identity filter DELUSER processing 703 IDIDMAP profiles 703 overview 701 residual IDIDMAP profiles 703 system requirements 702 user profile updates 703 using the RACMAP command 702 DLF (data lookaside facility) controlling access to DLF objects 269 DLF installation exit 269 DLF object protecting with DLFCLASS profiles 194, 269 DLFCLASS class activating 270 defining profiles 269 description 716 DLFDATA segment 269 example 270, 271 FIELD profile names 229 granting access to profiles 270 protecting DLF objects 269 SETROPTS RACLIST processing 270 UACC authorities 270
DLFDATA segment DLFCLASS profile contents 269 FIELD profile names 229 field-level access checking 225 DPAGELBL parameter on OUTPUT statement in JCL 381 DSMON (data security monitor) AUDITOR attribute 77 authorized caller table report 378 class descriptor table report 378 global access checking table report 378 group tree report 83, 377 list of reports produced 376 program properties table (PPT) report 377 protecting with PROGRAM profiles 29, 77 RACF exits report 378 selected data sets report 379 selected user attribute report 379 selected user attribute summary report 379 started procedures table report 379 system report 377 using 29, 376 verifying user attributes 88 DSNADM class description 718 DSNAME parameter on DD statement in JCL 380 DSNR class description 719 dumped jobs protecting 511 dumps non-RACF methods for controlling access to program 265 protecting with data set profiles 263 protecting with FACILITY profiles 264 restriction on with EXECUTE authority 264 dynamic class descriptor table (CDT) attribute comparisons 317 CDT class profiles 303 changing a POSIT value 308 changing CDT entries 309 classes with GENERIC(DISALLOWED) 311 classes with shared POSIT values 305 classes with unique POSIT values 304 deleting a dynamic class 312 disabling 315 migration 316 overview 301 re-enabling a dynamic class 315 RRSF considerations 319 shared system considerations 318 sysplex considerations 318 using 302 dynamic started procedures table 155 and STARTED class 155
E
EARLYVERIFY operand SETROPTS command 475 ECICSDCT class description 718 EDIT command (TSO) using 383 EGN operand SETROPTS command 115 EIM general resource class 719 EJBROLE class description 719 encoding definition of 153 encrypting APPCLU session key 244 secured signon application key 258 end-user function 636 enhanced generic naming DATASET class activating or deactivating 131 when installing RACF for the first time 115 ENHANCED program security mode maintaining a clean environment 327 migrating from BASIC mode 329 overview 339 program control by SMFID 327 program control for SERVAUTH 338 simple program protection 324 using execute control 339 using program access to data sets (PADS) 339 ENHANCED-WARNING program security mode 329 Enterprise Identity Mapping general resource class 719 Enterprise Java Beans general resource classes 719 enveloping, passwords 647 erase-on-scratch processing activating or deactivating system-wide 135 controlling 182 errors secured signon function preventing 262 event notification for LDAP changes 642 events z/OS UNIX auditing 565 EXECs DBSYNC 459 EXECUTE authority restriction on dumps 264 execute-controlled library example of setting up 349 in ENHANCED program security mode 339 processing 345 execution batch monitor running jobs under 474 exit routine list of all defined 378 password authentication 26 REQUEST=LIST exit resource group profiles 236
810
exit routine (continued) using to tailor RACF 24 EXPDT operand of JCL statement to specify security retention period for data set 198 expiring digital certificate 613 EXPORT accesses required 637 extended MCS console OPERPARM segment in user profiles 71 extending a private key 614 external writer access to JESSPOOL profiles 505 access to spool data sets 505
F
FACILITY class activating (first profile) 232 activating (LLA-managed data sets) 268 activating (NJE node) 513 activating (operator commands) 516 activating (program dumps) 265 activating (RJE workstation) 513 activating (vector facility) 263 authorizing DFSMSdss administration 186 bypass label processing for tapes 202 CLAUTH attribute 233 delegating profile ownership 233 description 716, 723 ICHBLP profile 202 ICHUNCAT.data-set-name profile 130 IEAABD.DMPAKEY profile 264 IEAABD.DMPAUTH profile 264 IEAVECTOR profile 263 IEC.TAPERING profile 201 IRR.DIGTCERT 65, 580 IRR.LISTUSER 684 IRR.LU.EXCLUDE 688 IRR.LU.OWNER 686 IRR.LU.TREE 687 IRR.PASSWORD.RESET 691 IRR.PWRESET.EXCLUDE 695 IRR.PWRESET.OWNER 693 IRR.PWRESET.TREE 694 planning profiles 232 protecting catalogs 183 protecting LLA-managed data sets 268 protecting NJE nodes 513 protecting program dumps 264 protecting RJE workstations 513 protecting vector facilities 263 SETROPTS RACLIST processing 232, 265 UACC authorities LLA-managed data sets 268 FACILITY class resource IRR.RPKISERV.PKIADMIN 638 failsoft processing 383 FCICSFCT class description 718
FIELD class activating 227 activating (DFP segment) 524 description 533, 716, 723 example of command to permit access to profile 226 protecting DFP segment fields 524 protecting fields in RACF profiles 225 protecting OMVS segment fields 56, 71 SETROPTS RACLIST processing 227 FIELD profile names CDTINFO segment of general profile 228 CFDEF segment 228 CICS segment of user profile 228 CSDATA segment 228 DCE segment of user profile 228 DFP segment of data set profile 228 DFP segment of group profile 228 DFP segment of user profile 228 DLFDATA segment of DLFCLASS profile 229 ICSF segment 229 ICTX segment of LDAPBIND profile 229 LANGUAGE segment of user profile 229 LNOTES segment of user profile 229 NDS segment of user profile 229 NETVIEW segment of user profile 229 OMVS segment of group profile 229 OMVS segment of user profile 229 OPERPARM segment of user profile 230 OVM segment of group profile 230 OVM segment of user profile 230 SESSION segment of APPCLU profile 230 SIGVER segment of PROGRAM profile 230 SSIGNON segment of PTKTDATA profile 230 STDATA segment of STARTED profile 231 SVFMR segment of general resource profile 231 TME segment of data set profile 231 TME segment of general resource profile 231 TME segment of group profile 231 TSO segment of user profile 231 WORKATTR segment of user profile 231 field-level access checking creating access list for 226 description 225 DFP segment in data set profile 524 DFP segment in group profile 524 DFP segment in user profile 524 TSO segment of user profile 533 with FIELD profiles 225 FILE class description 723
filters for certificate names 598 for distributed identity names 701 FIMS class description 720 flushing a VLF cache using RACF commands 370 FRACHECK macro See RACROUTE REQUEST=FASTAUTH macro FSOBJ class description 722 z/OS UNIX event auditing 565 FSP (file security packet) definition 559 FSSEC class description 722 z/OS UNIX event auditing 565 FTP daemon, authorizing access 300 functional group defining 53 fundamental elements of RACF users and groups 15
G
GCICSTRN class description 718 GCPSMOBJ class description 718 GCSFKEYS class description 720 GDASDVOL class description 716 OPERATIONS attribute allows access 78 GDG (generation data group) defining generic resource profile with enhanced generic naming active 178 protecting GDG data sets 178 security retention period processing for 199 GDSNBP class description 719 GDSNCL class description 719 GDSNDB class description 719 GDSNJR class description 719 GDSNPK class description 719 GDSNPN class description 719 GDSNSC class description 719 GDSNSG class description 719 GDSNSM class description 719 GDSNSP class description 719 GDSNSQ class description 719 GDSNTB class description 719 Index
811
GDSNTS class description 719 GDSNUF class description 719 GDSNUT class description 719 GEJBROLE class description 719 GENCERT accesses required 637 general resource overview of RACF protection 40 protecting 207 using profile modeling when protecting 41 general resource class 718 activating or deactivating 123 bypassing recording of statistics 127 defining overview 22 generic profile checking 213 ineligible for global access checking 223 product use of CICS 718 DB2 718 DCE 719 DFSMSdfp 721 EIM 719 Enterprise Identity Mapping 719 Enterprise Java Beans 719 ICSF 720 IMS 720 Infoprint Server 720 Information/Management 720 LFS/ESA 720 License Manager 720 Lotus Notes for z/OS 720 miscellaneous 715 MQSeries 721 NetView 721 Novell Directory Services for OS/390 720 RACF 715 SMS 721 Tivoli 721 Tivoli Service Desk 720 TSO 721 WebSphere MQ 722 z/OS Security Server Network Authentication Service 721 z/OS UNIX 722 z/OSMF 722 protecting SMS classes 519 recording statistics for 127 security classification of 24, 101 supplied for z/OS 715 supplied for z/VM 723 to protect TSO resources 530 general resource profile authority granted through group-level attributes 83 authority of CLAUTH user to define 80 authority of OPERATIONS user over 78 conditional access list 217
general resource profile (continued) default UACC for 216 default UACC when connected to a group 88 defining 207 sharing in-storage 136 generation data group See GDG generic character when defining generic profiles with enhanced generic naming active 168, 212 generic command processing activating or deactivating 124 GENERIC operand SETROPTS command 123 to define generic profile for data set 168 to find most specific profile for data set 170 generic profile authority to create 22 authority to modify 173 authority to modify or delete 22 choosing 211 defining for data sets 168 defining to protect GDG data sets 178 description of 20 finding the most specific for a data set 170 fully qualified protecting duplicate-named data sets with 179 order of checking 170 preventing in a dynamic class 311 preventing in a static class 210 protecting data sets using 167 protection while transferring data sets to another system 173 rationale for using 10, 40 rationale for using for data sets 167 refreshing in-storage profile lists 141 renaming a multivolume data set protected with a 180 restricting creation in general resource classes 121 top generic profiles for general resource classes 21 top profile in JESJOBS class 482 generic profile checking activating for FIELD general resource class 226 activating or deactivating 123 effect on performance 215 for data sets 169 for general resources 213 using during failsoft processing 383 with ADSP attribute 82 GENERIC(DATASET) operand SETROPTS command 172 GENERIC(DISALLOWED) dynamic classes 311, 319 shared systems 319 sharing a POSIT value 311 static classes 319
GENERIC=DISALLOWED static classes 210 GENERICOWNER operand SETROPTS command 121 related to CLAUTH attribute 18, 80, 96, 233 GENLIST operand SETROPTS command 136 GENRENEW accesses required 638 getting started with RACF 371 GID mapping and VLF 553 UNIXMAP class profiles 555 GIMS class activating 234 description 720 GINFOMAN class description 720 global access checking activating or deactivating 128 creating table entries 219 defining an entry for the vector facility 263 during authorization checking 755 protecting frequently accessed system data sets 184 refreshing in-storage checking lists 142 special considerations 223 using during failsoft processing 383 global access checking table entries for JESNEWS 509 entries for STORCLAS and MGMTCLASS profiles 521 listing 223 performance benefits 210 global access checking table report from DSMON 378 GLOBAL class description 716, 723 GLOBAL operand SETROPTS command 128, 223 use of 223 GLOBAL=YES option 272 GMBR class description 716, 723 GMQADMIN class description 721 GMQNLIST class description 721 GMQPROC class description 721 GMQQUEUE class description 721 GMXADMIN description 722 GMXNLIST description 722 GMXPROC description 722 GMXQUEUE description 722 GMXTOPIC description 722
812
graphics device controlling allocation with DEVICES profiles 265 group as owner of data set profile 166 as owner of resource profile 23 assigning as owner of RACF profile 59 attributes 7 authority 7 authority structure 85 authority to access data set when not in access list 174 authority to access general resource when not in access list 216 authorizing to access resources 7 benefits of using RACF groups 57 defining 52 summary of steps 61 defining for users with no common access requirements 54 defining to RACF 16, 52 definition 6 deleting summary of steps 62 determining the owner of 377 large 56 listing all connections for a user 400 maximum number of users in 52 naming conventions for 57 ownership of a RACF 59 RACF commands for administration 16 rationale for using 43 relationships of users within 44 scope of a 17 specifying group terminal option 61 summary of group-related user attributes 728 UNIVERSAL attribute 56 user attributes at group level 82 using &RACGPID for global access checking 221 using a dummy to protect data sets 166 group access attribute See GRPACC attribute group administrator creating group for 53 delegating responsibility to 61 limits of authority of at the group level 83 role of 12 group already defined in RACF SYS1 (highest group in RACF structure) 16 group authority assigning to user 19 checking during list-of-groups checking 120 during authorization checking 756, 757, 758 suggestions for assigning 61 summary of authorities and commands 731 types 60
group class defining overview 22 group data set allowing access to using GRPACC attribute 81 controlling creation of 165 global access checking table entries using &RACGPID 222 protecting 165 user with GRPACC attribute 18 GROUP IDENT field on TSO/E logon panel 535 group identifiers (GIDs) 538 group members listing all 400 group name as high-level qualifier for data set 165 associating started procedure names with 154 displaying from RACF database 27 selecting 43 specifying as prefix for data set with single-qualifier name 132 group names mapping GID to 538 mapping profiles for 555 mapping to GIDs 553 translating 498 group ownership of UNIX files 558 GROUP parameter on JOB statement in JCL 380 group profile authority granted through group-level attributes 83 controlling access to DFP segment 526 description of 20, 54 DFP segment 522 retrieving SMS information 524 group structure 15 establishing a RACF 44 example 44 mapping RACF to an existing 52 group terminal option 61 specifying on ADDGROUP or ALTGROUP command 249 group tree report DSMON (data security monitor) 83 from DSMON 377 group-AUDITOR attribute as related to RACF commands 730 description of 18, 78 scope of authority 83 group-OPERATIONS attribute alternatives DASDVOL authority 79 DFSMSdss authorization 79, 186 description of 18, 79 scope of authority 83 group-SPECIAL attribute as related to RACF commands 729 authority of user connected to group 59 authority over data set profile owned by group 166
group-SPECIAL attribute (continued) description of 18, 77 illustration of scope of authority 86 scope of authority 83 GROUP.OMVS.* profile (FIELD class) 56 GROUP.OMVS.GID profile (FIELD class) 56 GROUPJ qualifier on NODES profiles 488 GROUPS qualifier on NODES profiles 488 GRPACC (group access) attribute comparison with &RACGPID 222 description of 18, 81 GRPLIST operand OMVS segment of group profile 121 SETROPTS command 120 with z/OS UNIX files 121 GSDSF class description 716 GTERMINL class activating 234 description 716, 723 example 234 protecting several terminals 248 GXCSFKEY class description 720 GXFACILI class description 716 GZMFAPLA class description 722
H
hardware configuration definition (HCD) program device numbers 267 unit names for devices 266 Hardware Configuration Definition (HCD) program JES printer definitions 515 unit names for devices 266 HCD See Hardware Configuration Definition program HCICSFCT class description 718 help desk delegating functions 683 hierarchical file system See HFS hierarchical storage manager (HSM) See DFSMShsm high-level qualifier during authorization checking for data sets 756 of data set profile name 163 requirements for prefix 132 HIGHTRUST option for certificates 633 HIMS class description 720 Hiperbatch creating DLFCLASS profiles for 269 HISTORY suboperand PASSWORD operand SETROPTS command 118
Index
813
I
IBMUSER user ID description 372 logging on as 372 revoking 373 ICETOOL, DFSORT 393 ICF (Information Center Facility) using to define users to RACF 95 ICHBLP profile (FACILITY class) authorization checking if TAPEVOL class is active 203 defining 202 ICHCNX00 exit routine largely replaced by ICHNCV00 module 163 ICHDEX01 exit routine description of 26 using to encrypt passwords 152 ICHDEX11 exit routine description of 26 ICHDSM00 module See DSMON (data security monitor) ICHEINTY macro and field-level access checking 225 ICHNCV00 module description 163 ICHPWX01 exit routine description of 25 ICHPWX11 exit routine description of 25 ICHRTX00 exit authorization checking 754 migrating $SUBMIT.userid profiles to SURROGAT profiles 476 ICHRTX01 exit authorization checking 754 ICHSECOP module preventing duplicate-named data set profiles 179 ICHUNCAT.data-set-name protecting with FACILITY profile 130 ICKDSF (Device Support Facilities) system utility DASDVOL authority 185 ICSF (Integrated Cryptographic Service Facility) and digital certificates 611 brief description 292 defining delegated resources for FTPD use 300 general resource classes 720 ICSF segment FIELD profile names 229 field-level access checking 225 ICTX segment field-level access checking 225 LDAPBIND profile FIELD profile names 229 ID(*) access list entry contrasted with UACC 9, 174, 382 for system data sets 745
ID(*) access list entry (continued) specifying 9, 174, 382 identification label printed on output 105 identity filter, distributed overview 701 IDIDMAP profile description 703 IRRRID00 utility processing 412 IEAABD.DMPAKEY profile (FACILITY class) defining to protect program dumps 264 IEAABD.DMPAUTH profile (FACILITY class) defining to protect program dumps 264 IEAVECTOR profile (FACILITY class) defining 263 IEC.TAPERING profile in the FACILITY class defining 201 IEHMOVE system utility data sets with reserved names 168 duplicate-named data sets 179 IIMS class description 720 IKJEFF53 installation exit and JESJOBS class 482, 484 ILMADMIN class description 720 implementing RACF checklist for team 48 preparing plan 39 IMS using with RACF 292 IMS (Information Management System) general resource classes 720 IMS application defining a PTKTDATA profile 255 IMS transaction authorization checking 769 in-storage profile activating 136 RACGLIST class 271 refreshing generic profile lists 141 saving 271 SETROPTS GENLIST processing for 137 SETROPTS options 136 SETROPTS RACLIST processing for 138 using during failsoft processing 383 INACTIVE operand SETROPTS command 119 inbound work authorizing with NODES profiles 487 INFOMAN class description 720 Infoprint Server general resource class 720 Information Management System See IMS Information/Management general resource classes 720
initACEE callable service controlling the use 631 description 577 passing additional criteria 607 initialization statements protecting JES resources 472 INITSTATS operand SETROPTS command 125 input sources defining nodes as local sources 503 installation exit IKJEFF53 482 using to tailor RACF 24 installation exits password authentication 26 installation security plan 472 installation-defined class defining overview 22 Integrated Cryptographic Service Facility See ICSF interprocess communication objects, restricting access 150 interval for changing password and password phrases 117 INTERVAL suboperand PASSWORD operand SETROPTS command 117 introduction security administration 2 invalid user IDs listing in data set access lists 400 IODEVICE statement (MVSCP) 266 IP address conditional access to SERVAUTH class 217 RACF authorization checking for 767 IP address control with SERVAUTH resources 338 IPCOBJ class description 722 z/OS UNIX event auditing 565 IRR.DIGTCERT.function 580 IRR.DIGTCERT.ADD 623, 631, 637 IRR.DIGTCERT.ADDRING 624 IRR.DIGTCERT.ALTER 590 IRR.DIGTCERT.CONNECT 624 IRR.DIGTCERT.DELETE 591, 631 IRR.DIGTCERT.EXPORT 637 IRR.DIGTCERT.GENCERT 637, 638 IRR.DIGTCERT.GENRENEW 638 IRR.DIGTCERT.LIST 581, 585 IRR.DIGTCERT.QRECOVER 638 IRR.DIGTCERT.REQCERT 638 IRR.DIGTCERT.REQRENEW 638 IRR.DIGTCERT.RESPOND 638 IRR.DIGTCERT.REVOKE 638 IRR.DIGTCERT.SCEPREQ 638 IRR.DIGTCERT.VERIFY 638 IRR.HOST.host-name 632 IRR.LISTUSER 684 IRR.LU.EXCLUDE 688 IRR.LU.OWNER 686 IRR.LU.TREE 687 IRR.PASSWORD.RESET 691 IRR.PROXY.DEFAULTS 635
814
IRR.PWRESET.EXCLUDE 695 IRR.PWRESET.OWNER 693 IRR.PWRESET.TREE 694 IRR.RAUDITX 633 IRR.RCACHESERV.cachename 633 IRR.RDCEKEY 635 IRR.RDCERUID 635 IRR.RGETINFO.EIM 635 IRR.RPKISERV 636 IRR.RPKISERV.PKIADMIN 638 IRR.RPROXYSERV 639 IRR.RTICKETSERV 640 IRRACEE class 370 IRRADU00 utility brief overview 28 logging 5 irrcerta user ID 613 IRRDBU00 utility allowable parameters LOCKINPUT 392 NOLOCKINPUT 392 UNLOCKINPUT 393 and RACGLIST profiles 389 brief overview 27 checking category profiles in the SECDATA class 104 creating a DB2 database 401 creating a DB2 table space 401 creating optimization statistics for the DB2 database 403 creating the DB2 indexes 402 creating the DB2 tables 401 CSDATA segment 389 DB2 table names 404 DB2 utility statements for deleting group records 403 for loading tables 403 deleting data from the DB2 database 403 detailed description 388 diagnostic capability 388 example 392 executing input data set specification 391 listing universal group members 390 loading the DB2 tables 403 OMVS segment of user profile 389 operational considerations 389 OVM segment of user profile 389 performance considerations 388 QMF form 408 record types 404 reorganizing the unloaded RACF data in the DB2 database 403 report output 409 reports using RACFICE 396 sample report 409 sample SQL query 408 samples using the IRRDBU00 utility output 407 SQL query 408 SQL utility statements for creating indexes 402 for defining a table space 401 SQL utility statements creating a table 402
IRRDBU00 utility (continued) steps for using IRRDBU00 output with DB2 400 universal groups 390 usage of the class descriptor table (CDT) 389 using output with DB2 400 using output with DFSORT ICETOOL 393 IRRDPI00 command 669 IRRIRA00 conversion utility 552 IRRMIN00 utility brief overview 26 irrmulti user ID 613 IRRRID00 utility brief overview 27 deleting universal groups 424 detailed description 410 examples 414 general resource processing 423 IDIDMAP profiles 412 member processing 424 NOTELINK and NDSLINK profiles 412 output 418 removing universal group members 424 return codes 415 time requirements 425 Tivoli considerations 424 universal groups 424 IRRSAX00 callable service controlling the use 633 IRRSCH00 callable service controlling the use 633 IRRSDK00 callable service controlling the use 634 IRRSDL00 or IRRSDL64 callable service controlling the use 634 description 577 IRRSEQ00 callable service controlling the use 633 IRRSGI00 callable service controlling the use 635 IRRSIA00 callable service controlling the use 631 description 577 irrsitec user ID 613 IRRSPK00 callable service controlling the use 640 IRRSPX00 callable service controlling the use 635 IRRSPY00 callable service controlling the use 639 IRRSUD00 callable service controlling the use 635 IRRUT100 utility brief overview 27 IRRUT200 utility brief overview 27 IRRUT400 utility brief overview 26 ISPF panels advantages 14 authorization, additional 15 authorizing users to update custom field data 673
ISPF panels (continued) compared to RACF TSO commands 14 sample for password rules 15 using instead of commands 13 issuer's name filters 601 issuer's X.509 distinguished name 598
J
JAVA class description 720 JCICSJCT class description 718 JCL (job control language) parameters related to RACF 380 PROTECT parameter in JCL 200 PROTECT parameter on DD statement 179 replacing password with PassTicket 255 restricting the use of //DD DATA statement 382 SECMODEL parameter on DD statement 179 tape data sets 200 JES (job entry subsystem) See also JES2, JES3 activating or deactivating options for 129 password print suppression 380 RACF support for 472 restricting use of JES3 operator commands 381 security 472 STARTED class 473 started procedures table (ICHRIN03) 473 working with RACF 473 JES commands operator protecting with OPERCMDS profiles 273 JES input device allowing access depending on JES input device 173, 217 protecting with JESINPUT profiles 485 RACF authorization checking for 767 JESINPUT class activating 486 authorization checking 768 description 716 protecting JES input devices 485 protecting NJE nodes 514 protecting RJE workstations 514 specifying with WHEN operand on PERMIT command 173, 217 spool reload 511 UACC authorities 486 JESJOBS class activating 484 and &RACLNDE profile 239 description 716 finding profiles whose names include a particular user ID 97 protecting job cancellation 484 Index
815
JESJOBS class (continued) protecting job names 482 protecting job submission 482 protecting spool reload 511 RACF variable example 239 JESNEWS data set and SECLABEL class 509 protecting with JESSPOOL profile 508 protecting with OPERCMDS profiles 508 JESSPOOL class activating 504 and &RACLNDE profile 239 and SETROPTS GENERICOWNER 122 and TSO OUTPUT command 534 and TSO RECEIVE command 534 authorizing users to create profiles 507 description 716 external writer access to profiles 505 finding profiles whose names include a particular user ID 97 protecting JESNEWS data set 508 protecting SYSIN 504 protecting SYSOUT 504 protecting trace data sets 510 JIMS class description 720 job cancellation protecting with JESJOBS profiles 484 job control language See JCL job data sets protecting 504 Job Entry Subsystem See JES job execution refreshing global access checking lists 142 refreshing in-storage generic profile lists 141 job initialization brief description 775 job names protecting with JESJOBS classes 482 job spool reload JESINPUT profiles 511 JOB statement (JCL) ensuring the security of 380 for started procedures 153 parameters related to RACF 380 specifying password for deferred restart on 381 started procedure system-generated 154 verifying user ID data 475 job submission protecting with JESJOBS profiles 482 JOBNAMES field DLFCLASS profile 269 jobs authorizing NJE 492 restarting 381 starting 156
731
K
KCICSJCT class description 718 KERB segment RRSF consideration 459 user profile contents of 69 KERBLINK class description 721 RRSF consideration 459 key ring overview 593 sharing a certificate (private key) with multiple servers 595 key, secured signon and RACF database 257 defining 253 protecting 257 keyboard 779 KEYENCRYPTED value RALTER command 259 RDEFINE command 259 KEYMASKED value RALTER command 258 RDEFINE command 258 KEYSMSTR class 297
L
LABEL parameter (JCL DD statement) parameters related to RACF 380 LAN (local area network) secured signon 253 LAN File Services/ESA See LFS/ESA LAN File Services/ESA (LFS/ESA) See LFS/ESA (LAN File Services/ESA) LANGUAGE operand SETROPTS command 136 LANGUAGE segment field-level access checking 225 user profile contents of 69 FIELD profile names 229 large groups 56 large profile size considerations 216 LDAP class description 716 LDAP server BIND password 297 defining an LDAP bind profile 641 event notification 642 profile change notification 642 LDAPBIND profile 641 LFS/ESA (LAN File Services/ESA) general resource class 720 protecting file services with LFSCLASS profiles 246 LFSCLASS class activating 246 defining profiles 246
LFSCLASS class (continued) description 720 protecting LFS/ESA file services 246 library lookaside (LLA) security 268 License Manager general resource class 720 limited use of %* in general resource profile names 212 limiting access to system for terminal 250 OPERATIONS user's authority 79 size of access lists 216 when a user can log on to system 89 limits for z/OS UNIX users 540 LIMS class description 720 line drop facility on TSO 250 link pack area See LPA list-of-groups checking activating 120 deactivating 120 during authorization checking 767, 768 effect on user with group-level attribute 82 OMVS segment of group profile 121 LISTBC command (TSO) auditing when used 289 LISTDSD command finding out which profile protects a data set 171 listing user information delegating authority for 684 LISTUSER command PROTECTED attribute 90 RESTRICTED attribute 91 LLA (library lookaside) security 268 LLA-managed data sets protecting with FACILITY profiles 268 LNOTES segment field-level access checking 225 user profile contents of 70 FIELD profile names 229 LNOTES segment, USER profile 293 local mode for an RRSF node description 430 local node 429 command direction 435 local nodes treating some network nodes as local nodes 503 log string using to debug your security 750, 752 logging access attempts to resources 4 nonstandard data set names in SMF 164 real data set names 132 logging on preventing user IDs 90 to TSO from another terminal 250
816
LOGON command with RECONNECT operand on TSO 250 logon initialization brief description 775 logon procedure for TSO protecting 530 Lotus Notes for z/OS 293 general resource class 720 LU 6.2 bind RACF support for 243 LU security capabilities with APPC 291
M
MAC See mandatory access control MAIN attribute for programs defining 341 overview 340 mainframe education xx managed user ID associations defining 433 mandatory access control (MAC) definition 11 manuals on CD-ROM and DVD xvii mapping GIDs and VLF 553 UIDs and VLF 553 mapping profiles for certificate names 598 for distributed identities 701 for UIDs and GIDs 555 masking secured signon application key 258 master scheduler initialization (MSI) 754 maximum field length unloaded by IRRDBU00 389 maximum number of users per group 52 maximum security for secured signon application keys 258 maximum VTAM session interval length 144 MCICSPPT class description 718 MCS See multiple console support MCS console protecting 251 protecting with CONSOLE profiles 251 MCSOPER macro and OPERPARM segment 71 MDSNBP class description 719 MDSNCL class description 719 MDSNDB class description 719 MDSNJR class description 719 MDSNPK class description 719
MDSNPN class description 719 MDSNSC class description 719 MDSNSG class description 719 MDSNSM class description 719 MDSNSP class description 719 MDSNSQ class description 719 MDSNTB class conditional access 218 description 719 MDSNTS class description 719 MDSNUF class description 719 MDSNUT class description 719 member class defining overview 22 SETROPTS RACLIST processing 237 merged profiles, size considerations 216 message password expiration 118 putting real data set names into 132 unauthorized access attempt 5 warning rationale for using 43 message processing password synchronization 432 message traffic auditing 289 controlling 287 MGMTCLAS class description 721 protecting SMS management classes 519 SETROPTS RACLIST processing 521 MGMTCLAS parameter (JCL DD statement) parameters related to RACF 380 migration converting from LEVEL to SECLEVEL 104 defining JES as a started procedure 473 with the trusted attribute 473 of existing user IDs to RACF 76 protecting existing data 40 surrogate users 476 MIMS class description 720 MINCHANGE suboperand PASSWORD operand SETROPTS command 117 MLACTIVE operand SETROPTS command 148 relationship to SECLABEL class 774 security labels and tapes 194 MLFSOBJ operand SETROPTS command 150
MLIPCOBJ operand SETROPTS command 150 MLNAMES operand SETROPTS command 151 MLQUIET operand SETROPTS command 146 relationship to SECLABEL class 774 MLS operand SETROPTS command 147 relationship to SECLABEL class 774 MLS(FAILURES) option SETROPTS command security labels and tapes 194 MLSTABLE operand SETROPTS command 146 mode local 430 remote 430 model data set profile for GDG data sets 178 system-wide processing options 131 ways to use 41, 175 model general resource profile ways to use 41 MODEL operand ADDGROUP command 176 ADDSD command 175 for group data sets 176 ADDUSER command 175 ALTGROUP command 176 ALTUSER command 175 SETROPTS command 131 for GDG data sets 178 for group data sets 176 for user data sets 175 modeling certificate name filters 605 MODIFY LLA command controlling the use of 268 MQADMIN class description 721 MQCMDS class description 721 MQCONN class description 721 MQNLIST class description 721 MQPROC class description 721 MQQUEUE class description 721 MQSeries general resource classes 721 MULTIID option of RACDCERT MAP command 607 multilevel security and SMESSAGE class 287 enforcing fully 148 enforcing partially (compatibility mode) 147 multiple console support sysplex command authorization in 274 multiple profiles for resource groups resolving conflicts 235, 236 Index
817
multisystem node 430 multivolume data set non-VSAM DASD data set considerations for protecting 180 protecting 180 tape data set considerations for protecting 180 VSAM DASD data set considerations for protecting 180 multivolume tape data set protecting 190 RACF processing for 202 scratching a 185 MVS message service and SETROPTS LANGUAGE command 136 MVS system commands MODIFY LLA command controlling the use of 268 operator example of protecting 276 protecting with OPERCMDS profiles 273 START LLA command controlling the use of 268 MVS/Data Facility Product See MVS/DFP MVSCP See MVS Configuration Program MXADMIN description 722 MXNLIST description 722 MXPROC description 722 MXQUEUE description 722 MXTOPIC description 722
N
name defining for group 57 defining for user 75 name filters for certificates 598 for distributed identity names 701 name qualifier &RACUID and &RACGPID for global access checking 221 name-hiding, with security labels 151 naming convention table See also ICHCNV00 module erasing sensitive temporary data sets 183 protecting temporary data sets with PROTECTALL 129 naming conventions conforming or not conforming to 164 for data set profiles 162 for group 57 for user 75 making use of existing 44 table-driven for data sets 163 ways to enforce for data sets 163
national language user's preferred primary and secondary languages 69 NCICSPPT class description 718 NDS segment field-level access checking 225 user profile contents of 70 FIELD profile names 229 NDS segment, USER profile 293 NDSLINK class 294 and IRRRID00 utility processing 412 description 720 nested ACEEs 299 NETCMDS class description 721 NETSPAN class description 721 NetView general resource classes 721 NETVIEW segment field-level access checking 225 user profile contents of 70 FIELD profile names 229 network NJE propagation in 502 network security NJE network 486 secured signon 252 network security zone, controlling 338 networking profiles description 487 NEW PASSWORD field on TSO/E logon panel 534 new-password exit description of 25 new-password-phrase exit description of 25 NJE authorizing jobs 492 authorizing SYSOUT 495 controlling user ID propagation 494 header information 479 network security 486 propagation across nodes 502 protecting nodes with FACILITY profiles 513 protecting nodes with JESINPUT profiles 514 validating SYSOUT 498 verifying jobs 478 NJEUSERID operand SETROPTS command 502 NOADDCREATOR options 181 NOADSP operand revoking ADSP attribute 82 SETROPTS command 132 NODES class activating 503, 516 and RACFVARS class 494 and RACFVARS profiles 489 authorizing inbound work (JES) 487 checking 479
NODES class (continued) controlling commands from NJE nodes 516 description 716 finding profiles whose names include a particular user ID 97 profile overview 487 profiles with RUSER as second qualifier 516 protecting spool reload 511 SETROPTS RACLIST processing 503 treating some network nodes as local nodes 503 nodes, RRSF 429 directing commands to a local node 435 directing commands to a remote node 436 local 429 local mode 430 multisystem 430 remote 429 remote mode 430 single-system 430 NODMBR class description 717 NOEXPIRED operand 690 NOGLOBAL operand SETROPTS command 223 NOHISTORY suboperand PASSWORD operand SETROPTS command 119 non-VSAM data set multivolume considerations 180 nonautomatic TAPEVOL profile 196 NONE access authority as related to RACF commands 732 for general resources 216 nonstandard naming conventions changing with the naming convention table 163 NOOIDCARD operand 90 NOPADCHK option, with program access to data sets (PADS) 337 NOPASSWORD operand 90 NOPHRASE operand 90 NORESTRICTED operand 91 NOSTATISTICS operand SETROPTS command 127 NOTELINK class 294 and IRRRID00 utility processing 412 description 721 NOTERMUACC operand for group terminal option 61, 249 Notices 781 notification, LDAP event changes 642 NOTRUST option of the RACDCERT command 590 Novell Directory Services for OS/390 293 general resource class 720 NVASAPDT class description 721
O
offloading spool (JES2 only) 510
818
OIDCARD (operator identification card) storing information in the RACF database 152 using as a password 3 OIMS class description 720 OMVS segment automatic assignment of unique UNIX identities 543 description 20 field-level access checking 225 group profile contents of 55 FIELD profile names 229 list-of-groups checking 121 in group profiles assigning unique GIDs 543 using default segment 550 in user profiles assigning unique UIDs 543 using default segment 550 protecting with FIELD profiles 56, 71 user profile contents of 70 FIELD profile names 229 IRRDBU00 utility 389 ONLYAT operand controlling use of 281 using 437 operating RACF considerations for administrators 369 OPERATIONS attribute alternatives DASDVOL authority 79 DFSMSdss authorization 79, 186 as related to RACF commands 730 comparison to DASDVOL authority 185 delegating 80 description of 18, 78 during authorization checking 757 listing users with 88 scratching temporary data sets when TEMPDSN class is active 246 suggestions for assigning 87 Operations Planning and Control/Advanced See OPC/A operator command JES3 restricting 381 MVS example of protecting 276 protecting with OPERCMDS profiles 273 unknown auditing 276 protecting with OPERCMDS profiles 276 operator identification card See OIDCARD operators assigning to RACF groups 474 creating user IDs 76 defining to RACF 474 OPERAUDIT operand SETROPTS command 79
OPERCMDS class activating 276, 516 auditing for password security 382 conditional access 218, 276 description 717 example 276 protecting JESNEWS data sets 508 protecting operator commands 273 protecting SDSF panels 273 protecting unknown operator commands 276 SETROPTS RACLIST processing 276 OPERPARM segment description 20 field-level access checking 225 user profile contents of 71 FIELD profile names 230 options controlling RACF 114 of commands AT 435 ONLYAT 437 selecting RACF 24 selecting system-wide with SETROPTS command 114 organization chart as pattern for group-user structure with RACF 15 origin LU authorization APPL class 291 outbound work authorizing with WRITER profiles 504 using security labels 504 output capturing for password synchronization 432 for RACF TSO commands 436 OUTPUT command (TSO) controlling use 534 output destination controlling with WRITER profiles 514 output of RACF commands, capturing 29 OUTPUT statement (JCL) parameters related to RACF 381 overriding default UACC for a data set profile 174 default UACC for general resource 216 SUPERUSER.FILESYS authority 561 overview, digital certificates 568 overwriting a tape data set or tape volume 198 authority to overwrite a tape data set 199 OVM segment description 20 field-level access checking 225 group profile contents of 56 FIELD profile names 230 user profile contents of 72 FIELD profile names 230
OVM segment (continued) user profile (continued) IRRDBU00 utility 389 owner GENERICOWNER operand on SETROPTS command 121 ownerless profile 370 ownership of data set profile 166 of RACF group 59 of RACF profile 9 of RACF user profile 76 resource profile 23 scope of authority 83 various concepts of 23 ownership structure establishing for your installation
43
P
PADCHK option, with program access to data sets (PADS) 337 PADS See program access to data sets partner LU protecting conversations with APPL profiles 291 partner LU name device conditional access to APPCPORT class 173, 217 conditional access to SERVAUTH class 173 PassTicket See also secured signon applications that generate 259 bypassing PassTicket replay protection 261 definition 253 enabling 261 generating 259 protecting with PTKTDATA profiles 253 time range 259 validating 259 verifying the environment 262 password activating or deactivating monitoring options 118 alternative to 253 authentication exits 26 automatic direction 457 bypassing protection 377, 381 case options 116 change interval 117 checking after restarting a job 381 consecutive incorrect attempts to revoke user ID 119 controlling access to RACF passwords 381 controlling automatic direction of 284 delegating authority to reset 689 encryption of RACF user 152 enveloping 647 exit routines 26 for RVARY command processing 121
Index
819
password (continued) maintaining for password-protected data sets 201 mixed-case options 116 NOPASSWORD option 90 NOPHRASE option 90 number of previous values to be saved 118 preventing revocation of user IDs 90 print suppression by JES 380 processing exit 25 rationale for using 2 replacing with PassTicket in JCL 255 resetting using IRR.PASSWORD.RESET authority 689 specifying on TSO LOGON command 535 syntax rules 117 validating 259 versus RACF authorization requirements for VSAM data sets 183 warning message for password expiration 118 password enveloping 647 PASSWORD field on TSO/E logon panel 534 password on bind RACF support for 243 PASSWORD operand SETROPTS command 116, 117 PASSWORD parameter on JOB statement in JCL 380 consideration for inbound NJE jobs 490 consideration for surrogate job submission 475 password phrase activating or deactivating monitoring options 118 assigning 92 change interval 117 consecutive incorrect attempts to revoke user ID 119 controlling automatic direction of 284 delegating authority to change 689 downlevel systems, using with 94 new-password-phrase exit (ICHPWX11) 93 number of previous values to be saved 118 rationale for using 2 resetting using IRR.PASSWORD.RESET authority 689 synchronization, controlling 280 syntax rules 93 password protection bypassing 21, 377 utilizing or bypassing for tape data sets 188 utilizing or bypassing for tape volumes 189 password rules ISPF panel for 15
password synchronization 431 controlling 280 defining for other users 433 for your user ID 433 message processing 432 output capturing 432 password-protected data set 177 providing protection for 201 PCICSPSB class description 718 PERFGRP class activating 530 authorization checking for 533 considerations 532 description 721 protecting TSO performance groups 530 SETROPTS RACLIST processing 532 UACC authorities 530 performance and DASDVOL authority 185 and UNIXMAP class 553 and VLF 553 for general resource profiles 210 generic profiles 215 global access checking 210 SETROPTS RACLIST processing 210 performance group for TSO protecting 530 permission bits for z/OS UNIX data 559 PERMIT command to limit OPERATIONS user's authority 79 PHRASESYNC resource in RRSFDATA class 280 PIMS class description 720 planning JES system programmer 472 security 472 PMBR class description 717 POSIT value in class descriptor table (CDT) changing a value 308 extends CLAUTH authority 80 shared value 305 unique value 304 POSIX_CHOWN_RESTRICTED constant 557 PPT (program properties table) bypass password protection setting 377, 381 DSMON report 377 system key setting 377 prefix for single-qualifier data set name 170 PREFIX operand SETROPTS command 132 single-qualifier data set names 164 preventing accesses to resources with REQUEST=AUTH preprocessing routine 383
preventing (continued) changes to security labels 146 duplicate-named data set profiles 179 security exposure due to //DD DATA statement 382 user from accessing system 80 preventing generic profile names 210 primary language installation defaults 136 primary RACF database 385 Print Services Facility (PSF) for z/OS identification label 105 protecting services with PSFMPL profiles 288 PSFMPL, general resource class 717 printer security controlling with DEVICES profiles 515 PRINTSRV class description 720 private key expiring certificates 615 extending 614 extracting using R_datalib callable service 634 RACF size restrictions 578 rekeying 615 renewing 614 replacing 615 retiring 615 rollover 615 sharing with multiple servers 595 storing in Integrated Cryptographic Service Facility (ICSF) 611 suppression of information during RRSF propagation 456 privileged attribute authorization checking 755 determining which started procedures have 379 started procedure 155 problems jobs cannot be initiated 776 started procedures fail 776 users cannot log on 776 PROCACT class description 722 z/OS UNIX event auditing 565 PROCESS class description 722 z/OS UNIX event auditing 565 products supported by RACF DFSMSdfp 519 JES 472 SMS (Storage Management Subsystem) 519 TSO 529 products, IBM using with RACF CICS 292 IMS 292 profile coordinating updates 369 description of discrete and generic 20 description of group 54
820
profile (continued) description of user 64 group contents of 20 group ownership of a 59 IRR.DIGTCERT.ADD 637 IRR.DIGTCERT.EXPORT 637 IRR.DIGTCERT.GENCERT 637, 638 IRR.DIGTCERT.GENRENEW 638 IRR.DIGTCERT.QRECOVER 638 IRR.DIGTCERT.REQCERT 638 IRR.DIGTCERT.REQRENEW 638 IRR.DIGTCERT.RESPOND 638 IRR.DIGTCERT.REVOKE 638 IRR.DIGTCERT.SCEPREQ 638 IRR.DIGTCERT.VERIFY 638 IRR.RPKISERV.PKIADMIN 638 listing information from RACF 29 owning a data set 166 owning a group 59 recording statistics in 29 rules for defining data set 162 searching for 32 secured signon 253 size considerations 216 types of RACF 9 user contents of 19 profile modeling automatic 175 ways to use 41 profile name for PTKTDATA class 254 high-level qualifier of data set 163 rules for specifying with enhanced generic naming active 168, 212 profile ownership delegating for FACILITY class 233 profiles database synchronizing 459 in RRSFDATA class controlling automatic direction 282 mapping for UIDs and GIDs 555 PHRASESYNC controlling password and password phrase synchronization 280 PWSYNC controlling password and password phrase synchronization 280 UNIXMAP class for UIDs and GIDs 555 program conditional access to SERVAUTH class 217 program access to data sets (PADS) choosing PADCHK or NOPADCHK option 337 examples 347 in BASIC program security mode 333
program access to data sets (PADS) (continued) in ENHANCED program security mode 339 PROGRAM class description 717 examples 347 protecting DSMON 29, 77 SIGVER segment fields 230 specifying with WHEN operand on PERMIT command 218 program control activating or deactivating 144 by system identifier (SMFID) example of setting up 350 overview 327 during authorization checking 758 ENHANCED program security mode 339 example of command to activate 349 examples 347 informational messages 342 IP addresses, protecting with 338 maintaining a clean environment 327 migrating from BASIC to ENHANCED mode 329 overview 321 program security modes 323 protecting program libraries 332 SERVAUTH resources, protecting with 338 using MAIN or BASIC attributes 340 program dump protecting with data set profiles 263 protecting with EXECUTE authority 264 protecting with FACILITY profiles 264 using non-RACF methods to control access to 265 program library defining data set profile to protect 349 examples of protecting 347 protecting, overview 332 program properties table See PPT program properties table report from DSMON 377 program security modes overview 323 program signing overview 351 task roadmap 355 program verification task roadmap 363 program-accessed data set 173 programs protecting 321 using with RACF DB2 292 propagation across a network 482 across nodes in NJE network 502 controlling a user ID 477, 494 definition 481
propagation (continued) in an NJE environment 494 PROPCNTL profiles 477 support for JES user identification 382 PROPCNTL class activating 477 and &RACLNDE variable 477 and RACF variables 494 controlling user ID propagation 477 description 717 SETROPTS RACLIST processing 477 PROTECT parameter (JCL DD statement) for a new data set 198 parameters related to RACF 380 planning for the use of 41 protecting non-VSAM data sets 179 protecting tape volumes and tape data sets 201 tape data sets 200 to protect data set with discrete profile 167 when protecting tape data sets 190 PROTECTALL operand SETROPTS command 128, 172 with generic profile checking 172 PROTECTALL processing activating or deactivating 128 PROTECTED user attribute 90 protected user IDs and JES batch jobs 478 and started procedures 154 description 90 with z/OS UNIX 541 protecting a multivolume tape data set 190 all data sets 128 batch user IDs 478 cataloged tape data set 189 catalogs 183 consoles 251 DASD data sets 181 data on tape 186 data sets 21, 162 data sets that have single-qualifier data set names 164 data sets with a dummy group name 166 data sets with discrete profiles 167 data sets with discrete profiles through ADSP attribute 81 data sets with generic profiles 167 DFP-managed temporary data sets 246 duplicate-named data sets residing on different volumes 179 existing data on tape 189 file system resources in the z/OS UNIX environment 559 GDG data sets 178 general resources 207 group data sets 165 group terminals 61 JES batch user IDs 478 LLA-managed data sets 268 multivolume data sets with discrete profiles 180 Index
821
protecting (continued) new data on tape 190 non-VSAM data sets using JCL PROTECT parameter 179 non-VSAM data sets using the JCL SECMODEL parameter 179 programs 321 RACF database 385 started procedure user IDs 154 tape volumes 191 terminals 247 TSO resources 530 uncataloged tape data set 189 user IDs 90 vector facility 263 z/OS UNIX files 559 z/OS UNIX user IDs 541 PROXY segment user profile 73 PSF See Print Services Facility (PSF) for z/OS PSF.DPAGELBL resource 289 PSFMPL class description 717, 723 OPERATIONS attribute allows access 78 protecting PSF functions 288 PTKTDATA class activating 253 APPC application profile name 255 application names 257 CICS application profile name 255 defining profiles 253 description 717, 723 example of defining a profile 259 FIELD profile names 230 IMS application profile name 255 MVS batch job profile name 255 profile names 254 protecting PassTickets 253 SETROPTS RACLIST processing 253 TSO profile name 256 z/OS UNIX applications 257 z/VM profile name 257 PTKTVAL class description 721, 723 publications on CD-ROM and DVD xvii PWSYNC operand RACLINK command controlling use of 280 PWSYNC resource in RRSFDATA class 280
R
R_admin callable service controlling the use 633 R_auditx callable service controlling the use 633 R_cacheserv callable service controlling the use 633 R_datalib callable service controlling the use 634 description 577 R_dcekey callable service controlling the use 634 R_dceruid callable service controlling the use 635 R_GetInfo callable service controlling the use 635 R_PKIServ callable service administrative functions 638 controlling the use 635 end-user functions 636 FACILITY class resources that protect 636, 638 R_proxyserv callable service controlling the use 639 R_ticketserv callable service controlling the use 640 RACDBULD member of SYS1.SAMPLIB 400 RACDBUQR member of SYS1.SAMPLIB 400 RACDBUTB member of SYS1.SAMPLIB 400 RACDCERT command administering digital certificates 579 controlling access to 580 LISTMAP option 601 MULTIID option 607 NOTRUST option 590 TRUST option 590 RACDEF macro See RACROUTE REQUEST=DEFINE macro RACF and z/OS UNIX 537 database unload utility (IRRDBU00) 388 remove ID (IRRRID00) utility 410 using with other programs DB2 292 RACF authorization versus password protection for VSAM data sets 183 RACF commands attributes and authorities required 728 effecting a VLF cache flush 370 for group administration 16 for user administration 16 logging attempts to issue 4 operator protecting with OPERCMDS profiles 274 summary of 725 to display information from RACF profiles 29 to search for RACF profile names 32 using 13
Q
QCICSPSB class description 718 QIMS class description 720 QMF form 408 QRECOVER accesses required
638
RACF commands (continued) using exits to perform additional authorization checking 25 RACF database backup RACF database 385 considerations for 385 coordinating profile updates 369 multiple data sets 385 protecting secured signon application keys 257 protection of 385 sample DDL statements 400 sharing 386 sharing among z/OS and z/VM systems 13 sharing data using RRSF 386 switching to alternate 385 RACF database cross-reference utility See IRRUT100 utility RACF database unload utility See IRRDBU00 utility RACF exits report from DSMON 378 RACF implementation organizing 37 RACF indication for data sets 167 RACF naming convention table See ICHCNV00 module RACF options listing system-wide example 372 selecting 24 selecting system-wide with SETROPTS command 114 using 114 RACF profile description 9 listing information from 29 logging attempts to modify 4 recording statistics in 29 searching for 32 RACF protection activating or deactivating for general resource class 123 bypassing during system access of system data sets 184 enforcing during system access of system data sets 184 need for 2 tailoring 24 RACF report writer debugging your security arrangements 750, 752 performance 5 stabilization 5, 28 using 4 RACF TSO commands compared to ISPF panels 14 RACF variable &RACLNDE profile 239 and PROPCNTL class 494 defining with RACFVARS profiles 237 example 239 using 239 using in profile names 237
822
RACF-indicated data set definition of 167 RACFEVNT class description 717 RACFHC class description 717 RACFICE procedure 393 RACFVARS class &RACLNDE profile 503 activating 238, 503 analyzing profiles from SEARCH 34 and NODES class 494 and NODES profiles 489 and PROPCNTL class 494 choosing 211 defining RACF variables 237 description 717, 723 local nodes 503 SETROPTS RACLIST processing 238, 503 UACC authorities 238 using 239 RACGLIST class and IRRDBU00 389 description 717 saving in-storage profiles 271 RACHCMBR class description 717 RACHECK macro See RACROUTE REQUEST=AUTH macro RACINIT macro See also RACROUTE REQUEST=VERIFY macro See RACROUTE REQUEST=VERIFYX macro RACLINK command controlling access to 279 DEFINE operand controlling use of 279 PWSYNC operand controlling use of 280 RACLIST macro See RACROUTE REQUEST=LIST macro RACLIST operand SETROPTS command 136, 138 RACLISTing See SETROPTS RACLIST processing RACONVRT EXEC helps to convert SYS1.UADS entries to RACF user profiles 74, 76 RACROUTE REQUEST=AUTH macro for authorizing access to resources 753 for tapes 203 tailoring with installation exit routine 24 RACROUTE REQUEST=DEFINE macro for tapes 203 tailoring with installation exit routine 24 to define tape volumes to RACF 189 RACROUTE REQUEST=EXTRACT macro and field-level access checking 225
RACROUTE REQUEST=FASTAUTH macro authorization checking 769 tailoring with installation exit routine 25 RACROUTE REQUEST=LIST macro RACLIST 272 tailoring with installation exit routine 25 RACROUTE REQUEST=VERIFY macro brief description of RACF processing 775 tailoring with installation exit routine 24 using with profiles in the APPL class 245 RACROUTE REQUEST=VERIFYX macro brief description of RACF processing 775 tailoring with installation exit routine 24 RACSLUNK security label 490 RALTER command for PTKTDATA profiles 254 RAUDITX class description 719 RCICSRES class description 718 RDATALIB class description 717 RDEFINE command for PTKTDATA profiles 253 to define tape volumes to RACF 189 READ access authority as related to RACF commands 732 editing a data set to which you have 383 for general resources 216 to a tape volume 199 real data set names option effect on single-qualifier names 164 REALDSN operand SETROPTS command 132 REALM class description 721 RRSF consideration 459 RECEIVE command (TSO) auditing when used 289 controlling use 534 receiving data auditing 289 reconnecting to existing TSO session from another terminal 250 recording bypassing for statistics 127 real data set names 132 REQUEST=VERIFY processing statistics 125 statistics for resources 127 statistics in RACF profiles 29 reducing I/O requests to the RACF database 386 REFRESH operand SETROPTS command 140 refreshing data set profiles 752
refreshing (continued) global access checking lists 142 in-storage generic profile lists 141 in-storage profiles how to avoid 58 profiles for SETROPTS RACLIST processing 521 SETROPTS GENLIST processing 138 SETROPTS RACLIST processing 140 for TSO general resource classes 533 rekeying a private key 615 remote mode for an RRSF node description 430 remote node 429 command direction 436 remote sharing See RRSF (RACF remote sharing facility) remote workstations protecting 512 remove ID (IRRRID00) utility 410 renaming a data set multivolume with generic profile 180 renewing a digital certificate 614 replacing a private key 615 replay protection for PassTickets, bypassing 261 report output from IRRDBU00 409 report writer using the RACF 28 reports based on the database unload utility (IRRDBU00) 396 produced by DSMON 376 REQCERT accesses required 638 REQRENEW accesses required 638 REQUEST=AUTH preprocessing exit during failsoft processing 384 to prevent access to resources 383 REQUEST=DEFINE preprocessing installation exit during failsoft processing 384 overriding normal RACF authorization 165 REQUEST=LIST exit description 25 listing programs authorized to issue 378 using the exits 236 REQUEST=VERIFY bypassing collection of statistics 125 exit problems 777 listing programs authorized to issue 378 processing description 775 requirements encryption secured signon function 258 resetting password phrases delegating authority for 684, 689 resetting passwords delegating authority for 689 RESGROUP operand RLIST command 235 Index
823
residual IDs using IRRRID00 utility to find 415 resource deciding what to protect 39 protecting 20 rules for naming profiles with enhanced generic naming active 168, 212 resource access authority summary of authorities and commands 732 resource class defining overview 22 resource group class defining overview 22 SETROPTS RACLIST processing 237 resource group profiles choosing 211 description 233 resource groups rules for multiple profiles default 235 user exits 236 resource member class defining overview 22 resource profile ownership 23 RESOWNER field compared to OWNER field 23 DFP segment of data set profile 523 RESPOND accesses required 638 restored jobs protecting 511 RESTRICTED attribute defining 91 description of 19, 82 restricted user IDs 91 RESTRICTED.FILESYS.ACCESS profile 560 restricting access to SVC dumps containing passwords 382 use of //DD DATA statement 382 user IDs 91 user's access to resources 82 RESUME operand ALTUSER command 120 CONNECT command 58 to activate a previously revoked user ID 119 resuming user IDs delegating authority for 689 RETAIN field DLFCLASS profile 269 retiring a private key 615 RETPD operand to specify security retention period for data sets 198 reverse MAC (mandatory access checking) for outbound work 504 REVOKE accesses required 638
REVOKE attribute description of 18, 80 listing users with 88 REVOKE operand CONNECT command 58 REVOKE suboperand PASSWORD operand SETROPTS command 119 revoked user ID using the RESUME operand to activate a 119 revoking IBMUSER user ID 373 preventing 90 the ADSP attribute 82 unused user ID 119 user ID based on consecutive incorrect passwords and password phrases 119 user's access to system 80 user's access to the system 96 REXX RACVAR function package determining current security label 111 RIMS class description 720 RJE consoles protecting 511, 512 RJE workstation protecting with FACILITY profiles 513 protecting with JESINPUT profiles 514 RJP consoles protecting 512 RJP workstation protecting with FACILITY profiles 513 RLIST command to list information in TVTOC of tape volume profile 195 to list profiles in the DIGTCERT class 586 RMTOPS class description 721 RODMMGR class description 721 ROLE class description 721 rollover of a private key 615 RRSF (RACF remote sharing facility) 428 creating user IDs 76 custom fields 681 directed command order considerations 438 directing commands to incompatible systems 439 introduction 386 local mode 430 local node 429 multisystem node 430 nodes 429 remote mode 430 remote node 429
RRSF (RACF remote sharing facility) (continued) security categories maintaining in an RRSF environment 104 single-system node 430 suppression of private-key information propagation 456 RRSFDATA class controlling access to RACLINK command 279 access to RRSF functions 279 password and password phrase synchronization 280 use of AT operand 281 use of RACLINK DEFINE operand 279 use of RACLINK PWSYNC operand 280 controlling automatic direction of application updates 285 of commands 282 of password phrases 284 of passwords 284 description 717 RSCS node control of inbound jobs or data 486 rules establishing password case 116 establishing password syntax 117 ISPF panel 15 for data set qualifiers 169 for defining data set profiles 162 for defining generic profiles with enhanced generic naming active 168, 212 for generic data set profiles 169 for generic profile checking of data sets 169 for generic profile checking of general resources 213 for high-level qualifiers of a data set name 170 for naming groups 57 for naming users 75 for protecting group data sets 165 for protecting user data sets 164 resolving multiple profiles default 235 user exits 236 RUSER qualifier in NODES profiles 488, 516 RVARSMBR class description 717, 723 RVARY command protection 275 setting password for processing 121 RVARYPW operand SETROPTS command 121
S
SAF (system authorization facility) handling of JES RACROUTE macro calls 473 ICHRTX00 router exit routine 754
824
SAF (system authorization facility) (continued) ICHRTX01 router exit routine 754 propagation of security information across a network 482 from incoming jobs 475, 481 router exits description 754 diagram of RACF router 761 diagram of SAF router 759 problems 776 user token 755 z/OS UNIX services 560 SAF callable services, authorizing applications that invoke 629 sample ISPF panel 15 QMF form 408 report from IRRDBU00 output 409 SQL queries for IRRDBU00 400 SAVE command requirements for issuing 383 SCDMBR class description 717, 723 SCEPREQ accesses required 638 SCICSTST class description 718 scope of a group description 17 resources that are within 83 using the group tree report to show 377 scratch function DASDVOL authority 185 SCRATCH function to scratch data sets on a volume 185 scratch pool volume definition 191 predefining for tape data sets 196 scratching temporary data sets when TEMPDSN class is active 246 SDSF (System Display and Search Facility) general resource class 717 protecting panels with OPERCMDS profiles 273 WRITER profiles 515 SDSF class description 717 SEARCH command and RACFVARS profiles 34 example to identify cataloged group data sets 63 example to identify cataloged user data sets 97 to find all data sets with expired security retention period 197 to find profiles in the DIGTCERT class 587 with CLIST option to maintain security categories in an RRSF environment 104 searching for RACF profile names 32
SECDATA class assigning security categories to users 88 assigning security levels to users 88 description 717, 724 SECLABEL class and CONSOLE class 252 and JESNEWS 509 and PSF for z/OS 288 and SMESSAGE class 287 and spool offload 510 and surrogate job submission 476 and TSO SEND command 533 and WRITER class 504 assigning security labels to users 88 authorization checking 770 blank label 490 description 717, 724 planning considerations 110 protecting consoles 252 protecting terminals 250 RACSLUNK label 490 relationship to SETROPTS MLS, MLACTIVE, and MLQUIET settings 774 SETROPTS options for 145 tape volume considerations 194 unknown label 490 SECLABEL field on TSO/E logon panel 535 TSO segment of user profile 107 SECLABEL parameter on JOB statement in JCL 380 SECLABELCONTROL operand SETROPTS command 145 SECLBYSYSTEM operand SETROPTS command 151 SECLJ qualifier on NODES profiles 488 SECLMBR class description 717 SECLS qualifier on NODES profiles 488 SECMODEL parameter on DD statement in JCL 381 SECMODEL parameter in JCL protecting non-VSAM data sets 179 secondary language installation defaults 136 secured signon application key and RACF database 257 defining 253 encrypting 258 masking 258 protecting 257 secured signon function See also PassTicket activating the PTKTDATA class 253 changing profiles 254 defining profiles 253 example of defining a profile 259 in a shared environment 258 overview 252 problem prevention 262 protecting keys 257 verifying the environment 262
security administration delegating 98 introduction 2 security administrator limits of authority of at the group level 83 responsibilities during implementation planning 38 role of 12 tools to manage the RACF database 26 tools to monitor and control RACF 26 security category assigning to users 88 assigning with SECDATA profiles 88 definition 8 deleting UNKNOWN categories 104 during authorization checking 756 how RACF uses 24, 101 maintaining categories in an RRSF environment 104 tape volume 193 understanding 103 security classification of users and data activating or deactivating 143 definition 8 during authorization checking 756 how RACF uses 24, 88, 101 understanding 103 security console sending warning messages to 5 security events z/OS UNIX auditing 565 security implementation team responsibilities 38 selecting 38 security information sent across nodes in NJE network 502 security label activating by system image 151 assigning to users 88 assigning with SECLABEL profiles 88 authorization checking 770 blank label 490 checking for messages with DIRAUTH profiles 287 compatibility mode 147 console considerations 111 consoles 252 copying from model profile 42 definition 8 description 105 enforcing multilevel security 148 JES writer 504 JES writer considerations 111 planning considerations 110 preventing copying to a lower security label 147 protecting 145, 146 RACSLUNK label 490 restricting access to file system resources 150 restricting access to interprocess communication objects 150 Index
825
security label (continued) SETROPTS MLS option 42 system data sets 745 tape volume considerations 194 tape volumes 193, 194 terminal considerations 111 terminals 250 unknown label 490 using name-hiding 151 security level assigning with SECDATA profiles 88 converting from LEVEL to SECLEVEL 104 definition 8 during authorization checking 756 how RACF uses 24, 88, 101 tape volume 193 understanding 103 security retention period how RACF uses for tape data sets 197 searching for all tape data sets with expired 197 system-wide for tape data sets 133 security topics for RACF classroom courses xviii segment APPCLU profile 230, 244 CDTINFO segment FIELD profile names 228 CFDEF segment FIELD profile names 228 CICS segment contents 67 conversation security options 291 FIELD profile names 228 field-level access checking 533 CSDATA segment contents 55, 68 FIELD profile names 228 IRRDBU00 utility 389 DCE segment contents 68 FIELD profile names 228 DFP segment contents 55, 68 DFSMSdss storage administrator 62 FIELD profile names 228 field-level access checking 524 overriding default values 523 RACF processing 524 SMS-managed data sets 522, 523 DLFCLASS profile 229, 269 DLFDATA segment contents 269 FIELD profile names 229 group profile contents of 54 ICSF segment FIELD profile names 229 ICTX segment FIELD profile names 229 KERB segment contents 69 LANGUAGE segment contents 69
segment (continued) LANGUAGE segment (continued) FIELD profile names 229 LNOTES segment contents 70 FIELD profile names 229 NDS segment contents 70 FIELD profile names 229 NETVIEW segment contents 70 FIELD profile names 229 OMVS segment contents 55, 70 FIELD profile names 229 IRRDBU00 utility 389 list-of-groups checking 121 OPERPARM segment contents 71 FIELD profile names 230 OVM segment contents 56, 72 FIELD profile names 230 profile modeling 41 PROGRAM profile 230 PROXY segment 73 PTKTDATA profile 230 SESSION segment contents 244 FIELD profile names 230 SIGVER segment FIELD profile names 230 SSIGNON segment FIELD profile names 230 STARTED profile 231 STDATA segment FIELD profile names 231 SVFMR segment FIELD profile names 231 TME segment contents 56 FIELD profile names 231 TSO segment contents 73 controlling access to fields in 226 example 95 FIELD profile names 231 SECLABEL field 107 user profile contents 66 WORKATTR segment contents 74 FIELD profile names 231 segments STDATA 155 selected data sets report from DSMON 379 selected user attribute report from DSMON 379 selected user attribute summary report from DSMON 379 SEND command (TSO) and SECLABEL class 533 controlling with SMESSAGE profiles 533
sending messages TSO SEND command controlling with SMESSAGE profiles 533 SERVAUTH class 632 authorization checking 768 conditional access 173, 217 description 717 SERVER class description 717 session interval, VTAM maximum 144 SESSION segment APPCLU profile contents 244 conversation security options 291 FIELD profile names 230 field-level access checking 225 maximum VTAM session interval 144 password 144 SESSIONINTERVAL operand SETROPTS command 144 SESSKEY value for APPCLU class profiles 244 SETROPTS command 272 EARLYVERIFY operand 475 GENLIST operand 136 guidelines for selected options 114 in-storage profiles 136 RACLIST operand 136 specifying system-wide RACF options with 114 SETROPTS GENLIST processing activating or deactivating 137 deactivating 137 refreshing 138 SETROPTS MLS option effect on copying of security label in profile modeling 42 SETROPTS RACLIST processing activating for TSO general resource classes 532 activating or deactivating 138 APPCLU class, not used 244 APPL class 245 avoiding deadlocks 265 CONSOLE class 252 deactivating 139 deadlocks, avoiding 265 DEVICES class 267 DIGTCERT class 592 DIGTCRIT class 607 DLFCLASS class 270 FACILITY class (first profile) 232 FACILITY class (program dumps) 265 FIELD class 227 how to avoid refreshing 58 member classes 237 MGMTCLAS class 521 NODES class 503 OPERCMDS class 276 overview of refreshing profiles 140 performance benefits 210 profile size considerations 216 PROPCNTL class 477
826
SETROPTS RACLIST processing (continued) PTKTDATA class 253 RACFVARS class 238, 503 refreshing for TSO general resource classes 533 refreshing profiles for SMS classes 521 refreshing, overview 140 resource group classes 237 SMESSAGE class 287, 534 STORCLAS class 521 TERMINAL class 234, 248 UNIXPRIV class 557, 558 VTAMAPPL class 288 SETROPTS STATISTICS option maintaining two sets of statistics in a discrete resource profile 124 SFSCMD class description 724 shared in-storage profile SETROPTS GENLIST processing for 137 SETROPTS RACLIST processing for 138 shared RACF database 386 and secured signon function 258 sharing among z/OS and z/VM systems 13 shared user IDs restricting access to resources 82 SHARED.IDS profile 541 shortcut keys 779 SID value SMFPRMxx member of SYS1.PARMLIB 255, 256 signature verification overview 351 signing, program overview 351 task roadmap 355 SIGVER segment field-level access checking 226 PROGRAM profile FIELD profile names 230 SIMS class description 720 single-qualifier data set name how RACF prefixes during authorization checking 170 protecting data set that has 132, 164 single-system node 430 SINGLEDSN operand indicating tape volume contains one data set 196 RDEFINE command effect on tape volumes 197 size considerations for profiles 216 SMESSAGE class 287 activating 287, 534 and SECLABEL class 287 controlling the TSO SEND command 533 defining profile 287 defining profiles 533 description 717
SMESSAGE class (continued) protecting receipt of TSO messages 287 SETROPTS RACLIST processing 287, 534 UACC authorities 287 SMF (System Management Facility) control of logging to data set 77 listing RACF-generated records 28 logging records to 4 RACF unload utility for SMF data 28 SMF CONTROL file and PTKTDATA profile 257 SMF system identifier for PTKTDATA profile 255, 256, 257 SMFPRMxx member of SYS1.PARMLIB and PTKTDATA profile 256 SMS (Storage Management Subsystem) controlling use of additional resources 527 controlling use of SMS classes 520 DFP segment in RACF profiles 521 general resource classes 519 management classes protecting with MGMTCLAS profiles 519 RACF support for 519 storage classes protecting with STORCLAS profiles 520 SMS (Storage Management Subsystems) general resource classes 721 SMS-managed data set determining owner of 524 DFP segment of data set profile 523 DFP segment of group profile 522 DFP segment of user profile 522 password protection for 177 SNAME field, LNOTES segment 293 SOMDOBJS class description 717 SPECIAL attribute as related to RACF commands 729 description of 18, 77 listing users with 88, 400 suggestions for assigning 87 spool protecting dumped jobs 511 job data sets 504 restored jobs 511 SYSIN data sets 504 SYSOUT data sets 504 system data sets 480 trace data sets 510 restricting access 534 spool offload considerations for JES2 510 WRITER class 510 spool reload JESINPUT profiles 511 protecting with JESJOBS profiles 511 protecting with NODES profiles 511 SQL query sample statements for IRRDBU00 output 400, 408
SSIGNON operand RALTER command 258, 259 RDEFINE command 253, 258, 259 SSIGNON segment field-level access checking 225 PTKTDATA profile FIELD profile names 230 stage 3 of application identity mapping 552 standard access list during authorization checking 756 standard naming conventions when defining data set profiles 163 START command 156 START LLA command controlling the use of 268 STARTED class 155 description 717 FIELD profile names 231 JES (job entry subsystem) entry 473 setting up 155 STARTED profile names 156 STDATA segment 155 started procedure bypassing security classification checking 155 considerations 158 defining using the STARTED class 155 using the started procedures table (ICHRIN03) 157 effect on SURROGAT checking 477 failsoft processing for 384 granting access to during authorization checking 754 identifying by user ID 6 preventing logon and revocation of user IDs 90 using 154 started procedures table (ICHRIN03) creating 157 dynamic, using the STARTED class 155 JES (job entry subsystem) entry 473 started procedures table report from DSMON 379 statistics bypassing recording of 127 bypassing REQUEST=VERIFY processing 125 maintaining 124 recording for classes 127 recording for REQUEST=VERIFY processing 125 recording in RACF profiles 29 using RACF to keep 5 statistics collection using SETROPTS STATISTICS 124 STATUS suboperand RVARYPW operand (SETROPTS command) 121 STDATA segment 155 field-level access checking 225 STARTED profile FIELD profile names 231 STORCLAS class description 721 Index
827
STORCLAS class (continued) protecting SMS storage classes 520 SETROPTS RACLIST processing 521 STORCLAS parameter (JCL DD statement) parameters related to RACF 380 subject's and issuer's name filters 603 subject's name filters 601 subject's X.509 distinguished name 598 SUBMIT command (TSO) controlling 382 controlling job submission 482 IKJEFF53 installation exit 482 submitter information for local jobs 494 for NJE jobs 494 from not trusted nodes 494 from trusted nodes 494 submitter validation 498 submitting jobs allowing another user to submit jobs for you 485 controlling 482 surrogate users 475, 485 SUBSYSNM class description 721 summary defining a RACF group 61 defining general resources 207 defining users 94 deleting groups 62 deleting users 96 of RACF authorities 725 of RACF commands 725 superuser authority 540 SUPERUSER.FILESYS authority, overriding 561 SUPERUSER.FILESYS.ACLOVERRIDE profile 561 SURROGAT class activating 477 authorizing surrogate users 476 controlling TSO SUBMIT command 382 defining profiles 476 description 718 migrating from $SUBMIT.userid FACILITY class profiles 476 RACF variable example 241, 242 setting up surrogate users 475, 485 started task 477 UACC authorities 476 surrogate job submission across NJE networks 490 and SECLABEL class 476 authorizing 475, 485 surrogate user authorizing 485 authorizing with SURROGAT profiles 475, 476 SVC dump restricting access to dumps containing passwords 382 SVFMR segment field-level access checking 225 general resource profile FIELD profile names 231
SWITCH suboperand RVARYPW operand (SETROPTS command) 121 switching to alternate RACF databases 385 synchronization of database profiles establishing 459 SYS1.HELP data set global access checking table entries for SYS1.HELP 222 SYS1.PARMLIB data set CONSOLxx member 251 SMFPRMxx member 256 SYS1.SAMPLIB RACDBULD member 400 RACDBUQR member 400 RACDBUTB member 400 SYS1.UADS data set converting with RACONVRT EXEC 74, 76 deleting user entry 97 maintaining for certain users 74, 529 SYSAREA parameter on OUTPUT statement in JCL 381 SYSIN data sets protecting 504, 505 protecting with JESSPOOL profiles 504 SYSLOG data sets protecting with JESSPOOL profile 510 SYSMVIEW class description 718 SYSOUT data sets authorizing NJE 495 protecting 504, 505 protecting with JESSPOOL profiles 504 RACSLUNK security label 490 undefined security label 490 SYSOUT requests &SUSER value 479 how verified 479 SYSOUT spool reload JESINPUT profiles 511 sysplex MCS command authorization in 274 sysplex communication data sharing option 727 sysplex data sharing option parameters 392 performance 389 system authorization facility See SAF system data set protecting 183 security labels 745 System Display and Search Facility See SDSF System Display and Search Facility (SDSF) See SDSF (System Display and Search Facility)
system identifier (SMFID) using for program control example of setting up 350 system key DSMON report 377 system management facility See SMF system operators creating user IDs 76 system programmer responsibilities during implementation planning 38 system report from DSMON 377 system resources checking the status of 376 system security administering 12 checking by using DSMON reports 376 decentralizing administration 12 system-wide RACF options activating or deactivating using SETROPTS command 114
T
table space for DB2 creating 401 tables dynamic started procedures and STARTED class 155 started procedures creating 157 dynamic 155 tape data set activating or deactivating protection for 186 activating protection for 133 authority to access a protected 188 authorization requirements for TAPEVOL and TAPEDSN options 199 authorizing access to data set on tape volume with a TVTOC 192 checking the security retention period 197 command to protect an existing example 190 creating discrete tape volume profile 167 deleting RACF protection 197 description of TVTOC 194 DFP-managed preventing access to 129 DFSMShsm considerations 200 example of command to create generic profile for 191 failsoft processing for 384 maximum number of TVTOC entries 195 maximum number of volumes 190, 195 multivolume considerations 180 predefining tape volume profiles for 196 PROTECT parameter in JCL 200
828
tape data set (continued) protecting 21, 162 protecting a cataloged 189 protecting an existing 189 protecting an uncataloged 189 protecting multivolume 190 protecting new 190 protecting with discrete profile through ADSP attribute 81 protecting with PROTECT parameter in JCL 201 protection for nonlabeled (NL) tapes 203 protection with nonstandard labels (NSL) 203 protection with TAPEVOL and TAPEDSN options 187 providing password protection for 201 RACF processing for a multivolume 202 specifying DISP=DELETE 167 system-wide security retention period 133 tape label authorization requirements for 203 bypassing tape label processing 202 data set and volume protection for nonlabeled tapes 203 data set and volume protection with nonstandard labels 203 tape volume activating protection for 133 authority to access a protected 189 authorizing access to data set on a 192 automatic TVTOC tape volume profile 195 defining with a TVTOC 191 defining without a TVTOC 192 example of command define with a TVTOC 191 example of command to define without a TVTOC 192 example of command to delete access lists 193 maximum number a data set can span 195 maximum span 190 nonautomatic tape volume profile 196 OPERATIONS user's authority to create or destroy labels 78 protecting 191 protecting with PROTECT parameter in JCL 201 protection and bypass label processing (BLP) 202 protection for nonlabeled (NL) tapes 203 protection with nonstandard labels (NSL) 203 protection with TAPEVOL and TAPEDSN options 187 providing password protection for data sets on 201 RACF authorization checking for 754
tape volume (continued) removing write-enable ring when user has READ access authority 201 tape volume profile access authorities for 191 containing a TVTOC 194 contents of 195 predefining for tape data sets 196 tape volume table of contents See TVTOC tape VTOC See TVTOC TAPEDSN operand SETROPTS command 186 TAPEDSN options effect on tape volume and tape data set protection 187 TAPEVOL class activating 133, 186 defining profiles with a TVTOC 191 defining profiles without a TVTOC 192 description 718, 724 example of using on RDEFINE command 191 must be active for bypass label processing 202 OPERATIONS attribute allows access 78 RACF variable example 238 recording statistics for 127 UACC authorities 191 TAPEVOL options effect on tape volume and tape data set protection 187 TCICSTRN class description 718 technical support personnel responsibilities during implementation planning 38 role of 12 teleprocessing device controlling allocation with DEVICES profiles 265 TEMPDSN class activating 246 description 718 protecting DFP-managed temporary data sets 246 temporarily preventing significant RACF activity 146 temporary data sets erasing 183 global access checking table 129 nonstandard names 129 PROTECTALL 129 protecting with TEMPDSN profiles 246 terminal allowing access depending on terminal 173, 217 controlling access to resources based on security levels 89, 102 limiting access to system 250 limiting when terminal can be used 89 preventing the use of undefined 248
terminal (continued) protecting 247 protecting with GTERMINL profiles 248 protecting with SECLABEL profiles 250 protecting with TERMINAL profiles 247 RACF authorization checking for 766 specifying group terminal option 61 time and day-of-week access checking 90 UACC authorities for undefined terminals 143 TERMINAL class activating 234, 248 description 718, 724 protecting terminals 247 recording statistics for 127 SETROPTS RACLIST processing 234, 248 specifying with WHEN operand on PERMIT command 173, 217 terminal name on a VTAM system 247 TERMINAL operand SETROPTS command 143 TERMUACC operand specifying on ADDGROUP or ALTGROUP command 249 time of day terminal can access system 90, 250 user can access system 89 time range PassTicket 259 timed PERMIT providing 58 TIMS class activating 234 description 720 Tivoli general resource class 721 Tivoli Service Desk general resource classes 720 TME segment data set profile FIELD profile names 231 field-level access checking 225 general resource profile FIELD profile names 231 group profile contents of 56 FIELD profile names 231 TMEADMIN class description 721 token submitter information propagated from trusted nodes 479 TPUT macro auditing when users receive data sent 289 trace data set protecting with JESSPOOL profile 510 transaction authorization checking in CICS 769 authorization checking in IMS 769 Index
829
translating group names 498 security labels 498 user IDs 498 TRANSMIT command (TSO) controlling use 534 TRUST option of the RACDCERT command 590 trusted attribute authorization checking 754 started procedure 155 TSO defining PTKTDATA profiles 256 using when RACF is deactivated 535 VTAM generic resource name 256 TSO account number protecting with ACCTNUM class 530 specifying with TSO/E logon panel 74 TSO command ALLOCATE protecting data sets with discrete profiles 167 using the PROTECT operand on 179 using the SECMODEL operand on 179 and RACF 534 CANCEL controlling job cancellation 484 CONSOLE and OPERPARM segment 71 EDIT using 383 LISTBC auditing 289 LOGON with RECONNECT operand 250 OUTPUT controlling the use of 534 RECEIVE auditing 289 controlling the use of 534 SEND controlling with SMESSAGE profiles 533 SUBMIT controlling 382 controlling job submission 482 IKJEFF53 installation exit 482 TRANSMIT controlling the use of 534 TSO Extensions See TSO/E TSO Information Center Facility See TSO ICF TSO line drop facility 250 TSO logon procedures protecting with TSOPROC class 530 TSO messages protecting with SMESSAGE profiles 287 TSO performance groups protecting with PERFGRP class 530 TSO resources authorization checking for 533 protecting 530
TSO segment controlling access to fields in 226 description 20 field-level access checking 225 overriding information in 74 user profile contents of 73 example 95 FIELD profile names 231 field-level access checking 533 SECLABEL field 107 TSO session building from information in TSO segment 73 failsoft processing for 384 TSO user attributes moving from SYS1.UADS to RACF database 73 TSO user authorities protecting with TSOAUTH class 530 TSO/E general resource classes 721 RACF support for 529 TSOAUTH class activating 530 authorization checking for 533 considerations 532 description 721 protecting TSO user authorities 530 SETROPTS RACLIST processing 532 UACC authorities 530 TSOPROC class activating 530 authorization checking for 533 considerations 532 description 722 protecting TSO logon procedures 530 SETROPTS RACLIST processing 532 UACC authorities 530 TVTOC (tape volume table of contents) authorizing access to data set on tape volume with 192 defining tape volume without a 192 defining tape volumes with a 191 description 194 DFSMShsm considerations 200 failsoft processing for 384 maximum number of data set entries 195 TVTOC operand creating TVTOC for tape volume 196 example of using on RDEFINE command 191
U
UACC (universal access authority) ACCTNUM class 530 checking what is specified for system data sets 379 CONSOLE class 252 contrasted with ID(*) 9, 174, 382 coverage of batch jobs not associated with a RACF-defined user 174 RACF-defined users only 382
UACC (universal access authority) (continued) coverage of (continued) users not defined to RACF 174, 382 DATASET class 174 default for user when connected to a group 88 DEVICES class 267 DLFCLASS class 270 during authorization checking 757 during authorization checking for devices 768 during authorization checking for terminals 767 FACILITY class LLA-managed data sets 268 for data sets 174 for general resources 216 for system data sets 745 for undefined terminals 143 JESINPUT class 486 overriding 216 overriding for a data set profile 174 PERFGRP class 530 RACFVARS class 238 SMESSAGE class 287 specifying default for undefined terminals 248 SURROGAT class 476 TAPEVOL class 191 TSOAUTH class 530 TSOPROC class 530 VTAMAPPL class 288 WRITER class 515 UCICSTST class description 718 UID mapping and VLF 553 UNIXMAP class profiles 555 UIMS class description 720 UNAME field, NDS segment 293 unauthorized access attempts logging 4 uncataloged data sets preventing access to 129 undefined user capabilities on a RACF-protected system 63 UNDEFINEDUSER operand SETROPTS command 502 unit record device controlling allocation with DEVICES profiles 265 universal access authority See UACC universal groups defining 56 deleting 424 listing members 390 RACFICE reports 396 removing members 424 using database unload (IRRDBU00) 390 using database unload (IRRRID00) 424
830
UNIXMAP class description 722 performance considerations 553 populating 554 profiles for UIDs and GIDs 555 UNIXPRIV class CHOWN.UNRESTRICTED profile 557 description 722 managing z/OS UNIX privileges 556 SETROPTS RACLIST processing 557, 558 unknown operator command auditing 276 protecting with OPERCMDS profiles 276 unknown security categories deleting 104 unknown user token for jobs submitted from a physical reader 479 UPDATE access authority as related to RACF commands 732 for general resources 216 to a tape volume 199 USE group authority as related to RACF commands 731 description 60 user accountability of individual 5 as owner of data set profile 166 as owner of resource profile 23 assigning user and group attributes 17 attributes 7, 76 authority required to define new user 60 authority to access data set when not in access list 174 authority to access general resource when not in access list 216 authorizing to access resources 7 classifying 101 defining 52 summary of steps 94 defining to RACF 16, 63 defining to RACF using ICF 95 delegating authority to list 684 delegating authority to resume 689 deleting summary of steps 96 educating system users 46 encryption of RACF user passwords 152 excluding from system 18 forcing batch users to identify themselves to RACF 474 identification with USER operand 383 identifying by user ID 6 limiting when user can log on 89 maximum number connected to a group 52 naming conventions for 75 RACF commands for administration 16 relationships within a group 44
user (continued) requirements to log on to TSO 534 restricting access to resources 82 revoking access to system 80 security classification of 24, 101 sending warning messages to 5 support for JES user ID propagation 382 verification checking when restarting jobs 381 verifying use of console 767 use of IP address 767 use of JES input device 767 use of terminal 766 user attribute description of various 76 specifying 17 user authority for TSO protecting 530 user data set controlling creation of 165 protecting 164 user filters for distributed identity names 701 user ID activating a previously revoked 119 as high-level qualifier for data set 164 assigning to batch user 44 associating started procedure names with 154 authentication 775 controlling propagation of 477 creating blocks of using CLIST 76 deactivating an unused 119 default user IDs 502 delegating authority to list 684 delegating authority to resume 689 displaying from RACF database 27 during authorization checking for data sets 756 early verification of, by JES 475 extended password and user ID processing 118 invalid listing in data set access lists 400 migrating to RACF 76 preventing logon and revocation 90 propagation control in an NJE environment 494 for jobs with no validated user ID 475 when jobs are submitted 475 protected 90 rationale for using 2 restricted 91 revoking an unused 119 revoking based on consecutive incorrect passwords and password phrases 119 selecting 43 specifying as prefix for data set with single-qualifier name 132 translating 498
user ID (continued) using &RACUID for global access checking 221 user ID associations approving 433 defining 432 for other users 433 for your user ID 432 deleting 433 listing 434 managed defining 433 user identifiers (UIDs) 539 user IDs ???????? 502 ++++++++ 502 creating for RRSF users 76 creating for system operators 76 mapping profiles for 555 mapping to UIDs 553 mapping UID to 539 security default 501 suggestions for defining 75 user information delegating authority to list 684 user limits for z/OS UNIX 540 USER parameter on JOB statement in JCL 380 user profile authority granted through group-level attributes 83 authority of CLAUTH user to define 80 contents 66 controlling access to DFP segment 525 description of 19, 64 DFP segment 522 for the IBM support personnel 383 ownership of 76 profiles 66 retrieving SMS information 524 user contents 66 user structure 15 user token 755 USER.OMVS.* profile (FIELD class) 71 USER.OMVS.HOME profile (FIELD class) 71 USER.OMVS.PROGRAM profile (FIELD class) 71 USERJ qualifier on NODES profiles 488 USERS qualifier on NODES profiles 488 using the NOINITSTATS option for REQUEST=VERIFY processing statistics 125 utilities brief overview 26 IRRADU00 28 IRRDBU00 27, 388 IRRIRA00 552 IRRMIN00 26 IRRRID00 27, 410 IRRUT100 27 IRRUT200 27 Index
831
V
validation security 498 VCICSCMD class description 718 vector facility protecting with FACILITY profile 263 verification, program task roadmap 363 VERIFY accesses required 638 verifying digital signatures of programs 351 Virtual Lookaside Facility (VLF) z/OS UNIX performance considerations 553 Virtual Telecommunications Access Method See VTAM VLF (Virtual Lookaside Facility) z/OS UNIX performance considerations 553 VLF cache flushing with RACF commands 370 VMBATCH class description 724 OPERATIONS attribute allows access 78 VMBR class description 724 VMCMD class description 724 OPERATIONS attribute allows access 78 VMDEV class description 724 VMEVENT class description 724 VMLAN class description 724 VMMAC class description 724 VMMDISK class description 724 OPERATIONS attribute allows access 78 VMNODE class description 724 OPERATIONS attribute allows access 78 VMPOSIX class description 724 VMRDR class description 724 OPERATIONS attribute allows access 78 VMSEGMT class description 724 VMXEVENT class description 724 volume authority DASD volume 185
VSAM data set comparison of password and RACF authorization requirements 183 multivolume considerations 180 protecting using commands 169 VTAM (Virtual Telecommunications Access Method) general resource class 718 VTAM application programs protecting with VTAMAPPL profiles 288 VTAM generic resource name for TSO 256 VTAM LU 6.2 bind activating APPCLU class 244 controlling 243 example of APPCLU class 245 using APPCLU class 243, 244 VTAM password on bind enforcing 243 VTAM session interval maximum 144 VTAM session-level security controlling 243 VTAM terminal defining name for 247 VTAMAPPL class activating 288 defining profiles 288 description 718 protecting VTAM applications 288 SETROPTS RACLIST processing 288 UACC authorities 288 VXMBR class description 724
W
warning message number of days before password expires 118 rationale for using 43 unauthorized access attempt 5 WARNING suboperand PASSWORD operand SETROPTS command 118 WCICSRES class description 718 WebSphere Application Server providing automatic registration of digital certificates 610 using digital certificates to access 592 WebSphere MQ general resource classes 722 WHEN operand PERMIT command data set profiles 173 general resource profiles 217 specifying when terminal can access system 90 WHEN(APPCPORT) operand of PERMIT command 173, 217 WHEN(CONSOLE) operand on PERMIT command 173, 217 WHEN(CRITERIA) operand on PERMIT command 218
WHEN(JESINPUT) operand on PERMIT command 173, 217 WHEN(PROGRAM) operand of PERMIT command 217 WHEN(SERVAUTH) operand of PERMIT command 173, 217 WHEN(SYSID) operand on PERMIT command 218 WHEN(TERMINAL) operand on PERMIT command 173, 217 WIMS class description 720 work entering system run by a RACF-defined user 148 WORKATTR segment field-level access checking 225 user profile contents of 74 FIELD profile names 231 workstations secured signon 252 write-enable ring removing when opening a tape data set for input 201 when opening a tape data set for input 199 WRITER class activating 515 and SDSF 515 and SECLABEL class 504 authorizing outbound work 504 controlling output destination 514 defining profiles 514 description 718, 724 spool offload 510 UACC authorities 515 writer, external access to spool data sets 505
X
X.500 directory information tree 598 X.509 issuer's distinguished name 598 X.509 subject's distinguished name 598 XCSFKEY class description 720 XFACILIT class description 718
Z
z/OS Basic Skills information center xx z/OS Network Authentication Service general resource classes 721 IRR.RTICKETSERV resource 640 IRRSPK00 640 R_ticketserv callable service 640 z/OS UNIX access control lists (ACLs) 559 and RACF 537 auditing security events 565 authorizing daemons 299 automatic assignment of shared or default UNIX identities 550 automatic assignment of unique UNIX identities 543
832
z/OS UNIX (continued) defining delegated resources 299 file system resources, restricting access 150 files GRPLIST option 121 protecting data 559 general resource classes 722 group identifiers (GIDs) 538 group ownership of files 558 performance considerations 552 permission bits 559 protected user IDs 541 SETROPTS MLFSOBJ in effect 150 setting user limits 540 sharing UNIX identities 541 superuser authority 540 user identifiers (UIDs) 539 Virtual Lookaside Facility (VLF) 553 z/OSMF general resource class 722 z/VM defining PTKTDATA profiles 257 finding information for RACF tasks 13 sharing a RACF database among z/OS and z/VM systems 13 ZMFAPLA class description 722
Index
833
834
Printed in USA
SA22-7683-15