実行環境

113. 機密保護の重要性(5)

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で表されている。

権限として指定するのは

*EXCLUDE
このユーザーに対してすべての権限をなくします。
つまりこのユーザーはこのオブジェクトを見ることも使用したり変更する権限もありません。
*USE
ユーザーはオブジェクトを変更することはできませんが
使用する権限はあります。
ファイルの場合は更新はできます。
*CHANGE
ユーザーはオブジェクトを使用したり変更することができます。
*ALL
ユーザーはこのオブジェクトに対するすべての権限があります。

プログラムの権限について

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は維持される。

非常に有益なテクニックである。
是非覚えて欲しい。