権限収集

権限収集は、基本オペレーティング・システムの一部として提供される機能です。 大まかに言えば、権限収集は、 IBM® i システムに組み込まれているランタイム権限検査に関連したデータを収集します。 このデータはシステムが提供するリポジトリーに記録され、そのデータの表示と分析を行うインターフェースがあります。 このサポートは、機密保護管理者やアプリケーション・プロバイダーが、アプリケーションの正常な実行を可能にするために必要な最低限の権限レベルを使用して、アプリケーション内のオブジェクトを保護するのを支援することを意図しています。 権限収集機能を使用して過剰な権限を除去したり回避したりすることによって、アプリケーションが使用するオブジェクトのセキュリティー全体が向上します。

IBM i サーバーで使用可能なアプリケーションには、アプリケーション内のオブジェクトに対して過剰な権限が付与されていることがよくあります。 アプリケーションを分析すると、現在のところ、現行の法規制で機密データを十分に保護することが要求されているにもかかわらず、このように過度の権限が設定されていることが分かります。 従来、アプリケーション内のオブジェクトの共通権限 (*PUBLIC) は、アプリケーションの実行に必要な権限を超える権限値に設定されました。 例えば、 Db2® 表オブジェクト (*FILE) に対する共通権限は、アプリケーションがデータに対する *USE 権限を必要とする場合でも、*CHANGE 権限に設定できます。 システムのユーザーがアプリケーションの外部からこの特定のテーブル・オブジェクト内のデータを変更できるようになるため、このような過度の権限の設定はシステムの機密漏れを引き起こします。 アプリケーション・セキュリティー設定をさらに分析すると、権限設定が *CHANGE 権限を超えている箇所が分かります。 アプリケーションによっては、システムのユーザーがオブジェクトとデータを変更でき、さらにオブジェクト全体をシステムから削除することもできる権限設定 *ALL が使用されることもあります。 権限収集サポートは、アプリケーション・オブジェクトのセキュリティーをロックダウンするのに役立つツールを機密保護管理者とアプリケーション・プロバイダーに提供するように設計されています。

セキュリティー管理者が IBM iの権限検査サポートに関連するデータを収集して分析できるようにするためのインターフェースが提供されています。 これらのインターフェースは、システムの特定のユーザー、またはシステムの特定のオブジェクトの権限収集を開始する機能をサポートします。

アプリケーションのランタイム権限検査で収集されるデータは、量が多く、かつ非常に詳細なものです。 このため、権限収集がアプリケーションのランタイム・パフォーマンスに及ぼすパフォーマンスへの影響を考慮する必要があります。 権限収集は実動区画で実行できますが、最初は、アプリケーションの実行時パフォーマンス要件が実稼働環境とは異なるテスト区画で権限収集を実行することをお勧めします。 さらに、権限収集データに基づいてオブジェクトの権限設定に加えられた変更は、実稼働環境で権限変更が行われる前に完全にテストする必要があります。

権限検査サポートは、 IBM i オペレーティング・システム (OS) および Licensed Internal Code (LIC) に組み込まれています。 OS と LIC によって要求された各権限検査は、権限収集データ・リポジトリーに記録されます。 IBM i オブジェクト (*FILE、*PGM、*CMD、およびその他のオブジェクト・タイプ) にアクセスするには、オブジェクトおよびデータへのアクセスが許可される前に、権限検査が成功する必要があります。 権限検査に合格するために、システムが権限を検査するときにユーザー、ユーザーのグループ、共通権限、およびプログラム借用権限の各設定が検討されます。 各オブジェクト・タイプで、内部の実装が異なっていてもかまいません。したがって、オブジェクト・タイプごとに権限検査要件が異なる可能性があります。 これは権限収集に関する重要な詳細です。 単一の IBM i OS インターフェース (CL コマンド、API、サービス) では、オブジェクトに対して多数の権限検査を行うことができます。 DSPJOBD や CHGJOBD などの単純なコマンドを実行する CL プログラムを呼び出す簡単な例を考えてみましょう。 システムは、オブジェクトが入っているライブラリーを見つけて、そのライブラリー内でオブジェクトを見つけ、インターフェースの実行中に削除されないようにジョブ記述をロックし、オブジェクトを読み取る (または変更する) ためにオブジェクト自体にアクセスしてから、インターフェースと関連付けられたデータを表示または変更する必要があります。 これらのステップ (オブジェクトのロックを含む) はそれぞれ、ユーザーにインターフェースおよびターゲット・オブジェクトを使用する権限があることを確認するために、オブジェクトに対して権限検査を行うものです。 実際に、多くの場合、OS および LIC によって単一の CL コマンド・インターフェースまたは API インターフェース内のオブジェクトに対して権限検査が複数回行われます。 これは、OS がオブジェクトへのアクセスに使用する内部インターフェースに対して、インターフェース自体に組み込まれている権限検査だけでなく、OS および LIC に組み込まれている権限検査ロジックが実行されるためです。

関連するオブジェクトに対して固有の権限検査が行われるたびに項目が権限収集リポジトリーに記録されます。 このことを理解しておくことが重要です。オブジェクトに必要な権限は、そのオブジェクトについて記録されたすべての権限収集項目からの累積的な「必要権限」値から導き出されなければならないためです。 詳しくは、 権限収集データの分析を参照してください。

ユーザーの権限収集が活動状態の場合、このユーザーがアクセスするオブジェクトの権限情報が収集されます。 このユーザーがシステム上でジョブ (対話式ジョブ、バッチ・ジョブ、通信ジョブ、および他のタイプのジョブ) を実行し、アプリケーション内のオブジェクトにアクセスすると、権限収集データが収集され、そのユーザー用の権限収集リポジトリーに書き込まれます。

オブジェクトの権限収集が活動状態であり、特定のオブジェクトが *NONE 以外の権限収集値を持つ場合、これらのオブジェクトにユーザーがアクセスしたときにオブジェクトの権限情報が収集されます。 アプリケーション内のこれらのオブジェクトにアクセスするジョブ (対話式ジョブ、バッチ・ジョブ、通信ジョブ、および他のタイプのジョブ) がシステム上で実行されると、これらのオブジェクトの権限収集データが収集され、オブジェクト用の権限収集リポジトリーに書き込まれます。