8 セキュリティ

Oracle OLAPでは、Oracle Databaseの標準セキュリティ・メカニズムによりデータが保護されます。

この章では、次の項目について説明します。

Oracle Databaseにおける多次元データのセキュリティ

企業が保持しているデータは、貴重な財産です。データが持つ情報は、機密性を確保し、保護する必要があります。中でも分析データは、十分に組織化され、ナビゲートが容易であり、明確な意味を持つ単位にまとめられているため、脆弱性が高くなっています。

Oracle OLAPを使用すると、データはデータベースに格納されます。Databaseの業界最先端のセキュリティ機能が利用できるため、企業の安全性が高まります。データをスタンドアロン・データベースに転送して、データを危険にさらす必要はありません。データをスタンドアロン・データベースに転送して、データを危険にさらす必要はありません。また、別のシステム上でセキュリティを管理する必要がないので、 Oracle Databaseより安全性の低い環境にデータを格納して、データを危険にさらす必要もありません。

セキュリティ管理

管理すべきシステムは1つしかないため、次のような基本的なセキュリティ・タスクをレプリケートする必要はありません。

  • ユーザー・アカウントの作成

  • パスワード保護ルールの作成と管理

  • ネットワーク接続の保護

  • セキュリティ脆弱性の検出と除去

  • 侵入者からのシステムの保護

データ・セキュリティの基礎となるのは、ユーザー・アカウントおよびユーザー・ロールの管理です。ユーザーは、ユーザー名とパスワードを使用してOracle Databaseとの接続を開始します。接続を開始したユーザーは、同一のセッション内で次元オブジェクトにもリレーショナル・オブジェクトにもアクセスできます。

セキュリティのタイプ

デフォルトでは、各ユーザーには、別ユーザーのスキーマにあるアナリティック・ワークスペースやその他のデータ型へのアクセス権は付与されていません。スキーマの所有者または管理者が、各ユーザーまたは各ユーザーが属するロールに対してアクセス権限を付与する必要があります。

Oracle OLAPは、オブジェクト・セキュリティおよびデータ・セキュリティという、2つのタイプのセキュリティを備えています。

  • オブジェクト・セキュリティでは、次元オブジェクトへのアクセスを可能にします。他のユーザーが次元オブジェクトにアクセスできるようにするには、その前にオブジェクト・セキュリティを設定する必要があります。オブジェクト・セキュリティは、SQLのGRANTおよびREVOKEを使用して実装されます。

  • データ・セキュリティでは、セル・レベルでデータのファイングレイン制御を行えます。このタイプのセキュリティはオプションです。データ・セキュリティ・ポリシーの定義が必要となるのは、キューブの特定の領域に対するアクセスを制限する場合のみです。データ・セキュリティは、Oracle Real Application Securityを使用して実装されます。

    注意:

    データ・セキュリティ・ポリシーおよびOLAPデータ・セキュリティ・ロールを作成できるのはスキーマの所有者のみです。データ・セキュリティ・ポリシーおよびOLAPデータ・セキュリティ・ロールはそのスキーマ内のオブジェクトのみに適用されます。

データ・セキュリティおよびオブジェクト・セキュリティはともに、Analytic Workspace Managerで管理できます。オブジェクト・セキュリティに対しては、SQLのGRANTおよびREVOKEも使用できます。

権限について

オブジェクト・セキュリティおよびデータ・セキュリティを使用すると、次の権限を付与したり取り消すことができます。

  • 変更: キューブまたはディメンションの定義を変更します。次元モデルの作成や変更を行うにはこの権限が必要です。

  • 削除: 古いディメンション・メンバーを削除します。ディメンションをリフレッシュするにはこの権限が必要です。

  • 挿入: 新規のディメンション・メンバーを追加します。ディメンションをリフレッシュするにはこの権限が必要です。

  • 選択: キューブまたはディメンションに対する問合せを行います。キューブまたはディメンションのビューに対して問合せを行う場合、またはCUBE_TABLE関数を使用する場合にはこの権限が必要です。CUBE_TABLEは、次元オブジェクトの値を戻すSQL関数です。

  • 更新: キューブのデータ値やディメンション・メンバーの名前を変更します。ディメンションやキューブをリフレッシュするにはこの権限が必要です。

これらの権限は、Analytic Workspace Managerで次元オブジェクトの作成や管理を行う場合や、SQLを使用して次元オブジェクトに問合せを行う場合に使用します。SQLのINSERTUPDATEなどのコマンドを、キューブやディメンションに対して直接発行することはありません。

