![[z/OS]](../images/ngzos.gif)
リソース・アクセス管理機能ツール
WebSphere® Application Server for z/OS® で使用されるセキュリティー定義の管理に役立つ、次のようなツールや技法について説明します。
- クラス内のプロファイルをすべてリスト表示する RACF® ISPF パネル
- UID を UID (ユーザー ID) の順にリスト表示する ISHELL
- GID を GID (グループ ID) の順にリスト表示する EXEC
- RACF 定義をバックアウトする EXEC
RACF ISPF パネル
特定クラス内のプロファイルをすべてリストするには、RACF ISPF パネルを使用します。
以下の手順を実行するには、RACF SPECIAL または AUDITOR 権限が必要です。
- 「General Resource Profiles」(オプション 2) を選択します。
- 検索を行います (オプション S または 9)。
- クラス名を入力します。
- さらに 2 回、Enter キーを押します。
------------------------------------------------ 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.* -----------------------------------
クラス内のすべてのプロファイルのリストは、次のように RACF SEARCH コマンドを使用しても取得できます。 SEARCH CLASS(class_name)
すべてのユーザー ID を UID 順にリスト表示する
RACF の OMVS セグメントを使用して新規ユーザー ID を定義する場合は、固有の UID を割り当てるようにしてください。
WebSphere では、RACF AUTOUID 機能はまだサポートされていません。
割り当てられていない (または重複した) UID を見つけるには、ISPF ISHELL (オプション 3.4) を
使用して、すべてのユーザー ID の UID 順のリストを取得します。
スーパーユーザー (UID=0) になり、次のステップに従ってください。
- 「セットアップ」プルダウン・メニューから「User list」オプションを選択します。
- ユーザーのリストを表示します。
- ユーザー・リストを表示しているときに、「ファイル」プルダウン・メニューを選択します。
- 「Sort UID」オプションを選択します。 (UID が -1 であるのは、 そのユーザーが OMVS セグメントを持っていないことを表します。)
関連するパネルの例を以下に示します。
---------------------------------------------------------------------------------------- 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 -----------------------------------------------
すべてのグループ ID を GID 順にリスト表示する
ここでも、新規グループには固有の GID を割り当てなければなりません。
グループを GID 順にリスト表示する、システム提供のツールはありません (UID の場合はあります)。
したがって、ご自分で重複を識別して、固有の新規 GID を割り当ててください。
グループを GID 順にリストするには、単独パラメーターとして GID を指定します。
デフォルトでは、グループをグループ ID 順にリストするようになっています。
(RACF SPECIAL、AUDITOR、またはその他の特定の権限が必要です。)
/* 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 定義のバックアウト
サーバー、ノード、およびセルをセットアップする (そしてその後削除する) 場合、その過程で作成される RACF 定義を簡単に削除できれば便利です。
付加される EXEC は、ターゲットの .DATA 区分データ・セットの BBOWBRAK メンバーから生成済みの RACF コマンドを読み取り、RACF DELUSER、DELGROUP、RDELETE、およびその他の RACF コマンドを (逆の順序で) 作成します。
その結果作成される RACF コマンドを実行する前に、出力を検討して、他のサーバーが使用するユーザー、グループ、またはプロファイルのうち保存が必要なものを削除するコマンドは、削除する必要があります。
ヒント: 他のメンバーが使用するユーザーや総称プロファイルを削除しないように、十分注意してください。
/* 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