QSECURITY と特殊権限について理解すれば機密保護の半分は
理解できたものとしてよいだろう。
次に各オブジェクト毎の機密保護について紹介する。
オブジェクト別の機密保護は
EDTOBJAUT (オブジェクト権限編集) というコマンドで編集する。
IBM i ではコマンドの先頭はご存知のように動詞であるが、
WRK ( Work ), CRT ( Create ), STR ( Start ), ...が多い中で
かつての S/38 で多かったEDT ( Edit )が使われている。
EDTOBJAUT はオブジェクトとタイプを次のように指定する。
オブジェクト権限編集 (EDTOBJAUT) 選択項目を入力して,実行キーを押してください。 オブジェクト . . . . . . . . . > SHOHIN 名前 ライブラリー . . . . . . . . . . . > QTRFIL 名前 , *LIBL, *CURLIB オブジェクト・タイプ . . . . . > *FILE *ALRTBL, *AUTL, *BNDDIR... ASP 装置 . . . . . . . . . . . * 名前 , *, *SYSBAS
オブジェクト権限は次のようにして編集することができる。
オブジェクト権限編集 オブジェクト . . . . : SHOHIN 所有者 . . . . . . . : QTR ライブラリー . . . : QTRFIL 1次グループ . . . . : *NONE オブジェクト・タイプ : *FILE ASP 装置 . . . . . : *SYSBAS 現行権限に対する変更を入力するには,実行キーを押してください。 権限リストによって保護されたオブジェクト . . . . . . . . . . *NONE オブジェクト ユーザー グループ 権限 *PUBLIC *ALL QTR *ALL F3= 終了 F5= 最新表示 F6= 新 ユーザー の追加 F10= 参照 オブジェクト の認 F11= 詳細 オブジェクト 権限の表示 F12= 取り消し F17= 最上部 F18= 最下
権限を指定する部分はユーザー・プロフィールに対する権限の部分である。
*PUBLIC
とは一般ユーザーを指す。
上記の場合はユーザーQTR以外のユーザーが*PUBLIC
で表されている。
権限として指定するのは
CRTBNDRPG や CRTPGM などで 権限(AUT)バラメータの初期値は「*LIBCRTAUT
」である。
これはプログラムが保管されるライブラリーの権限に依存することを示している。
しかしプログラムだけは一般的に使用が制限されることのないように
「*ALL
」を指定して作成することが望ましい。
*OWNER
についてこれは大事なテクニックのひとつなので覚えて欲しい。
プログラムを CRTPGM などで作成するときに
ユーザー・プロフィール(USRPRF)というパラメータがある。
これは通常は初期値 : *USER
として作成される。
つまりプログラムの実行中のユーザーの権限として動作することを意味している。
例えばプログラム: STRKEIR がユーザー: KEIRI の下で
動作するものとするとプログラム : STRKEIR は、
ユーザー: KEIRI と同じ権限として動作する。
ところでプログラム STRKEIR は内部で CHGJOB コマンドを実行しているのであれば、
この実行には*JOBCTL
権限が必要である。
ところがユーザー: KEIRI には*JOBCTL
権限はない。
かと言って KEIRI に*JOBCTL
権限を与えるわけにはいかない。
このような場合にユーザー・プロフィール (USRPRF) を
初期値の*USER
ではなく*OWNER
として作成しておくと、
プログラム: STRKEIR の権限は大幅に拡張される。
プログラム: STRKEIR を作成した復元したりしたときのプログラム所有者を意味するので、
所有者は QSECOFR に近いユーザーであるはずだ。
従ってプログラム所有者が*JOBCTL
権限を持ってさえいれば、
*JOBCTL
の権限のないユーザー環境であっても、
STRKEIR は CHGJOB コマンドを実行することができるというわけである。
しかもユーザー・プロフィール :*OWNER
は最初に一度指定して作成すれば、
以降の再コンパイルでは*OWNER
は維持される。
非常に有益なテクニックである。
是非覚えて欲しい。