[z/OS]

RACF-Tools

Dieses Dokument beschreibt verschiedene Tools und Techniken für die Verwaltung der für WebSphere Application Server for z/OS verwendeten Sicherheitsdefinitionen:
  • RACF-ISPF-Anzeigen zum Auflisten aller Profile in einer Klasse
  • ISHELL zum Auflisten von UIDs sortiert nach UID oder Benutzer-ID
  • EXEC zum Auflisten der GIDs sortiert nach GID oder Gruppen-ID
  • EXEC zum Widerrufen von RACF-Definitionen

RACF-ISPF-Anzeigen

Wenn Sie alle Profile in einer bestimmten Klasse auflisten möchten, verwenden Sie dazu die RACF-ISPF-Anzeigen. Zum Ausführen der folgenden Schritte benötigen Sie die RACF-Berechtigung SPECIAL oder AUDITOR:
  • Wählen Sie "General Resource Profiles" (Option 2) aus.
  • Wählen Sie "Search" (Option S oder 9) aus.
  • Geben Sie einen Klassennamen ein.
  • Drücken Sie zwei weitere Male die Eingabetaste.
------------------------------------------------
RACF - SERVICES OPTION MENU
OPTION ===> 2
SELECT ONE OF THE FOLLOWING:
1 DATA SET PROFILES
2 GENERAL RESOURCE PROFILES
3 GROUP PROFILES AND USER-TO-GROUP CONNECTIONS
4 USER PROFILES AND YOUR OWN PASSWORD
5 SYSTEM OPTIONS
6 REMOTE SHARING FACILITY
7 DIGITAL CERTIFICATES AND KEY RINGS
99  EXIT
------------------------------------------------

-----------------------------------------------------
RACF - GENERAL RESOURCE PROFILE SERVICES
SELECT ONE OF THE FOLLOWING:
1 ADD Add a profile
2 CHANGE Change a profile
3 DELETE Delete a profile
4 ACCESS Maintain access list
5 AUDIT Monitor access attempts (Auditors only)
D or 8 DISPLAY Display profile contents
S or 9 SEARCH Search the RACF data base for profiles
-----------------------------------------------------

------------------------------------------
RACF - GENERAL RESOURCE SERVICES - SEARCH
OPTION ===>
ENTER THE FOLLOWING PROFILE INFORMATION:
CLASS ===> STARTED
PROFILE ===>
------------------------------------------

-----------------------------------
BROWSE - RACF COMMAND OUTPUT ----
COMMAND ===>
T5ACR.* (G)
T5DMN.* (G)
T5SRVNDS.* (G)
T5SRV1S.* (G)
T5SRV2S.* (G)
T5SRV3S.* (G)
WMQX*.* (G)
WSCWTRC.*
-----------------------------------

Eine Liste aller in einer Klasse enthaltenen Profile erhalten Sie auch, wenn Sie den Befehl RACF SEARCH verwenden: SEARCH CLASS(Klassenname).

Alle Benutzer-IDs sortiert nach UID auflisten

Wenn Sie in RACF neue Benutzer-IDs mit den OMVS-Segmenten definieren, müssen Sie eindeutige UIDs zuordnen. WebSphere bietet derzeit noch keine Unterstützung für die Funktion RACF AUTOUID. Zum Ermitteln nicht zugeordneter (und doppelter) UIDs verwenden Sie ISPF ISHELL (Option 3.4), um eine Liste aller Benutzer-IDs sortiert nach UID zu erhalten. Führen Sie als Superuser (UID=0) die folgenden Schritte aus:
  1. Wählen Sie das Pulldown-Menü Setup und dann die Option User list aus.
  2. Blättern Sie durch die Benutzerliste.
  3. Wählen Sie das Pulldown-Menü File aus.
  4. Wählen Sie die Option Sort UID aus. (Die UID -1 bedeutet, dass der Benutzer kein OMVS-Segment besitzt.)
Das folgende Beispiel veranschaulicht die einbezogenen Anzeigen:
----------------------------------------------------------------------------------------
File   Directory   Special_file   Tools File_systems   Options   Setup   Help
----------------------------------------------------------------------------------------
UNIX System Services ISPF Shell
Command ===> _______________
----------------------------------------------------------------------------------------

