2010.07.21
Dan Riehl著

QAUDJRNを使用した科学捜査分析、第3部:機密ファイルへのアクセス検知

ファイル・アクセスの監査と報告

QAUDJRN ジャーナルを使用した科学捜査分析を扱うこのシリーズ第 3 弾では、機密ファイルへのアクセス検知に焦点を当てることにします。我々のように厳しく規制された環境では、個人、秘密、および機密データを盗み見されないようにすることが重要です。また、ファイルを無許可の変更から保護することも必要です。ここでお話する情報では、許可されていないアクセスをブロックすることはできませんが、こうしたアクセスが発生したときに、事後に、次のような格言を教えてくれます。それは「防ぐことができないなら、検知できなければならない」ということです。

毎日の状況下で、ファイル・アクセスを監査し、報告する方法についてお話します。また、さまざまな監査オプションと、報告という目的を達成するために必要な正しいレベルの監査を構成する方法についてお話します。例として、IT スタッフ・メンバーが機密 CREDITCARD ファイルに、照会目的あるいは更新目的でアクセスするあらゆるイベントを監査し、報告する方法を調べます。また、ODBC を使用してアクセスされたあらゆるファイル、またアクセスが、照会目的か、更新目的かを監査し、報告する方法も調べます。ここで示すオブジェクト監査方法では、データベース・レコードの更新を検出または報告することはできません。というよりも、ファイル・アクセスのみを扱い、アクセスがただの照会か更新目的だったのかを扱っています。この科学捜査分析シリーズの次号では、データベース更新イベントの検知と報告についてお話します。

監査再来

このシリーズの第 1 号では、システム・セキュリティー監査ジャーナル QAUDJRN からの監査および報告の基本について説明していますので、その記事を読み直すことをお勧めします (以下の「もっと詳しく」を参照)。セキュリティー関連情報の収集を開始するため、まず、必要な監査機能を実行するようシステムを構成する必要があります。システム値 QAUDCTL と QAUDLVL は、希望のレベルの監査に設定する必要があり、QAUDJRN ジャーナルをシステムで作成しておく必要があります。

オブジェクト監査

ファイル・アクセスおよび他のオブジェクトへのアクセスを監査し、報告するには、システム値 QAUDLVL に値 *OBJAUD がなければなりません。いったんシステム値を設定したら、どのオブジェクトを監査するのか、また必要な監査レベルをシステムに指示する必要があります。オブジェクト監査を開始するには、Change Object Auditing (CHGOBJAUD) コマンドを使用します。コマンド・フォーマットは次のとおりです。

CHGOBJAUD OBJ(Library-name/Object-name) OBJTYPE(Object-Type) OBJAUD(*ALL, *CHANGE, *USRPRF, *NONE)

CREDITCARD という名前のファイルに対するすべてのアクセスの監査を開始する場合、コマンドは次のようになります。

CHGOBJAUD OBJ(PRODLIB/CREDITCARD) OBJTYPE(*FILE) OBJAUD(*ALL)

いったんこのコマンドを実行すると、ファイルがアクセスされるたびに QAUDJRN ジャーナルに項目が 1 つ書き込まれます。読み取り専用操作のためファイルがアクセスされると、ジャーナル項目タイプ ZR (読み取り用にオープンされたオブジェクト) が書き込まれます。更新操作をするためにファイルがアクセスされると、ジャーナル項目タイプ ZC (変更用にオープンされたオブジェクト) が書き込まれます。ZC および ZR ジャーナル項目タイプのフォーマットは実質的に同じです。ZC フォーマット・フィールドは ZC で始まり、ZR フォーマットも同じフィールドですが、文字 ZR で始まります。図 1 は (IBM 提供ファイル QASYZRJ5 で定義されている) ZR ジャーナル項目フォーマット全体を示しています。

各ジャーナル項目は、ジョブ名、ジョブ・ユーザー、現行ユーザー、ジョブ番号、ファイル・アクセスに使用したプログラム、日付、時間などのアクセス情報を特定します。オブジェクト名、ライブラリー、オブジェクト・タイプも、オブジェクト・アクセス・タイプ同様含まれています。アクセス・タイプは、行われた絶対アクセス (オープン、保存、名前変更、コピーなど) を示す数値コードで識別されます。図 2 はアクセス・タイプ・コードおよびその意味を示します。

アクセス・タイプ・コードには、ファイル・アクセスを考えるときに使用されない多くの操作が含まれていますが、オブジェクト監査はあらゆるオブジェクト・タイプに対してアクティブにできるため、これらのコードのほとんどはファイル・オブジェクト (オブジェクト・タイプがプログラムまたはサービス・プログラムの場合に使用される call および debug など) には無関係です。

