2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM i の権限設計を“ムダなく、迷わず”進めるための実践ガイド

Posted at

はじめに

はじめまして。この記事では、IBM i の権限設計を“ムダなく、迷わず”進めるための実践ガイドをお届けします。

本記事では、まずこの基本概念をやさしく整理し、その後に権限検査ルートとそのまま使えるチェックリストを紹介します。
導入段階から日々の運用まで、権限運用が一目で分かる構成にしました。

基本概念

オブジェクトについて

IBM i では「すべてはオブジェクト」という思想で設計されています。

データベース表(PF/LF)もプログラム(PGM/SRVPGM)もコマンド(CMD)、ライブラリ(LIB)など、あらゆる実体が「オブジェクト」として扱われ、所有者(OWNER)と権限を持ちます。
権限は「どのオブジェクトに対して、どのユーザー(またはグループ)が、どの操作を許されるか」で決まるため、まず “どのオブジェクトを対象にするか” をはっきりさせるのが最初のチェック項目と言えるでしょう。

グループ権限について

同じ業務を行うユーザーをグループ単位でまとめ、権限を一括で付与・管理できる仕組みです。
個人ごとに付け外しせず、グループへ権限を与えるだけでメンバー全員に反映できるため、運用がシンプルになります。
ポイント
・ユーザーは 1つの 一次グループ(GRPPRF) と、複数の 補助グループ(SUPGRPPRF) に所属可能。
・権限は「個人の専用権限」より後に評価されるが、グループ権限は“累積”される(複数グループの許可が合算される)

例:
「販売閲覧」グループ G_READ に *USE、「販売更新」グループ G_UPD に *CHANGE を付与しておく。
ユーザー A を G_READ、ユーザー B を G_READ + G_UPD に所属させる
→ A は参照のみ、B は参照+更新が可能(グループ権限が 累積 される)

注意ポイント:
対象ユーザーに専用権限で *EXCLUDE が付いている場合、それが最優先の拒否になります。

権限リストについて

権限リストは、複数のオブジェクト(PF/LF、PGM、CMD など)に対して、同じ権限ポリシーを一括適用する仕組みです。
ユーザー、グループに対して権限を定義し、対象オブジェクトに紐付けます。
個別付与と併用は複雑化してしまうため、原則、権限リストに集約し、オブジェクト作成時は権限リストを明示し、既存の専用権限は撤去をお勧めします。
オブジェクトごとに個別設定を繰り返すのではなく、業務(アプリ)単位でリストに定義し、対象オブジェクトを紐付けて管理すると運用が楽になります。
※オブジェクトが権限リストで保護されている場合、 *PUBLICを *AUTLに設定すると権限リスト内の *PUBLICが適用されます

借用権限について

借用権限は、プログラムをUSRPRF(OWNER)で作成・設定しておくと、実行中だけ呼び出しユーザーに所有者のオブジェクト権限を一時的に上乗せする仕組みです。
呼び出しユーザーはそのプログラム自体に少なくともUSE権限が必要で、採用された権限はコール・スタック上で有効になり、処理が戻ると解除されます。

権限検査ルート

権限チェックは以下の順で行われます。
本記事ではこの順序によって黒画面で動作検証を行っていきます。

  1. オブジェクト権限検査の高速パス
    対象オブジェクト特有の早期判定で即許可/拒否が決まる場合。

  2. オブジェクトに対するユーザーの検査(専用権限)
    ユーザーに直接付与された権限を評価。

  3. オブジェクトに対するグループの検査(一次+補助)
    所属グループの権限を評価。

  4. 共通権限の検査(*PUBLIC/権限リスト内の*PUBLIC 等)
    *PUBLICと、*PUBLICが *AUTL場合権限リスト内の *PUBLICを評価。

  5. 借用権限
    プログラム実行時に所有者の権限を採用。

【1】オブジェクト権限検査の高速パス

オブジェクト権限の高速パス(フローチャート2)
出典:権限検査フローチャート - IBM
https://www.ibm.com/docs/ja/i/7.4.0?topic=authority-checking-flowcharts (最終アクセス:2025-10-14)

流れはこれだけ:

  1. そのオブジェクトに専用権限が付いているか?
    → 付いていれば 「権限不十分」で終了(呼び出し側へ戻る)。無ければ次。

  2. 権限リストで保護されているか?
    → 保護されていれば 「権限不十分」。無ければ次。

  3. 所有者の権限は要求を満たすか?
    → 満たさなければ 「権限不十分」。満たせば次。

  4. 1次グループが設定されているか?
    → あれば 5 へ、無ければ 6 へ。

  5. 1次グループの権限は十分?
    → 十分なら 6 へ。不十分なら 「権限不十分」。

  6. 共通権限(*PUBLIC)は十分?
    → 十分なら 認可。不十分なら 「権限不十分」。

