ヘッダーをスキップ
Oracle® Database Firewall管理ガイド
リリース5.0
B65097-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5 ストアド・プロシージャ監査の構成

この章の内容は、次のとおりです。

ストアド・プロシージャ監査の概要

ストアド・プロシージャ監査を使用すると、ユーザーは、監視対象データベースのストアド・プロシージャに対する変更を監査および承認できます。Oracle Database Firewallはデータベース・サーバーにスケジュールされた間隔で接続し、ストアド・プロシージャに対する変更または追加(ある場合)を判断します。ストアド・プロシージャ監査は、Oracle、Microsoft SQL Server、Sybase ASE、Sybase SQL AnywhereおよびIBM DB2 (Microsoft Windows、UNIXおよびLinux)データベースでサポートされています。

この章では、ストアド・プロシージャに対する変更をユーザーが監査できるように、Database Firewallで保護されたデータベースを構成する方法について説明します。監査の実行手順については、『Oracle Database Firewallセキュリティ管理ガイド』を参照してください。

ストアド・プロシージャ監査を取得するArcSight syslogメッセージの詳細は、「DBFW:8(データベース監査)」を参照してください。

ストアド・プロシージャ監査に対するユーザー権限の設定

この項の内容は、次のとおりです。

Oracleデータベースにおけるストアド・プロシージャ監査に対するユーザー権限の設定

Oracleデータベース(Oracle Database 8iより後のすべてのリリース)のユーザー・アカウントを設定する手順は、次のとおりです。

  1. Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0)から、スクリプトを実行するサーバーにdatabaseディレクトリをコピーします。

  2. このサーバーで、database/spaディレクトリに移動し、oracle圧縮ファイルをoracleというディレクトリ(推奨)に解凍します。

  3. oracleディレクトリに移動して解凍したファイル(spa_setup.sql)を確認し、その設定を理解します。

    spa_setup.sqlスクリプトには、次の情報に関する設定が含まれています。

    • $(username)は、ストアド・プロシージャ監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (spa_auditorなど)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。

    • $(password)は、このユーザー・アカウントのパスワードです。

  4. ユーザーの作成およびユーザー権限の設定を行う権限が付与されているユーザーとして、Oracle Databaseにログインします。

    次に例を示します。

    sqlplus sys/as sysdba
    Enter password: password
    Connected.
    SQL> 
    

    Oracle Database Vaultとともに使用するデータベースの場合は、DV_ACCTMGRロールが付与されたユーザーとしてログインします。

  5. spa_setupスクリプトを実行し、プロンプトに応答します。

    次に例を示します。

    SQL> @database/spa/oracle/spa_setup.sql
    username: as parameter 1:
    Enter value for 1: user_name
    password: as parameter 2:
    Enter value for 2: password
    

spa_setup.sqlスクリプトでは、ストアド・プロシージャ監査用のユーザー・アカウントに次の権限が付与されます。

  • CREATE SESSION

  • sys.dba_objectsおよびsys.dba_sourceシステム表に対するSELECT

SQL Serverデータベースにおけるストアド・プロシージャ監査に対するユーザー権限の設定