階層化されたセキュリティ

次元オブジェクトの場合、次の各レベルでセキュリティを管理できます。

  • ディメンション・メンバー

  • ディメンション

  • キューブ

  • アナリティック・ワークスペース

  • ビュー

  • マテリアライズド・ビュー

権限が階層化されていることにより、たとえば、Software製品に対するSELECTデータ・セキュリティを持つユーザーは、同時に、PRODUCTディメンションおよびGlobalアナリティック・ワークスペースに対するSELECTオブジェクト・セキュリティも持っている必要があります。ユーザーには、次元オブジェクトのビューに対するSELECT権限も必要です。

次元オブジェクトのビューおよびマテリアライズド・ビューに対するセキュリティ管理は、データベース内のその他のビューやマテリアライズド・ビューの場合と同様に行います。

オブジェクト・セキュリティの設定

オブジェクト・セキュリティの設定は、SQLとAnalytic Workspace Managerのどちらを使用しても行えます。どれを使用しても結果は同じです。次の各トピックでは、それぞれの方法を説明します。

SQLを使用したオブジェクト・セキュリティの設定

SQLのGRANTコマンドおよびREVOKEコマンドを使用して、次元オブジェクトに対するオブジェクト権限を付与したり取り消すことができます。

アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定

アナリティック・ワークスペースに対するオブジェクト権限は、単にコンテナを開くためのものです。ユーザーがキューブやディメンションにアクセスできるようにするには、そのキューブやディメンションに対するオブジェクト権限を付与する必要があります。表の名前は、アナリティック・ワークスペースの名前に接頭辞「AW$」を付け加えたものになります。

次のコマンドを実行すると、ScottがGlobalアナリティック・ワークスペースAW$GLOBALをセッションにアタッチできるようになります。

GRANT SELECT ON aw$global TO scott;
ディメンションに対するオブジェクト・セキュリティの設定

個々のディメンションに対する権限を付与することにより、ユーザーはそのディメンションのメンバーや属性に問合せを行うことができるようになります。キューブに問合せを行うためには、そのキューブのすべてのディメンションについて権限が付与されている必要があります。

これらの権限はディメンション全体に適用されます。ただし、ディメンションに対してファイングレイン・アクセスを設定することにより、権限を制限できます(「ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成」を参照)。

例8-1に、ScottがProductディメンションに問合せを行えるようにするためのSQLコマンドを示します。このコマンドを実行すると、Productディメンション、Globalアナリティック・ワークスペースおよびProductビューに対するSELECT権限がScottに付与されます。

例8-1 Productディメンションへの問合せ権限

GRANT SELECT ON product TO scott;
GRANT SELECT ON aw$global TO scott;
GRANT SELECT ON product_view TO scott;
キューブに対するオブジェクト・セキュリティの設定

キューブに対する権限を付与すると、ユーザーは、ビジネス・メジャーへのアクセスや分析の実行が可能になります。キューブの各ディメンションに対する権限も付与する必要があります。

これらの権限はキューブ全体に適用されます。ただし、キューブまたはそのディメンションに対してデータ・セキュリティ・ポリシーを作成することにより、権限を制限できます(「ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成」を参照)。

例8-2 Unitsキューブへの問合せ権限

この例では、ScottがUnitsキューブに問合せを行えるようにするためのSQLコマンドを示します。このコマンドを実行すると、Globalアナリティック・ワークスペース、キューブおよびそのすべてのディメンションに対するSELECT権限がScottに付与されます。またScottは、書式設定されたレポートに使用するディメンション属性の問合せを行えるように、ディメンション・ビューに対する権限も取得します。

/* Grant privileges on the analytic workspace */
GRANT SELECT ON global.aw$global TO scott;

/* Grant privileges on the cube */
GRANT SELECT ON global.units_cube TO scott;

/* Grant privileges on the dimensions */
GRANT SELECT ON global.channel TO scott;
GRANT SELECT ON global.customer TO scott;
GRANT SELECT ON global.product TO scott;
GRANT SELECT ON global.time TO scott;

/* Grant privileges on the cube, dimension, and hierarchy views */
GRANT SELECT ON global.units_cube_view TO scott;
GRANT SELECT ON global.channel_view TO scott;
GRANT SELECT ON global.channel_primary_view TO scott;
GRANT SELECT ON global.customer_view TO scott;
GRANT SELECT ON global.customer_shipments_view TO scott;
GRANT SELECT ON global.customer_segments_view TO scott;
GRANT SELECT ON global.product_view TO scott;
GRANT SELECT ON global.product_primary_view TO scott;
GRANT SELECT ON global.time_view TO scott;
GRANT SELECT ON global.time_calendar_view TO scott;
GRANT SELECT ON global.time_fiscal_view TO scott;

