プライマリ・コンテンツに移動
Oracle® Database 2日でセキュリティ・ガイド
12c リリース2 (12.2)
E81327-04
目次へ移動
目次
索引へ移動
索引

前
次

5 Oracle Database Vaultを使用したアクセスの制御

Oracle Database VaultはOracle databaseに対する 管理的アクセスを制限します。

Oracle Database Vaultについて

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つ以上のデータベース・オブジェクトに影響を与えるSELECTALTER 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スキーマを囲むレルムを作成して、管理者によるアクセスから保護し、SCOTTOE.CUSTOMERSへのアクセスを許可します。

OEスキーマには、顧客に許可しているクレジットの上限などの機密情報が格納されている様々な表があります。Order Entry表には、一般的に、クレジット・カード番号、社会保険番号などの機密情報が格納されています。Payment Card Industry(PCI)Data Security Standards(DSS)によれば、このような種類の情報は、このような情報へのアクセスが仕事上必要な人にのみ制限される必要があります。

手順1: Oracle Database Vaultを有効にする

Oracle DatabaseをインストールしてからOracle Database Vaultを登録し、Oracle Database Vaultアカウント・マネージャのユーザー・アカウントを有効にする必要があります。

Oracle Database Vaultは、Oracle Databaseのデフォルトのインストールを実行したときにインストールされます。

Oracle Label Securityが有効でない場合は、登録プロセスにより、Oracle Label SecurityおよびDatabase Vaultが有効になります。

Oracle Database Vaultを登録するには、次のようにします。

  1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。

    次に例を示します。

    sqlplus sys as sysdba
    Enter password: password 
    
  2. 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を登録します。

手順2: OE.CUSTOMERS表に対するSELECTをユーザーSCOTTに付与する

後でチュートリアルをテストするときに、ユーザーSCOTTOE.CUSTOMERS表からの選択を行う必要があります。

Oracle Database Vaultに対するユーザーSCOTTの有効化

ユーザーSCOTTを有効にするには、Enterprise Managerを使用できます。

ユーザーSCOTTを有効にするには、次のようにします。

  1. Enterprise Managerで、NORMALロールが選択されたDatabase Vaultアカウント・マネージャ(ロールDV_ACCTMGRが付与されたユーザー)としてログインしていることを確認します。

    Oracle Database Vaultを有効にすると、管理アカウント(SYSSYSTEMなど)を使用してユーザー・アカウントを作成または有効にすることはできなくなります。これは、Oracle Database Vaultがデフォルトの状態のままでも、管理アカウントに対して職務分離の方針が適用されるためです。この時点から、ユーザー・アカウントを管理するには、Oracle Database Vaultアカウント・マネージャのアカウントを使用する必要があります。

    管理ユーザーは管理に必要な権限を持ったままです。たとえば、システム権限と多数のPL/SQLパッケージを所有するユーザーSYSは、引き続きこれらの権限を他のユーザーに付与できます。ただし、ユーザーSYSが、ユーザー・アカウントを作成、変更、削除することはできなくなっています。かわりに、Database Vaultアカウント・マネージャとしてログインする必要があります。

  2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

  3. ユーザー・ページでSCOTTユーザーを選択し、ユーザーの表示ページで「編集」をクリックします。

    ユーザーの編集ページが表示されます。

  4. 次の設定を入力します。

    • 「パスワードの入力」および「パスワードの確認」: SCOTTアカウントのパスワードのステータスが期限切れである場合は、新しいパスワードを入力します。「パスワードの作成要件」で説明しているパスワードのガイドラインに従って、任意のセキュアなパスワードを入力します。

    • ステータス: 「ロック解除」をクリックします。

  5. 「適用」をクリックします。

  6. Enterprise Managerを終了しないでください。

ユーザーSCOTTへのOE.CUSTOMERS表に対するSELECT権限の付与

ユーザーSCOTTが有効になった後、適切な権限を付与できます。