要するに:
専用権限 → 権限リスト → 所有者 → 1次グループ → *PUBLIC の順で確認を行い、どこかで満たせば許可、満たせなければ呼び出し側の詳細フローに戻るというものになります。
ざっくり言うと 「高速パス」は、個別に強い根拠がある順にサッと判定し、足りなければ元の呼び出しフローチャートへ戻す近道ということですね。
本記事では、当該箇所の画面上での権限チェック手順の詳細は割愛します。

【2】オブジェクトに対するユーザーの検査(専用権限)

オブジェクトに対するユーザーの検査(専用権限)
出典:権限検査フローチャート - IBM
https://www.ibm.com/docs/ja/i/7.4.0?topic=authority-checking-flowcharts (最終アクセス:2025-10-14)

オブジェクトに対するユーザーの検査は上記ルートで行われます。
実際に黒画面で動作の確認を行ってみましょう。
検証用として下記を用意しました。
PF(権限確認用商品マスタ)→SECAUTPDT
権限確認LIB→SECAUTTST
確認用ユーザー①→AUTHCHK1
確認用ユーザー②→AUTHCHK2
確認用ユーザー③→AUTHCHK3

1.所有者権限の調査
確認用ユーザー(AUTHCHK1)が所有者のPF(SECAUTPDT)を作成しました。
この状態で確認用ユーザー①と確認用ユーザー②でSelect文を実行してみます。
<結果>
所有者である確認用ユーザー①では実行できましたが、所有者ではない確認用ユーザー②では実行できませんでした。
確認用ユーザー①
image-1.png

確認用ユーザー②
image-2.png

2.専用権限の調査
PF(SECAUTPDT)に確認用ユーザー③の専用権限を付与します。
GRTOBJAUT OBJ(SECAUTTST/SECAUTPDT) OBJTYPE(*FILE) USER(AUTHCHK3)
<結果>
専用権限が付与されているため実行することができました。
確認用ユーザー③
image-3.png

3.権限リストの調査
権限リスト(PROD_AUTL)を作成し、確認用ユーザー②を追加します。
PF(SECAUTPDT)を権限リストによって保護します。
<結果>
所有者権限、専用権限が付与されていないが、権限リストによって権限が付与されているので実行することができました。
確認用ユーザー③
image-3.png


【3】オブジェクトに対するグループの検査(一次+補助)

オブジェクトに対するグループの検査(一次+補助)
出典:権限検査フローチャート - IBM
https://www.ibm.com/docs/ja/i/7.4.0?topic=authority-checking-flowcharts (最終アクセス:2025-10-14)

検証用としてグループプロファイル(GRPAUTHCHK)を作成しました。
※グループプロファイルはユーザーを格納する入れ物のようなものなので、パスワードや*ALLOBJなどは付与しないようにしましょう。


1.1次グループ権限を検査
・グループプロファイル(GRPAUTHCHK)に確認用ユーザー②を紐づけます。
CHGUSRPRF USRPRF(AUTHCHK2) GRPPRF(GRPAUTHCHK)

・オブジェクトの一次グループをGRPAUTHCHKに変更し、*USE権限を付与します。
CHGOBJPGP OBJ(SECAUTTST/SECAUTPDT) OBJTYPE(*FILE) +
NEWPGP(GRPAUTHCHK) PGPRAUT(*USE) RVKOLDAUT(*YES)

<結果>
グループ権限の*USE権限により、select文を実行できることが確認できました。
確認用ユーザー②
image-3.png

グループ権限が*USE権限のためinsert文は実行できないこと確認できました。
確認用ユーザー②
image-4.png

2.1権限リストの調査
権限リスト上でのユーザー②へCHANGE権限を付与します。
<結果>
グループ権限は
USEであるが、権限リストによって*CHANGE権限が付与されているので実行することができました。
確認用ユーザー②
image-5.png

2.2 対象ユーザーに専用権限で *EXCLUDEを付与した場合
確認用ユーザー②へ専用権限で *EXCLUDEを付与します。
<結果>
対象ユーザーに専用権限で *EXCLUDE が付いている場合、それが最優先の拒否になるため、select文を実行できませんでした。
確認用ユーザー②
image-2.png

【4】共通権限の検査(*PUBLIC/権限リスト内の *PUBLIC)

PUBLICをAUTLに変更します。
オブジェクトに紐づけた権限リストのPUBLICを
CHANGEへ変更します。
<結果>
権限リストのPUBLICにCHANGEが付与されているので、確認用ユーザー③でinsert文を実行することができました。
確認用ユーザー②
image-5.png

【5】借用権限

借用権限確認用のCLを作成し、所有者を確認用ユーザー①に設定します。
CL(AUTCHK)に確認用ユーザー③のUSE権限を付与し、CALLします。
権限リストの
PUBLICは*EXCLUDEに変更しておきます。

             PGM
             DSPPFM FILE(SECAUTTST/SECAUTPDT)
             ENDPGM