例8-3 クエリー・リライトでのキューブ・マテリアライズド・ビュー使用権限

この例では、SCOTTに対し、リレーショナル表のディテール・レベルのデータを問い合せる権限と、クエリー・リライトを使用してUnitsキューブからサマリー・データを取得する権限を付与するSQLコマンドを示します。

/* Grant privileges on materialized views using query rewrite */
GRANT GLOBAL QUERY REWRITE TO scott;

/* Grant privileges on the relational source tables */
GRANT SELECT ON global.channel_dim TO scott;
GRANT SELECT ON global.customer_dim TO scott;
GRANT SELECT ON global.product_dim TO scott;
GRANT SELECT ON global.time_dim TO scott;
GRANT SELECT ON global.units_fact TO scott;

/* Grant privileges on the analytic workspace */
GRANT SELECT ON global.aw$global TO scott;

/* Grant privileges on the cube */
GRANT SELECT ON global.units_cube TO scott;

/* Grant privileges on the dimensions */
GRANT SELECT ON global.channel TO scott;
GRANT SELECT ON global.customer TO scott;
GRANT SELECT ON global.product TO scott;
GRANT SELECT ON global.time TO scott;

例8-4 GLOBALの変更権限およびリフレッシュ権限

この例では、Analytic Workspace Managerを使用してGLOBALのすべてのディメンション・オブジェクトに対する変更および更新を行うための権限をSCOTTに付与するSQLコマンドを示します。

注意:

GRANT ALLコマンドを使用すると、「セキュリティ」で説明した権限以外にも様々な権限が付与されます。GRANT ALLを使用する場合は必ず、事前に権限のリストを確認してください。

/* Grant privilege to use Analytic Workspace Manager */
GRANT OLAP_USER TO scott;

/* Grant privileges on the analytic workspace */
GRANT ALL ON global.aw$global TO scott;

/* Grant privileges on the cubes */
GRANT ALL ON global.units_cube TO scott;
GRANT ALL ON global.price_cost_cube TO scott;

/* Grant privileges on the dimensions */
GRANT ALL ON global.channel TO scott;
GRANT ALL ON global.customer TO scott;
GRANT ALL ON global.product TO scott;
GRANT ALL ON global.time TO scott;

Analytic Workspace Managerを使用したオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、グラフィカル・インタフェースを使用してオブジェクト・セキュリティを設定できます。また、表示されるSQLコマンドを切り取ってスクリプトに貼り付けることも可能です。

アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、次の手順に従ってアナリティック・ワークスペースに対するオブジェクト・セキュリティの設定を行います。

  1. ナビゲーション・ツリーでアナリティック・ワークスペースを右クリックし、「アナリティック・ワークスペースのオブジェクト・セキュリティの設定」を選択します。

    アナリティック・ワークスペース・オブジェクトのセキュリティの設定ダイアログ・ボックスが表示されます。

  2. ダイアログ・ボックスで必要な操作が完了したら、「OK」をクリックします。

    各項目の詳細を参照する場合は「ヘルプ」をクリックします。

  3. 1つ以上のキューブおよびそのディメンションに対する権限を付与します。

    アナリティック・ワークスペースに対する権限を付与しても、アナリティック・ワークスペース内のキューブおよびディメンションにまで適用範囲が自動的に拡張されることはありません。

図8-1に、GLOBALに対するSELECT権限がPUBLICに付与されたところを示します。

図8-1 GLOBALに対するオブジェクト・セキュリティの設定

図8-1の説明が続きます
「図8-1 GLOBALに対するオブジェクト・セキュリティの設定」の説明
ディメンションに対するオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、次の手順に従ってディメンションに対するオブジェクト・セキュリティの設定を行います。

  1. ナビゲーション・ツリーでいずれかのディメンションを右クリックし、「ディメンションのオブジェクト・セキュリティの設定」を選択します。

    「ディメンションのオブジェクト・セキュリティの設定」ダイアログ・ボックスが表示されます。

  2. ダイアログ・ボックスで必要な操作が完了したら、「OK」をクリックします。

    権限の設定は、すべてのディメンションに対して同時に行えます。権限は、ディメンション・ビューや階層ビュー、さらにはアナリティック・ワークスペースまで拡張できます。各項目の詳細を参照する場合は「ヘルプ」をクリックします。

