ルール・セットは、1つまたは複数のルールをまとめてグループ化します。これらのルールは、ユーザーがオブジェクトに対してアクションを実行できるかどうかを決定します。
内容は次のとおりです。
ルール・セットとは、1つ以上のルールの集合です。
ルール・セットは、レルム認可、ファクタ割り当て、コマンド・ルール、またはセキュア・アプリケーション・ロールに関連付けることができます。
ルール・セットは、それに含まれる各ルールと評価タイプ(「すべてのTrue」または「いずれかTrue」)に基づいて、trueまたはfalseに評価されます。ルール・セット内のルールは、TrueまたはFalseと評価されるPL/SQL式です。ルールを作成し、そのルールを複数のルール・セットに追加できます。
ルール・セットを使用して次のアクティビティを実行できます。
レルム認可がアクティブになる条件の定義(レルム認可をさらに制限することが目的)
コマンド・ルールを許可する時期の定義
セキュア・アプリケーション・ロールの有効化
ファクタのアイデンティティを割り当てる時期の定義
ルール・セットを作成すると、レルムの認証、コマンド・ルール、ファクタまたはセキュア・アプリケーション・ロールの構成時に選択できるようになります。
Oracle Database Vaultに作成するルール・セット上でレポートを実行できます。詳細は、「ルール・セットとルールに関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。
この章では、Oracle Database Vault Administratorを使用してルール・セットを構成する方法を説明します。Oracle Database Vaultで提供されるPL/SQLインタフェースおよびパッケージを使用することでルール・セットを構成するには、「Oracle Database Vaultルール・セットのAPI」を参照してください。
Oracle Database Vaultにはデフォルトのルール・セットが用意されており、必要に応じてカスタマイズすることができます。
すべてのルール・セットの一覧は、DVSYS.DBA_DV_RULE_SET
データ・ディクショナリ・ビューに問い合せることによって表示できます。ルール・セットに関連付けられたルールを探すには、DVSYS.DBA_DV_RULE_SET_RULE
データ・ディクショナリ・ビューに問い合わせます。
デフォルトのルール・セットは次のとおりです。
システム・パラメータのファイングレイン・コントロールを許可:このルール・セットを使用すると、システム・セキュリティ、ダンプまたは宛先の場所、バックアップとリストアの設定、オプティマイザの設定、PL/SQLデバッグおよびセキュリティ・パラメータを管理する初期化パラメータに対し、非常に柔軟で細かな制御を行うことができます。これは、このルール・セットに関連付けられたルールに基づいて、次の初期化パラメータに影響します。
「システム・セキュリティ・パラメータが許可されているか」のルール: O7_DICTIONARY_ACCESSIBILITY
を設定できません
「ダンプまたは宛先パラメータが許可されているか」のルール: 次のパラメータを設定できません。
パラメータB-D | パラメータD-U |
---|---|
|
|
|
|
|
|
|
|
|
|
「バックアップ・リストア・パラメータが許可されているか」のルール: RECYCLEBIN
を設定できません(ただしリサイクルビンの無効化は妨げられません)。
「データベース・ファイル・パラメータが許可されているか」のルール: CONTROL_FILES
を設定できません。
「オプティマイザ・パラメータが許可されているか」のルール: OPTIMIZER_SECURE_VIEW_MERGING = FALSE
を設定できます(ただしTRUE
は指定できません)。
「PL-SQLパラメータが許可されているか」のルール: PLSQL_DEBUG = FALSE
を設定でき(ただしTRUE
は指定できません)、UTL_FILE_DIR
を設定できません。
「セキュリティ・パラメータが許可されているか」のルール: 次のパラメータを設定できません。
パラメータA-A | パラメータO-S |
---|---|
|
|
|
|
|
|
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
システム・パラメータを許可: システム初期化パラメータを設定する権限を制御します。Oracle Database 11gリリース2(11.2)以降では、このルール・セットは「システム・パラメータのファイングレイン・コントロールを許可」ルール・セットに置き換えられていますが、下位互換性を確保するために引き続きサポートされます。「システム・パラメータを許可」ルール・セットはどのコマンドにも関連付けられていませんが、そのルールは引き続き使用可能で、任意のカスタム・ルール・セットで使用できます。「システム・パラメータのファイングレイン・コントロールを許可」ルール・セットを使用することをお薦めします。
VPD管理権限を付与可能: GRANT
およびREVOKE
文を使用して、Oracle Virtual Private DatabaseのDBMS_RLS
パッケージのGRANT EXECUTE
またはREVOKE EXECUTE
権限を付与する権限を制御します。
セッションを許可: データベースにセッションを作成する権限を制御します。このルール・セットを使用すると、CONNECTコマンド・ルールを使用してデータベース・ログインを制御するためのルールを追加できます。CONNECTコマンド・ルールは、その使用が必要なプログラムへのSYSDBA
アクセスの制御または制限に有用です。このルール・セットは移入されていません。
アカウント/プロファイルを保守可能: CREATE USER
、DROP USER
、CREATE PROFILE
、ALTER PROFILE
またはDROP PROFILE
文を使用して、ユーザー・アカウントおよびプロファイルを管理するロールを制御します。
自分のアカウントを保守可能: DV_ACCTMGR
ロールのあるアカウントを許可し、ALTER USER
文を使用したユーザー・アカウントおよびプロファイルの管理を可能にします。また、ALTER USER
文を使用した、個々のアカウントによる個人のパスワードの変更を許可します。DV_ACCTMGR
ロールの詳細は、「DV_ACCTMGR Database Vaultアカウント・マネージャ・ロール」を参照してください。
無効: レルム、コマンド・ルール、ファクタおよびセキュア・アプリケーション・ロールを迅速に無効にするための簡易ルール・セットです。
有効: システム機能を迅速に有効にするための簡易ルール・セットです。
ルール・セットを作成するには、まずルール・セット自体を作成し、次にそのルール・セットを編集して1つ以上のルールに関連付けます。
関連項目:
DVSYS.AUDIT_TRAIL$
表の監査レコードの詳細は、「Oracle Database Vaultの監査」を参照してください
Database Vaultの統合監査ポリシーの作成については、『Oracle Databaseセキュリティ・ガイド』を参照してください
ルールは制御する動作を定義します。ルール・セットは、ルールを集めて名前を付けたものです。
内容は次のとおりです。
ルールは、ルール・セットの作成プロセス中またはそれに関係なく作成できます。
ルールを作成した後は、1つのルール・セットを1つ以上の追加ルールと関連付けることができます。
ルール・セットの作成プロセス中に新しいルールを作成する場合、そのルールは、現在のルール・セットに自動で追加されます。既存のルールをルール・セットに追加することもできます。また、ルール・セットにルールを追加せずに、今後作成するルール・セットのテンプレートとして使用することもできます。
ルールをルール・セットに必要なだけ追加できますが、適切な設計とパフォーマンスの向上のために、ルール・セットを簡単にしておく必要があります。その他のアドバイスについては、「ルール・セットの設計のガイドライン」を参照してください。
ルール・セットの評価は、評価オプション(「すべてTrue」または「いずれかTrue」)を使用するルールの評価に依存します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueに評価します。
関連項目:
ルールの評価方法、ルールのネスト方法、および特定のユーザー(特権ユーザーなど)を除外するルールの作成方法については、「ルール・セットの動作」を参照してくださいデフォルト・ルールとは、あるアクションがTrueまたはFalseと評価された場合にチェックを行うなど、よく使われる動作が設定されたルールです。
ルールの一覧を検索するには、DVSYS.DBA_DV_RULE
データ・ディクショナリ・ビューに問い合せます。
表6-1に、Oracle Databaseのデフォルト・ルールを示します。
表6-1 Oracle Database Vaultのデフォルト・ルール
ルール | 説明 |
---|---|
バックアップ・リストア・パラメータが許可されているか |
現在のSQL文が |
データベース・ファイル・パラメータが許可されているか |
現在のSQL文が制御ファイル関連の構成を変更しようとするかどうかを確認します。 |
ダンプまたは宛先パラメータが許可されているか |
現在のSQL文が、ダンプのサイズ制限や宛先に関連する初期化パラメータを変更しようとするかどうかを確認します。 |
オプティマイザ・パラメータが許可されているか |
現在のSQL文が |
PL-SQLパラメータが許可されているか |
現在のSQL文が、次の初期化パラメータを変更しようとするかどうかを確認します。
|
セキュリティ・パラメータが許可されているか |
次の初期化パラメータを無効にしようとするかどうかを確認します。
統合監査が有効な場合、 このルールにより、次のパラメータは有効になりません。
|
システム・セキュリティ・パラメータが許可されているか |
次のパラメータが変更しないようにします。
|
False |
Evaluates to |
Alter DVSYSが許可されているか |
ログインしたユーザーが、他のユーザーに対する |
データベース管理者であるか |
ユーザーに |
Drop Userが許可されているか |
ログインしたユーザーがユーザーを削除できるかどうかを確認します。 |
月の最初の日であるか |
指定した日が月の最初の日であるかどうかを確認します。 |
ラベル管理者であるか |
ユーザーに |
月の最後の日であるか |
指定した日が月の最後の日であるかどうかを確認します。 |
_dynamic_rls_initパラメータが許可されているか |
|
SYSまたはSYSTEMユーザーであるか |
ユーザーが |
セキュリティ管理者であるか |
ユーザーに |
セキュリティ所有者であるか |
ユーザーに |
ユーザー・マネージャであるか |
ユーザーに |
_system_trig_enabledパラメータが許可されているか |
ユーザーが次のシステム・パラメータを変更しようとするかどうかを確認しますが、データベース・リカバリ操作では、このルールにより、これらのパラメータの変更が許可されます。
統合監査が有効な場合、 |
o7_dictionary_accessibilityパラメータが許可されているか |
現在のSQL文が |
ログイン・ユーザーがオブジェクト・ユーザーである |
ログインしたユーザーが、現在のSQL文で変更されようとしているユーザーと同じであるかどうかを確認します。 |
EXEMPT ACCESS POLICYロールがない |
ユーザーに |
エクスポート・セッションではない |
廃止 |
True |
Evaluates to |
ルール・セットからルールを削除する前に、Cloud Controlを使用してそのルールへの様々な参照を見つけることができます。
Oracle Database Vaultのビューの詳細は、「Oracle Database Vaultのデータ・ディクショナリ・ビュー」を参照してください。
ルール・セットからルールを削除する手順:
ルール・セットからルールを削除しても、そのルールはまだ存在します。必要に応じて、そのルールをその他のルール・セットに関連付けることができます。ルールを削除する場合、「ルール」ページから行うことができます。
ルール・セットを削除する前に、ルール・セットのOracle Database Vaultコンポーネントへの参照を削除する必要があります。
ルール・セットの動作を理解することは、より効果的なルール・セットを作成する助けとなります。
ルール・セット内のルールは、式の集合として評価されます。
「評価オプション」が「すべてTrue」に設定されている場合にルールの評価に失敗すると、ルール・セット内の残りのルールの評価は試行されず、その時点で評価が停止します。同様に、「評価オプション」が「いずれかTrue」に設定されている場合にルールがTrueと評価されると、評価はその時点で停止します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueと評価します。
ルール・セット内に1つ以上のルールをネストできます。
たとえば、Is Corporate Network During Maintenanceという、次の2つのタスクを実行するネストされたルールを作成するとします。
データベース・セッションが企業ネットワーク内から発生した場合のみ、表の変更を制限します。
午後10時から午後10時59分の間にスケジュールされているシステム・メンテナンスの時間帯に、表の変更を制限します。
ルールの定義は次のようになります。
DVF.F$NETWORK = 'Corporate' AND TO_CHAR(SYSDATE,'HH24') between '22' AND '23'
これは、ファクタ・ファンクションを使用して作成できます。詳細は、「Oracle Database VaultのDVF PL/SQLファクタ・ファンクション」を参照してください。ファクタの作成方法は、「ファクタの構成」で説明しています。
1人のユーザー(たとえば特権ユーザー)を除く全員に適用するルールを作成することも可能です。
特定のユーザーを除外するルールを作成するには、SYS_CONTEXT
ファンクションを使用します。
次に例を示します。
SYS_CONTEXT('USERENV','SESSION_USER') = 'SUPERADMIN_USER' OR additional_rule
現行ユーザーが特権ユーザーの場合、システムでは、additional_rule
は評価されず、ルールはTrueに評価されます。現行ユーザーが特権ユーザーでない場合、ルールの評価はadditional_rule
の評価によって決まります。
このチュートリアルでは、UTL_MAIL
PL/SQLパッケージとアクセス制御リストを使って、セキュリティ違反に関する電子メール・アラートを作成する方法を示します。
内容は次のとおりです。
チュートリアルでは、ユーザーがメンテナンス期間外に表を変更しようとしたときに送信される、電子メール・アラートを作成します。
これを行うには、メンテナンスの時間帯を設定するルールを作成し、このルールをルール・セットに追加してから、ユーザーに表の変更を許可するコマンド・ルールを作成する必要があります。次に、ルール・セットをこのコマンド・ルールに関連付けます。これにより、ユーザーがメンテナンスの時間帯以外にALTER TABLE
SQL文を使用しようとすると、電子メール・アラートが送信されます。
注意:
このチュートリアルを実行するには、SMTPサーバーがあるデータベースを使用する必要があります。
UTL_MAIL
PL/SQLパッケージ(手動でインストールする必要があります)は、電子メール通知を管理するためのプロシージャを備えています。
ユーザーleo_dvowner
は、CREATE PROCEDURE
文を使用して、電子メール・セキュリティ・アラートを作成できます。
UTL_MAIL
を使えるようにするには、外部ネットワーク・サービスへのファイン・グレイン・アクセスを実現するために、アクセス制御リスト(ACL)を構成する必要があります。
外部ネットワーク・サービスへのファイン・グレイン・サービスについての詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
ルール・セットおよびコマンド・ルールを作成するには、DBMS_MACADM
PL/SQLパッケージを使用します。
このチュートリアルでは、Oracle Database Vaultを使用して2人のユーザーの認可を制御する方法を示します。
内容は次のとおりです。
このチュートリアルでは、二人制整合性(TPI)を定義するルール・セットを設定します。
この機能は、デュアル・キー・セキュリティ、デュアル・キー接続、あるいはツーマン・ルール・セキュリティとも呼ばれます。このタイプのセキュリティでは、アクションの認可に、1人ではなく2人のユーザーが必要です。
あるユーザーがタスクを開始するには、別のユーザーがそのユーザーに対するセーフティ・チェックを行います。二人制整合性では、危険を伴う可能性のあるアクションに対して、追加のセキュリティの層が用意されます。このタイプのシナリオは、データベース・パッチの更新などのタスクに使用されることが多く、このチュートリアルでもこのタスクを使用します。ユーザーpatch_user
がデータベース・パッチのアップグレードを実行するにはログインが必要ですが、このユーザーがログインするにはマネージャpatch_boss
がログインしている必要があります。patch_user
がログイン可能かどうかを制御するファンクション、ルール、ルール・セットおよびコマンド・ルールを作成します。
このチュートリアルでは、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
ユーザーに付与する必要はありません。
Database Vault設定の動作は、ファンクションによって決定されます。
check_boss_logged_in
は、ユーザーpatch_user
がデータベース・インスタンスへのログインを試行したときに、V$SESSION
データ・ディクショナリ・ビューに問い合せて、ユーザーpatch_boss
がログインしているかどうかを確認します。次に、2つのルール、それらを追加するルール・セットおよびコマンド・ルールを作成します。
patch_user
がデータベースにログインしようとしたときに、check_boss_logged_in
ファンクションをトリガーします。 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ルール・セットの定義を参照してください。
起動者権限プロシージャとルール式を組み合せて使用できません。定義者権限プロシージャのみルール式と組み合せて使用できます。
ルールの数や複雑さによっては、データベースの性能を低下させる可能性があります。
ルール・セットは、ある種の操作を実行するための性能を制御します。たとえば、SELECT
文を制御するルール・セットに大量のルールが含まれる場合は、パフォーマンスが大幅に低下する可能性があります。
多数のルールが必要なルール・セットがある場合、すべてのルールを単一のPL/SQLスタンドアロンまたはパッケージ・ファンクションに定義されているロジックに移動すると、パフォーマンスが向上します。ただし、ルールが他のルール・セットに使用されている場合、システムのパフォーマンスにはほとんど影響ありません。
可能であれば、静的な評価を使用するようにルール・セットを設定することを検討してください(関連付けられているコマンド・ルールの使用と互換性があると想定して)。詳細は、「ルール・セット設計のガイドライン」を参照してください。
システム・パフォーマンスを確認するには、Oracle Enterprise Manager(Oracle Databaseと一緒にデフォルトでインストールされるOracle Enterprise Manager Cloud Controlを含む)、自動ワークロード・リポジトリ(AWR)およびTKPROF
などのツールを実行します。
関連項目:
データベース・パフォーマンスの監視方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください
個々のSQL文およびPL/SQL文の実行を監視するには、『Oracle Database SQLチューニング・ガイド』を参照してください
Oracle Database Vaultには、ルール・セットおよびそれらに含まれるルールの分析に役立つ、レポートとデータ・ディクショナリ・ビューが用意されています。
表6-2では、Oracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、「Oracle Database Vaultレポート」を参照してください。
表6-2 ルール・セットに関連するレポート
レポート | 説明 |
---|---|
ルールが定義されていない、または有効でないルール・セットが表示されます。 |
|
不完全または無効なルール・セットのあるセキュア・アプリケーション・ロールが表示されます。 |
|
不完全または無効なルール・セットが表示されます。 |
表6-3に、既存のルールおよびルール・セットに関する情報を提供するデータ・ディクショナリ・ビューを示します。
表6-3 ルールおよびルール・セットに使用されるデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビュー | 説明 |
---|---|
定義済のルールが表示されます。 |
|
作成済のルール・セットが表示されます。 |
|
既存のルール・セットに関連付けられているルールが表示されます。 |