-----------------------------
1. User...
2. User list...
3. All users...
4. All groups...
5. Permit field access...
6. Character Special...
7. Reset UID to 847039
-----------------------------

--------------------------------------------------------------------
File   Help
--------------------------------------------------------------------
                                                        User List
Command ===> 
--------------------------------------------------------------------
User ID              UID              Group
--------------------------------------------------------------------
ADMOORE                 1024996             $GUSERS /u/admoore
AHMAD                   2                   DFSGRP /u/ahmad
AKILOV                  125406              $GUSERS /u/akilov
ALLMOND                 36                  DFSGRP /u/allmond
AOPUSER                 99129934            AOPOPER /u/aopuser
ASTLEY                  787202              DFSGRP /u/astley
A5USR                   112501              A5GRP /tmp
BAGWELL                 342832              DFSGRP /u/bagwell
---------------------------------------------------------------------

-----------------------------
1. Sort name
2. Sort UID
3. Sort Group
4. Print
5. Exit User ID UID Group
-----------------------------

-----------------------------------------------
User ID              UID              Group
-----------------------------------------------
CBASRUH              2336             CBASRH
CBIVPH               2337             CBIVPGH
T5GUEST              2402             T5GUESG
T5ADMIN              2403             T5CFG
T5DMNU               2411             T5CFG
T5ACRNDU             2421             T5CFG
T5DMGSU              2422             T5SVRG
T5ASRNDU             2422             T5SVRG
T5ACRU               2431             T5CFG
T5ASRU               2432             T5SVRG
WSPETSC              2701             WSCNTLG
-----------------------------------------------

Alle Gruppen-IDs sortiert nach GID auflisten

Sie müssen neuen Gruppen eindeutige GIDs zuordnen. Es ist anders als bei den UIDs kein Systemtool verfügbar, um Gruppen sortiert nach GID aufzulisten, um doppelte Einträge zu ermitteln und sicherzustellen, dass die neu zugeordneten GIDs eindeutig sind. Geben Sie GID als einzigen Parameter ein, um die Gruppen sortiert nach GID aufzulisten. Standardmäßig werden die Gruppen sortiert nach Gruppen-ID aufgelistet. (Sie müssen die RACF-Berechtigung SPECIAL, AUDITOR oder eine andere Sonderberechtigung besitzen.)
/* Rexx ---------------------------------------------------------- */
/* This exec uses the ishell bpxwirac service to display the group */
/* with OMVS segments and there group IDs. B. Pierce & MJ Loos */
/* --------------------------------------------------------------- */
/* Syntax: LISTGRP Name (default) | GID */
/* --------------------------------------------------------------- */
order = "N" /* set default to name */
Arg parm /* get argument for sort order */
if Abbrev("NAME",parm,1) then order = "N"
if Abbrev("GID",parm,1) then order = "I"

call bpxwirac "OMVSGROUP" /* call the service */

Address ISPEXEC /* using ISPF services */
if order = "N" then do /* already sorted */
   do ix=1 by 1 while queued()>0
      parse pull gname gid
      say left(gname,8) right(gid,8)
   end
end
else do /* sort the results */
   "TBCREATE grptable names(tbgrpnm tbgrpid) replace nowrite"
   rows = 0
   do ix=1 by 1 while queued()>0 /* populate the table */
      parse pull gname gid
      tbgrpnm = left(gname,8)
      tbgrpid = right(gid,8)
      "TBADD grptable"
      rows = rows + 1
   end
   "TBSORT grptable FIELDS(tbgrpid,C,A,tbgrpnm,C,A)" /* sort it */
   "TBTOP grptable"
   do ix = 1 to rows by 1 /* display the results */
      "TBSKIP grptable"
      say tbgrpnm tbgrpid
   end
   "TBEND grptable" /* throw out the table */
end
say
exit 0 
/***************** end of EXEC ****************************/

RACF-Definitionen widerrufen