図8-2に、ディメンションに対するSELECT権限がPUBLICに付与されたところを示します。

図8-2 ディメンションに対するオブジェクト・セキュリティの設定

図8-2の説明が続きます
「図8-2 ディメンションに対するオブジェクト・セキュリティの設定」の説明
キューブに対するオブジェクト・セキュリティの設定

キューブにオブジェクト・セキュリティを設定する前に、キューブが使用するディメンションにオブジェクト・セキュリティを設定します。Analytic Workspace Managerでは、次の手順に従ってキューブに対するオブジェクト・セキュリティの設定を行います。

  1. ナビゲーション・ツリーでいずれかのキューブを右クリックし、「キューブのオブジェクト・セキュリティの設定」を選択します。

    キューブ・オブジェクト・セキュリティの設定ダイアログ・ボックスが表示されます。

  2. ダイアログ・ボックスで必要な操作が完了したら、「OK」をクリックします。

    権限の設定は、すべてのキューブに対して同時に行えます。権限は、キューブ・ビュー、さらにはアナリティック・ワークスペースまで拡張できます。各項目の詳細を参照する場合は「ヘルプ」をクリックします。

ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成

データ・セキュリティ・ポリシーを使用すると、選択したディメンション・メンバーに対する権限を、データベース・ユーザーおよびロールに付与できます。たとえば、地域担当販売部長の権限の適用範囲を、あらゆる地域のデータではなく、本人が担当する地域のデータに制限できます。データ・セキュリティ・ポリシーは、ディメンション、キューブまたはその双方に対して作成可能です。

  • スキーマ内のディメンションおよびキューブに対してデータ・セキュリティ・ポリシーを作成できるのはそのスキーマの所有者のみです。

  • あるディメンションに対して作成されたデータ・セキュリティ・ポリシーは、そのディメンションが含まれるすべてのキューブにまで、適用範囲が拡張されます。キューブごとにポリシーを作成する必要はありません。

  • あるキューブに対してデータ・セキュリティ・ポリシーを作成する場合は、そのキューブに含まれる各ディメンションについてメンバーを選択します。ポリシーは、対象となるキューブにのみ適用されます。

  • ディメンションとキューブの双方に対してデータ・セキュリティ・ポリシーを作成した場合、どちらのポリシーにも定義されているデータにかぎり、その権限がユーザーに付与されます。

データ権限の付与

ポリシーは、1つ以上のデータベース・ユーザーおよびロールに適用できます。ポリシーは、OLAPデータ・セキュリティ・ロールにも適用できます。OLAPデータ・セキュリティ・ロールとは、Analytic Workspace Managerで管理可能なデータベース・ユーザーまたはデータベース・ロールのグループで、セキュリティ・ポリシーにのみ使用できます。OLAPデータ・セキュリティ・ロールおよびデータ・セキュリティ・ポリシーは、Analytic Workspace Managerで作成します。

条件に基づくデータの選択

データ・セキュリティ・ポリシーを定義するとき、特定のディメンション・メンバー、またはディメンション階層に基づいた特定の条件を満たすディメンション・メンバーを選択できます。特定のディメンション・メンバーをハードコードするかわりに条件を使用することで、データをリフレッシュした後も選択内容が有効に保たれます。メンバーを追加した後も、選択内容を変更する必要はありません。たとえば、すべてのHardware製品にSELECT権限を付与するセキュリティ・ポリシーは、PRODUCTディメンションにおいて古い製品が削除され新規製品が追加された場合でも引き続き有効です。

注意:

Analytic Workspace Managerでデータ・セキュリティ・ポリシーを管理するには、OLAP_XS_ADMINロールが必要です。