ここで、オブジェクト監査があらゆるオブジェクト・タイプに有効にできる点を改めて述べるのがふさわしいでしょう。プログラム・オブジェクトがいつ使用されるまたは変更されるか、あるいはライブラリー・オブジェクトがいつ変更されるのか知りたい場合は、CHGOBJAUD コマンドを使用してオブジェクト監査を開始する必要があります。

CHGOBJAUD OBJAUD オプション

CHGOBJAUD コマンドにより、オブジェクトへのアクセスを QAUDJRN ジャーナルに記録するよう指定できます。お話したように、監査するオブジェクトの名前とオブジェクト・タイプを指定します。次に、OBJAUD 値を選択します。

CHGOBJAUD . . . OBJAUD(*ALL, *CHANGE, *USRPRF, *NONE)

値 *NONE は、オブジェクトへのアクセスを監査しないよう指定します。特に指定しない限り、これがシステムのすべてのオブジェクトの状態になります。オブジェクトを監査しているとき、*NONE を指定して、オブジェクトの監査機能をオフにできます。

値 *CHANGE は、更新操作目的のオブジェクトへのすべてのアクセスを監査するよう指定します。入力目的で RPG をオープンする操作などのファイル・アクセスは監査されません。しかし、更新するためにファイルがオープンされると、そのアクセスは監査されます。更新目的でオープンする操作であるためです。実際に変更が行われた、またはレコードが更新されたことを示してはいません。更新モードでファイルがオープンされたことのみ示しています。

OBJAUD(*CHANGE) に設定されている他のオブジェクト・タイプについては、プログラムが実行されると、そのアクセスは監査されません。プログラムの実行は更新操作でないためです。しかし、CHGPGM コマンドを使用してプログラムが変更されると、更新操作であるため、そのアクセスは監査されます。

値 *ALL は、オブジェクトへのすべてのアクセスを監査するよう指定します。CHGPF および ADDPFM などのコマンドを使用してファイルに変更が加えられるため、入力または更新目的のファイルのオープンは監査されます。

OBJAUD 値 *USRPRF は、オブジェクトにアクセスしているユーザーのユーザー監査値が *ALL または *CHANGE の場合のみオブジェクト・アクセスを監査するよう指定します。このためには、Change User Audit (CHGUSRAUD) コマンドを使用して、ユーザーの OBJAUD 値を *ALL または *CHANGE に設定します。*USRPRF オプションはその発想が極めて良くないと考えます。使用は避けたほうがよいでしょう。

IBM iSeries セキュリティー・リファレンス・マニュアル (iSeries Security Reference, SC41-5302-09) の付録 E「Object Operations and Auditing」には、すべての異なるオブジェクト・タイプについて監査された操作を記載し、どの操作が変更 (ZC) 操作で、どの操作が読み取り専用 (ZR) 操作かを一覧に示しています。

ファイルのいくつかの操作は監査されません。例えば、Display File Description (DSPFD)、Display File Field Description (DSPFFD)、Display Object Description (DSPOBJD) などの共通表示コマンドを使用しても監査項目は生成されません。DSPOBJD コマンドを使用して、オブジェクトの現在の監査状況を表示できます。

QCRTOBJAUD システム値

新しいオブジェクトを作成する場合、新しいオブジェクトの監査値が *ALL、*CHANGE、*USRPRF、または *NONE に設定されるよう指定できます。システム値 QCRTOBJAUD を使用して、新規作成されたオブジェクトのデフォルト監査値を指定します。IBM からは値 *NONE で出荷されます。これは、新規作成オブジェクトの監査値が *NONE に設定されることを意味します。

システムの各ライブラリーには、CRTOBJAUD という対応する属性があります。ライブラリーを作成または変更する場合、CRTOBJAUD 値を指定できます。デフォルト値は *SYSVAL で、システム値 QCRTOBJAUD で見つかったシステム・デフォルト値を使用するよう指定します。しかし、次のように CRTLIB または CHGLIB コマンドで *ALL、*CHANGE、*USRPRF、または *NONE を指定してシステム値を無効にできます。

CRTLIB LIB(MYLIB) CRTOBJAUD(*CHANGE)

この場合、ライブラリー MYLIB の新規作成オブジェクトでは、OBJAUD 値が *CHANGE に設定されています。新しいオブジェクトそれぞれに CHGOBJAUD . . . OBJAUD(*CHANGE) コマンドを指定したようなものです。

IT スタッフが機密 CREDITCARD ファイルにアクセスする場合

標準的なセキュリティー慣例では、緊急事態でない限り、IT スタッフは実動データにアクセスできないとしています。こうした緊急事態では、管理が正しく維持されるよう、応答する IT 担当者のアクティビティーが監査され、報告されます。しかし、多くの場合 IT スタッフには重要な実動データを自由に参照したり、更新する場合の制限はありません。管理が行き届いていないのです。こうした場合、機密ファイルをだれが参照したのか、また変更したのか知ることが重要です。