Microsoft SQL Server (2000、2005または2008)データベースのユーザー・アカウントを設定する手順は、次のとおりです。

  1. スクリプトを実行する場所がデータベース・サーバー(ローカル)なのか別のコンピュータ(リモート)なのかを決定します。

  2. スクリプトを実行するコンピュータにsqlcmd.exeユーティリティがインストールされていることを確認します。

  3. ストアド・プロシージャ監査を担当するデータベース・ユーザー・アカウントのユーザー名とパスワードを選択します。

    このユーザー・アカウントとパスワードは、この手順の後半で作成します。

  4. Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0)から、スクリプトを実行するサーバーにdatabaseディレクトリをコピーします。

  5. このサーバーで、database/spaディレクトリに移動し、sqlserver圧縮ファイルをsqlserverというディレクトリ(推奨)に解凍します。

  6. sqlserverディレクトリに移動して解凍したファイルを確認し、その設定を理解します。

    このスクリプトには、次の情報に関する設定が含まれています。

    • $(username)は、ストアド・プロシージャ監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (spa_auditorなど)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。

    • $(password)は、このユーザー・アカウントのパスワードです。

    • $(database)は、監査対象データベースです。

  7. ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、SQL Serverデータベースに対してspa_add_user.sqlスクリプトを実行します。

    構文は、次のとおりです。

    sqlcmd -S server_name -U sa -P sa_password -i spa_add_user.sql 
    -v username="username" password="password"
    

    詳細は、次のとおりです。

    • server_name: 保護対象データベースが存在するデータベース・サーバーの名前またはIPアドレスを入力します。この引数を使用するのは、リモート・サーバーからスクリプトを実行する場合のみです。このスクリプトをローカルで実行する場合は、この引数を省略できます。

    • sa_password: システム管理者のパスワードを入力します。

    • username: スクリプトに$(username)で指定された、ストアド・プロシージャ監査用に作成するユーザー・アカウントを入力します。このユーザー名は二重引用符で囲みます。

    • password: スクリプトに$(password)で指定された、ストアド・プロシージャ監査用のユーザー・アカウントのパスワードを入力します。このパスワードは二重引用符で囲みます。

    次に、コマンドの例を2つ示します。(行が折り返していますが、1行のコマンドです。)

    sqlcmd -U sa -P sa_password -i spa_add_user.sql  -v username="spa_auditor" password="abcd1234"
    
    sqlcmd -S my_server -U sa -P sa_password -i spa_add_user.sql 
    -v username="spa_auditor" password="abcd1234"
    
  8. spa_db_permissions.sqlまたはspa_add_all_db_permissions.sqlスクリプトを実行して、ユーザー権限を付与します。

    次の例はスクリプトをリモートで実行する方法を示していますが、スクリプトをローカルで実行する場合は、-S server_name引数を省略します。

    特定のデータベースに対する権限については、次の構文を使用します。

    sqlcmd -S server_name -U sa -P sa_password -i spa_add_db_permissions.sql 
    -v username="username" database="protected_database"
    

    database="protected_database"の設定は、次のようにします。

    • スクリプトに$(database)で指定された、このサーバー内の監査対象データベースの名前を入力します。

    • このデータベース名は二重引用符で囲みます。

    すべてのデータベースに対する権限については、次の構文を使用します。

    sqlcmd -S server_name -U sa -P sa_password -i spa_add_all_db_permissions.sql
    -v username="username"
    

    次に、コマンドの例を2つ示します。(行が折り返していますが、1行のコマンドです。)

    sqlcmd -S my_server -U sa -P sa_password -i spa_add_db_permissions.sql
    -v username="jsmith" database="my_database"
    
    sqlcmd -S my_server -U sa -P sa_password -i spa_add_all_db_permissions.sql
    -v username="jsmith"
    

このスクリプトでは、ストアド・プロシージャ監査用のユーザー・アカウントに次の権限が付与されます。

  • バージョンが8よりも後の製品のsys.all_objectsおよびdbo.syscommentsシステム表に対するVIEW DEFINITIONおよびSELECT

  • バージョンが8よりも前の製品のdbo.sysobjectsおよびdbo.syscommentsに対するSELECT

Sybase ASEデータベースにおけるストアド・プロシージャ監査に対するユーザー権限の設定

Sybase Adaptive Server Enterpriseのユーザー・アカウントを設定する手順は、次のとおりです。

  1. Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0)から、スクリプトを実行するサーバーにdatabaseディレクトリをコピーします。

  2. このサーバーで、database/spaディレクトリに移動し、sybase圧縮ファイルをsybaseというディレクトリ(推奨)に解凍します。

  3. ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、Sybase ASEデータベースに対してspa_add_user.sqlスクリプトを実行します。

    構文は、次のとおりです。

    isql -S server_name -U sa -P sa_password -i spa_add_user.sql 
    

    詳細は、次のとおりです。

    • server_name: この引数を使用するのは、データベースがリモートの場合のみです。サーバーまたはそのIPアドレスの名前を入力できます。スクリプトをローカルで実行する場合は、-S server_name引数を省略できます。

    • sa_password: システム管理者のパスワードを入力します。

    次に例を示します。

    isql -U sa -P sa_password -i spa_add_user.sql  
    
    isql -S my_server -U sa -P sa_password -i spa_add_user.sql 
    

    このスクリプトでは、デフォルトのストアド・プロシージャ監査ユーザーdbfw_spa_userとデフォルトのパスワードdefaultpasswordが追加されます。このパスワードは後で変更することをお薦めします。

  4. spa_add_db_permissions.sqlスクリプトを実行して、このユーザーに権限を付与します。

    構文は、次のとおりです。

    isql -S server_name -U sa -P sa_password -i spa_add_db_permissions.sql
    

    詳細は、次のとおりです。

    • server_name: この引数を使用するのは、データベースがリモートの場合のみです。サーバーまたはそのIPアドレスの名前を入力できます。スクリプトをローカルで実行する場合は、-S server_name引数を省略できます。

    • sa_password: システム管理者のパスワードを入力します。

    このスクリプトでは、ストアド・プロシージャ監査用のユーザー・アカウントに次の権限が付与されます。

    • dbo.sysdatabasesdbo.sysobjectsおよびdbo.syscommentsに対するSELECT