Wenn Sie Server, Knoten und Zellen konfigurieren und dann wieder löschen, wäre es wünschenswert, eine einfache Möglichkeit zu haben, um die RACF-Definitionen zu löschen, die währenddessen erstellt wurden.

Die beigefügte exec liest die generierten RACF-Befehle aus dem Member BBOWBRAK der Datei .DATA der Zielpartition und erstellt entsprechend die Befehle RACF DELUSER, DELGROUP, RDELETE sowie andere RACF-Befehle (in umgekehrter Reihenfolge).

Bevor Sie die erstellten RACF-Befehle ausführen, sollten Sie die Ausgabe überprüfen und alle Befehle entfernen, die Benutzer, Gruppen oder Profile löschen, die von anderen Servern verwendet werden und beibehalten werden sollen.

Tipp: Achten Sie sorgfältig darauf, dass keine Benutzer und generischen Profile gelöscht werden, die von anderen verwendet werden.
/* REXX - UNDO2 - Create backout RACF commands to uninstall Server*/
Read RACF commands into linein.in, parse verb & Obj, push
"delete/undo" commands to cmdOut.out,then write out in rev order */
out = 1 /* Output line number for stem var. cmdOut. */
"EXECIO * DISKR RACFCMDS (STEM linein."
do in = 1 to linein.0 /* See what we read; call the appropriate rtne */
  if pos('/*',linein.in) <> 0 then iterate
  if pos('say',linein.in) = 1 then iterate
 parse var linein.in '"' cmdVerb cmdObj '"'
 select
   when cmdVerb = "ADDGROUP" then call DelGrp
   when cmdVerb = "ADDUSER" then call DelUsr
   when cmdVerb = "CONNECT" then call ConUsr
   when cmdVerb = "RDEFINE" then call DelPro
   when cmdVerb = "PERMIT" then call PerUsr
   when cmdVerb = "RACDCERT" then call RdCert
    otherwise iterate
  end /* select */
end /* in=1 to n */
call WriteCmds
exit 1
return

/*************** Subroutines: ********************/

DelUsr: /* DelUsr: Delete User */
   parse var cmdObj user .
   cmdOut.out = "DELUSER " || user
   out = out + 1
return

DelGrp: /* DelGrp: Delete Group */
   parse var cmdObj group .
   cmdOut.out = "DELGROUP " || group
   out = out + 1
return

ConUsr: /* ConUsr: Remove user from a group */
   cmdOut.out = "REMOVE " || cmdObj
   out = out + 1
return

DelPro: /* DelPro: Delete Profile */
   parse var cmdObj class profile acc .
   cmdOut.out = "RDELETE " || class profile
   out = out + 1
return

PerUsr: /* PerUsr: Remove permission from a profile */
   parse var cmdObj profile class ID acc
   parse value cmdObj with 'ID(' id ')' acc
   cmdOut.out = 'PERMIT '||profile class||' ID('||ID||') DELETE'
   out = out + 1
return

RdCert: /* RdCert: Remove Certificates */
if pos('GENCERT',cmdObj) <> 0 then
  DO
   if pos('CERTAUTH',cmdObj) <> 0
             then
     DO
      parse value cmdObj with 'WITHLABEL(' cert ')'
      cmdOut.out = 'RACDCERT CERTAUTH DELETE(LABEL(' || cert || '))'
      out = out + 1
     END
    ELSE DO
     parse value cmdObj with 'WITHLABEL(' cert ')'
     parse value cmdObj with 'ID (' id ')'
     cmdOut.out = 'RACDCERT ID('||id||') DELETE(LABEL('||cert||'))'
     out = out + 1
     END
  END
if pos('ADDRING',cmdObj) <> 0 then
  DO
   parse value cmdObj with 'ADDRING(' ringname ')'
   parse value cmdObj with 'ID(' user ')'
   cmdOut.out = 'RACDCERT DELRING('||ringname') ID('||user')'
   out = out + 1
  END
return

/* Finished - pull LIFO stack and Write it out *******************/
WriteCmds:
 DO i = out-1 to 1 by -1
   QUEUE cmdOut.i
   EXECIO 1 DISKW RACFUNDO
 END
return

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_racftools
Dateiname:rsec_racftools.html