コマンド・ルールを作成するか、デフォルトのコマンド・ルールを使用すると、DDL文およびDML文を保護できます。
内容は次のとおりです。
コマンド・ルールは、ALTER SESSION
などのOracle Database SQL文によるOracle Database Vaultの保護に使用します。
内容は次のとおりです。
コマンド・ルールは、1つ以上のデータベース・オブジェクトに影響を与えるOracle Database SQL文を保護します。
これらの文には、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
のルール・セットがある場合、その文の実行は許可されずコマンド・ルール違反が生じます。ルール・セットの詳細は、「ルール・セットの構成」で説明します。
通常の手順であるユーザー・ファクタの初期化、ユーザー認証プロセス、およびOracle Label Securityの統合が完了した後に、セッションを許可または拒否する、CONNECT
イベントのファクタを使用するコマンド・ルールを定義できます。
たとえば、BIZAPP
スキーマ内で、CREATE TABLE
、DROP TABLE
およびALTER TABLE
などのDDL文が営業時間後に認可されるのは許可するが、営業時間中には許可しないというコマンド・ルールを構成できます。
Oracle Database Vaultに作成するコマンド・ルール上でレポートを実行できます。
関連項目:
コマンド・ルールに関する詳細を知るために実行できるレポートについては、「コマンド・ルールに関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください
DBMS_MACADM
PL/SQLパッケージの使用によるコマンド・ルールの構成の詳細は、Oracle Database Vaultコマンド・ルールのAPIを参照してください
Oracle Database Vaultには、よく使用されるSQL文に基づいてデフォルト・コマンド・ルールが用意されています。
表7-1に、デフォルトのDatabase Vaultコマンド・ルールを示します。
表7-1 デフォルトのコマンド・ルール
SQL文 | オブジェクト名 | ルール・セット名 |
---|---|---|
|
- |
アカウント/プロファイルを保守可能 |
|
- |
自分のアカウントを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
アカウント/プロファイルを保守可能 |
|
- |
システム・パラメータのファイングレイン・コントロールを許可 |
|
- |
自分のアカウントを保守可能脚注1 |
脚注1
「自分のアカウントを保守可能」ルールで参照される実際のSQL文は、PASSWORD
です。
コマンド・ルールを使用して、多数のSQL文を保護できます。
保護できるSQL文は、次のとおりです。
SQL文A-C | SQL文C-D | SQL文D-U |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
関連項目:
マルチテナント・コンテナ・データベース(CDB)におけるCREATE PLUGGABLE DATABASE
、ALTER PLUGGABLE DATABASE
およびDROP PLUGGABLE DATABASE
の使用の詳細は、「マルチテナント環境におけるコマンド・ルール」を参照してください
コマンド・ルールを削除する前に、それに関連するOracle Database Vaultビューに問い合せることで、そのコマンド・ルールへの様々な参照を特定できます。
関連項目:
コマンド・ルール関連のData 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によりそのコマンドの実行が阻止されます。それ以外の場合、コマンドは認可されてさらに処理されます。監査およびイベント・ハンドラに関するルール・セットの構成により、発生する監査またはカスタム処理が決定されます。
コマンド・ルールはオブジェクト権限より優先されます。つまり、オブジェクトの所有者であっても、オブジェクトがコマンド・ルールで保護される場合、そのオブジェクトにアクセスできません。コマンド・ルールまたはコマンドのルール・セットのいずれかを無効にすることができます。コマンド・ルールを無効にする場合、コマンド・ルールは、その処理の確認を行いません。ルール・セットを無効にする場合、ルール・セットの評価は常にTRUE
になります。ただし、特定のコマンドに対してコマンド・ルールを無効にする場合、ルール・セットが他のコマンド・ルールやレルム認可に関連付けられている可能性があるため、コマンド・ルールを無効にする必要があります。
このチュートリアルでは、ユーザーにSCOTT
スキーマでの表の作成を可能にするかどうかを制御する、簡単なローカル・コマンド・ルールを作成します。
内容は次のとおりです。
最初に、ユーザーSCOTT
として表を作成する必要があります。
この段階で、ユーザーSCOTT
は、表の作成および削除を行うことができます。SQL*Plusを終了せずに、SCOTT
として接続したままにします。後でSCOTT
が別の表を作成しようとするときに使用します。
SCOTT
スキーマで表の作成後、コマンド・ルールを作成できます。
コマンド・ルールは即時有効になります。ユーザーSCOTT
は、CREATE TABLEコマンド・ルールを作成する前の、先ほどまでいたユーザー・セッションにまだいるとしても、ただちに表を作成できなくなります。
これで、いつでもCREATE TABLEローカル・コマンド・ルールをテストできます。
SQL*Plusで、ユーザーSCOTT
としてログインしていることを確認します。
CONNECT SCOTT --Or, CONNECT SCOTT@hrpdb 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
としてデータベース・インスタンスにログインして、t1
表を削除します。
DROP TABLE t1;
SCOTT
アカウントが使用可能である必要がなくなった場合、Database Vaultアカウント・マネージャとして接続し、次のALTER USER
文を入力します。
CONNECT bea_dvacctmgr --Or, CONNECT bea_dvacctmgr@hrpdb Enter password: password ALTER USER SCOTT ACCOUNT LOCK PASSWORD EXPIRE;
Oracleでは、コマンド・ルール設計のガイドラインを提供しています。
維持が簡単であるため、ファイングレイン・コマンド・ルールを作成します。
たとえば、特定のスキーマ・オブジェクトで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の無効化および再有効化の手順は、「Oracle Database Vaultの無効化および有効化」を参照してください。
管理タスクに対して有効なコマンド・ルールを一時的に緩和することが必要な場合があります。コマンド・ルールを無効にするのではなく、セキュリティ管理者(DV_ADMIN
またはDV_OWNER
ロールが付与されているアカウント)をログインさせて、ルール・セットを「有効」にし、有効という名前のデフォルト・ルール・セットの「成功時または失敗時に監査」をオンにします。タスクが完了したら、コマンド・ルールを元のルール・セットに戻します。(統合監査環境では、この設定が機能しないことに注意してください。かわりに、統合監査ポリシーを作成する必要があります。Database Vaultの統合監査ポリシーの作成方法については、『Oracle Databaseセキュリティ・ガイド』で説明します)。
コマンド・ルールの設計時には、処理が不用意に無効にされる可能性があるため、バックアップなどの自動プロセスを考慮するようにしてください。使用中のプログラム、使用中のアカウントまたはクライアント・プログラムが稼働中のコンピュータやネットワークなど、一連のOracle Database VaultファクタがTrueであることが明白な場合には、コマンドを許可するルールを作成することでこれらのタスクを把握できます。
コマンド・ルールのパフォーマンスは、そのコマンド・ルールに関連付けられているルール・セット内のルールの複雑さに依存します。
たとえば、実行に5秒かかるPL/SQLファンクションを起動するルール・セットがあるとします。この場合、このルール・セットを使用するコマンド・ルールでは、実行するコマンド文へのアクセス権の付与に5秒かかります。
システム・パフォーマンスを確認するには、Oracle Enterprise Manager(Oracle Databaseと一緒にデフォルトでインストールされるOracle Enterprise Manager Cloud Controlを含む)、自動ワークロード・リポジトリ(AWR)およびTKPROF
などのツールを実行します。
関連項目:
データベース・パフォーマンスの監視方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください
個々のSQL文およびPL/SQL文の実行を監視するには、『Oracle Database SQLチューニング・ガイド』を参照してください
Oracle Database Vaultには、コマンド・ルールの分析に役立つレポートとデータ・ディクショナリ・ビューが用意されています。
表7-2に、Oracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、「Oracle Database Vaultレポート」を参照してください。
表7-2 コマンド・ルールに関連するレポート
レポート | 説明 |
---|---|
コマンド・ルールを処理する操作により生成された監査レコードが表示されます。 |
|
コマンド・ルールに存在するその他の構成問題に加え、ルール違反が追跡されます。 |
|
コマンド・ルールが影響するオブジェクト権限が表示されます。 |
|
コマンド・ルールが影響するオブジェクトが表示されます。 |
|
ルールが定義されていないか、有効ではなく、それらを使用するコマンド・ルールに影響を与える可能性があるルール・セットが表示されます。 |
DVSYS.DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを使用すると、コマンド・ルールで保護されているSQL文を検出できます。詳細は、「DVSYS.DBA_DV_COMMAND_RULEビュー」を参照してください。