Sybase SQL Anywhereデータベースにおけるストアド・プロシージャ監査に対するユーザー権限の設定

この項の内容は、次のとおりです。

Linux用のSybase SQL Anywhere ODBCドライバのインストール

Sybase SQL Anywhereを使用する前に、Linux用のSQL Anywhere ODBCドライバをインストールする必要があります。

Linux用のODBCドライバをインストールする手順は、次のとおりです。

  1. rootユーザーとして、Database Firewallサーバーにログインします。

  2. Sybase SQL Anywhereのインストール・メディアから、linux_x86_GA_sa1101_2044_l10n.tar.gzをDatabase Firewallサーバー上の一時的な場所にコピーします。

  3. このアーカイブ・ファイルを展開します。

    tar zxvf linux_x86_GA_sa1101_2044_l10n.tar.gz
    
  4. setupユーティリティを実行し、クライアントのインストールを開始します。

    ./setup
    
  5. プロンプトが表示された場合は、次のインストールのみを選択します。3.Administration Tools

  6. プロンプトが表示された場合は、/var/sqlanywhere11ディレクトリにクライアントをインストールします。

  7. Sybase SQL Anywhereのインストール・メディアから、sa11_full_linux_x86+x64.1101_2420_ebf.tar.gzをDatabase Firewallサーバーにコピーします。

  8. このアーカイブ・ファイルを展開します。

    tar zxvf sa11_full_linux_x86+x64.1101_2420_ebf.tar.gz
    
  9. setupユーティリティを実行し、クライアントのインストールを開始します。

    ./setup
    
  10. プロンプトが表示された場合は、/var/sqlanywhere11ディレクトリへのインストールを選択します。

ストアド・プロシージャ監査に対するユーザー権限の設定

Sybase SQL Anywhereのユーザー・アカウントを設定する手順は、次のとおりです。

  1. Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0)から、スクリプトを実行するサーバーにdatabaseディレクトリをコピーします。

  2. このサーバーで、database/spaディレクトリに移動し、sqlanywhere圧縮ファイルをsqlanywhereというディレクトリ(推奨)に解凍します。

  3. sqlanywhereディレクトリに移動して解凍したファイル(spa_setup.sql)を確認し、その設定を理解します。

    spa_setup.sqlスクリプトには、次の情報に関する設定が含まれています。

    • $(username)は、ストアド・プロシージャ監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (spa_auditorなど)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。

    • $(password)は、このユーザー・アカウントのパスワードです。

  4. ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、SQL Anywhereデータベースに対してspa_setup.sqlスクリプトを実行します。

    構文は、次のとおりです。

    isql -S server_name -U sa -P sa_password -i spa_setup.sql
    -v username="username" password="password" database="protected_database"
    

    詳細は、次のとおりです。

    • server_name: この引数を使用するのは、データベースがリモートの場合のみです。サーバーまたはそのIPアドレスの名前を入力できます。スクリプトをローカルで実行する場合は、-S server_name引数を省略できます。

    • username: spa_setup.sqlスクリプトに$(username)で指定された、ストアド・プロシージャ監査用に作成するユーザー・アカウントを入力します。このユーザー名は二重引用符で囲みます。

    • password: spa_setup.sqlスクリプトに$(password)で指定された、ストアド・プロシージャ監査用のユーザー・アカウントのパスワードを入力します。このパスワードは二重引用符で囲みます。

    • database="protected_database": spa_setup.sqlスクリプトに$(database)で指定された、このサーバー内の保護対象データベースの名前を入力します。このデータベース名は二重引用符で囲みます。

    次に例を示します。

    isql -S my_server -U sa -P password -i spa_setup.sql
    -v username="spa_auditor" password="$(password)_password" database="sales_db"
    

spa_setup.sqlスクリプトでは、ストアド・プロシージャ監査用のユーザー・アカウントに次の権限が付与されます。

  • CONNECT

  • sys.sysuser, sys.sysprocedure,およびsys.sysprocparmシステム表に対するSELECT