<結果>
CLの所有者である確認用ユーザー①の権限が借用され、PF(SECAUTPDT)を参照することができました。
確認用ユーザー③
image-6.png

簡単チェックシート

区分 項目 チェック内容 推奨値 / 例 実施 備考(証跡/コマンド)
0.準備 体制 権限設計の責任者・承認者・運用者を決定したか 役割: 設計/承認/運用/監査 [ ]
命名規約 ライブラリ/グループ/AUTL/ユーザーの命名規約 [ ]
1.方針 権限の評価順理解 「専用→グループ→権限リスト→*PUBLIC→借用」の順を共有済みか 社内手順に明記 [ ]
デフォルトPUBLIC 新規オブジェクトの *PUBLIC を原則 *EXCLUDE にするか *PUBLIC=*EXCLUDE(AUTLで付与) [ ] CRTxxx OBJ(*PUBLIC(*EXCLUDE))
2.ユーザー/グループ ユーザー分類 役割別の定義 ロールを決定 [ ] ドキュメントID:…
1次/補助グループ GRPPRF(一次)とSUPGRPPRF(補助)で権限を累積運用 個人付与を避ける [ ] CHGUSRPRF GRPPRF()/SUPGRPPRF()
特権プロファイル *ALLOBJ 等の特権は最小化/0人原則 監査同席で付与 [ ] DSPUSRPRF / PRTSECAUT
3.権限リスト(AUTL) AUTL方針 アプリ/業務単位でAUTLを作成し集約するか AUTL_APP_BASE [ ] CRTAUTL / EDTAUTL
AUTL-メンバー ユーザーではなくグループを登録しているか 登録対象は原則GRP [ ] ADDAUTLE USER(GRP_APP_READ)
AUTL-PUBLIC AUTL内 *PUBLIC の既定レベルは定義済みか 例:*USE or *EXCLUDE [ ] EDTAUTL
4.LIB/OBJ 権限 ライブラリ保護 対象LIBの *PUBLIC と AUT ルールを決定 例:LIB *PUBLIC=*EXCLUDE [ ] DSPOBJAUT OBJ(xxx) OBJTYPE(*LIB)
OBJの一次グループ オブジェクトに一次グループ(OBJPGP)を設定 PGPRAUTは最小 [ ] CHGOBJPGP PGPRAUT(*USE)
個別付与の排除 私的(個別)権限を撤去しAUTLへ集約 RVKOLDAUT(*YES) [ ] RVKOBJAUT / EDTOBJAUT
5.操作別基準 参照 参照に必要な最低権限を定義 *OBJOPR + *READ [ ] GRTOBJAUT OBJTYPE(*FILE)
追加/更新 追加/更新の基準レベルを定義 *CHANGE [ ] 同上
管理 管理者の基準レベルを定義 *ALL(最小人数) [ ] 同上
6.借用権限 USRPRF(*OWNER) 採用が必要なPGMを特定・最小化 対象一覧化 [ ] CHGPGM/CHGSRVPGM USRPRF(*OWNER)
呼出権限 呼び出しユーザーにPGMの*USEが付与されているか 必須 [ ] GRTOBJAUT OBJTYPE(*PGM) USER(GRP)
7.変更管理 申請-承認 付与/剥奪フローが運用化されているか チケット運用 [ ] 申請書式ID…
期限付与 一時的な強権(*ALLOBJ など)は期限設定か 期限+自動剥奪 [ ] 自動レビューJOB
8.監査/記録 監査証跡 主要LIB/OBJの権限スナップショット取得 月次出力 [ ] DSPOBJAUT OUTPUT(*OUTFILE)
逸脱検知 個別付与・*PUBLIC 逸脱の棚卸し 四半期レビュー [ ] SQLレポート/ACS
9.テスト 黒画面検証 評価順(専用→GRP→権限リスト→PUBLIC→借用)で動作確認 SELECT/INSERT/CALL [ ] 期待/実績ログ
高速パス 専用権限・AUTL・所有者・OBJPGP・PUBLICで早期判定 負荷試験前に実施 [ ] 手順書ID…
10.移行 既存取込 既存OBJの個別権限→AUTL集約の移行計画 スクリプト化 [ ] RVK/GRTOBJAUT 一括
既定設定 新規作成時の既定(*PUBLIC=*EXCLUDE / AUTL付与) 標準化 [ ] CRTxxx 標準パラメータ
11.教育 ハンドブック 操作別の「できる/できない」対照表を配布 ロール別1枚 [ ] イントラURL
12.保守 定期見直し 人事異動/委託更新に合わせた棚卸し 半期/期末 [ ] 更新ログ

当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?