権限管理は、Basisの中でも監査の対象になりやすい領域です。誰が何をできるかを適切に制御することは、内部統制の基本です。
ユーザーマスタ
ユーザーはSU01で作成します。ユーザーマスタは複数のタブに分かれており、それぞれ異なる情報を保持します。
| タブ | 内容 |
|---|---|
| アドレス | 氏名、部署、メールアドレス |
| ログオンデータ | ユーザータイプ、パスワード、有効期限 |
| 既定値 | ログオン言語、日付形式、既定プリンタ |
| パラメータ | 入力項目の初期値(パラメータID) |
| ロール | 割り当てられたロール |
| プロファイル | 割り当てられたプロファイル |
| タイプ | 用途 | ログオン可否 |
|---|---|---|
| ダイアログ | 通常の人間のユーザー | 可能 |
| システム | バックグラウンド処理、RFC接続用 | GUI不可 |
| 通信 | システム間のRFC通信用 | GUI不可 |
| サービス | 匿名アクセス(Webなど) | 可能。複数同時ログオン可 |
| 参照 | 権限の共通部分を集約する専用 | ログオン不可 |
ロールとプロファイル
権限は、ロール(PFCG)で設計し、ユーザーに割り当てます。ロールを生成すると、内部的に権限プロファイルが作られ、それが実際のチェックに使われます。
| 種類 | 内容 |
|---|---|
| 単一ロール | 個々の権限を定義する基本単位 |
| 複合ロール | 複数の単一ロールをまとめたもの。職務単位で束ねる |
| 派生ロール | 親ロールから権限を継承し、組織レベルだけを変える |
派生ロールは、同じ業務を異なる組織単位で行う場合に有効です。「購買担当者」というロールを親とし、工場ごとに派生ロールを作れば、権限の内容は共通のまま、アクセスできるプラントだけを変えられます。親を修正すれば派生ロールにも反映されるため、保守が容易になります。
権限オブジェクトとフィールド
SAPの権限チェックは、権限オブジェクトという単位で行われます。1つの権限オブジェクトは、最大10個のフィールドを持ちます。
ACTVT(活動): 01=登録, 02=変更, 03=照会
WERKS(プラント): 1000, 2000
→ このユーザーはプラント1000と2000の
購買発注を登録・変更・照会できるプログラム側では、AUTHORITY-CHECK文でこの権限を検証します。すべてのフィールドの条件を満たしていなければ、権限エラーとなります。
| オブジェクト | 内容 |
|---|---|
| S_TCODE | トランザクションコードの実行権限 |
| S_PROGRAM | プログラムの実行権限 |
| S_TABU_DIS | テーブル表示・保守の権限 |
| S_DEVELOP | 開発オブジェクトへのアクセス |
| S_USER_GRP | ユーザー管理の権限 |
| S_BTCH_JOB | バックグラウンドジョブの操作 |
権限エラーの調査
「権限がありません」というエラーが出たとき、どの権限が不足しているかを特定する必要があります。
| Tコード | 用途 |
|---|---|
| SU53 | 直前に失敗した権限チェックを表示。最も手軽 |
| ST01 | 権限トレース。詳細なチェック履歴を記録 |
| STAUTHTRACE | 長時間の権限トレース(複数ユーザー対応) |
| SUIM | ユーザー・ロールの各種分析レポート |
職務分離(SoD)
職務分離は、1人の担当者が不正を完結できないよう、相反する権限を分離する考え方です。監査で必ず確認される項目です。
| 組み合わせ | リスク |
|---|---|
| 仕入先マスタ登録 × 支払実行 | 架空の仕入先を作って支払える |
| 購買発注登録 × 入庫転記 | 実在しない納品を計上できる |
| クレジットメモ登録 × 請求ブロック解除 | 不正な返金を実行できる |
| ユーザー作成 × ロール付与 | 自分に無制限の権限を与えられる |
| 開発 × 本番移送 | テストされていないコードを本番に入れられる |