ストアド・プロシージャ監査を使用すると、ユーザーは、監視対象データベースのストアド・プロシージャに対する変更を監査および承認できます。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 Database 8iより後のすべてのリリース)のユーザー・アカウントを設定する手順は、次のとおりです。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/spa
ディレクトリに移動し、oracle
圧縮ファイルをoracle
というディレクトリ(推奨)に解凍します。
oracle
ディレクトリに移動して解凍したファイル(spa_setup.sql
)を確認し、その設定を理解します。
spa_setup.sql
スクリプトには、次の情報に関する設定が含まれています。
$(username)
は、ストアド・プロシージャ監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (spa_auditor
など)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。
$(password)
は、このユーザー・アカウントのパスワードです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されているユーザーとして、Oracle Databaseにログインします。
次に例を示します。
sqlplus sys/as sysdba
Enter password: password
Connected.
SQL>
Oracle Database Vaultとともに使用するデータベースの場合は、DV_ACCTMGR
ロールが付与されたユーザーとしてログインします。
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
Microsoft SQL Server (2000、2005または2008)データベースのユーザー・アカウントを設定する手順は、次のとおりです。
スクリプトを実行する場所がデータベース・サーバー(ローカル)なのか別のコンピュータ(リモート)なのかを決定します。
スクリプトを実行するコンピュータにsqlcmd.exe
ユーティリティがインストールされていることを確認します。
ストアド・プロシージャ監査を担当するデータベース・ユーザー・アカウントのユーザー名とパスワードを選択します。
このユーザー・アカウントとパスワードは、この手順の後半で作成します。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/spa
ディレクトリに移動し、sqlserver
圧縮ファイルをsqlserver
というディレクトリ(推奨)に解凍します。
sqlserver
ディレクトリに移動して解凍したファイルを確認し、その設定を理解します。
このスクリプトには、次の情報に関する設定が含まれています。
$(username)
は、ストアド・プロシージャ監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (spa_auditor
など)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。
$(password)
は、このユーザー・アカウントのパスワードです。
$(database)
は、監査対象データベースです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、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"
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 Adaptive Server Enterpriseのユーザー・アカウントを設定する手順は、次のとおりです。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/spa
ディレクトリに移動し、sybase
圧縮ファイルをsybase
というディレクトリ(推奨)に解凍します。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、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
が追加されます。このパスワードは後で変更することをお薦めします。
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.sysdatabases
、dbo.sysobjects
およびdbo.syscomments
に対するSELECT
この項の内容は、次のとおりです。
Sybase SQL Anywhereを使用する前に、Linux用のSQL Anywhere ODBCドライバをインストールする必要があります。
Linux用のODBCドライバをインストールする手順は、次のとおりです。
root
ユーザーとして、Database Firewallサーバーにログインします。
Sybase SQL Anywhereのインストール・メディアから、linux_x86_GA_sa1101_2044_l10n.tar.gz
をDatabase Firewallサーバー上の一時的な場所にコピーします。
このアーカイブ・ファイルを展開します。
tar zxvf linux_x86_GA_sa1101_2044_l10n.tar.gz
setup
ユーティリティを実行し、クライアントのインストールを開始します。
./setup
プロンプトが表示された場合は、次のインストールのみを選択します。3.Administration Tools
。
プロンプトが表示された場合は、/var/sqlanywhere11
ディレクトリにクライアントをインストールします。
Sybase SQL Anywhereのインストール・メディアから、sa11_full_linux_x86+x64.1101_2420_ebf.tar.gzをDatabase Firewallサーバーにコピーします。
このアーカイブ・ファイルを展開します。
tar zxvf sa11_full_linux_x86+x64.1101_2420_ebf.tar.gz
setup
ユーティリティを実行し、クライアントのインストールを開始します。
./setup
プロンプトが表示された場合は、/var/sqlanywhere11
ディレクトリへのインストールを選択します。
Sybase SQL Anywhereのユーザー・アカウントを設定する手順は、次のとおりです。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.0
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/spa
ディレクトリに移動し、sqlanywhere
圧縮ファイルをsqlanywhere
というディレクトリ(推奨)に解凍します。
sqlanywhere
ディレクトリに移動して解凍したファイル(spa_setup.sql
)を確認し、その設定を理解します。
spa_setup.sql
スクリプトには、次の情報に関する設定が含まれています。
$(username)
は、ストアド・プロシージャ監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (spa_auditor
など)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。
$(password)
は、このユーザー・アカウントのパスワードです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、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のユーザー・アカウントを設定するためにスクリプトを実行する必要はありません。かわりに、新しいユーザー・アカウントを作成するか、既存のユーザー・アカウントをストアド・プロシージャ監査で使用できるように指定します。
IBM DB2のユーザー・アカウントを設定する手順は、次のとおりです。
監査対象のIBM DB2 Windows、UNIXまたはLinuxデータベースにログインします。
新しいユーザー・アカウントを作成するか、既存のユーザー・アカウントをストアド・プロシージャ監査で使用できるように指定します。
このユーザーに次の権限を付与します。
grant select on syscat.routines to user
ストアド・プロシージャ監査を有効にする手順は、次のとおりです。
スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインします。
詳細は、「管理コンソールへのログイン」を参照してください。
「Monitoring」ページの「Enforcement Points」メニューで、「List」をクリックします。
ストアド・プロシージャを監視する強制ポイントを選択し、「Settings」ボタンをクリックします。
すべての強制ポイントは、指定されたデータベース・サーバーに対するSQLトラフィックも監視します。必要に応じて、強制ポイントは異なるサーバーにあるデータベース内のストアド・プロシージャを監視できます。
「Monitoring Settings」で、「SPA」チェック・ボックスを選択します。
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 Time、Repeat Every: 最初の監査を実行する日時および監査を繰り返す頻度を指定します。データベースの使用が少ない時間(午前2時など)を選択します。
監査を即時に実行する場合は、「Enforcement Points」メニューで「List」をクリックし、該当する強制ポイントの「Manage」ボタンをクリックし、続いて「Run Now」をクリックします。
ストアド・プロシージャ監査を無効にできます。ストアド・プロシージャ監査を完全に削除する場合は、『Oracle Database Firewallインストレーション・ガイド』を参照してください。
ストアド・プロシージャ監査を無効にする手順は、次のとおりです。
スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインします。
詳細は、「管理コンソールへのログイン」を参照してください。
「Monitoring」タブを選択します。
デフォルトでは、「Enforcement Points」ページが表示されます。表示されない場合は、ページの左側の「Enforcement Points」メニューで「List」ボタンをクリックします。
ストアド・プロシージャ監査を無効にする強制ポイントを検索します。
「Settings」ボタンをクリックします。
「Monitoring Settings」ページが表示されます。
「SPA」領域で、「Activate Stored Procedure Auditing」チェック・ボックスの選択を解除します。