ヘッダーをスキップ
Oracle® Database 2日でデータ・ウェアハウス・ガイド
11g リリース2(11.2)
B56298-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

12 データ・ウェアハウスのセキュリティ

この章では、データ・ウェアハウスのセキュリティの考慮事項について説明します。内容は次のとおりです。

データ・ウェアハウスのセキュリティについて

データ・ウェアハウジングは、セキュリティに対して固有の課題を投げかけます。業務データ・ウェアハウスは、巨大なシステムであることが多く、多様なセキュリティ上のニーズに応えるとともに、数多くのユーザーに対応しています。また、データ・ウェアハウスは、柔軟性のある、強力なセキュリティ・インフラストラクチャを必要としますが、そのセキュリティ機能は、厳密なパフォーマンスとスケーラビリティなど条件付きの環境で動作する必要があります。

データ・ウェアハウスのセキュリティの必要性について

セキュリティに関するよく知られた基本要件の多くは、他のシステムの場合と同様にデータ・ウェアハウスにも当てはまります。不正なユーザーがアプリケーションを使用してデータにアクセスしたりデータを変更するのを防止し、アプリケーションおよび基礎データがハッカーに盗用されるのを回避し、正当なユーザーが必要に応じて利用できるようにデータを保持し、ユーザーの実行するアクティビティがシステムによって記録されている必要があります。

データ・ウェアハウスでは、複数のソースから統合されたデータが含まれるため、このような要件がさらに重要です。情報を盗もうとする側からすると、データ・ウェアハウスは企業内でも最も見返りが大きいターゲットの1つになり得ます。さらに、強固なセキュリティ・インフラストラクチャにより、有効性が大幅に改善され、データ・ウェアハウス環境のコストが削減されます。

データ・ウェアハウスのセキュリティの一般的な顧客シナリオには次のような事例があります。

  • ある企業は、多くの部署や子会社で広く使用される企業データ・ウェアハウスを管理しています。その企業では、各部署の従業員には自分の部署に関連するデータのみを表示し、本社の従業員には全体像が表示されるセキュリティ・インフラストラクチャを必要としています。

  • ある企業のデータ・ウェアハウスには、個人情報が格納されています。プライバシに関連する法では、個人情報の使用が規制される場合があります。データ・ウェアハウスでは、このような法律に準拠した方法でデータを管理する必要があります。

  • 企業は、データ・ウェアハウスのデータをクライアントに販売します。クライアントは、購入または申し込んだデータのみを表示することができます。他のクライアントのデータを見ることはできません。

データ・ウェアハウスのセキュリティのロールおよび権限の使用

システム権限、オブジェクト権限およびロールは、基本的なデータベース・セキュリティを提供します。権限とロールは、ユーザーによるデータへのアクセスを制御し、ユーザーが実行可能なSQL文の種類を制限するように設計されています。ロールは異なるレベルのデータベース・アクセスを作成するために使用できる権限のグループです。たとえば、表およびプログラムを作成できるように、アプリケーション開発者に対してロールを作成できます。

必要な権限を持っている場合にかぎり、他のユーザーに権限およびロールを付与できます。ロールおよび権限の付与は、管理者レベルで開始します。データベースの作成で管理ユーザーSYSにより、すべてのシステム権限および事前定義されたOracleロールの作成と付与が行われます。ユーザーSYSは、他のユーザーに権限およびロールを付与でき、これらを付与されたユーザーに対して、他のユーザーに特定の権限を付与する権限を付与することもできます。明示的に付与された権限がない場合、ユーザーはデータベース内のどの情報にもアクセスできません。

ロールおよび権限はデータのセキュリティを規定し、データ・ウェアハウスにとってこれらのロールおよび権限の使用は不可欠です。これは多くのアプリケーションおよびツールを介してユーザーがデータにアクセスするためです。

データ・ウェアハウスの仮想プライベート・データベースの使用

仮想プライベート・データベース(VPD)によって、表、ビューまたはシノニムで直接、粒度の細かいレベルにセキュリティを規定できます。これは、セキュリティ・ポリシーが表、ビューまたはシノニムに直接連結されており、ユーザーがデータにアクセスする際にセキュリティをバイパスする方法がない場合に自動的に適用されるためです。述語を使用する動的に付与されているSQL文によって、VPDはデータへのアクセスを低いレベルに制限し、セキュリティ・ポリシーをデータベース・オブジェクトに適用します。また、完全なデータ分離の保証があれば、複数のユーザーが単一のデータベース・サーバーに格納された重要なデータへ直接セキュア・アクセスできます。VPDを使用すると、銀行顧客には顧客自身のアカウント履歴のみを見せ、複数の企業(競争企業同士)のデータを扱う企業の場合は、同じデータ・ウェアハウスからデータを扱っている企業にそれぞれのデータのみを見せることができます。さらに、VPDはセキュリティ関連列への制御アクセスを提供するので、従業員は自身の給与のみを確認できるようになります。

