このトピックでは、NetWeaver ABAP(ECC)の権限制御のコンセプトや概要を取り上げて説明します。
前書き
権限とは
権限とは、システムのユーザに、ある範囲のことを正当に行うことができるものとして与えられている能力、またその能力が及ぶ範囲のことです。
ユーザに付与される権限には、以下の情報が定められます。
- 対象
権限でアクセス可能な対象(リソースや処理など)を定義します。 - 範囲
対象に対してアクセス可能な範囲を定義します。例えば、対象がファイルなら、読み取りができるかどうか、書き込めるかどうか、アクセスされる範囲を制御できます。 - 期間
権限の有効期間を指定します。
権限制御とは
権限制御とは、システムが、各ユーザに対して、事前に付与された権限に従って、処理の実行やアクセスの範囲を制御することです。
権限制御は、通常、OSやデータベース、アプリケーションなど各分野でそれぞれ実施されます。
- OS
アプリケーション、サービス、ファイルといったリソースのアクセス権限をユーザ・グループ毎に制御します。 - データベース
テーブル、ビューといったデータベースオブジェクト単位で、ユーザ・グループ毎にデータの照会、更新、作成、削除の権限を制御します。 - アプリケーション
アプリケーション側で必要に応じてビジネスレベルの権限制御を行います。
目的と機能
データベース側では、テーブルレベルのアクセス制御が仕組みに組み込まれているのは普通ですが、テーブルをさらに行レベルのアクセス制御をかけることは通常サポートされません。
例えば、各支店の売上データが格納されたテーブルがあるとします。各支店の従業員が所属支店のデータしか参照できないというセキュリティ要件はよくあるものですが、データベース側でカーバできないため、アプリケーション側で何らかの対応をしなければなりません。
NetWeaver ABAPは、アプリケーションレベルで独自の権限仕組みを導入ことにより、上記のビジネス要件に統合化したソリューションを提供します。
NetWeaver ABAPの権限制御を利用することにより、以下の機能を実現することができます。
- ユーザ(グループ)毎に各機能の実行可否を制御
例えば、経理部の人を購買システムの機能を実行できないように権限制御をかけることができます。 - ユーザ(グループ)毎にアクセスデータ範囲を制御
例として取り上げられた支店毎の制御をかけることができます。
特徴
NetWeaver ABAPの権限制御は以下の特徴があります。
- できることの積み上げ
できることのみを定義でき、できないことの定義はできません。これはシンプルという利点もありますが、膨大になりがち、管理が大変になるというデメリットがあります。 - 言語レベルでサポート
権限チェックするためのコマンド(authority-check) がABAP言語に組み込まれています。
構成要素
Netweaver ABAPの権限コンセプトの構成要素は開発局面と運用局面に分けて整理することができます。
- 開発局面
プログラムを実装する際に、機能のセキュリティ要件を元に、実行時にどうな権限チェックをかけないといけないかを設計して、そのロジックをプログラムに組み込んでおく必要があります。
このような権限チェックの内容と方法を定義するのは権限オブジェクトという構成要素になります。
権限オブジェクトはコア要素であり、システムにより一元管理されます。 - 運用局面
システムを構築する際に、 運用要件を元に、システムの利用者がどんな人いるか、どういうふうに権限をわけないといけないかを設計しておく必要があります。
このような権限割当の単位を定義するのは権限プロファイルという構成要素になります。
権限プロファイルに関連機能の権限オブジェクトの権限値が含められますので、機能にどんな権限オブジェクトがあるかを把握しておかなければなりません。
ECC標準機能ではすでに数千の権限オブジェクトが組み込まれていますので、権限オブジェクトの把握は相当大変な作業になると想像できます。
権限オブジェクト
権限オブジェクトとは、権限制御でチェックしなければならない項目及びチェック方法を示す要素です。 権限オブジェクトの上位要素としては権限クラス、下位要素としては権限項目があります。
- 権限クラス
権限クラスは、権限オブジェクトの論理的な組合せで、たとえばアプリケーション(財務会計、人事管理など) に対応します。 - 権限項目
権限項目は、権限オブジェクトに構成する項目です。ABAPディクショナリで保存されたデータエレメントトに接続されています。
権限オブジェクトは、AND で結合された項目を 10 個までグループ゚化します。
権限オブジェクトが事前にプログラムロジックに組み込まれており、実行時に 実行可能なアクション(データの照会や登録、変更など)及び処理可能なデータの範囲を制御します。
権限
権限とは、権限オブジェクトの定義、すなわち、権限オブジェクトの各権限項目の許容値を組合せたものです。 権限により、権限オブジェクト項目値のセットにもとづいて、ECCシステムで特定のアクティビティを実行することができます。 権限を使用することで、権限オブジェクトの項目に対して任意の数の指定値または値範囲を項目に対して指定することができます。また、すべての値を許可したり、空の項目を許容値として許可したりすることもできます。 権限を変更すると、その権限を含む権限プロファイルを持つすべてのユーザが影響を受けます。
権限プロファイル
権限プロファイルとは、権限の集合で、ユーザにまとめて権限を割り当てる単位です。権限プロファイルは下記3種類があります。
- 生成済権限プロファイル
生成済権限プロファイルは、ロールからロールの権限データで自動生成される権限プロファイルです。 - マニュアル権限プロファイル
マニュアル権限プロファイルとは、 ロールを使わずに明示的に作成される権限プロファイルです - 複合プロファイル
複合プロファイルには、任意の数の権限プロファイルが含まれます。
各要素の関係
ロールの利用
ロールは厳密的に権限コンセプトの構成要素ではないですが、内部的に生成済権限プロファイルを自動生成するため、権限プロファイルとして利用することができます。 さらに、ロールはユーザメニュ構成を定義する単位にもなりますので、実際のシステム運用ではロールを利用してユーザの権限を管理するはほとんどです。
ロールは、ユーザをグルーピングする手段として、部署や役職に基づいて設計することが多い。