データ・セキュリティ・ポリシーを作成するには、次の手順を実行します。

  1. ディメンションまたはキューブのフォルダを開きます。

  2. 「データ・セキュリティ」を右クリックし、データ・セキュリティ・ポリシーの作成を選択します。

    データ・セキュリティ・ポリシーの作成ダイアログ・ボックスが表示されます。

  3. 「一般」タブの「データ・セキュリティ・ポリシー名」フィールドに、内容を表すような名前を入力します。

  4. オプション:「説明」フィールドに説明を入力します。

  5. ディメンションの場合は、表示可能なディメンション・メンバーの選択に使用する方法(「メンバーの選択」または「OLAP DML式」)を選択します。関連するタブがアクティブになります。

    キューブの場合、方法は「メンバーの選択」になります。

  6. ユーザーまたはロールの追加」をクリックします。

    「ユーザーまたはロールの追加」ダイアログ・ボックスが表示されます。

  7. このポリシーを適用するデータベース・ユーザー、ロールおよびOLAPデータ・セキュリティ・ロールを選択します。選択したら、「OK」をクリックしてダイアログ・ボックスを閉じます。

    選択したデータベース・ユーザー、ロールおよびOLAPデータ・セキュリティ・ロールが「一般」タブの表に表示されます。

  8. 各ユーザーまたはロールに付与する権限を選択します。OLAPデータ・セキュリティ・ロールに対する権限は、ロールの定義の一部であるため、割当てできません。

  9. キューブの場合は、「メンバーの選択」タブの入力を完了します。

    ディメンションの場合は、前に選択した方法に応じて、「メンバーの選択」タブまたは「OLAP DML式」タブへの入力を完了します。

  10. 「作成」をクリックして、データ・セキュリティ・ポリシーを保存します。

    データ・セキュリティ・ポリシーが、ナビゲーション・ツリーのディメンションまたはキューブの「データ・セキュリティ」フォルダに表示されます。

  11. これらのユーザーおよびロールに、ディメンションまたはキューブ、およびアナリティック・ワークスペースに対するオブジェクト権限を付与します。

図8-3に、PRODUCTに対するデータ・セキュリティ・ポリシーの「メンバーの選択」タブを示します。このポリシーに基づいてPRODUCTディメンションに対する権限を付与されているユーザーは、すべてのHardware製品にアクセスできます。ただし、Software製品およびTotal Productにはアクセスできません。

図8-3 HardwareおよびDescendantsへのProductの制限

図8-3の説明が続きます
「図8-3 HardwareおよびDescendantsへのProductの制限」の説明

データ・セキュリティの無効化と有効化

データ・セキュリティ・ポリシーを作成すると、そのディメンションまたはキューブに対してデータ・セキュリティがOracle OLAPにより有効になります。ディメンションまたはキューブのデータ・セキュリティを無効にすることができます。そのオブジェクトのデータ・セキュリティは、後で有効に戻すことができます。

データ・セキュリティを有効または無効にするには、次の手順を実行します。

  1. ディメンションまたはキューブのフォルダを開きます。

  2. 「データ・セキュリティ」を右クリックし、オブジェクトのデータを無効化またはオブジェクトのデータを有効化を選択します。

    「無効化の確認」ダイアログ・ボックスまたは「有効化の確認」ダイアログ・ボックスが表示されます。

  3. 「はい」をクリックします。

OLAPデータ・セキュリティ・ロールの作成

OLAPデータ・セキュリティ・ロールを作成して、同じデータ・アクセス権限を割り当てるユーザーのグループを管理できます。作成後、データ・セキュリティ・ポリシーを管理する際、個々のユーザーごとに権限を定義するかわりに、データ・セキュリティ・ロールを使用できます。OLAPデータ・セキュリティ・ロールは、データベース・ロールに似ています。ただし、OLAPデータ・セキュリティのコンテキスト内でのみ機能し、あまり強力でないデータベース権限を持つユーザーでも作成できる点が異なります。スキーマにデータ・セキュリティ・ロールを作成できるのはそのスキーマの所有者のみです。

注意:

アナリティック・ワークスペース・マネージャでデータ・セキュリティ・ポリシーを管理するには、OLAP_XS_ADMIN権限が必要です。

OLAPデータ・セキュリティ・ロールを作成するには、次の手順を実行します。

  1. ナビゲーション・ツリーで「データ・セキュリティ・ロール」を右クリックし、データ・セキュリティ・ロールの作成を選択します。

    データ・セキュリティ・ロールの作成ダイアログ・ボックスが表示されます。

  2. 「一般」タブの「データ・セキュリティ・ロール名」フィールドに、内容を表すような名前を入力します。
  3. オプション:「説明」フィールドに説明を入力します。
  4. ユーザーまたはロールの追加」をクリックします。

    「ユーザーまたはロールの追加」ダイアログ・ボックスが表示されます。

  5. このOLAPデータ・セキュリティ・ロールに含めるユーザーとロールを選択します。「OK」をクリックして、このダイアログ・ボックスを閉じます。

    選択したユーザーやロールはこの時点で、「一般」タブの表にリスト表示されます。

  6. 各ユーザーまたはロールに付与する権限を選択します。
  7. 「作成」をクリックして、OLAPデータ・セキュリティ・ロールを保存します。

    新しいOLAPデータ・セキュリティ・ロールが、ナビゲーション・ツリーの「データ・セキュリティ・ロール」フォルダに表示されます。