VPDは透過アプリケーションです。セキュリティはデータベース層で規定され、データベース内でのデータ・アクセスを制御するためのアプリケーション固有のロジックを考慮します。標準のアプリケーションおよびカスタム・ビルドのアプリケーションは、アプリケーション・コードの単一行の変更を行うことなく、ファイングレイン・アクセス制御を活用できます。

企業内では、VPDによって、アプリケーションの配布にかかる所有コストが削減されます。セキュリティの構築は、データにアクセスするすべてのアプリケーションに対してではなく、ウェアハウスに対して1回のみにすることができます。セキュリティは、ユーザーによるデータへのアクセスに関係なくデータベースによって規定されているためにより強固になっています。非定型の問合せのツールまたは新しいレポート・ライターを介してデータへアクセスするユーザーはセキュリティを経由できません。多くのユーザー・ツールと同様、様々なアプリケーションをサポートするEnterpise Data Warehouseにおいて、仮想プライベート・データベースは主要なテクノロジです。

仮想プライベート・データベースの動作方法

仮想プライベート・データベースは表、ビューまたはシノニムを使用するセキュリティ・ポリシーとの関連付けにより有効になります。管理者はPL/SQL DBMS_RLSパッケージを使用して、ポリシー・ファンクションとデータベース・オブジェクトをバインドします。連結したセキュリティ・ポリシーを使用するオブジェクトへの直接アクセスまたは間接アクセスにより、データベースはポリシーを実装したファンクションを参照します。ポリシー・ファンクションは、データベースがユーザーのSQL文に追加する述語(WHERE句)を戻すため、ユーザーによるデータへのアクセスの修正は透過的で動的です。

アプリケーション・コンテキストを使用すると、組織、サブスクライバ番号、アカウント番号、地位など、データベース管理者が重要と考える事実上すべての属性に基づいてアクセス条件を設定できます。たとえば、ユーザーが顧客、営業担当またはマーケティング・アナリストかどうか関係なく、売上データのウェアハウスは顧客番号に基づいたアクセスを規定できます。この場合、顧客はWeb上で注文履歴を確認でき(顧客自身の注文のみ)、営業担当は複数の注文を見ることができ(自身の企業の顧客の注文のみ)、また、アナリストの場合、過去の2四半期におけるすべての売上を分析できます。アプリケーション・コンテキストは、特定のオブジェクトでファイングレイン・アクセス制御ポリシーに適用する可能性のあるセキュアなデータ・キャッシュとして機能します。ユーザーがデータベースにログインすると、Oracle Databaseはユーザー・セッションのキャッシュ情報にアプリケーション・コンテキストを設定します。アプリケーション・コンテキストの情報は、開発者によって、個々のアプリケーションに関連した情報に基づいて定義されます。たとえば、地域別売上データを問い合せるレポート・アプリケーションは、ユーザーの地位および部門に関するアクセス制御に基づくことができます。この場合、アプリケーションはユーザーのログイン時に各ユーザーのアプリケーション・コンテキストを最初に設定し、各ユーザーの地位および部門の従業員と部署に関する表から問い合せられたデータを使用してコンテキストを移入できます。地域別売上表でVPDポリシーを実装しているパッケージは、ユーザーの地位および部門の各問合せを移入するためにこのアプリケーション・コンテキストを参照します。アプリケーション・コンテキストはパフォーマンスの劣化を引き起こす可能性のある実行中の副問合せを不要とみなします。

Oracle Label Securityの概要

Oracle Databaseのセキュリティ・オプションであるOracle Label Securityはラベルベースのアクセス制御を規定するために仮想プライベート・データベース(VPD)を拡張します。Oracle Label Securityは完全なVPD対応アプリケーションで、ラベル付きデータ管理によってVPDを拡大します。Oracle Label Securityは、セキュアなデータ・ウェアハウスの配布を簡略化し、基本的なセキュリティを提供します。

ラベルベースのアクセス制御を使用すると、表の行に機密性ラベルが割り当てられ、これらのラベルに基づいてデータへのアクセスが制御されて、適切なセキュリティ・ラベルがマークされたデータを確認できます。たとえば、組織が企業の機密情報とパートナに関する情報を区別する場合です。または、特定の主要なパートナと共有できる機密情報、および会計部門や営業部門などの特定の企業内部のグループのみがアクセス可能な機密情報などがある場合です。ラベル付きデータを管理できるということは、適切なデータ・アクセス・レベルで適切な人に情報を提供する組織にとって大きなメリットがあります。

Oracle Label Securityの動作方法

