ユーザー・ロール監査(URA)を使用すると、ユーザーは、指定したデータベース・サーバーにあるデータベースのユーザー・ロールに対する変更を監査および承認できます。Oracle Database Firewallは、スケジュールされた間隔でデータベース・サーバーに接続し、ユーザー・ロールに対して行われた変更または追加があればそれを検出します。ユーザー・ロール監査は、Oracle、Microsoft SQL Server、My SQL、Sybase ASE、Sybase SQL AnywhereおよびIBM DB2 (Microsoft Windows、UNIXおよびLinux)データベースでサポートされています。
この章では、ユーザー・ロールに対する変更をユーザーが監査できるようにDatabase Firewallで保護されたデータベースを構成する方法について説明します。ユーザー・ロールに対する監査の詳細は、『Oracle Database Firewallセキュリティ・ガイド』を参照してください。
この項の内容は、次のとおりです。
Oracleデータベース(Oracle Database 8iより後のすべてのリリース)のユーザー・アカウントを設定する手順は、次のとおりです。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.1
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/ura
ディレクトリに移動し、oracle
圧縮ファイルをoracle
というディレクトリ(推奨)に解凍します。
oracle
ディレクトリに移動して解凍したファイル(ura_setup.sql
)を確認し、その設定を理解します。
ura_setup.sql
スクリプトには、次の情報に関する設定が含まれています。
$(username)
は、ユーザー・ロール監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (ura_auditor
など)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。
$(password)
は、このユーザー・アカウントのパスワードです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されているユーザーとして、Oracle Databaseにログインします。
次に例を示します。
sqlplus sys/as sysdba
Enter password: password
Connected.
SQL>
Oracle Database Vaultとともに使用するデータベースの場合は、DV_ACCTMGR
ロールが付与されたユーザーとしてログインします。
ura_setup
スクリプトを実行し、必要に応じてプロンプトに応答します。
次に例を示します。
SQL> @database/ura/oracle/ura_setup.sql username: as parameter 1: Enter value for 1: user_name password: as parameter 2: Enter value for 2: password
ura_setup.sql
スクリプトでは、ユーザー・ロール監査用のユーザー・アカウントに次の権限が付与されます。
CREATE SESSION
システム表に対するSELECT
sys.dba_users sys.dba_role_privs sys.dba_sys_privs sys.proxy_users v$pwfile_users
(オプション)このユーザー・アカウントを削除する必要がある場合には、ura_drop
スクリプトを実行します。
次に例を示します。
SQL> @database/ura/oracle/ura_setup.sql
username: as parameter 1:
Enter value for 1: user_name
Microsoft SQL Server (2000、2005または2008)データベースのユーザー・アカウントを設定する手順は、次のとおりです。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.1
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
スクリプトを実行するコンピュータにsqlcmd.exe
ユーティリティがインストールされていることを確認します。
このサーバーで、database/ura
ディレクトリに移動し、sqlserver
圧縮ファイルをsqlserver
というディレクトリ(推奨)に解凍します。
sqlserver
ディレクトリに移動して解凍したファイルを確認し、その設定を理解します。
このスクリプトには、次の情報に関する設定が含まれています。
$(username)
は、ユーザー・ロール監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (ura_auditor
など)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。
$(password)
は、このユーザー・アカウントのパスワードです。
$(database)
は、監査対象データベースです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、SQL Serverデータベースに対してura_add_user
スクリプトを実行します。
構文は、次のとおりです。
sqlcmd -S server_name -U sa -P sa_password -i ura_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 ura_add_user.sql -v username="ura_auditor" password="abcd1234" sqlcmd -S my_server -U sa -P sa_password -i ura_add_user.sql -v username="ura_auditor" password="abcd1234"
ura_add_db_permissions
またはura_add_all_db_permissions
スクリプトを実行して、ユーザーに権限を付与します。
次の例はスクリプトをリモートで実行する方法を示していますが、スクリプトをローカルで実行する場合は、-S server_name
引数を省略します。
特定のデータベースに対する権限については、次の構文を使用します。
sqlcmd -S server_name -U sa -P sa_password -i ura_add_db_permissions.sql -v username="username" database="protected_database"
database="
protected_database
"
の設定は、次のようにします。
スクリプトに$(database)
で指定された、このサーバー内の監査対象データベースの名前を入力します。
このデータベース名は二重引用符で囲みます。
すべてのデータベースに対する権限については、次の構文を使用します。
sqlcmd -S server_name -U sa -P sa_password -i ura_add_all_db_permissions.sql -v username="username"
次に、コマンドの例を2つ示します。(行が折り返していますが、1行のコマンドです。)
sqlcmd -S my_server -U sa -P sa_password
-i ura_add_db_permissions.sql
-v username="jsmith" database="my_database"
sqlcmd -S server_name -U sa -P sa_password -i ura_add_all_db_permissions.sql
-v username="jsmith"
このスクリプトでは、ユーザー・ロール監査用のユーザー・アカウントに次の権限が付与されます。
VIEW ANY DEFINITION
(SQL Server 2005以降)
次の表に対するSELECT
master.dbo.sysdatabases master.dbo.syslogins specific_database.dbo.sysmembers specific_database.dbo.sysusers
(オプション)前述のユーザー権限を削除する必要がある場合には、ura_drop_db_permissions
またはura_drop_all_db_permissions
スクリプトを実行します。
個々のデータベースの場合は、次の構文を使用します。
sqlcmd -S server_name -U sa -P sa_password -i ura_drop_db_permissions.sql -v username="username" database="protected_database"
すべてのデータベースの場合は、次の構文を使用します。
sqlcmd -S server_name -U sa -P sa_password -i ura_drop_all_db_permissions.sql -v username="username"
次に、コマンドの例を2つ示します。(行が折り返していますが、1行のコマンドです。)
sqlcmd -S my_server -U sa -P sa_password
-i ura_drop_db_permissions.sql
-v username="jsmith" database="my_database"
sqlcmd -S server_name -U sa -P sa_password -i ura_drop_all_db_permissions.sql
-v username="jsmith"
(オプション) SQL Serverデータベースからユーザー・ロール監査のユーザーを削除する必要がある場合には、ura_drop_user
スクリプトを実行します。
構文は、次のとおりです。
sqlcmd -S server_name -U sa -P sa_password -i ura_drop_user.sql -v username="username
" password="password
"
次に例を示します。
sqlcmd -U sa -P sa_password -i ura_drop_user.sql -v username="ura_auditor"
MySQLデータベースのユーザー・アカウントを設定する手順は、次のとおりです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されているユーザーとして、データベースにログインし、MySQLデータベースに対して次のコマンドを実行します。
create user 'username'@'hostname' identified by 'password'
username
にはユーザー・ロール監査のアカウント名を使用し、hostname
にはDatabase Firewallのホスト名を使用します。次に例を示します。
create user 'ura_auditor'@'10.155.56.2' identified by 'jj_1234'
次のコマンドを実行して、作成したユーザーに必要な権限を付与します。
grant select on mysql.user TO 'username'@'hostname'
次に例を示します。
grant select on mysql.user TO 'ura_auditor'@'10.155.56.2'
上のコマンドでは、ストアド・プロシージャ監査用のユーザー・アカウントに次の権限が付与されます: SELECT on the mysql.user
system table。
(オプション) MySQLデータベースからストアド・プロシージャ監査のユーザーを削除する必要がある場合には、次のコマンドを実行します。
drop user 'username'@'hostname'
次に例を示します。
drop user 'spa_auditor'@'10.155.56.2'
Sybase Adaptive Server Enterpriseのユーザー・アカウントを設定する手順は、次のとおりです。
Oracle Database Firewall製品のCD (Oracle Database Firewall Utilities 5.1
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/ura
ディレクトリに移動し、sybase
圧縮ファイルをsybase
というディレクトリ(推奨)に解凍します。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、Sybase ASEデータベースに対してura_add_user.sql
スクリプトを実行します。
構文は、次のとおりです。
isql -S server_name -U sa -P sa_password -i ura_add_user.sql
詳細は、次のとおりです。
server_name
: この引数を使用するのは、データベースがリモートの場合のみです。サーバーまたはそのIPアドレスの名前を入力できます。スクリプトをローカルで実行する場合は、-S server_name
引数を省略できます。
sa
: システム管理者のユーザー名を入力します。
sa_password
: システム管理者のパスワードを入力します。
次に例を示します。
isql -U sa -P sa_password
-i ura_add_user.sql
isql -S my_server -U sa -P sa_password -i ura_add_user.sql
ura_add_db_permissions.sql
スクリプトを実行して、このユーザーに権限を付与します。
構文は、次のとおりです。
isql -S server_name -U sa -P password -i ura_add_db_permissions.sql
詳細は、次のとおりです。
server_name
: この引数を使用するのは、データベースがリモートの場合のみです。サーバーまたはそのIPアドレスの名前を入力できます。スクリプトをローカルで実行する場合は、-S server_name
引数を省略できます。
sa
: システム管理者のユーザー名を入力します。
sa_password
: システム管理者のパスワードを入力します。
このスクリプトでは、ユーザー・ロール監査用のユーザー・アカウントに次の権限が付与されます。
次の表に対するSELECT
master.dbo.sysdatabases master.dbo.syslogins master.dbo.sysloginroles master.dbo.syssrvroles master.dbo.sysattributes specific_database.sysusers specific_database.sysalternates specific_database.sysroles
(オプション)前述の権限を削除する必要がある場合には、ura_drop_db_permissions
スクリプトを実行します。
構文は、次のとおりです。
isql -S server_name -U sa -P sa_password -i ura_drop_db_permissions.sql
(オプション) ユーザー・ロール監査のユーザーを削除する必要がある場合には、Sybase ASEデータベースに対してura_drop_user
スクリプトを実行します。
構文は、次のとおりです。
isql -S server_name -U sa -P sa_password -i ura_add_user.sql
この項の内容は、次のとおりです。
Sybase SQL Anywhereを使用する前に、Linux用のSQL Anywhere ODBCドライバをインストールする必要があります。
Linux用のODBCドライバをインストールする手順は、次のとおりです。
Database Firewallサーバーにroot
ユーザーとしてログインします。
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.1
)から、スクリプトを実行するサーバーにdatabase
ディレクトリをコピーします。
このサーバーで、database/ura
ディレクトリに移動し、sqlanywhere
圧縮ファイルをsqlanywhere
というディレクトリ(推奨)に解凍します。
sqlanywhere
ディレクトリに移動して解凍したファイル(ura_setup.sql
)を確認し、これらのスクリプトのユーザーに付与される権限を理解します。
ura_setup
スクリプトには、次の情報に関する設定が含まれています。
$(username)
は、ユーザー・ロール監査を担当するユーザー・アカウントです。このユーザー・アカウントは、ユーザー・ロール監査および直接データベース問合せ(DDI) (ura_auditor
など)用に指定したユーザー・アカウントとは異なるユーザー・アカウントにすることが理想的です。
$(password)
は、このユーザー・アカウントのパスワードです。
ユーザーの作成およびユーザー権限の設定を行う権限が付与されたユーザーとして、SQL Anywhereデータベースに対してura_setup
スクリプトを実行します。
構文は、次のとおりです。
isql -S server_name -U sa -P password -i ura_setup.sql -v username="username" password="password" database="protected_database"
詳細は、次のとおりです。
server_name
: この引数を使用するのは、データベースがリモートの場合のみです。サーバーまたはそのIPアドレスの名前を入力できます。スクリプトをローカルで実行する場合は、-S server_name
引数を省略できます。
username
: スクリプトに$(username)
で指定された、ユーザー・ロール監査用に作成するユーザー・アカウントを入力します。このユーザー名は二重引用符で囲みます。
password
: スクリプトに$(password)
で指定された、ユーザー・ロール監査用のユーザー・アカウントのパスワードを入力します。このパスワードは二重引用符で囲みます。
database="
protected_database
"
: スクリプトに$(database)
で指定された、このサーバー内の保護対象データベースの名前を入力します。このデータベース名は二重引用符で囲みます。
次に例を示します。
isql -S my_server -U sa -P password -i ura_setup.sql -v username="ura_auditor" password="$(password)_password" database="sales_db"
ura_setup
スクリプトは、ユーザー・ロール監査用のユーザー・アカウントに次の権限が付与されます。
CONNECT
システム表に対するSELECT
sys.sysuser sys.sysuserauthority sys.sysremoteuser sys.sysloginmap sys.sysgroup
(オプション)前述の権限を削除する必要がある場合には、SQL Anywhereデータベースに対してura_drop
スクリプトを実行します。
構文は、次のとおりです。
isql -S server_name -U sa -P password -i ura_drop.sql -v username="username" password="password" database="protected_database"
スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインします。
詳細は、「管理コンソールへのログイン」を参照してください。
「Monitoring」ページの「Enforcement Points」メニューで、「List」をクリックします。
ユーザー・ロールを監視する強制ポイントを選択し、「Settings」ボタンをクリックします。
すべての強制ポイントは、指定されたデータベース・サーバーに対するSQLトラフィックも監視します。必要に応じて、強制ポイントは異なるサーバーにあるデータベース内のユーザー・ロールを監視できます。
「URA」チェック・ボックスを選択します。
URAの各フィールドとオプションを入力します。
Database Address、Port: 監査対象データベースが格納されているサーバーのIPアドレスを指定します。ポート番号については、データベースで使用するポート番号を入力します。(たとえば、Oracleデータベースのデフォルトのポート番号は1521です。Oracleデータベースについては、この情報はtnsnames.ora
ファイルで見つけることができます。)監査では、サーバー上のすべてのデータベースが対象になります。ドメイン・ネーム・サーバー(DNS)を使用している場合は、IPアドレスのかわりに、ホスト名を入力できます。
強制ポイントで指定されている保護対象データベースのIPアドレスは、監査には自動的に含まれません。
Database Name: データベースの名前。Oracleデータベースについては、tnsnames.ora
ファイルに定義されているサービス名を入力します。
User Name: 「URAに対するユーザー権限の設定」の説明に従って、スクリプトで作成したユーザーのユーザー名を入力します。
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」ページが表示されます。
「URA」領域で、「Activate User Role Auditing」チェック・ボックスの選択を解除します。