ユーザーSCOTTにOE.CUSTOMERS表に対するSELECT権限を付与するには、次のようにします。

  1. OEユーザーとしてSQL*Plusにログインします。

    sqlplus oe
    Enter password: password
    Connected. 
    
  2. ユーザーSCOTTOE.CUSTOMERS表に対するSELECT権限を付与します。

    GRANT SELECT ON CUSTOMERS TO SCOTT;

手順3: ユーザーSYSおよびSCOTTとしてOE.CUSTOMERS表から選択を行う

この段階では、SYSSCOTTの両方のユーザーがOE.CUSTOMERS表から選択できます。

その理由は、SYSには管理権限があり、SCOTTには明示的なSELECT権限がユーザーOEによって付与されているからです。

ユーザーSYSおよびSCOTTとしてOE.CUSTOMERSから選択を行うには、次のようにします。

  1. SQL*Plusで、SYSDBA管理権限を使用してユーザーSYSとして接続します。

    sqlplus sys as sysdba
    Enter password: password
    
  2. 次のように、OE.CUSTOMERS表から選択を行います。

    SELECT COUNT(*) FROM OE.CUSTOMERS;
    

    次のような出力結果が表示されます。

    COUNT(*)
    --------
         319
    
  3. ユーザーSCOTTとして接続し、同じSELECT文を実行します。

    CONNECT SCOTT
    Enter password: password
    Connected.
    
    SELECT COUNT(*) FROM OE.CUSTOMERS;
    

    次の出力が表示されます。

    COUNT(*)
    --------
         319

手順4: OE.CUSTOMERS表を保護するためにレルムを作成する

管理者からのOE.CUSTOMER表へのアクセスを制限するには、OEスキーマを囲むレルムを作成する必要がありします。

OEスキーマを対象としたレルムを作成するには、次のようにします。

  1. Enterprise Managerで「ログアウト」をクリックしてデータベースからログアウトします。

  2. 「確認」ダイアログ・ボックスで「(データベース・インスタンス)のログアウト」を選択し、「ログアウト後にログイン・ページを表示します。」チェック・ボックスを選択します。「ログアウト」をクリックします。

  3. DV_OWNERまたはDV_ADMINアカウントが付与されたユーザー(dbv_ownerなど)としてログインします。「通常ロール」ロールを使用して接続します。

  4. 「セキュリティ」メニューから、「Database Vault」を選択します。

  5. Database Vaultページで「管理」タブを選択します。

  6. 「Database Vaultコンポーネント」で「レルム」を選択します。

    「レルム」ページが表示されます。

  7. 「作成」をクリックします。

  8. レルムの作成ページで次の情報を入力します。

    • 名前: OE Protections

    • 説明: Realm to protect the OE schema

    • ステータス: 「有効」をクリックします。

    • 監査オプション: 「失敗時に監査」を選択します。

  9. 「次」をクリックします。

    レルム・セキュア・オブジェクト・ページが表示されます。

  10. 「追加」をクリックします。

  11. セキュア・オブジェクトの追加ウィンドウで、次の情報を追加します。

    • 所有者: OE

    • オブジェクト・タイプ: TABLE

    • オブジェクト名: %

  12. 「OK」をクリックします。

    OE表がレルム・セキュア・オブジェクトとしてリストされます。

  13. 「次」をクリックします。

  14. レルム認可ページで「追加」をクリックします。

    認可の追加ウィンドウが表示されます。

  15. 次の情報を入力します。

    • レルム認可の権限受領者: OEを選択します。

    • レルム認可タイプ: 「所有者」を選択します。

    • レルム認可ルール・セット: 「無効」を選択します。

  16. 「OK」、続いて「次」をクリックします。

    確認ページが表示され、設定を確認できます。

  17. 「終了」をクリックします。

    レルム・ページにOE保護レルムが表示されます。

  18. Enterprise Managerを終了しないでください。

手順5: OE Protectionsレルムをテストする

これでOEスキーマを保護するレルムが作成され、テストの準備ができました。

