6 ルール・セットの構成
ルール・セットにより1つ以上のルールがグループ化され、ルールによりユーザーがオブジェクトでアクションを実行できるかどうかが決定されます。
- ルール・セットの概要
ルール・セットとは、1つ以上のルールの集合です。 - マルチテナント環境におけるルール・セットとルール
マルチテナント環境では、PDBまたはアプリケーション・ルートでルール・セットおよびその関連付けられたルールを作成できます。 - リリース12.2より前のリリースのデフォルト・ルールおよびデフォルト・ルール・セット
以前のリリースで提供されていた多数のデフォルト・ルールおよびデフォルト・ルール・セットは、サポートされなくなりましたが、現在のOracle Databaseインストールで使用されている場合があります。 - デフォルトのルール・セット
Oracle Database Vaultにはデフォルトで一連のルール・セットが用意されており、ニーズにあわせてカスタマイズできます。 - ルール・セットの作成
ルール・セットを作成するには、まずルール・セットを作成し、次にそのルール・セットを編集して1つ以上のルールに関連付けることができます。 - ルール・セットに追加するルールの作成
ルールは制御する動作を定義し、ルール・セットは名前付きのルールの集合です。 - Oracle Database Vaultコンポーネントへのルール・セット参照の削除
ルール・セットを削除する前に、ルール・セットのOracle Database Vaultコンポーネントへの参照を削除する必要があります。 - ルール・セットの削除
Enterprise Manager Cloud Controlを使用して、ルール・セットへの参照を見つけてからルール・セットを削除できます。 - ルール・セットの動作
ルール・セットの動作を理解すると、より効果的なルール・セットを作成できます。 - チュートリアル: セキュリティ違反の電子メール・アラートの作成
このチュートリアルは、UTL_MAIL
PL/SQLパッケージおよびアクセス制御リストを使用して、セキュリティ違反の電子メール・アラートを作成する方法を示します。 - チュートリアル: 二人制整合性(デュアル・キー・セキュリティ)の構成
このチュートリアルでは、Oracle Database Vaultを使用して2人のユーザーの認可を制御する方法を示します。 - ルール・セット設計のガイドライン
Oracleでは、ルール・セット設計のガイドラインを提供しています。 - ルール・セットのパフォーマンスへの影響
ルールの数および複雑さにより、データベースのパフォーマンスが低下する場合があります。 - ルール・セットとルールに関連するレポートおよびデータ・ディクショナリ・ビュー
Oracle Database Vaultには、ルール・セットおよびそれに含まれるルールの分析に役立つ、レポートとデータ・ディクショナリ・ビューが用意されています。
6.1 ルール・セットの概要
ルール・セットとは、1つ以上のルールの集合のことです。
ルール・セットは、レルム認可、ファクタ割当て、コマンド・ルールまたはセキュア・アプリケーション・ロールに関連付けることができます。
ルール・セットは、それに含まれる各ルールと評価タイプ(「すべてのTrue」または「いずれかTrue」)に基づいて、trueまたはfalseに評価されます。ルール・セット内のルールは、TrueまたはFalseと評価されるPL/SQL式です。ルールを作成し、そのルールを複数のルール・セットに追加できます。
ルール・セットを使用して次のアクティビティを実行できます。
-
レルム認可がアクティブになる条件の定義(レルム認可をさらに制限することが目的)
-
コマンド・ルールを許可する時期の定義
-
セキュア・アプリケーション・ロールの有効化
-
ファクタのアイデンティティを割り当てる時期の定義
ルール・セットを作成すると、レルムの認証、コマンド・ルール、ファクタまたはセキュア・アプリケーション・ロールの構成時に選択できるようになります。
6.2 マルチテナント環境におけるルール・セットとルール
マルチテナント環境では、PDBまたはアプリケーション・ルートでルール・セットおよびその関連付けられたルールを作成できます。
共通レルムでは、関連付けられたレルムまたはコマンド・ルールをDatabase Vaultで評価するときに、共通ルール・セットを使用する必要があります。共通ルール・セットとそのルールは、アプリケーション・ルートでのみ作成できます。共通ルール・セットは、作成後、共通ルール・セットを作成したルートに関連付けられているすべてのコンテナ内に存在します。共通ルール・セットは、共通ルールのみを含むことができます。
共通ルール・セットとそのルールを構成するには、DV_OWNER
またはDV_ADMIN
ロールが共通で付与されている必要があります。
関連トピック
親トピック: ルール・セットの構成
6.3 リリース12.2より前のリリースのデフォルト・ルールおよびデフォルト・ルール・セット
以前のリリースで提供されていた多数のデフォルト・ルールおよびデフォルト・ルール・セットは、サポートされなくなりましたが、現在のOracle Databaseインストールで使用されている場合があります。
Oracle Databaseリリース12.2より前のリリースのデフォルト・ルールおよびデフォルト・ルール・セットを使用している場合、Oracle Databaseでは、それらは、独自の用途のためにカスタマイズしてあった場合にはアップグレード中に削除されません。これらのルールおよびルール・セットをカスタマイズした場合、またはこれらの古いデフォルト・ルール・セットを使用する場合は、ALTER SYSTEMおよびALTER SESSIONコマンド・ルールを使用することで、カスタマイズしたそれらのルールおよびルール・セットを再実装してから、古いルールおよびルール・セットを無効化し削除することをお薦めします。これらのルールおよびルール・セットをカスタマイズしていない場合、または使用しない場合は、以降のデフォルトのコマンド・ルールで同じ機能を使用できるため、以前のルールおよびルール・セットを削除する必要があります。
関連トピック
親トピック: ルール・セットの構成
6.4 デフォルトのルール・セット
Oracle Database Vaultにはデフォルトで一連のルール・セットが用意されており、ニーズにあわせてカスタマイズできます。
DBA_DV_RULE_SET
データ・ディクショナリ・ビューを問い合せることで、ルール・セットをすべて示すリストを確認できます。ルール・セットに関連付けられているルールを確認するには、DBA_DV_RULE_SET_RULE
データ・ディクショナリ・ビューを問い合せます。
デフォルトのルール・セットは次のとおりです。
-
データファイル・ヘッダーのダンプを許可: このルール・セットは、データ・ブロックのダンプを防ぎます。
-
システム変更用のファイングレイン・コントロールを許可: このルール・セットにより、ユーザーが
ALTER SYSTEM
SQL文を使用して初期化パラメータを設定できるかどうかを制御できるようになります。 -
システム・パラメータのファイングレイン・コントロールを許可: ノート: このルール・セットは非推奨になりました。
このルール・セットにより、システム・セキュリティ、ダンプまたは宛先の場所、バックアップとリストアの設定、オプティマイザの設定、PL/SQLデバッグおよびセキュリティ・パラメータを管理する初期化パラメータを非常に柔軟にきめ細かく制御できるようになります。これは、このルール・セットに関連付けられたルールに基づいて、次の初期化パラメータに影響します。
-
「バックアップ・リストア・パラメータが許可されているか」のルール:
RECYCLEBIN
を設定できません(ただしリサイクルビンの無効化は妨げられません)。 -
「データベース・ファイル・パラメータが許可されているか」のルール:
CONTROL_FILES
を設定できません。 -
「オプティマイザ・パラメータが許可されているか」のルール:
OPTIMIZER_SECURE_VIEW_MERGING = FALSE
を設定できます(ただしTRUE
は指定できません)。 -
「PL-SQLパラメータが許可されているか」のルール:
PLSQL_DEBUG = FALSE
を設定できます(ただし、TRUE
は指定できません)。 -
「セキュリティ・パラメータが許可されているか」のルール: 次のパラメータを設定できません。
パラメータA-A パラメータO-S AUDIT_SYS_OPERATIONS = FALSE
OS_ROLES = TRUE
AUDIT_TRAIL = NONE
またはFALSE
REMOTE_OS_ROLES = TRUE
AUDIT_SYSLOG_LEVEL
SQL92_SECURITY = FALSE
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
-
-
セッションを許可: データベースにセッションを作成する権限を制御します。このルール・セットを使用すると、CONNECTコマンド・ルールを使用してデータベース・ログインを制御するためのルールを追加できます。CONNECTコマンド・ルールは、その使用が必要なプログラムへの
SYSDBA
アクセスの制御または制限に有用です。このルール・セットは移入されていません。 -
VPD管理権限を付与可能:
GRANT
およびREVOKE
文を使用して、Oracle Virtual Private DatabaseのDBMS_RLS
パッケージのGRANT EXECUTE
またはREVOKE EXECUTE
権限を付与する権限を制御します。 -
アカウント/プロファイルを保守可能:
CREATE USER
、DROP USER
、CREATE PROFILE
、ALTER PROFILE
またはDROP PROFILE
文を使用して、ユーザー・アカウントおよびプロファイルを管理するロールを制御します。 -
自分のアカウントを保守可能:
DV_ACCTMGR
ロールのあるアカウントを許可し、ALTER USER
文を使用したユーザー・アカウントおよびプロファイルの管理を可能にします。また、ALTER USER
文を使用した、個々のアカウントによる個人のパスワードの変更を許可します。DV_ACCTMGR
ロールの詳細は、「DV_ACCTMGR Database Vaultアカウント・マネージャ・ロール」を参照してください。 -
無効: レルム、コマンド・ルール、ファクタおよびセキュア・アプリケーション・ロールを迅速に無効にするための簡易ルール・セットです。
-
有効: システム機能を迅速に有効にするための簡易ルール・セットです。
-
AUDIT_SYS_OPERATIONSをFalseに設定することはできません:
AUDIT_SYS_OPERATIONS
初期化パラメータがFALSE
に設定されないようにします。統合監査が有効になっている場合は、AUDIT_SYS_OPERATIONS
パラメータの効果はありません。 -
OPTIMIZER_SECURE_VIEW_MERGINGをTrueに設定することはできません:
OPTIMIZER_SECURE_VIEW_MERGING
初期化パラメータがTRUE
に設定されないようにします。 -
OS_ROLESをTrueに設定することはできません:
OS_ROLES
初期化パラメータがTRUE
に設定されないようにします。 -
PLSQL_DEBUGをTrueに設定することはできません:
PLSQL_DEBUG
初期化パラメータがTRUE
に設定されないようにします。 -
REMOTE_OS_ROLESをTrueに設定することはできません:
REMOTE_OS_ROLES
初期化パラメータがTRUE
に設定されないようにします。 -
SQL92_SECURITYをFalseに設定することはできません:
SQL92_SECURITY
がFALSE
に設定されないようにします。 -
AUDIT_TRAILをオフにすることはできません:
AUDIT_TRAIL
初期化パラメータが無効にされないようにします。統合監査が有効になっている場合は、AUDIT_TRAIL
パラメータの効果はありません。
親トピック: ルール・セットの構成
6.5 ルール・セットの作成
ルール・セットを作成するには、まずルール・セットを作成し、次にそのルール・セットを編集して1つ以上のルールに関連付けることができます。
関連項目:
-
DVSYS.AUDIT_TRAIL$
表の監査レコードの詳細は、「Oracle Database Vaultの監査」を参照してください -
Database Vaultの統合監査ポリシーの作成については、『Oracle Databaseセキュリティ・ガイド』を参照してください
親トピック: ルール・セットの構成
6.6 ルール・セットに追加するルールの作成
ルールは制御する動作を定義し、ルール・セットは名前付きのルールの集合です。
- ルールの作成について
ルールは、ルール・セットの作成プロセス中またはそれに関係なく作成できます。 - デフォルト・ルール
デフォルト・ルールとは、アクションがtrueとfalseのいずれに評価されるかのチェックなど、一般的に使用される動作が含まれるルールです。 - 新規ルールの作成
Enterprise Manager Cloud Controlに新しいルールを作成できます。 - 既存のルールのルール・セットへの追加
1つ以上のルールを作成すると、Enterprise Manager Cloud Controlを使用してルール・セットに追加できます。 - ルール・セットからのルールの削除
ルール・セットからルールを削除する前に、Cloud Controlを使用してそのルールへの様々な参照を見つけることができます。
親トピック: ルール・セットの構成
6.6.1 ルールの作成について
ルールは、ルール・セットの作成プロセス中またはそれに関係なく作成できます。
ルールを作成したら、ルール・セットを1つ以上の追加ルールに関連付けられます。
ルール・セットの作成プロセス中に新しいルールを作成する場合、そのルールは、現在のルール・セットに自動で追加されます。既存のルールをルール・セットに追加することもできます。また、ルール・セットにルールを追加せずに、今後作成するルール・セットのテンプレートとして使用することもできます。
ルールをルール・セットに必要なだけ追加できますが、適切な設計とパフォーマンスの向上のために、ルール・セットを簡単にしておく必要があります。その他のアドバイスについては、「ルール・セットの設計のガイドライン」を参照してください。
ルール・セットの評価は、評価オプション(「すべてTrue」または「いずれかTrue」)を使用するルールの評価に依存します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueに評価します。
関連トピック
親トピック: ルール・セットに追加するルールの作成
6.6.2 デフォルト・ルール
デフォルト・ルールとは、アクションがtrueとfalseのいずれに評価されるかのチェックなど、一般的に使用される動作が含まれるルールです。
DBA_DV_RULE
データ・ディクショナリ・ビューを問い合せることで、ルールをすべて示すリストを確認できます。表6-1に、現在のデフォルトOracle Databaseルールを示します。
表6-1 Oracle Database Vaultの現在のデフォルト・ルール
ルール | 説明 |
---|---|
バックアップ・リストア・パラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 現在のSQL文が |
データベース・ファイル・パラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 現在のSQL文が制御ファイル関連の構成を変更しようとするかどうかを確認します。 |
ダンプ・パラメータが許可されているか |
現在のSQL文がダンプの宛先に関連する初期化パラメータを変更しようとするかどうかを確認します。 |
宛先パラメータが許可されているか |
現在のSQL文がダンプのサイズ制限に関連する初期化パラメータを変更しようとするかどうかを確認します。 |
ダンプまたは宛先パラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 現在のSQL文が、ダンプのサイズ制限や宛先に関連する初期化パラメータを変更しようとするかどうかを確認します。 |
オプティマイザ・パラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 現在のSQL文が |
PL-SQLパラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 現在のSQL文が、 |
セキュリティ・パラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 次の初期化パラメータを無効にしようとするかどうかを確認します。
統合監査が有効な場合、 このルールにより、次のパラメータは有効になりません。
|
システム・セキュリティ・パラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 次のパラメータが変更しないようにします。
|
False |
|
Alter DVSYSが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 ログインしたユーザーが、他のユーザーに対する |
データベース管理者であるか |
ユーザーに |
Drop Userが許可されているか |
ログインしたユーザーがユーザーを削除できるかどうかを確認します。 |
ブロックのダンプが許可されているか |
ブロックのダンプが許可されているかどうかを確認します。 |
月の最初の日であるか |
指定した日が月の最初の日であるかどうかを確認します。 |
ラベル管理者であるか |
ユーザーに |
月の最後の日であるか |
指定した日が月の最後の日であるかどうかを確認します。 |
_dynamic_rls_initパラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。
|
パラメータ値がFalseか |
指定したパラメータ値が |
パラメータ値がNoneか |
指定したパラメータ値が |
パラメータ値がFalseでないか |
指定したパラメータ値が |
パラメータ値がNoneでないか |
指定したパラメータ値が |
パラメータ値がOffでないか |
指定したパラメータ値が |
パラメータ値がOnでないか |
指定したパラメータ値が |
パラメータ値がTrueでないか |
指定したパラメータ値が |
パラメータ値がOffか |
指定したパラメータ値が |
パラメータ値がOnか |
指定したパラメータ値が |
パラメータ値がTrueか |
指定したパラメータ値が |
SYSまたはSYSTEMユーザーであるか |
ユーザーが |
セキュリティ管理者であるか |
ユーザーに |
セキュリティ所有者であるか |
ユーザーに |
ユーザー・マネージャであるか |
ユーザーに |
_system_trig_enabledパラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 ユーザーが次のシステム・パラメータを変更しようとするかどうかを確認しますが、データベース・リカバリ操作では、このルールにより、これらのパラメータの変更が許可されます。
統合監査が有効な場合、 |
o7_dictionary_accessibilityパラメータが許可されているか |
ノート: このデフォルト・ルールは非推奨になりました。 現在のSQL文が |
ログイン・ユーザーがオブジェクト・ユーザーである |
ログインしたユーザーが、現在のSQL文で変更されようとしているユーザーと同じであるかどうかを確認します。 |
EXEMPT ACCESS POLICYロールがない |
ユーザーに |
エクスポート・セッションではない |
廃止 |
True |
|
親トピック: ルール・セットに追加するルールの作成
6.6.4 既存のルールのルール・セットへの追加
1つ以上のルールを作成すると、Enterprise Manager Cloud Controlを使用してルール・セットに追加できます。
親トピック: ルール・セットに追加するルールの作成
6.6.5 ルール・セットからのルールの削除
ルール・セットからルールを削除する前に、Cloud Controlを使用してそのルールへの様々な参照を見つけることができます。
ルール・セットからルールを削除しても、そのルールはまだ存在します。必要に応じて、そのルールをその他のルール・セットに関連付けることができます。ルールを削除する場合、「ルール」ページから行うことができます。
親トピック: ルール・セットに追加するルールの作成
6.7 Oracle Database Vaultコンポーネントへのルール・セット参照の削除
ルール・セットを削除する前に、ルール・セットのOracle Database Vaultコンポーネントへの参照を削除する必要があります。
親トピック: ルール・セットの構成
6.8 ルール・セットの削除
Enterprise Manager Cloud Controlを使用して、ルール・セットへの参照を見つけてからルール・セットを削除できます。
親トピック: ルール・セットの構成
6.9 ルール・セットの動作
ルール・セットの動作を理解すると、より効果的なルール・セットを作成できます。
- Oracle Database Vaultによるルールの評価方法
Oracle Database Vaultは、ルール・セット内のルールを式の集合として評価します。 - ルール・セット内でのネストされたルール
ルール・セット内に1つ以上のルールをネストできます。 - 1人のユーザーを除く全員に適用するルールの作成
1人のユーザー(たとえば特権ユーザー)を除く全員に適用するルールを作成することも可能です。
親トピック: ルール・セットの構成
6.9.1 Oracle Database Vaultによるルールの評価方法
ルール・セット内のルールは、式の集合として評価されます。
「評価オプション」が「すべてTrue」に設定されている場合にルールの評価に失敗すると、ルール・セット内の残りのルールの評価は試行されず、その時点で評価が停止します。同様に、「評価オプション」が「いずれかTrue」に設定されている場合にルールがTrueと評価されると、評価はその時点で停止します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueと評価します。
親トピック: ルール・セットの動作
6.9.2 ルール・セット内でのネストされたルール
ルール・セット内に1つ以上のルールをネストできます。
たとえば、Is Corporate Network During Maintenanceという、次の2つのタスクを実行するネストされたルールを作成するとします。
-
データベース・セッションが企業ネットワーク内から発生した場合のみ、表の変更を制限します。
-
午後10時から午後10時59分の間にスケジュールされているシステム・メンテナンス・ウィンドウに、表の変更を制限します。
ルールの定義は次のようになります。
DVF.F$NETWORK = 'Corporate' AND TO_CHAR(SYSDATE,'HH24') between '22' AND '23'
親トピック: ルール・セットの動作
6.9.3 1人のユーザーを除く全員に適用するルールの作成
1人のユーザー(たとえば特権ユーザー)を除く全員に適用するルールを作成することも可能です。
-
特定のユーザーを除外するルールを作成するには、
SYS_CONTEXT
ファンクションを使用します。
たとえば:
SYS_CONTEXT('USERENV','SESSION_USER') = 'SUPERADMIN_USER' OR additional_rule
現行ユーザーが特権ユーザーの場合、システムでは、additional_rule
は評価されず、ルールはTrueに評価されます。現行ユーザーが特権ユーザーでない場合、ルールの評価はadditional_rule
の評価によって決まります。
親トピック: ルール・セットの動作
6.10 チュートリアル: セキュリティ違反の電子メール・アラートの作成
このチュートリアルは、UTL_MAIL
PL/SQLパッケージおよびアクセス制御リストを使用して、セキュリティ違反の電子メール・アラートを作成する方法を示します。
- このチュートリアルについて
チュートリアルでは、ユーザーがメンテナンス期間外に表を変更しようとしたときに送信される、電子メール・アラートを作成します。 - ステップ1: UTL_MAIL PL/SQLパッケージのインストールおよび構成
手動でインストールする必要があるUTL_MAIL
PL/SQLパッケージには、電子メール通知を管理するためのプロシージャが含まれています。 - ステップ2: 電子メール・セキュリティ・アラートPL/SQLプロシージャの作成
ユーザーleo_dvowner
は、CREATE PROCEDURE
文を使用して、電子メール・セキュリティ・アラートを作成できます。 - ステップ3: ネットワーク・サービス用のアクセス制御リストの構成
UTL_MAIL
を使用するには、あらかじめ、外部ネットワーク・サービスに対してファイングレイン・アクセスを有効にするアクセス制御リスト(ACL)を構成する必要があります。 - ステップ4: 電子メール・セキュリティ・アラートを使用するためのルール・セットおよびコマンド・ルールの作成
ルール・セットおよびコマンド・ルールを作成するには、DBMS_MACADM
PL/SQLパッケージを使用します。 - ステップ5: 電子メール・セキュリティ・アラートのテスト
アラートを作成すると、テストする準備ができます。 - ステップ6: このチュートリアルのコンポーネントの削除
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
親トピック: ルール・セットの構成
6.10.1 このチュートリアルについて
チュートリアルでは、ユーザーがメンテナンス期間外に表を変更しようとしたときに送信される、電子メール・アラートを作成します。
これを行うには、メンテナンスの時間帯を設定するルールを作成し、このルールをルール・セットに追加してから、ユーザーに表の変更を許可するコマンド・ルールを作成する必要があります。次に、ルール・セットをこのコマンド・ルールに関連付けます。これにより、ユーザーがメンテナンスの時間帯以外にALTER TABLE
SQL文を使用しようとすると、電子メール・アラートが送信されます。
ノート:
このチュートリアルを実行するには、SMTPサーバーがあるデータベースを使用する必要があります。
6.10.2 ステップ1: UTL_MAIL PL/SQLパッケージのインストールおよび構成
手動でインストールする必要があるUTL_MAIL
PL/SQLパッケージには、電子メール通知を管理するためのプロシージャが含まれています。
6.10.3 ステップ2: 電子メール・セキュリティ・アラートPL/SQLプロシージャの作成
ユーザーleo_dvowner
は、CREATE PROCEDURE
文を使用して、電子メール・セキュリティ・アラートを作成できます。
6.10.4 ステップ3: ネットワーク・サービス用のアクセス制御リストの構成
UTL_MAIL
を使用するには、あらかじめ、外部ネットワーク・サービスに対してファイングレイン・アクセスを有効にするアクセス制御リスト(ACL)を構成する必要があります。
外部ネットワーク・サービスへのファイングレイン・アクセスの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
6.10.5 ステップ4: 電子メール・セキュリティ・アラートを使用するためのルール・セットおよびコマンド・ルールの作成
ルール・セットおよびコマンド・ルールを作成するには、DBMS_MACADM
PL/SQLパッケージを使用します。
6.11 チュートリアル: 二人制整合性(デュアル・キー・セキュリティ)の構成
このチュートリアルでは、Oracle Database Vaultを使用して2人のユーザーの認可を制御する方法を示します。
- このチュートリアルについて
このチュートリアルでは、二人制整合性(TPI)を定義するルール・セットを構成します。 - ステップ1: このチュートリアル用のユーザーの作成
このチュートリアルでは、2人のユーザーpatch_boss
およびpatch_user
を作成する必要があります。 - ステップ2: ユーザーpatch_bossがログインしているかどうかをチェックするファンクションの作成
Database Vault設定の動作は、このファンクションによって決定されます。 - ステップ3: ユーザー・アクセスを制御するためのルール、ルール・セットおよびコマンド・ルールの作成
次に、2つのルール、それらを追加するルール・セットおよびコマンド・ルールを作成します。 - ステップ4: ユーザーのアクセスのテスト
ルールを作成すると、テストする準備ができます。 - ステップ5: このチュートリアルのコンポーネントの削除
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
親トピック: ルール・セットの構成
6.11.1 このチュートリアルについて
このチュートリアルでは、二人制整合性(TPI)を定義するルール・セットを構成します。
この機能は、デュアル・キー・セキュリティ、デュアル・キー接続および二人制ルール・セキュリティとも呼ばれます。このタイプのセキュリティでは、アクションの認可に、1人ではなく2人のユーザーが必要です。
あるユーザーがタスクを開始するには、別のユーザーがそのユーザーに対するセーフティ・チェックを行います。二人制整合性では、危険を伴う可能性のあるアクションに対して、追加のセキュリティの層が用意されます。このタイプのシナリオは、データベース・パッチの更新などのタスクに使用されることが多く、このチュートリアルでもこのタスクを使用します。ユーザーpatch_user
がデータベース・パッチのアップグレードを実行するにはログインが必要ですが、このユーザーがログインするにはマネージャpatch_boss
がログインしている必要があります。patch_user
がログイン可能かどうかを制御するファンクション、ルール、ルール・セットおよびコマンド・ルールを作成します。
6.11.2 ステップ1: このチュートリアル用のユーザーの作成
このチュートリアルでは、2人のユーザーpatch_boss
およびpatch_user
を作成する必要があります。
-
patch_boss
はスーパーバイザ・ロールとして機能します。patch_boss
がログインしていない場合、patch_user
ユーザーはログインできません。 -
patch_user
は、パッチの更新の実行が割り当てられているユーザーです。ただし、このチュートリアルでは、ユーザーはpatch_user
実際にはパッチの更新を実行しません。ログインを試行するのみです。
ユーザーを作成するには、次のようにします。
実際のシナリオでは、DV_OWNER
ユーザーとしてもログインし、DV_PATCH_ADMIN
ロールをpatch_user
ユーザーに付与します(patch_boss
には付与しません)。しかし、このチュートリアルでは、実際にはデータベース・パッチの更新を実行しないため、このロールをpatch_user
ユーザーに付与する必要はありません。
6.11.3 ステップ2: ユーザーpatch_bossがログインしているかどうかをチェックするファンクションの作成
Database Vault設定の動作は、ファンクションによって決定されます。
check_boss_logged_in
は、ユーザーpatch_user
がデータベース・インスタンスへのログインを試行したときに、V$SESSION
データ・ディクショナリ・ビューに問い合せて、ユーザーpatch_boss
がログインしているかどうかを確認します。
6.11.4 ステップ3: ユーザー・アクセスを制御するためのルール、ルール・セットおよびコマンド・ルールの作成
次に、2つのルール、それらを追加するルール・セットおよびコマンド・ルールを作成します。
patch_user
がデータベースにログインしようとしたときに、check_boss_logged_in
ファンクションをトリガーします。
6.12 ルール・セット設計のガイドライン
Oracleでは、ルール・セット設計のガイドラインを提供しています。
-
ルールは、複数のルール・セット間で共有できます。これにより、再利用可能なルール式のライブラリを作成できます。個別で式の目的が1つであるルールを設計することをお薦めします。
-
評価が静的な、すなわちユーザー・セッション中に1回のみ評価されるルール・セットを設計できます。あるいは、ルール・セットにアクセスするたびに評価できます。ルール・セットの評価が1回のみの場合、ルール・セットにアクセスするたびに、評価された値がユーザー・セッション全体で再利用されます。静的な評価の使用は、ルール・セットに複数回アクセスする必要があるが、ルール・セットが依存する条件はセッション中に変化しない場合に便利です。たとえば、ルール・セットに関連付けられているSELECTコマンド・ルールは、同じ
SELECT
文が複数回実行される際、評価された値が再利用可能であれば、SELECT
が実行されるたびにルール・セットを評価するかわりに、評価された値を再利用できます。ルール・セットの静的な評価を制御するには、
DBMS_MACADM
PL/SQLパッケージのCREATE_RULE_SET
またはUPDATE_RULE_SET
プロシージャのis_static
パラメータを設定します。詳細は、「DBMS_MACADMのルール・セット・プロシージャ」を参照してください。 -
再利用性とルール式で使用される値の信頼性を実現するために、ルール式にはOracle Database Vaultファクタを使用します。ファクタにはルール式で使用可能なコンテキスト情報が用意されています。
-
カスタム・イベント・ハンドラを使用して、Oracle Database Vaultセキュリティ・ポリシーを拡張し、エラー処理またはアラート通知のための外部システムを統合できます。このような統合を行うには、
UTL_TCP
、UTL_HTTP
、UTL_MAIL
、UTL_SMTP
またはDBMS_AQ
などのOracleユーティリティ・パッケージを使用すると便利です。 -
機密データを保護するレルムやコマンド・ルールにルール・セットを適用する前に、テスト・データベース、または機密データ以外のデータ用のテスト・レルムやコマンド・ルール上で、様々なアカウントやシナリオに関してルール・セットを十分にテストします。次のSQL文を使用して、ルール式を直接テストできます。
SQL> SELECT SYSDATE from DUAL where rule expression
-
単一のルールにルール式をネストできます。これにより、ルールのサブセットに論理的
AND
、およびその他のルールに論理的OR
が必要になる複雑な状況を作成できます。この一例として、「チュートリアル: セキュリティ違反の電子メール・アラートの作成」に記載されているIs Corporate Network During Maintenanceルール・セットの定義を参照してください。 -
起動者権限プロシージャとルール式を組み合せて使用できません。定義者権限プロシージャのみルール式と組み合せて使用できます。
親トピック: ルール・セットの構成
6.13 ルール・セットのパフォーマンスへの影響
ルールの数および複雑さにより、データベースのパフォーマンスが低下する場合があります。
ルール・セットにより、特定の操作の実行パフォーマンスが管理されます。たとえば、SELECT
文を制御するルール・セットに大量のルールが含まれる場合は、パフォーマンスが大幅に低下する可能性があります。
多数のルールが必要なルール・セットがある場合、すべてのルールを単一のPL/SQLスタンドアロンまたはパッケージ・ファンクションに定義されているロジックに移動すると、パフォーマンスが向上します。ただし、ルールが他のルール・セットに使用されている場合、システムのパフォーマンスにはほとんど影響ありません。
可能であれば、静的な評価を使用するようにルール・セットを設定することを検討してください(関連付けられているコマンド・ルールの使用と互換性があると想定して)。詳細は、「ルール・セット設計のガイドライン」を参照してください。
システム・パフォーマンスを確認するには、Oracle Enterprise Manager(Oracle Databaseと一緒にデフォルトでインストールされるOracle Enterprise Manager Cloud Controlを含む)、自動ワークロード・リポジトリ(AWR)およびTKPROF
などのツールを実行します。
関連項目:
-
データベース・パフォーマンスの監視方法を学習するには、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください
-
個々のSQL文およびPL/SQL文の実行を監視するには、『Oracle Database SQLチューニング・ガイド』を参照してください
親トピック: ルール・セットの構成
6.14 ルール・セットとルールに関連するレポートおよびデータ・ディクショナリ・ビュー
Oracle Database Vaultには、ルール・セットおよびそれらに含まれるルールの分析に役立つ、レポートとデータ・ディクショナリ・ビューが用意されています。
表6-2では、Oracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、「Oracle Database Vaultレポート」を参照してください。
表6-2 ルール・セットに関連するレポート
レポート | 説明 |
---|---|
ルールが定義されていない、または有効でないルール・セットが表示されます。 |
|
不完全または無効なルール・セットのあるセキュア・アプリケーション・ロールが表示されます。 |
|
不完全または無効なルール・セットが表示されます。 |
表6-3に、既存のルールおよびルール・セットに関する情報を提供するデータ・ディクショナリ・ビューを示します。
表6-3 ルールおよびルール・セットに使用されるデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビュー | 説明 |
---|---|
定義済のルールが表示されます。 |
|
作成済のルール・セットが表示されます。 |
|
既存のルール・セットに関連付けられているルールが表示されます。 |
親トピック: ルール・セットの構成