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

前
 
次
 

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

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

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

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

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

SPAに対するユーザー権限の設定

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

OracleデータベースにおけるSPAに対するユーザー権限の設定

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

  1. Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.1)から、スクリプトを実行するサーバーに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

  6. (オプション)このユーザー・アカウントを削除する必要がある場合には、spa_dropスクリプトを実行します。

    次に例を示します。

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

SQL ServerデータベースにおけるSPAに対するユーザー権限の設定

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • sa: システム管理者のユーザー名を入力します。

    • 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_add_db_permissionsまたはspa_add_all_db_permissionsスクリプトを実行して、ユーザーに権限を付与します。

    次の例はスクリプトをリモートで実行する方法を示していますが、スクリプトをローカルで実行する場合は、-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

  9. (オプション)前述のユーザー権限を削除する必要がある場合には、spa_drop_db_permissionsまたはspa_drop_all_db_permissionsスクリプトを実行します。

    個々のデータベースの場合は、次の構文を使用します。

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

    すべてのデータベースの場合は、次の構文を使用します。

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

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

    sqlcmd -S my_server -U sa -P sa_password -i spa_drop_db_permissions.sql
    -v username="jsmith" database="my_database"
    
    sqlcmd -S my_server -U sa -P sa_password -i spa_drop_all_db_permissions.sql
    -v username="jsmith"
    
  10. (オプション) SQL Serverデータベースからストアド・プロシージャ監査のユーザーを削除する必要がある場合には、spa_drop_userスクリプトを実行します。

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

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

    次に例を示します。

    sqlcmd -U sa -P sa_password -i spa_drop_user.sql  -v username="spa_auditor"
    

MySQLデータベースにおけるSPAに対するユーザー権限の設定

MySQLデータベースのユーザー・アカウントを設定する手順は、次のとおりです。

  1. ユーザーの作成およびユーザー権限の設定を行う権限が付与されているユーザーとして、データベースにログインし、MySQLデータベースに対して次のコマンドを実行します。

    create user 'username'@'hostname' identified by 'password'
    

    usernameにはストアド・プロシージャ監査のアカウント名を使用し、hostnameにはDatabase Firewallのホスト名を使用します。次に例を示します。

    create user 'spa_auditor'@'10.155.56.2' identified by 'jj_1234'
    
  2. 次のコマンドを実行して、作成したユーザーに必要な権限を付与します。

    grant select on mysql.proc TO 'username'@'hostname'
    

    次に例を示します。

    grant select on mysql.proc TO 'spa_auditor'@'10.155.56.2'
    

    上のコマンドでは、ストアド・プロシージャ監査用のユーザー・アカウントに次の権限が付与されます: SELECT on the mysql.proc system table。

  3. (オプション) MySQLデータベースからストアド・プロシージャ監査のユーザーを削除する必要がある場合には、次のコマンドを実行します。

    drop user 'username'@'hostname'
    

    次に例を示します。

    drop user 'spa_auditor'@'10.155.56.2'
    

Sybase ASEデータベースにおけるSPAに対するユーザー権限の設定

Sybase ASEストアド・プロシージャ監査の場合、tempdbデータベースは生成された一時ファイルに対応できる大きさである必要があります。

tempdbのサイズを確認するには、次の手順を実行します。

  1. sp_helpdbシステム・ストアド・プロシージャを実行します。

  2. sybsystemprocおよびtempdbの各データベースについてdb_size列を比較します。

    tempdbデータベースは、sybsystemprocと比較して少なくとも2、3MB大きい必要があります。

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

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

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

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

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

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

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

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

    • sa: システム管理者のユーザー名を入力します。

    • 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スクリプトを実行して、このユーザーに権限を付与します。

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

    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

  5. (オプション)前述の権限を削除する必要がある場合には、spa_drop_db_permissionsスクリプトを実行します。

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

    isql -S server_name -U sa -P sa_password -i spa_drop_db_permissions.sql
    
  6. (オプション) ストアド・プロシージャ監査のユーザーを削除する必要がある場合には、Sybase ASEデータベースに対してspa_drop_userスクリプトを実行します。

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

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

Sybase SQL AnywhereデータベースにおけるSPAに対するユーザー権限の設定

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

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

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

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

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

  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.1)から、スクリプトを実行するサーバーに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

  5. (オプション)前述の権限を削除する必要がある場合には、SQL Anywhereデータベースに対してspa_dropスクリプトを実行します。

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

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

IBM DB2 SQLデータベースにおけるSPAに対するユーザー権限の設定

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

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

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

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

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

    grant select on syscat.routines to user
    
  4. (オプション)前述の権限を削除する必要がある場合には、付与した権限を取り消すか、IBM DB2データベースからユーザー・アカウントを削除します。

Database FirewallでのSPAの有効化

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

  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ファイルで見つけることができます。)IPアドレスのかわりにホスト名を使用する場合には、先に「System Services」ページでDNSサーバーを構成します。

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

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

    • User Name: ストアド・プロシージャ監査のアカウントのユーザー名、たとえばspa_auditorなどを入力します。

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

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

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

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

SPAの無効化

ストアド・プロシージャ監査を無効にできます。ストアド・プロシージャ監査を完全に削除する場合は、『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」ボタンをクリックします。