Oracle Database VaultはOracle databaseに対する 管理的アクセスを制限します。
OE
スキーマを囲むレルムを作成して、管理者によるアクセスから保護し、SCOTT
にOE.CUSTOMERS
へのアクセスを許可します。Oracle Database Vaultでは、ファイングレイン・アプローチを使用してOracle Databaseへの管理アクセスを制限できます。
これによって、内部の脅威に対する保護、コンプライアンス要件の遵守、職務分離の適用など、現在も続く、セキュリティの最も困難な問題に対処できます。Database Vaultでは、データベースへの管理者アクセスの制限以外に、職務分掌を行って、アプリケーション、データベース、およびデータにアクセスする人、時間、場所、および方法を制御できます。
通常、Oracle database管理者の主な仕事は、データベースのチューニング、アップグレードのインストール、データベースの状態監視、検出した問題の解決を行うことです。Oracle Databaseのデフォルトのインストールでは、データベース管理者はユーザーを作成し、ユーザー・データにアクセスできます。セキュリティを強化するために、これらの作業は実行する必要があるユーザーにのみ制限する必要があります。これは業務分離と呼ばれ、データベース管理者がパフォーマンス・チューニングなど、その専門知識にあったタスクに集中できるようになります。
Oracle databasesへの 管理者アクセスを制約することにより、 Oracle databases、Oracle Database VaultはPayment Card Industry (PCI) Data Security Standard (DSS)要件、米国企業改革法(Sarbanes-Oxley Act)、欧州連合(EU)のプライバシー指針および医療保険の相互運用性と説明責任に関する法(HIPAA)など、共通の規制コンプライアンスに従うお手伝いをします。これらの規制では、詐称行為、IDの盗用、財政面での不正行為および財政面での不利益をもたらす可能性のある機密情報のアクセス、開示または変更に対する強力な内部制御が必要です。
Oracle Database VaultはOracleデータベースに対して、管理者アクセスを制限する次の方法を提供します:
保護対象となるデータベース・スキーマ、オブジェクトおよびロールのグループ分け。このグループ分けはレルムと呼ばれ、レルムのコンポーネントはすべて保護されます。Database Vault管理者は、レルムを作成した後に、そのレルムへのアクセスを管理するユーザーを指定します。レルムは、たとえば、スキーマ内の1つの表を対象にしたり、スキーマ全体を対象にして作成できます。
PL/SQL式を作成し、データベース制限をカスタマイズします。式はルール内に作成し、1つのカテゴリにルールが複数ある場合は、ルールをルール・セットにグループ分けします。ルール・セット内のルールを実施するには、そのルールをレルムまたはコマンド・ルールに関連付けます。たとえば、メンテナンス期間中(午後10時から12時など)にデータベースのアクセスを阻止したい場合は、その時間帯のみアクセスを制限するルールを作成します。
ユーザーが使用できる、または使用できない特定のPL/SQL文の指定。これはコマンド・ルールと呼ばれます。コマンド・ルールには、保護する対象のコマンドと、そのコマンドの実行を許可するかどうかを決定するルール・セットが含まれます。コマンド・ルールを作成すると、1つ以上のデータベース・オブジェクトに影響を与えるSELECT
、ALTER SYSTEM
、データ定義言語(DDL)およびデータ操作言語(DML)文を保護できます。コマンド・ルールは、ルール・セットを関連付けてさらにカスタマイズすることができます。
セッション・ユーザーやIPアドレスなど、Oracle Database Vaultが認識および保護できるデータを記録するための属性の定義。これらの属性はファクタと呼ばれます。ファクタは、データベースに接続するためのデータベース・アカウントの認可や、データの可視性および管理性を制限するフィルタ・ロジックの作成などのアクティビティに使用できます。ルール・セットをファクタに関連付けて、ファクタをさらにカスタマイズすることができます。
Oracle Database Vaultルールのみによって有効になるセキュア・アプリケーション・ロールの設計。Oracle Database Vaultでセキュア・アプリケーション・ロールを作成した後、これにルール・セットを関連付けます。ルール・セットによって、セキュア・アプリケーション・ロールがいつ、どのように有効または無効になるかが定義されます。
これらのコンポーネントを使用したポリシーは、Oracle Database Vault AdministratorあるいはそのPL/SQLパッケージを使用して作成できます。マルチテナント環境では、各ポリシーは現在のプラガブル・データベース(PDB)にのみ適用されます。手順1: Oracle Database Vaultを有効にする
関連項目:
Oracle Database Vaultの詳細は、『Oracle Database Vault管理者ガイド』を参照してくださいこのチュートリアルでは、OE
スキーマを囲むレルムを作成して、管理者によるアクセスから保護し、SCOTT
にOE.CUSTOMERS
へのアクセスを許可します。
OE
スキーマには、顧客に許可しているクレジットの上限などの機密情報が格納されている様々な表があります。Order Entry表には、一般的に、クレジット・カード番号、社会保険番号などの機密情報が格納されています。Payment Card Industry(PCI)Data Security Standards(DSS)によれば、このような種類の情報は、このような情報へのアクセスが仕事上必要な人にのみ制限される必要があります。
SCOTT
はOE.CUSTOMERS
表からの選択を行う必要があります。 SYS
とSCOTT
の両方のユーザーがOE.CUSTOMERS
表から選択できます。 OE.CUSTOMER
表へのアクセスを制限するには、OE
スキーマを囲むレルムを作成する必要があります。 OE
スキーマを保護するレルムが作成され、テストの準備ができました。 Oracle DatabaseをインストールしてからOracle Database Vaultを登録し、Oracle Database Vaultアカウント・マネージャのユーザー・アカウントを有効にする必要があります。
Oracle Database Vaultは、Oracle Databaseのデフォルトのインストールを実行したときにインストールされます。
Oracle Label Securityが有効でない場合は、登録プロセスにより、Oracle Label SecurityおよびDatabase Vaultが有効になります。
Oracle Database Vaultを登録するには、次のようにします。
SYSDBA
管理権限を持つユーザーSYS
として、データベース・インスタンスにログインします。
次に例を示します。
sqlplus sys as sysdba
Enter password: password
Oracle Database Vaultが有効がどうかを確認します。PARAMETER
列では大/小文字が区別されるため、ここに示されているとおりに入力してください。
SELECT * FROM DBA_DV_STATUS;
DV_CONFIGURE_STATUS
およびDV_ENABLE_STATUS
の両方に対してTRUE
が返された場合、Oracle Database Vaultは登録されています。手順2: OE.CUSTOMERS表に対するSELECTをユーザーSCOTTに付与するに進みます。FALSE
が返された場合は、『Oracle Database Vault管理者ガイド』の説明に従って、データベースにDatabase Vaultを登録します。
後でチュートリアルをテストするときに、ユーザーSCOTT
はOE.CUSTOMERS
表からの選択を行う必要があります。
SCOTT
を有効にするには、Enterprise Managerを使用できます。SCOTT
が有効になった後、適切な権限を付与できます。ユーザーSCOTT
を有効にするには、Enterprise Managerを使用できます。
ユーザーSCOTTを有効にするには、次のようにします。
Enterprise Managerで、NORMALロールが選択されたDatabase Vaultアカウント・マネージャ(ロールDV_ACCTMGR
が付与されたユーザー)としてログインしていることを確認します。
Oracle Database Vaultを有効にすると、管理アカウント(SYS
やSYSTEM
など)を使用してユーザー・アカウントを作成または有効にすることはできなくなります。これは、Oracle Database Vaultがデフォルトの状態のままでも、管理アカウントに対して職務分離の方針が適用されるためです。この時点から、ユーザー・アカウントを管理するには、Oracle Database Vaultアカウント・マネージャのアカウントを使用する必要があります。
管理ユーザーは管理に必要な権限を持ったままです。たとえば、システム権限と多数のPL/SQLパッケージを所有するユーザーSYS
は、引き続きこれらの権限を他のユーザーに付与できます。ただし、ユーザーSYS
が、ユーザー・アカウントを作成、変更、削除することはできなくなっています。かわりに、Database Vaultアカウント・マネージャとしてログインする必要があります。
「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。
ユーザー・ページでSCOTTユーザーを選択し、ユーザーの表示ページで「編集」をクリックします。
ユーザーの編集ページが表示されます。
次の設定を入力します。
「パスワードの入力」および「パスワードの確認」: SCOTT
アカウントのパスワードのステータスが期限切れである場合は、新しいパスワードを入力します。「パスワードの作成要件」で説明しているパスワードのガイドラインに従って、任意のセキュアなパスワードを入力します。
ステータス: 「ロック解除」をクリックします。
「適用」をクリックします。
Enterprise Managerを終了しないでください。
この段階では、SYS
とSCOTT
の両方のユーザーがOE.CUSTOMERS
表から選択できます。
SYS
には管理権限があり、SCOTT
には明示的なSELECT
権限がユーザーOE
によって付与されているからです。ユーザーSYSおよびSCOTTとしてOE.CUSTOMERSから選択を行うには、次のようにします。
SQL*Plusで、SYSDBA
管理権限を使用してユーザーSYS
として接続します。
sqlplus sys as sysdba
Enter password: password
次のように、OE.CUSTOMERS
表から選択を行います。
SELECT COUNT(*) FROM OE.CUSTOMERS;
次のような出力結果が表示されます。
COUNT(*) -------- 319
ユーザーSCOTT
として接続し、同じSELECT
文を実行します。
CONNECT SCOTT
Enter password: password
Connected.
SELECT COUNT(*) FROM OE.CUSTOMERS;
次の出力が表示されます。
COUNT(*) -------- 319
管理者からのOE.CUSTOMER
表へのアクセスを制限するには、OE
スキーマを囲むレルムを作成する必要がありします。
OEスキーマを対象としたレルムを作成するには、次のようにします。
Enterprise Managerで「ログアウト」をクリックしてデータベースからログアウトします。
「確認」ダイアログ・ボックスで「(データベース・インスタンス)のログアウト」を選択し、「ログアウト後にログイン・ページを表示します。」チェック・ボックスを選択します。「ログアウト」をクリックします。
DV_OWNER
またはDV_ADMIN
アカウントが付与されたユーザー(dbv_owner
など)としてログインします。「通常ロール」ロールを使用して接続します。
「セキュリティ」メニューから、「Database Vault」を選択します。
Database Vaultページで「管理」タブを選択します。
「Database Vaultコンポーネント」で「レルム」を選択します。
「レルム」ページが表示されます。
「作成」をクリックします。
レルムの作成ページで次の情報を入力します。
名前: OE Protections
説明: Realm to protect the OE schema
ステータス: 「有効」をクリックします。
監査オプション: 「失敗時に監査」を選択します。
「次」をクリックします。
レルム・セキュア・オブジェクト・ページが表示されます。
「追加」をクリックします。
セキュア・オブジェクトの追加ウィンドウで、次の情報を追加します。
所有者: OE
オブジェクト・タイプ: TABLE
オブジェクト名: %
「OK」をクリックします。
OE
表がレルム・セキュア・オブジェクトとしてリストされます。
「次」をクリックします。
レルム認可ページで「追加」をクリックします。
認可の追加ウィンドウが表示されます。
次の情報を入力します。
レルム認可の権限受領者: OEを選択します。
レルム認可タイプ: 「所有者」を選択します。
レルム認可ルール・セット: 「無効」を選択します。
「OK」、続いて「次」をクリックします。
確認ページが表示され、設定を確認できます。
「終了」をクリックします。
レルム・ページにOE保護レルムが表示されます。
Enterprise Managerを終了しないでください。
これでOE
スキーマを保護するレルムが作成され、テストの準備ができました。
Oracle Database Vaultで定義した保護は即時に有効になるため、データベース・セッションを再び開始する必要はありません。
OE Protectionsレルムをテストするには、次のようにします。
SYSDBA
管理権限を使用してユーザーSYS
としてSQL*Plusに接続します。
CONNECT SYS AS SYSDBA
Enter password: password
Connected.
前にSYS
として接続している場合、再接続の必要はありません。行った変更がただちに有効になります。
OE.CUSTOMERS
表からの選択を試行します。
SELECT COUNT(*) FROM OE.CUSTOMERS;
次の出力が表示されます。
ERROR at line 1: ORA-01031: insufficient privileges
OE Protectionsレルムによって、管理ユーザーのOE.CUSTOMERS
表へのアクセスが制限されています。スキーマ全体を保護するようにOE Protectionsレルムを定義したため、管理ユーザーはOE
内の他の表にもアクセスできません。
ユーザーSCOTT
として接続します。
CONNECT SCOTT
Enter password: password
Connected.
OE.CUSTOMERS
表からの選択を試行します。
SELECT COUNT(*) FROM OE.CUSTOMERS;
次の出力が表示されます。
COUNT(*) ---------- 319
ユーザーOE
は明示的にOE.CUSTOMERS
表でSELECT
権限をこのユーザーに付与したため、OE保護レルムはユーザーSCOTT
には適用されません。Oracle Database Vaultでは必要な保護が設定されますが、定義済の明示的な権限はオーバーライドされません。SCOTT
はまだこのテーブルへの問合せができます。
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
SCOTT
のOE.CUSTOMERS
に対するSELECT
権限を取り消すことができます。OE保護レルムを削除するには、Enterprise Managerを使用できます。
OE Protectionsレルムを削除するには、次のようにします。
Enterprise Managerで、Oracle Database Vault Administratorのページからログアウトしている場合、Oracle Database Vaultのインストール時に作成したDatabase Vault所有者アカウント(dbv_owner
など)として再度ログインします。
「セキュリティ」メニューから、「Database Vault」を選択します。
「Oracle Database Vault」ページで「管理」タブを選択します。
「Database Vault機能管理」で、「レルム」をクリックします。
「レルム」ページが表示されます。
レルムのリストから「OE Protections」を選択し、「削除」をクリックします。その後、「確認」ページで「はい」をクリックします。
Database Vault Administratorからログアウトします。
SQL*Plusを使用して、ユーザーSCOTT
のOE.CUSTOMERS
に対するSELECT
権限を取り消すことができます。
OE.CUSTOMERSに対するSELECT権限をユーザーSCOTTから取り消すには、次のようにします。
SQL*PlusでユーザーOE
として接続します。
CONNECT OE
Enter password: password
Connected.
ユーザーSCOTT
のSELECT
権限を取り消します。
REVOKE SELECT ON CUSTOMERS FROM SCOTT;
Oracle Database VaultおよびOracle Label Securityを無効にするには、SQL*Plusを使用できます。
Oracle Database Vaultを(必要に応じてOracle Label Securityも)削除するには、次のようにします。
DV_OWNER
ロールを付与されたユーザーとして接続します。
次に例を示します。
CONNECT dbv_owner
Enter password: password
次のプロシージャを実行してOracle Database Vaultを無効にします。
EXEC DVSYS.DBMS_MACADM.DISABLE_DV;
SYSDBA
管理権限を持つユーザーSYS
として接続します。
CONNECT SYS AS SYSDBA
Enter password: password
次のプロシージャを実行してOracle Label Securityを無効にします。
EXEC LBACSYS.OLS_ENFORCEMENT.DISABLE_OLS;
Oracle Database Vaultを登録して有効にすると、Oracle Label Securityも有効になります。Oracle Database Vaultを無効にしない場合、Database VaultでOracle Label Securityを使用するため、Oracle Label Securityを無効にしないでください。(このガイドでは、Database Vaultを無効にするものとします。)ただし、Oracle Label Securityは有効で、Database Vaultを無効にすることはできます。
データベースを再起動します。
SHUTDOWN IMMEDIATE STARTUP