この章の内容は次のとおりです。
コマンド・ルールは、1つ以上のデータベース・オブジェクトに影響を与えるSELECT
、ALTER SYSTEM
、データベース定義言語(DDL)およびデータ操作言語(DML)文を保護するために作成するルールです。コマンド・ルールをカスタマイズして実行するには、1つ以上のルールの集合であるルール・セットにコマンド・ルールを関連付けます。コマンド・ルールは実行時に実施されます。コマンド・ルールは、オブジェクトが存在するレルムに関係なく、コマンド・ルールによって保護されるSQL文の使用を試みる全員に影響します。レルム固有のオブジェクトを保護する場合は、「レルム認可の定義」を参照してください。
コマンド・ルールには、コマンド・ルールのコマンドへの関連付けに加えて、次の属性があります。
コマンド・ルールで保護されるSQL文
コマンド・ルールが影響するオブジェクトの所有者
コマンド・ルールが影響するデータベース・オブジェクト
コマンド・ルールが有効かどうか
関連付けられているルール・セット
SQL文および操作の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。また、「コマンド・ルールで保護できるSQL文」も参照してください。
コマンド・ルールは、次のように分類できます。
範囲がシステム全体に及ぶコマンド・ルール。このタイプでは、データベース・インスタンスごとに1つのコマンド・ルールのみを作成できます。例として、ALTER SYSTEM
およびCONNECT
文のコマンド・ルールがあげられます。
スキーマ固有のコマンド・ルール。DROP TABLE
文のコマンド・ルールの作成は、この一例です。
オブジェクト固有のコマンド・ルール。コマンド・ルール定義に含まれる特定の表を使用してDROP TABLE
文を作成することは、この一例です。
コマンド・ルールの影響を受ける文をユーザーが実行すると、Oracle Database Vaultによって最初にレルム認可がチェックされます。レルム違反が検出されず、関連付けられているコマンド・ルールが有効な場合は、関連付けられているルール・セットがDatabase Vaultによって評価されます。すべてのルール・セットの評価がTRUEの場合、その文は認可されてさらに処理されます。評価がFALSEのルール・セットがある場合、その文は認可されずコマンド・ルール違反が作成されます。ルール・セットの詳細は、第5章「ルール・セットの構成」で説明しています。
通常の手順であるユーザー認証プロセス、ファクタの初期化およびOracle Label Securityの統合が完了した後に、セッションを許可または拒否するCONNECTイベントにファクタを使用するコマンド・ルールを定義できます。
たとえば、BIZAPP
スキーマ内で、CREATE TABLE
、DROP TABLE
およびALTER TABLE
などのDDL文が営業時間後に認可されるのは許可するが、営業時間中には許可しないというコマンド・ルールを構成できます。
Oracle Database Vaultに作成するコマンド・ルール上でレポートを実行できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。
この章では、Oracle Database Vault Administratorを使用してコマンド・ルールを構成する方法を説明します。Oracle Database Vaultが提供するPL/SQLインタフェースおよびパッケージを使用してコマンド・ルールを構成するには、次の章を参照してください。
表6-1に、Oracle Database Vaultが提供するデフォルトのコマンド・ルールを示します。
表6-1 デフォルトのコマンド・ルール
SQL文 | オブジェクト名 | ルール・セット名 |
---|---|---|
|
- |
アカウント/プロファイルを保守可能 |
|
- |
システム・パラメータのファイングレイン・コントロールを許可 |
|
- |
自分のアカウントを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
次に示す一連のコマンド・ルールは、ユーザー管理の職務分離の実現をサポートします。
ALTER PROFILE
ALTER USER
CREATE PROFILE
CREATE USER
DROP PROFILE
DROP USER
ユーザーにこれらのコマンドの使用権限を付与するには、ルール・セットによってチェックされるロールをユーザーに付与します。たとえば、CREATE USER
コマンド・ルールは、CREATE USER
文を実行しようとするユーザーにDV_ACCTMGR
ロールが付与されていることを確認します。
コマンド・ルールを使用して、次のSQL文を保護できます。
ALTER CLUSTER |
CREATE CONTEXT |
DROP DIRECTORY |
ALTER DIMENSION |
CREATE DATABASE LINK |
DROP FUNCTION |
ALTER FUNCTION |
CREATE DIMENSION |
DROP INDEX |
ALTER INDEX |
CREATE DIRECTORY |
DROP INDEXTYPE |
ALTER INDEXTYPE |
CREATE FUNCTION |
DROP JAVA |
ALTER JAVA |
CREATE INDEX |
DROP LIBRARY |
ALTER OPERATOR |
CREATE INDEXTYPE |
DROP OPERATOR |
ALTER OUTLINE |
CREATE JAVA |
DROP OUTLINE |
ALTER PACKAGE |
CREATE LIBRARY |
DROP PACKAGE |
ALTER PACKAGE BODY |
CREATE OPERATOR |
DROP PACKAGE BODY |
ALTER PROCEDURE |
CREATE OUTLINE |
DROP PROCEDURE |
ALTER PROFILE |
CREATE PACKAGE |
DROP PROFILE |
ALTER RESOURCE COST |
CREATE PACKAGE BODY |
DROP ROLE |
ALTER ROLE |
CREATE PROCEDURE |
DROP ROLLBACK SEGMENT |
ALTER ROLLBACK SEGMENT |
CREATE PROFILE |
DROP SEQUENCE |
ALTER SEQUENCE |
CREATE ROLE |
DROP SNAPSHOT |
ALTER SNAPSHOT |
CREATE ROLLBACK SEGMENT |
DROP SNAPSHOT LOG |
ALTER SNAPSHOT LOG |
CREATE SCHEMA |
DROP TABLE |
ALTER SYNONYM |
CREATE SEQUENCE |
DROP TABLESPACE |
ALTER SYSTEM |
CREATE SNAPSHOT |
DROP TRIGGER |
ALTER TABLE |
CREATE SNAPSHOT LOG |
DROP TYPE |
ALTER TABLESPACE |
CREATE SYNONYM |
DROP TYPE BODY |
ALTER TRIGGER |
CREATE TABLE |
DROP USER |
ALTER TYPE |
CREATE TABLESPACE |
DROP VIEW |
ALTER TYPE BODY |
CREATE TRIGGER |
EXECUTE |
ALTER USER |
CREATE TYPE |
GRANT |
ALTER VIEW |
CREATE TYPE BODY |
INSERT |
ANALYZE CLUSTER |
CREATE USER |
NOAUDIT |
ANALYZE INDEX |
CREATE VIEW |
RENAME |
ANALYZE TABLE |
DELETE |
REVOKE |
ASSOCIATE STATISTICS |
DISASSOCIATE STATISTICS |
SELECT |
AUDIT |
DROP CLUSTER |
TRUNCATE CLUSTER |
COMMENT |
DROP CONTEXT |
TRUNCATE TABLE |
CONNECT |
DROP DATABASE LINK |
UPDATE |
CREATE CLUSTER |
DROP DIMENSION |
DV_OWNER
またはDV_ADMIN
ロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。
ログイン方法は、「Oracle Database Vaultの起動」で説明されています。
「管理」ページの「Database Vault機能管理」で、「コマンド・ルール」をクリックします。
「コマンド・ルール」ページで次のようにします。
新しいコマンド・ルールを作成するには、「作成」をクリックします。
既存のコマンド・ルールを編集するには、リストからコマンド・ルールを選択して「編集」をクリックします。
「コマンド・ルールの作成」(または「コマンド・ルールの編集」)ページで、次の設定を入力して「OK」をクリックします。
一般
次の設定を入力します。
コマンド: コマンド・ルールを作成するSQL文または操作を選択します。この属性は必須です。
ステータス: 「有効」または「無効」のいずれかを選択し、実行時にコマンド・ルールを有効または無効にします。デフォルトは「有効」です。この属性は必須です。
適用性
次の設定を入力します。
オブジェクト所有者: リストから、コマンド・ルールが影響するオブジェクトの所有者を選択します。ワイルドカード文字%
を使用して、すべての所有者を選択できます。(ただし、ワイルドカード文字をテキストと一緒に使用することはできません。たとえば、EM%
を使用して、名前がEM
で始まるすべての所有者を選択することはできません。)この属性は、特定のスキーマ内のオブジェクトに提供するすべてのSQL文で必須です。サポートされているSQL文のリストは、「コマンド・ルールで保護できるSQL文」を参照してください。
SELECT
、INSERT
、UPDATE
、DELETE
およびEXECUTE
文は、すべての選択(%)、またはSYS
およびDVSYS
スキーマには使用できないことに注意してください。
オブジェクト名: コマンド・ルールが影響するデータベース・オブジェクトの名前を入力するか、%を指定してすべてのデータベース・オブジェクトを選択します。ただし、ワイルドカード文字をテキストと一緒に使用することはできません(たとえば、EMP_%
と入力して、文字EMP_
で始まるすべての表を指定することはできません)。「オブジェクト所有者」リストからオブジェクト所有者を選択した場合、この属性は必須です。
コマンド・ルールが影響するオブジェクト上でOracle Database Vaultレポートを実行できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。
ルール・セット
リストから、コマンド・ルールに関連付けるルール・セットを選択します。この属性は必須です。
ルール・セットの評価がTrueの場合、そのSQL文は成功します。評価がfalseの場合、その文は失敗し、Oracle Database Vaultによってコマンド・ルール違反が生成されます。(第18章で説明されている「コマンド・ルール構成の問題」レポートを使用して、ルール違反を追跡できます。)ルール・セットに関連付けられている監査およびカスタム・イベント処理は、コマンド・ルール処理の一部として発生します。
ルール・セットの詳細は、第5章「ルール・セットの構成」を参照してください。
コマンド・ルールを削除する前に、それに関連するOracle Database Vaultビューに問い合せることで、そのコマンド・ルールへの様々な参照を特定できます。詳細は、第16章「Oracle Database Vaultのデータ・ディクショナリ・ビュー」を参照してください。
Oracle Database Vaultの「管理」ページで、「コマンド・ルール」を選択します。
「コマンド・ルール」ページで、削除するコマンド・ルールを選択します。
「削除」をクリックします。
「確認」ページで「はい」をクリックします。
「レルムの動作」では、データベース・アカウントによりレルム内のオブジェクトに影響するSELECT
、DDLまたはDML文が発行された場合の動作を説明しています。
SELECT
、DDLまたはDML文が発行されると、次のアクションが実行されます。
Oracle Database Vaultが、適用する必要のあるすべてのコマンド・ルールを問い合せます。
SELECT
、DDLおよびDML文では、オブジェクト所有者およびオブジェクト名でワイルドカード表記を使用できるため、複数のコマンド・ルールが適用される場合があります。
ルール・セットは、コマンド・ルールおよびレルム認可の両方に関連付けることができます。Oracle Database Vaultにより、まずレルム認可ルール・セットが評価され、評価されるコマンド・タイプに適用するルール・セットが次に評価されます。
適用する各コマンド・ルールに関して、Oracle Database Vaultはそれに関連付けられているルール・セットを評価します。
適用可能なコマンド・ルールに関連付けられているルール・セットが1つでもFalseまたはエラーで返されると、Oracle Database Vaultによりそのコマンドの実行が阻止されます。それ以外の場合、コマンドは認可されてさらに処理されます。監査およびイベント・ハンドラに関するルール・セットの構成により、発生する監査またはカスタム処理が決定されます。
コマンド・ルールはオブジェクト権限より優先されます。コマンドまたはコマンドのルール・セットを無効(あるいはこれらに「無効」を設定)にできます。コマンド・ルールを無効にした場合、関連付けられているルール・セットに関係なく、コマンド・ルールは実行できません。つまり、コマンド・ルール自体が無効になります。ただし、コマンド・ルールのルール・セットを無効にした場合、ルール・セットはチェックされません。この場合、コマンド・ルールは無条件で実行を許可されます。コマンド・ルールが「無効」に設定されていると、表に対するSELECT
権限を持っていても、そのユーザーは表の問合せを実行できません。(コマンド・ルール自体ではなく、ルール・セットのみが無効になっている場合。)
この項の内容は次のとおりです。
関連項目: 違反発生時に電子メール・アラートを送信するために、どのようにコマンド・ルールとルール・セットが連携して機能するかを示す別の例は、「チュートリアル: セキュリティ違反の電子メール・アラートの作成」を参照してください。 |
ユーザーSCOTT
としてSQL*Plusにログインします。
sqlplus scott
Enter password: password
SCOTT
アカウントがロックされて無効になっている場合、Database Vaultアカウント・マネージャとしてログインし、SCOTT
のロックを解除し、新しいパスワードを作成します。次に例を示します。
sqlplus amalcolm_dvacctmgr Enter password: password ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY password;
password
をセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
CONNECT SCOTT
Enter password: password
ユーザーSCOTT
として、表を作成します。
CREATE TABLE t1 (num NUMBER);
表を削除します。
DROP TABLE t1;
この段階で、ユーザーSCOTT
は、表の作成および削除を行うことができます。SQL*Plusを終了せずに、SCOTT
として接続したままにします。後でSCOTT
が別の表を作成しようとするときに使用します。
DV_OWNER
またはDV_ADMIN
ロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。
ログイン方法は、「Oracle Database Vaultの起動」で説明されています。
Oracle Database Vault Administratorの「管理」ページで、「コマンド・ルール」をクリックします。
「コマンド・ルール」ページが表示されます。
「作成」をクリックします。
「コマンド・ルールの作成」ページが表示されます。
次の設定を入力します。
「コマンド」リスト: 「CREATE TABLE」を選択します。
ステータス: 「有効」に設定して、コマンド・ルールをアクティブにします。
オブジェクト所有者: 「SCOTT」を選択します。
オブジェクト名: %に設定して、SCOTT
スキーマ内のすべてのオブジェクトに適用します。
ルール・セット: 「無効」を選択して、ユーザーSCOTT
が表を作成できないようにします。
「OK」をクリックします。
Database Vault Administratorを終了しないでください。
コマンド・ルールは即時有効になります。ユーザーSCOTT
は、CREATE TABLEコマンド・ルールを作成する前の、先ほどまでいたユーザー・セッションにまだいるとしても、ただちに表を作成できなくなります。
SQL*Plusで、ユーザーSCOTT
としてログインしていることを確認します。
CONNECT SCOTT
Enter password: password
表を作成してみます。
CREATE TABLE t1 (num NUMBER);
次のような出力結果が表示されます。
ORA-47400: Command Rule violation for create table on SCOTT.T1
この例からわかるように、SCOTT
は、自身のスキーマ内でも、表を作成できなくなります。
Oracle Database Vault Administratorで、次の作業を実行します。
「コマンド・ルール」ページで、「CREATE TABLE」コマンド・ルールを選択して、「編集」をクリックします。
「コマンド・ルールの編集」ページで、「ルール・セット」リストから「有効」を選択します。
「OK」をクリックします。
SQL*Plusで、ユーザーSCOTT
として、表の作成を再試行します。
CREATE TABLE t1 (num NUMBER); Table created.
CREATE TABLEコマンド・ルールが「有効」に設定されたので、ユーザーSCOTT
は、再び表の作成が許可されるようになりました。(SQL*Plusを終了しないでください。)
Oracle Database Vault Administratorで、CREATE TABLEコマンド・ルールを次のように削除します。
「コマンド・ルール」ページに戻ります。
「CREATE TABLE」コマンド・ルールを選択して、「削除」をクリックします。
「確認」ページで「はい」をクリックします。
ユーザーSCOTT
としてSQL*Plusにログインし、t1
表を削除します。
DROP TABLE t1;
SCOTT
アカウントが使用可能である必要がなくなった場合、Database Vaultアカウント・マネージャとして接続し、次のALTER USER
文を入力します。
CONNECT amalcolm_dvacctmgr
Enter password: password
ALTER USER SCOTT ACCOUNT LOCK PASSWORD EXPIRE;
次に示すコマンド・ルール設計のガイドラインに従ってください。
維持が簡単であるため、ファイングレイン・コマンド・ルールを作成します。
たとえば、特定のスキーマ・オブジェクトでSELECT
文が発生しないようにする場合は、スキーマ・レベルでSELECT
文を阻止する一般的なコマンド・ルールを作成するのではなく、特定のスキーマ・オブジェクトでSELECT
文を阻止する複数のコマンド・ルールを設計します。
CONNECTイベントにルールを作成する場合、必要なユーザー接続を間違えてロックアウトしないロジックを慎重に指定してください。アカウントが誤ってロックアウトされた場合、DV_ADMIN
またはDV_OWNER
ロールを付与されたユーザーに、ロックアウト問題の原因となっているルールにログインして修正してもらうようにしてください。CONNECTコマンドは、DV_OWNER
ロールとDV_ADMIN
ロールを持つユーザーには適用されません。これにより、不適切に構成されたCONNECTコマンド・ルールで完全なロックアウトが生じることはありません。
アカウントがロックアウトされている場合は、Oracle Database Vaultを無効にして、ロックアウトの問題の原因となっているルールを修正し、再びOracle Database Vaultを有効にします。Oracle Database Vaultが無効な場合でも、Database Vault AdministratorとDatabase Vault PL/SQLパッケージはまだ使用できます。Database Vaultの無効化および再有効化の手順は、付録B「Oracle Database Vaultの無効化および有効化」を参照してください。
管理タスクに対して有効なコマンド・ルールを一時的に緩和することが必要な場合があります。コマンド・ルールを無効にするのではなく、セキュリティ管理者(DV_ADMIN
またはDV_OWNER
ロールが付与されているアカウント)をログインさせて、ルール・セットを「有効」にし、有効という名前のデフォルト・ルール・セットの「成功時または失敗時に監査」をオンにします。タスクが完了したら、コマンド・ルールを元のルール・セットに戻します。
コマンド・ルールの設計時には、処理が不用意に無効にされる可能性があるため、バックアップなどの自動プロセスを考慮するようにしてください。使用中のプログラム、使用中のアカウントまたはクライアント・プログラムが稼働中のコンピュータやネットワークなど、一連のOracle Database VaultファクタがTrueであることが明白な場合には、コマンドを許可するルールを作成することでこれらのタスクを把握できます。
コマンド・ルールのパフォーマンスは、そのコマンド・ルールに関連付けられているルール・セット内のルールの複雑さに依存します。たとえば、実行に5秒かかるPL/SQLファンクションを起動するルール・セットがあるとします。この場合、このルール・セットを使用するコマンド・ルールでは、実行するコマンド文へのアクセス権の付与に5秒かかります。
Oracle Enterprise Manager(デフォルトでOracle DatabaseとともにインストールされるOracle Enterprise Manager Database Controlを含む)、Statspack
およびTKPROF
などのツールを実行してシステム・パフォーマンスを確認できます。Oracle Enterprise Managerの詳細は、Oracle Enterprise Managerのドキュメント・セットを参照してください。Database Controlの詳細は、オンライン・ヘルプを参照してください。Statspack
およびTKPROF
ユーティリティについては、『Oracle Databaseパフォーマンス・チューニング・ガイド』で説明されています。
表6-2に、コマンド・ルールの分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第18章「Oracle Database Vaultレポート」を参照してください。
表6-2 コマンド・ルールに関連するレポート
レポート | 説明 |
---|---|
|
コマンド・ルールを処理する操作により生成された監査レコードが表示されます。 |
|
コマンド・ルールに存在するその他の構成問題に加え、ルール違反が追跡されます。 |
|
コマンド・ルールが影響するオブジェクト権限が表示されます。 |
|
コマンド・ルールが影響するオブジェクトが表示されます。 |
|
ルールが定義されていないか、有効ではなく、それらを使用するコマンド・ルールに影響を与える可能性があるルール・セットが表示されます。 |
DVSYS.DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを使用すると、コマンド・ルールで保護されているSQL文を検出できます。詳細は、「DVSYS.DBA_DV_COMMAND_RULEビュー」を参照してください。