IT スタッフ・メンバーが CREDITCARD ファイルにアクセスするたびに監査する場合、まず CREDITCARD ファイルのオブジェクト監査ファイルを設定する必要があります。

CHGOBJAUD OBJ(PRODLIB/CREDITCARD) OBJTYPE(*FILE) OBJAUD(*ALL)

このコマンドにより、ファイル・オブジェクトへのすべてのアクセスが記録されます。繰り返しますが、記録レベルのアクセスはオブジェクト監査を起動しても収集されません。しかし、そのファイルがすべてのユーザーにより入力または更新目的でいつオープンされるのかはわかります。

いったんファイルの監査を起動すると、ファイルへのすべてのアクセスが、通常は ZC (変更用にオープンされたオブジェクト) または ZR (読み取り用にオープンされたオブジェクト) ジャーナル項目とともに QAUDJRN ジャーナルに書き込まれます。

オブジェクトの *ALL 監査を起動すると、オブジェクトがアクセスされるたびにジャーナル項目が書き込まれるため、やみくもにオブジェクトの監査を起動したくないでしょう。最も機密性が高いファイル、つまりだれがファイルを参照または変更したか知りたいファイルを選んでください。そのファイルが何千ものユーザーにより頻繁に使用されている場合、ジャーナル項目の数もかなり多くなる可能性があるため、必ずこの点を QAUDJRN ジャーナル・レシーバー管理計画に盛り込んでください。

また、ZC および ZR ジャーナル項目のディスク・スペースに問題がある場合、CHGOBJAUD コマンドを使用して、いつでもファイルの監査を起動したり停止できる点も覚えておいてください。

高可用性ソフトウェア

ほとんどの商用高可用性 (HA) ソフトウェア・ソリューションは、すべての実動オブジェクト (ファイル、プログラム、ライブラリー、データ域など) に設定されている OBJAUD(*CHANGE) に依存しています。通常、QCRTOBJAUD システム値は *CHANGE に設定されており、実動ライブラリーは *SYSVAL に設定されています。つまり、実動ライブラリーにある新規作成されたすべてのオブジェクトの監査値は *CHANGE に設定されるということです。

CREDITCARD ファイル・アクセスの抽出と報告

このシリーズの前号でお話したように、IBM は興味のあるジャーナル項目を QAUDJRN から簡単に抽出できるようにしました。まず、ZC および ZR ジャーナル項目の IBM 提供のモデル出力ファイルを複製します。

CRTDUPOBJ OBJ(QASYZCJ5) FROMLIB(QSYS) OBJTYPE(*FILE) TOLIB(MYLIB) NEWOBJ(ZC_MODEL)

CRTDUPOBJ OBJ(QASYZRJ5) FROMLIB(QSYS) OBJTYPE(*FILE) TOLIB(MYLIB) NEWOBJ(ZR_MODEL)

モデル出力ファイルは常に QASYxxJ5 で、xxは項目タイプを示し、ここでは ZC および ZR です。

次に、ZC 項目を抽出するよう指定して Display Journal (DSPJRN) コマンドを実行します。このコマンドはすべての ZC (変更用にオープンされたオブジェクト) 項目を抽出し、フォーマット済み結果をファイル ZC_MODEL に送信します。

DSPJRN JRN(QAUDJRN) RCVRNG(*CURRENT) JRNCDE((T)) ENTTYP(ZC)
OUTPUT(*OUTFILE) OUTFILFMT(*TYPE5) OUTFILE(MYLIB/ZC_MODEL)
OUTMBR(*FIRST *REPLACE)

次に、すべての ZR 項目を個別の出力ファイルに収集するため、次のコマンドを使用します。

DSPJRN JRN(QAUDJRN) RCVRNG(*CURRENT) JRNCDE((T)) ENTTYP(ZR) OUTPUT(*OUTFILE) OUTFILFMT(*TYPE5) OUTFILE(MYLIB/ZR_MODEL) OUTMBR(*FIRST *REPLACE)

DSPJRN コマンドを使用する場合、選択肢をジャーナル・レシーバーの範囲または日時範囲に制限できます。しかし、選択肢を CREDITCARD ファイルにのみ制限するために DSPJRN コマンドの OBJECT パラメーターは使用できません。OBJECT パラメーターは ZC および ZR ジャーナル項目タイプとは互換性がありません。

