[z/OS]

Outils de fonction de contrôle d'accès aux données (RACF)

Les techniques et outils suivants vous permettent de gérer les définitions de sécurité utilisées pour WebSphere Application Server for z/OS :
  • Panneaux ISPF de l'outil RACF permettant d'afficher la liste de tous les profils d'une classe
  • ISHELL permettant d'afficher la liste de tous les UID classés par UID ou par ID utilisateur
  • EXEC permettant d'afficher la liste de tous les GID classés par GID ou par ID de groupe
  • EXEC permettant d'annuler les définitions RACF

Panneaux ISPF RACF

Pour répertorier tous les profils d'une classe spécifique, utilisez les panneaux ISPF de l'outil RACF. Vous devez disposer d'une autorisation RACF SPECIAL ou AUDITOR pour effectuer ce qui suit :
  • Sélectionnez General Resource Profiles (option 2).
  • Utilisez la fonction de recherche (option S ou 9).
  • Entrez un nom de classe.
  • Appuyez à deux reprises sur la touche Entrée.
------------------------------------------------
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 daRACF ta 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.*
-----------------------------------

Vous pouvez également obtenir la liste de tous les profils d'une classe à l'aide de la commande RACF SEARCH : SEARCH CLASS(nom_classe).

Etablir la liste de tous les ID utilisateur classés par UID

Lors de la définition de nouveaux ID utilisateur avec des segments OMVS dans RACF, vous devez attribuer des UID uniques. WebSphere ne prend pas encore en charge la fonction RACF AUTOUID. Pour rechercher des UID non affectés (et en double), utilisez l'option ISPF ISHELL (option 3.4) qui permet d'afficher la liste de tous les ID utilisateur, classés par UID. Vous devez être un superutilisateur (UID=0) et suivre la procédure ci-dessous.
  1. Sélectionnez le menu déroulant Setup et l'option User list.
  2. Parcourez la liste des utilisateurs.
  3. Pendant ce temps, sélectionnez le menu déroulant File.
  4. Sélectionnez l'option Sort UID. (Un UID ayant la valeur -1 indique que l'utilisateur ne possède pas de segment OMVS.)
The following example illustrates the panels involved:
----------------------------------------------------------------------------------------
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
-----------------------------------------------

Etablir la liste de tous les ID de groupe classés par GID

Vous devez aussi attribuer des GID uniques aux nouveaux groupes. Le système ne fournit aucun outil pour l'affichage d'une liste des groupes classés par GID (contrairement aux UID) qui permettrait d'identifier les doublons et d'affecter de nouveaux GID uniques. Indiquez GID comme paramètre unique afin d'afficher les GID classés par GID. Par défaut, les GID sont répertoriés par ID de groupe. (Vous devez avoir des droits RACF SPECIAL, AUDITOR ou d'autres droits spécifiques.)
/* 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 ****************************/

Annulation des définitions RACF

Lorsque vous configurez des serveurs, des noeuds et des cellules (et les supprimez), il serait souhaitable de pouvoir supprimer simplement les définitions RACF créées lors du processus.

Le fichier exec associé lit les commandes RACF générées dans le membre BBOWBRAK de l'ensemble de données partitionnées .DATA cible et crée les commandes RACF DELUSER, DELGROUP, RDELETE, ainsi que d'autres commandes RACF (dans l'ordre inverse).

Avant d'exécuter les commandes RACF produites, vérifiez la sortie et supprimez les commandes qui suppriment des utilisateurs, des groupes ou des profils utilisés par d'autres serveurs que vous voulez conserver.

Conseil : Ne supprimez pas des utilisateurs et des profils génériques utilisés par des tiers.
/* 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

/*************** Sous-routines : ********************/

DelUsr: /* DelUsr : Supprime l'utilisateur */
   parse var cmdObj user .
   cmdOut.out = "DELUSER " || user
   out = out + 1
return

DelGrp: /* DelGrp : Supprime le groupe */
   parse var cmdObj group .
   cmdOut.out = "DELGROUP " || group
   out = out + 1
return

ConUsr: /* ConUsr : Supprime l'utilisateur d'un groupe */
   cmdOut.out = "REMOVE " || cmdObj
   out = out + 1
return

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

PerUsr: /* PerUsr : Supprime le droit d'accès à partir d'un profil */
   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 : Supprime des certificats */
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

/* Processus terminé - extrait la pile LIFO et la génère *******************/
WriteCmds:
 DO i = out-1 to 1 by -1
   QUEUE cmdOut.i
   EXECIO 1 DISKW RACFUNDO
 END
return

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_racftools
Nom du fichier : rsec_racftools.html