Oracle Database Vaultで定義した保護は即時に有効になるため、データベース・セッションを再び開始する必要はありません。

OE Protectionsレルムをテストするには、次のようにします。

  1. SYSDBA管理権限を使用してユーザーSYSとしてSQL*Plusに接続します。

    CONNECT SYS AS SYSDBA
    Enter password: password
    Connected.
    

    前にSYSとして接続している場合、再接続の必要はありません。行った変更がただちに有効になります。

  2. OE.CUSTOMERS表からの選択を試行します。

    SELECT COUNT(*) FROM OE.CUSTOMERS;
    

    次の出力が表示されます。

    ERROR at line 1:
    ORA-01031: insufficient privileges
    

    OE Protectionsレルムによって、管理ユーザーのOE.CUSTOMERS表へのアクセスが制限されています。スキーマ全体を保護するようにOE Protectionsレルムを定義したため、管理ユーザーはOE内の他の表にもアクセスできません。

  3. ユーザーSCOTTとして接続します。

    CONNECT SCOTT
    Enter password: password
    Connected.
    
  4. OE.CUSTOMERS表からの選択を試行します。

    SELECT COUNT(*) FROM OE.CUSTOMERS;
    

    次の出力が表示されます。

      COUNT(*)
    ----------
           319
    

    ユーザーOEは明示的にOE.CUSTOMERS表でSELECT権限をこのユーザーに付与したため、OE保護レルムはユーザーSCOTTには適用されません。Oracle Database Vaultでは必要な保護が設定されますが、定義済の明示的な権限はオーバーライドされません。SCOTTはまだこのテーブルへの問合せができます。

手順6: このチュートリアルで使用したコンポーネントを削除する(オプション)

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

OE保護レルムの削除

OE保護レルムを削除するには、Enterprise Managerを使用できます。

OE Protectionsレルムを削除するには、次のようにします。

  1. Enterprise Managerで、Oracle Database Vault Administratorのページからログアウトしている場合、Oracle Database Vaultのインストール時に作成したDatabase Vault所有者アカウント(dbv_ownerなど)として再度ログインします。

  2. 「セキュリティ」メニューから、「Database Vault」を選択します。

  3. 「Oracle Database Vault」ページで「管理」タブを選択します。

  4. 「Database Vault機能管理」で、「レルム」をクリックします。

    「レルム」ページが表示されます。

  5. レルムのリストから「OE Protections」を選択し、「削除」をクリックします。その後、「確認」ページで「はい」をクリックします。

  6. Database Vault Administratorからログアウトします。

ユーザーSCOTTのOE.CUSTOMERSに対するSELECT権限の取消し

SQL*Plusを使用して、ユーザーSCOTTOE.CUSTOMERSに対するSELECT権限を取り消すことができます。

OE.CUSTOMERSに対するSELECT権限をユーザーSCOTTから取り消すには、次のようにします。

  1. SQL*PlusでユーザーOEとして接続します。

    CONNECT OE
    Enter password: password
    Connected. 
    
  2. ユーザーSCOTTSELECT権限を取り消します。

    REVOKE SELECT ON CUSTOMERS FROM SCOTT;

Oracle Database VaultおよびOracle Label Securityの無効化

Oracle Database VaultおよびOracle Label Securityを無効にするには、SQL*Plusを使用できます。

Oracle Database Vaultを(必要に応じてOracle Label Securityも)削除するには、次のようにします。

  1. DV_OWNERロールを付与されたユーザーとして接続します。

    次に例を示します。

    CONNECT dbv_owner
    Enter password: password
    
  2. 次のプロシージャを実行してOracle Database Vaultを無効にします。

    EXEC DVSYS.DBMS_MACADM.DISABLE_DV;
    
  3. SYSDBA管理権限を持つユーザーSYSとして接続します。

    CONNECT SYS AS SYSDBA
    Enter password: password
    
  4. 次のプロシージャを実行して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を無効にすることはできます。

  5. データベースを再起動します。

    SHUTDOWN IMMEDIATE
    STARTUP