図 1は、DSPJRN コマンドを使用して抽出された ZR 項目のモデル出力ファイルのレイアウトを示します。出力フォーマットの該当のメインフィールドをいくつか以下に挙げます。

  • ZRONAM - アクセスされたオブジェクト名
  • ZROLIB - アクセスされたオブジェクトを含むライブラリー名
  • ZROTYP - アクセスされたオブジェクト・タイプ
  • ZROPGM - オブジェクトのアクセスに使用したプログラム
  • ZROPGMLIB - オブジェクトのアクセスに使用したプログラムのプログラム・ライブラリー
  • ZRJOB - オブジェクトにアクセスしたジョブ名
  • ZRUSPF - オブジェクトのアクセスに使用した現在のユーザー・プロファイル

この例では、ZRONAM (オブジェクト名) が CREDITCARD の項目に焦点を当てたいと思います。また、ZRUSPF (現行ユーザー) が IT スタッフのメンバーである項目に焦点を当てたいと思います。アクセス・タイプにも関心があるかもしれません。図 2 の表を使用して、アクセス・タイプを相互参照できます。クエリーなどのツールを使用して、希望のレコードのみ選択し、それらを適切な報告書形式で示す報告書を作成できます。

ODBC を使用してアクセスしたすべてのファイルの監査と報告

ODBC を使用してアクセスされるすべてのファイルを監査し、報告するには、ファイルの監査値を *ALL または *CHANGE に設定しておく必要があります。これは HA 設定における一般的な設定ですが、HA ソリューションが使用されていない場合は基準から外れた設定です。したがって、ファイルが現在 OBJAUD(*ALL または *CHANGE) に設定されていない場合、コマンド CHGOBJAUD を使用して設定する必要があります。ありがたいことに、CHGOBJAUD コマンドにより、オブジェクト名に *ALL を指定できます。

CHGOBJAUD OBJ(PAYROLL/*ALL) OBJTYPE(*FILE) OBJAUD(*ALL)

このコマンドは、ライブラリー PAYROLL の各ファイル・オブジェクトについて OBJAUD 値を *ALL に設定します。ファイルがいったん *ALL オブジェクト監査について設定されると、ZC および ZR ジャーナル項目を刈り取り、QZDASOINIT というメイン ODBC データベース・サーバー・ジョブで生成された項目を選択する準備が完了します。

ODBC ファイル・アクセス・イベントの抽出と報告

前述の例のように、まず IBM 提供モデル出力ファイルを複製します。ファイルを OBJAUD(*ALL) に設定したら、ZC 項目および ZR 項目の両方を抽出できます。OBJAUD(*CHANGE) 値を使用する場合、ZC レコードのみ使用できます。次のコマンドは、ZC (変更用にオープンされたオブジェクト) 項目を抽出するために出力ファイルを作成します。

CRTDUPOBJ OBJ(QASYZCJ5) FROMLIB(QSYS) OBJTYPE(*FILE) TOLIB(MYLIB) NEWOBJ(ZC_MODEL)

OBJAUD(*ALL) がファイルで使用されている場合、ZR (読み取り用にオープンされたオブジェクト) 項目を抽出することもできます。したがって、前述の例のように ZR 項目のモデル出力ファイルを作成できます。

次に、以下のコマンドを使用して QZDASOINIT ジョブ (ODBC) により生成された ZC 項目を抽出するよう指定して、DSPJRN コマンドを実行します。

DSPJRN JRN(QAUDJRN) RCVRNG(*CURRENT) JRNCDE((T)) ENTTYP(ZC) JOB(QZDASOINIT) OUTPUT(*OUTFILE) OUTFILFMT(*TYPE5) OUTFILE(MYLIB/ZC_MODEL) OUTMBR(*FIRST *REPLACE)

DSPJRN コマンドでジャーナル項目の抽出を完了したら、クエリー・ツールを使用して参照するデータを選択し、フォーマットします。前述の例では、ZR モデル出力ファイルで使用された重要なフィールドを調べました。ZC モデル出力ファイルのフィールドは実質的に同じですが、フィールド名の接頭部は ZR ではなく ZC になっています。ZC モデル出力ファイルの重要なフィールドのいくつかを次に挙げます。

  • ZCONAM - アクセスされたオブジェクト名
  • ZCOLIB - アクセスされたオブジェクトを含むライブラリーの名前
  • ZCOTYP - アクセスされたオブジェクト・タイプ
  • ZCOPGM - オブジェクトのアクセスに使用されたプログラム
  • ZCOPGMLIB - オブジェクトのアクセスに使用されたプログラムのプログラム・ライブラリー
  • ZCJOB - オブジェクトにアクセスしたジョブ名
  • ZCUSPF - オブジェクトのアクセスに使用した現在のユーザー・プロファイル

目的意識のある監査

ファイルおよび他のオブジェクトの必要に応じて OBJAUD 監査値を設定します。ファイルの使用および他のオブジェクトの使用を追跡する必要がある場合、ここで示した原則を使用できます。このシリーズの次号では、法的および規制上の要件をこなすのに役立つより多くの監査オプションについて説明します。

ページトップ

ボタン