Oracle Label Securityは、ラベルのコレクション、ユーザーの認可およびセキュリティ強制オプションであるポリシーを使用します。ポリシーは、作成後にすべてのアプリケーション・スキーマまたは特定のアプリケーション表に適用できます。Oracle Label Securityは単一のデータ・ウェアハウス内で複数のポリシー定義をサポートします。ラベル定義、ユーザーの認可および強制オプションはポリシーごとに定義されます。たとえば、マーケティングのポリシーにはマーケティングのみのラベルやマネージャおよび上級副社長などのラベルが含まれます。

Oracle Label Securityは、行に含まれるラベル、各データベース・セッションに関連付けられたラベル、およびセッションに割り当てられたOracle Label Security権限に基づいて、データベース表の行へのアクセスを調整します。これによって、ユーザーにデータベースの標準的なシステム権限およびオブジェクト権限が付与された後、アプリケーション表に対するアクセスの調整が行われます。たとえば、ユーザーが表に対するSELECT権限を持っていると仮定します。ユーザーが表でSELECT文を実行すると、Oracle Label Securityは選択された各行を評価して、このユーザーが割り当てられている権限およびアクセス・ラベルに基づいて、選択された行にアクセス可能かどうかを判断します。また、Oracle Label Securityでは、UPDATEDELETEおよびINSERT文に対するセキュリティ・チェックも行われます。ラベルは表およびマテリアライズド・ビューに適用することができ、マテリアライズド・ビューによってパフォーマンスが増加し、ラベルによりセキュリティが増加するために、データ・ウェアハウス環境で目的の柔軟性、スピードおよびスケーラビリティを実現します。

データ・ウェアハウスによりラベルを利用する方法

Oracle Label Securityを使用すると、複数のソースから利便性、管理性および集中管理によって、1つの大きなシステムに情報を統合できます。このセキュリティ・オプションはアプリケーション自体で行われるので、PL/SQLプログラミングを行う必要がありません。これにより、情報の統合およびデータ自体でのセキュリティの制限によるリスクの最小化が可能になり、行レベルでのデータへのアクセス制御によって精度の高いアクセス・セキュリティが提供されます。

データ・ウェアハウスのファイングレイン監査の概要

ファイングレイン監査により、コンテンツに基づいたデータ・アクセスの監視ができます。この監査では、監査するレコードの列および条件を指定できます。この監査では、監査するレコードの列および条件を指定でき、指定列を使用した接続で使用したDML文の特定のタイプに対する監査の制限を条件に含むことができます。また、監査イベントの発生時におけるルーチン名を指定できます。このルーチンは管理者に通知またはアラートするか、エラーおよび異常を処理できます。たとえば、中央税務当局で使用すると、納税申告へのアクセスを追跡し従業員による詮索を防止できます。特定の表でSELECT文を発行した特定のユーザーを把握するだけでは十分ではなく、日常業務に必要ではない情報にアクセスしようとする際のさらに細かいレベルでの監査が強固なセキュリティに必要です。この場合、列または行のSELECT文には仕事に無関係な情報が含まれます。ファイングレイン監査はこの機能を提供します。

ファイングレイン監査はDBMS_FGAパッケージまたはデータベース・トリガーを使用してユーザー・アプリケーションで実装できます。

データ・ウェアハウスの透過的データ暗号化の概要

透過的データ暗号化によって、オペレーティング・システムのファイルに格納されるデータとして、データベース列にある機密データを暗号化できます。データベース外部のセキュリティ・モジュールで暗号キーの管理および記憶領域をセキュアに保ちます。既存のアプリケーションに暗号化したルーチンを埋め込む必要がなく、コストおよび暗号化の複雑さを大幅に削減しました。いくつかの単純なコマンドを使用することで、機密のアプリケーション・データは暗号化されます。

多くの暗号化ソリューションは、アプリケーション・コード内の暗号化ファンクションに対する特定のコールを必要とします。これには高いコストが必要で、アプリケーションの広範囲にわたる理解、およびソフトウェアの書込みと保持の技術が要求されます。一般的に、ほとんどの組織には既存のアプリケーションを修正して暗号化ルーチンに対するコールを作成する時間や専門家が不足しています。透過的データ暗号化は、Oracle Databaseに埋め込まれた暗号化により暗号化問題を処理します。これはSQL* Loaderではなく直接パス・ロードを使用して行われることに注意してください。

SQLを介して実行されるアプリケーション・ロジックは変更することなく実行を継続します。言い換えれば、アプリケーションはアプリケーション表にデータを挿入するために同じ構文を使用でき、Oracle Databaseはディスクへ情報を書き込む前にデータを自動的に暗号化します。後続のSELECTオプションには透過的に復号化されたデータが含まれ、アプリケーションは通常の作業を継続します。