IBM DB2 SQLデータベースにおけるストアド・プロシージャ監査に対するユーザー権限の設定

IBM DB2のユーザー・アカウントを設定するためにスクリプトを実行する必要はありません。かわりに、新しいユーザー・アカウントを作成するか、既存のユーザー・アカウントをストアド・プロシージャ監査で使用できるように指定します。

IBM DB2のユーザー・アカウントを設定する手順は、次のとおりです。

  1. 監査対象のIBM DB2 Windows、UNIXまたはLinuxデータベースにログインします。

  2. 新しいユーザー・アカウントを作成するか、既存のユーザー・アカウントをストアド・プロシージャ監査で使用できるように指定します。

  3. このユーザーに次の権限を付与します。

    grant select on syscat.routines to user
    

Database Firewallでのストアド・プロシージャ監査の有効化

ストアド・プロシージャ監査を有効にする手順は、次のとおりです。

  1. スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインします。

    詳細は、「管理コンソールへのログイン」を参照してください。

  2. 「Monitoring」ページの「Enforcement Points」メニューで、「List」をクリックします。

  3. ストアド・プロシージャを監視する強制ポイントを選択し、「Settings」ボタンをクリックします。

    すべての強制ポイントは、指定されたデータベース・サーバーに対するSQLトラフィックも監視します。必要に応じて、強制ポイントは異なるサーバーにあるデータベース内のストアド・プロシージャを監視できます。

  4. 「Monitoring Settings」で、「SPA」チェック・ボックスを選択します。

    image069.gifの説明が続きます
    image069.gifの説明

  5. SPAの各フィールドとオプションを入力します。

    • Database Address、Port: 監査対象データベースが格納されているサーバーのIPアドレスを指定します。ポート番号については、データベースで使用するポート番号を入力します。(たとえば、Oracleデータベースのデフォルトのポート番号は1521です。Oracleデータベースについては、この情報はtnsnames.oraファイルで見つけることができます。)ドメイン・ネーム・サーバー(DNS)を使用している場合は、IPアドレスのかわりに、ホスト名を入力できます。

      強制ポイントで指定されている保護対象データベースのIPアドレスは、監査には自動的に含まれません。

    • Database Name: データベースの名前。Oracleデータベースについては、tnsnames.oraファイルに定義されているサービス名を入力します。

    • User Name: 「ストアド・プロシージャ監査に対するユーザー権限の設定」の説明に従って、spa_add_user.sqlスクリプトで作成したユーザーのユーザー名を入力します。(このユーザー名はスクリプトの$(username)設定で指定されたユーザー・アカウントです。)

    • Change Password: ユーザーのパスワードを変更する場合は、「Change Password」ボタンをクリックして、新しいパスワードを入力します。(このフィールドが表示されるのは、既存の構成を編集している場合のみです。ストアド・プロシージャ監査を最初に構成するときは、「Password」フィールドと「Confirm Password」フィールドが表示されます。)

    • Database Connection (Test Now): 「Test Now」をクリックすると、指定したユーザーがデータベースにログインし、必要な権限が付与されるかが確認されます。

    • First Run TimeRepeat Every: 最初の監査を実行する日時および監査を繰り返す頻度を指定します。データベースの使用が少ない時間(午前2時など)を選択します。

      監査を即時に実行する場合は、「Enforcement Points」メニューで「List」をクリックし、該当する強制ポイントの「Manage」ボタンをクリックし、続いて「Run Now」をクリックします。

ストアド・プロシージャ監査の無効化

ストアド・プロシージャ監査を無効にできます。ストアド・プロシージャ監査を完全に削除する場合は、『Oracle Database Firewallインストレーション・ガイド』を参照してください。

ストアド・プロシージャ監査を無効にする手順は、次のとおりです。

  1. スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインします。

    詳細は、「管理コンソールへのログイン」を参照してください。

  2. Monitoring」タブを選択します。

    デフォルトでは、「Enforcement Points」ページが表示されます。表示されない場合は、ページの左側の「Enforcement Points」メニューで「List」ボタンをクリックします。

  3. ストアド・プロシージャ監査を無効にする強制ポイントを検索します。

  4. 「Settings」ボタンをクリックします。

    「Monitoring Settings」ページが表示されます。

  5. 「SPA」領域で、「Activate Stored Procedure Auditing」チェック・ボックスの選択を解除します。

  6. 「Monitoring Settings」ページの下部までスクロールして、「Save」ボタンをクリックします。