この項の内容は、次のとおりです。
この項の内容は、次のとおりです。
Oracle Database Firewall Analyzerを使用すると、効率的なポリシーを手早く設計できます。Database Firewallシステムの適切なデプロイメントは、効率的なポリシーに依存しています。ポリシーの各ルールは、SQL文のタイプ、時間、データベース・ユーザーの名前、データベース・クライアントのIPアドレス、オペレーティング・システム・ユーザー名、クライアント・プログラム名、または指定した例外の任意の組合せによって異なる場合があります。
ポリシーの開発は、新しいデータを使用してポリシーの改善と調整を続行する反復的なプロセスです。
注意: [F1]キーを押すと、Oracle Database Firewall Analyzerの広範囲にわたるオンライン・ヘルプを使用できます。 |
クラスタ化は、クラスタと呼ばれる意味的に類似した文のセットに読み込まれたSQL文の分類に使用する重要なツールです。
複数のクラスタが同じSQL構文パターンである場合、Analyzerでは、それらのクラスタは1つのクラスタ・グループにさらにグループ化されます。図3-1は、select <column> from <table>
というパターンと一致する9個のクラスタで構成されたクラスタ・グループを示しています。
ポリシーを開発するときは、個々のSQL文ではなく、各クラスタに対してOracle Database Firewallで実行するアクションを指定します。
Analyzerで、ポリシーの設計に使用するモデルを作成します。モデルは、Database Firewallからのログ・データを使用してAnalyzerをトレーニングするか、SQL文のファイルをアップロードすることで作成されます。「モデルの作成」を参照してください。
モデルのデータを分析します。「モデルのデータの表示と分析」を参照してください。
ポリシーのアクションとルールを設定して、ポリシーを設計します。「ポリシーの設計」を参照してください。
Analyzerでポリシー・ファイルを作成してDatabase Firewallにアップロードし、構成された強制ポイントでこのポリシーを選択します。「ポリシー・ファイルの作成およびDatabase Firewallへのアップロード」を参照してください。
Analyzerで、新しいデータを使用してポリシーを調整します。「新しいデータを使用したポリシーの改善と調整」を参照してください。
この項の内容は、次のとおりです。
モデルは、ポリシーの作成に必要なデータを格納するファイルです。Analyzerを2つの方法でトレーニングすることで、モデルに対してデータを供給できます。
Database Firewallからのトラフィック・ログ・データを使用する
SQL文ファイルをアップロードする
モデルはいくつでも作成できます。通常は、異なるデータベースに対して異なるモデルを作成するか、同じデータベースの異なる分析に対して異なるモデルを作成します。
新しいモデルの作成によって、filename
.smdl
およびfilename
.smdl_data
の2つのファイルが生成されます。別のAnalyzerインストールでモデルを開く場合は、Analyzerソフトウェアが構成されているコンピュータに両方のファイルをコピーする必要があります。
Analyzerには、次のいずれかの方法で、ログ・データまたはSQL文のファイルを供給できます。
Management ServerまたはスタンドアロンDatabase Firewallのトラフィック・ログから直接: ログ・データを供給するには、この方法を使用することをお薦めします。
日常的な普通のデータベース・トラフィックをシステムで監視しながら、ログ固有のポリシーを有効化するには、Management ServerまたはスタンドアロンDatabase Firewall管理コンソールを使用します。「ログ・データを提供するためのログ固有のポリシーの有効化」を参照してください。
ログ固有のポリシーを使用すると、SQLトラフィックの明確な各ソースが含まれたオフライン分析用の文をログに記録できます。このポリシーを適用すると、すべての文をログに記録するように選択した場合より格納される文は少なくなりますが、かなりの記憶域がログ・データ用に使用されることに注意してください。
ログ固有のポリシーは、特に新しいポリシーを開発するためにSQLトラフィックをログに記録します。ログ・データを使用すると、クライアント・アプリケーションによってデータベースがどのように使用されているのかをAnalyzerが理解でき、データベースとそのクライアント・アプリケーションの実際の使用方法を反映したポリシーを短時間で開発できます。
Database Firewallトレーニング・ファイルから: 通常、これは開発者が記述するテキスト・ファイルです。SQL文のリスト(1文に対して1行)が含まれています。必要な構文についてはオンライン・ヘルプを参照してください。
(Microsoft SQL Serverのみ)Microsoft SQL Serverのトレース・ファイルから: このファイルはMicrosoft SQL Serverで作成されたバイナリ・ログ・ファイルです。SQL文のリストが含まれています。
監視しているデータベースは、実行されている必要がありますが、監査の有効化などの追加設定を構成する必要はありません。
スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインします。
詳細は、「管理コンソールへのログイン」を参照してください。
「Login」ページで、システム管理者ロールが付与されているユーザーのユーザー名とパスワードを入力します。次に「Login」をクリックします。
「Monitoring」タブを選択します。
「Enforcement Points」メニューから「List」を選択します。
デフォルトでは、このメニュー項目が選択されています。
「Enforcement Points」ページで、データを分析するデータベースの強制ポイントを検索して、「Settings」ボタンを選択します。
「Monitoring Settings」ページで、「Policy」領域まで下にスクロールします。
「Policy」領域で、unique.dnaオプションを選択します。
「Save」ボタンをクリックします。
新しい設定が即時に有効になります。
デスクトップで、「Oracle Database Firewall Analyzer」アイコンをダブルクリックします。
「Don't show this screen on startup」を以前に選択していない場合は、「Welcome to Oracle Database Firewall Analyzer」ページが表示されます。
次のいずれかを実行します。
「Welcome」ページから「Create a New Model from Training」を選択します。
「File」メニューから「New」を選択します。
「New Model」ダイアログ・ボックスが表示されます。
次の中から選択します。
Train on Log Data: Database Firewallトラフィック・ログからトレーニング・データを提供します。「ログ・データでのトレーニングからの新しいモデルの作成」を参照してください。
Train on File: SQL文が含まれているトレーニング・ファイルをアップロードします。「SQL文ファイルでのトレーニングからの新しいモデルの作成」を参照してください。
ログ・データでのトレーニングから新しいモデルを作成する手順は、次のとおりです。
「Analyzerでの新しいモデルの作成」の手順に従い、手順3で「Train on Log Data」を選択します。
「Change」をクリックします。
「Traffic Log Server」ダイアログ・ボックスで、IPアドレス(および必要な場合はポート番号)、およびOracle Database FirewallまたはManagement Serverシステム管理者のユーザー名とパスワードを入力し、「OK」をクリックします。
「Train on Log Data」ダイアログ・ボックスで、次の選択を実行します。
「Protected Database」メニューで、データを取得する名前付きデータベースを選択します。
データベースがすべて同じタイプ(たとえば、Oracle)の場合は、「All Databases」オプションを選択して、すべてのデータベースのログに記録されたデータを取得することもできます。「All Databases」は、すべてのデータベースに対して同じポリシーを使用することを予定している場合にのみ選択します。
保護対象データベースは、システム管理者が設定したデータベースである必要があります。
読み取るログ・データの日付範囲を指定します。
デフォルトでは、終了日は今日の日付です。
ログに記録された文の中でインポートする文のタイプを選択するか、すべての文をインポートするようにすべてのチェック・ボックスを選択します。必要な場合は[F1]を押し、オンライン・ヘルプで各種オプションの説明を参照してください。
「Train on Log Data」ダイアログ・ボックスで「OK」をクリックします。
「New Model」ダイアログが表示されます。
「Train on Log Data」が選択されていることを確認し、「Train」をクリックします。
Analyzerのメイン・ウィンドウにモデルが表示されます。
「File」メニューの「Save」または「Save As」を選択し、コンピュータのハード・ディスクにモデルを保存します。
Analyzerは、.smdl
および.smdl_data
という拡張子が付く2つのファイルをユーザーが指定した名前で作成します。
図3-2のようなAnalyzerのメイン・ウィンドウが即時に表示されます。
注意: 「Statement Class Distribution」、「Threat Severity Distribution」および「Action Distribution」領域にリンクが表示されていない場合は、アプリケーション・ウィンドウのサイズを調整してください。 |
SQL文ファイルでのトレーニングから新しいモデルを作成する手順は、次のとおりです。
「Analyzerでの新しいモデルの作成」の手順に従い、手順3で「Train on File」を選択します。
「Browse」をクリックして、使用するファイルを選択します。
リストから適切なデータベース・タイプを選択します。
「Train on File」が選択されていることを確認し、「Train」をクリックします。
Analyzerのメイン・ウィンドウの上部に.train
または.trc
という名前のファイルが表示され、モデルがこのファイルに基づいていることが示されます。
「File」メニューの「Save」または「Save As」を選択し、コンピュータのハード・ディスクにモデルを保存します。
Analyzerは、.smdl
および.smdl_data
という拡張子が付く2つのファイルをベースとなったファイルの名前で作成します。
図3-2のようなAnalyzerのメイン・ウィンドウが即時に表示されます。
注意: 「Statement Class Distribution」、「Threat Severity Distribution」および「Action Distribution」領域にリンクが表示されていない場合は、アプリケーション・ウィンドウのサイズを調整してください。 |
Analyzerを起動します。
「Welcome to Oracle Database Firewall Analyzer」ウィンドウで、「Open a previously saved Model」を選択します。
「Open」ダイアログ・ボックスで、以前のモデル・ファイルを保存したディレクトリにナビゲートします。
モデルには.smdl
というファイル拡張子が付いています。(.smdl_data
ファイルを開くことはできません。このファイルはモデルのデータを格納するためにのみ使用されます。)
モデルを選択し、「Open」をクリックします。
「Summary」ページが表示された状態で、モデルがAnalyzerに表示されます。
「Statement Class Distribution」、「Threat Severity Distribution」および「Action Distribution」領域にリンクが表示されていない場合は、アプリケーション・ウィンドウのサイズを調整してください。
この項の内容は、次のとおりです。
トレーニング・データをAnalyzerに提供してモデルを作成した後は、そのモデルを使用してデータのSQL文を分析できます。
この項では、異なるタブを使用してAnalyzerでデータを表示したり、オプションを表示する様々な方法について説明します。
データは、ポリシー・ルールを割り当てる前後に分析できます(「ポリシーの設計」を参照)。ポリシー・ルールを割り当てる前は、指定したトレーニング・データに関する情報がAnalyzerによって提供され、文タイプ、データベース表および列でフィルタ処理できます。ポリシー・ルールを割り当てた後は、そのポリシー・ルールに基づいて追加のフィルタ処理オプションが提供されます。
Analyzerのメイン・インタフェースは「Summary」タブです。その他のタブでは、変更可能な追加の設定や、表示可能な分析および情報が提供されます。この章では、これらのタブのリストを示し、各タブについて説明します。
注意: 棒グラフの下にリンクが表示されていない場合は、アプリケーションのサイズを調整してください。 |
図3-2は、Analyzerのメイン・ウィンドウを示しています。
「Summary」タブには、現在分析している文タイプ(クラスタ)に適用されるポリシー・ルールのグラフィック表現が、適用可能な例外およびその他のルールとともに表示されます。このタブでは、ポリシーの自動生成、ノベルティ・ポリシーの設定、および「Details」タブに表示される情報のフィルタ処理を実行できます。
「Summary」タブは、次の領域に分かれています。
Exceptions: 作成した例外がリストされます。モデルのクラスタに割り当てたルールは、これらの例外には適用されません。ここに記載されているすべての例外に適用する単一のルールを指定できます。
Graphical Distribution of Statements: 様々な文クラス、脅威の重大度、およびポリシーに現在設定されているアクション・レベルの観点で、クラスタの分布が棒グラフに表示されます。
棒グラフの下のリンクをクリックすると、そのリンクに基づくクラスタのサブセットが「Details」タブに表示されます。たとえば、「Action Distribution」の下の「Pass」をクリックすると、このポリシーで「Pass」に設定されている文クラスタが「Details」タブに表示されます。
Novelty Policies: 保護対象データベースの特定の文クラスまたは特定の表(あるいはその両方)に対して作成した特別なポリシーがリストされます。
Default Rule: モデル、「Exceptions」または「Novelty Policies」に表示されるクラスタのルール・セットではカバーされない文の異常に対するデフォルト・ルールが表示されます。
Analyzerのメイン・ウィンドウには、「Summary」タブに加えて、次のタブがあります。
注意: タブおよびメニューは、オンライン・ヘルプで詳しく説明されています。 |
Details: クラスタをクラスタ・グループに編成することで、SQLデータを様々な方法で表示します。ポリシーを手動でカスタマイズできます。
Baseline: 「Details」タブのかわりに使用します。クラスタが表形式で表示され、各ポリシーの属性が示されます。また、このタブにはクラスタをフィルタ処理する複数の方法が用意されており、ポリシーを手動でカスタマイズすることもできます。
Properties: モデルに対する当初のデータ・ソース、統計、変更管理情報、メモなど、モデルに関する一般的な情報が記載されています。
Analysis: AnalyzerがスキャンしたSQL文を分析できます。
Invalid SQL: SQL構文に準拠していない文など、Analyzerで認識されなかったSQL文が表示されます。
クラスタ・グループは、文の意味(たとえば、select <column> from <table>)に従ってAnalyzerでグループ化された一連のクラスタです。このクラスタ・グループには、このパターンとは一致するが、列および表に対する値が異なる文が入ります。
「Analysis」タブで、クラスタをクラスタ・グループ別に表示する手順は、次のとおりです。
Analyzerで、「Analysis」タブをクリックします。
「View」メニューから「Group by Shape」を選択します。
SQLデータの階層ビューが表示されます。最上位レベルで、Analyzerは定義したすべてのクラスタを複数のクラスタ・グループに編成しています。図3-3は、4つの異なるクラスタ・グループを示しています。
クラスタ・グループをダブルクリックすると、そのグループに含まれているクラスタが表示されます。図3-4は、クラスタ・グループの内容の例を示しています。
このクラスタをダブルクリックすると、クラスタ内のすべての文が表示されます。図3-5は、クラスタ・グループ内の文を示しています。クラスタ・グループには複数の文を含めることができます。
クラスタの左側にあるクラスタ・インジケータ(円形のアイコン)は、クラスタ・グループ内の文に対する、そのクラスタ内の文の割合を示しています。マウスのポインタをインジケータ上に移動すると、図3-6に示すように、割合が小数点第2位まで表示されます。また、クラスタに2つの文(メッセージ)があることがツールチップに表示されます。
クラスタ・グループ内のクラスタは、割合の順に表示されます。
クラスタ・グループの左側にあるクラスタ・グループ・インジケータは、モデル内の文に対する、そのクラスタ・グループ内の文の割合を示しています。図3-7は、モデル内のすべての文の中で、そのクラスタ・グループが33.33パーセントを占めていることを示しています。
クラスタ・グループは、割合の順に表示されます。
次の図でハイライト表示されているクラスタの脅威の重大度インジケータは、脅威の重大度を示しています。インジケータは容器の形状のアイコンで、空から満杯の状態まで変化します。図3-8は、脅威の重大度が割り当てられていないことを示すメッセージが表示された空の容器インジケータを示しています。
この例には、機密データも表示されており、####
記号でマスキングされています。
update scott.dept set dname
= '####'
詳細は、「機密データのマスキング」を参照してください。
「Details」タブには、「Analysis」タブで使用できるビューと同じ「Group by Shape」、「Table」または「Column」のビューが用意されています。図3-9は、「Details」タブで「Group by Shape」が選択されている場合に表示されるサンプル・データを示しています。
データは、「Analysis」タブと同様の方法で編成されます。最上位レベルは、クラスタ・グループです。各クラスタ・グループには、そのグループのクラスタのアクション・レベルの割合を示すインジケータがあります。たとえば、図3-9のリストの最後にあるupdate <table> set <column>
のアイコンは、クラスタ・グループ内のクラスタの50パーセントが「Unassigned」アクション・レベル(青色)で、50パーセントが「Warn」アクション・レベル(黄色)であることを示しています。
これらの2つのクラスタの機密データは、Oracle Database Firewallによってマスキングされています。「機密データのマスキング」を参照してください。
クラスタ・グループをダブルクリックすると、そのグループに含まれているクラスタが表示されます。クラスタの横のインジケータは、現在選択されているアクションと脅威の重大度を示しています。
クラスタ・レベルに表示される文は、そのクラスタの文の例です。図3-10は、クラスタ・グループの内容の例を示しています。
Analyzerでは、データを選択したデータベース表別に編成できます。
データをデータベース表別に表示する手順は、次のとおりです。
Analyzerで、「Analysis」タブをクリックします。
「View」メニューから「Group by Table」を選択します。
「Group by Table」を初めて選択した場合は、「Select Tables」ダイアログが自動的に表示されます。表示する表を選択して「OK」をクリックします。
図image060.jpgの説明
別の表を選択するには、「View」メニューから「Change Tables」を選択し、表を選択して「OK」をクリックします。
図3-11は、hr.employeeとhr.salaryの2つの表が選択されている様子を示しています。
SQL文は表に従ってグループ化されます。select decode('#','#','#','#') from dual
という文は、選択された表のいずれにも該当しない場合の文です。
「Group by Column」ビューは、「データのデータベース表別表示」で説明されている「Group by Table」と類似していますが、Analyzerは、選択した列に従ってデータを編成します。
データをデータベース列別に表示する手順は、次のとおりです。
Analyzerで、「Analysis」タブをクリックします。
「View」メニューから「Group by Column」を選択します。
データのフィルタ処理に使用する列を選択して「OK」をクリックします。
別の列を選択するには、「View」メニューから「Change Columns」を選択し、列を選択して「OK」をクリックします。
特定のタイプのクラスタを「Details」または「Analysis」タブに表示する手順は、次のとおりです。
Analyzerの「Details」または「Analysis」タブで、「Tools」メニューから「Filters」を選択します。
「Filters」ダイアログが表示されます。
クラスタのアクション、ログ・レベル、脅威の重大度または文クラス(あるいはこれらの組合せ)を選択して表示するクラスタを選択します。
たとえば、アクションの「Warn」、およびロギング・レベルの「Sample」と「Always」を選択すると、「Warn」アクションがあり、ロギング・レベルが「Sample」または「Always」のクラスタのみが表示されます。
Analyzerの「Baseline」タブでは、表形式でデータを表示できます。図3-12は、このタブの一部を示しています。
「Baseline」タブでは、1つのクラスタが1行に表示され、フィルタ処理可能な複数の列があります。データは、次の要素に基づいてフィルタ処理できます。
アクション
ロギング・レベル
脅威レベル
IPアドレス
表
列
ユーザー
文のタイプ
クライアント・プログラム
OSユーザー
「Baseline」タブのフィルタを使用する手順は、次のとおりです。
Analyzerで、「Baseline」タブをクリックします。
フィルタがある列の上部でフィルタ・アイコン(下矢印)をクリックします。
次のようなフィルタ・ダイアログ・ボックスが表示されます。
プロファイルを使用すると、一連の特性を定義して文のフィルタ処理に使用できます。「プロファイルを使用した特定データの表示とポリシー・ルールの設定」を参照してください。プロファイルを作成すると、データをプロファイル別に表示できます。
Analyzerで、「Details」、「Baseline」または「Analysis」タブをクリックします。
「View」メニューから、「Profile」または「Change Profile」(以前にプロファイルを選択した場合)を選択します。
「Select Profile」ダイアログで、表示するプロファイルを選択して「OK」をクリックします。
すべてのデータの表示に戻るには、「View」メニューから「Background」を選択します。
「Properties」タブには、モデルに対する当初のデータ・ソース、統計、変更管理情報、メモなど、選択したモデルに関する一般的な情報が記載されています。「Database」、「DB Location」などのフィールドのいずれかにデータを入力すると、モデルを保存する際にこの情報が保存されます。図3-13は、選択したモデルに関する一般情報を示しています。
この項の内容は、次のとおりです。
Oracle Database Firewallシステムを適切にデプロイするためには、効率的なポリシーを開発する必要があります。Analyzerを使用すると、最小限の時間で効率的にポリシーを設計して調整できます。
ポリシーの設計には、次の作業が含まれます。
モデルの各クラスタに対して、次の設定を指定します。
Action level: Oracle Database Firewallでクラスタに一致する文が検出された場合の対応(許可、ブロックまたは警告の発行)。
Logging level: Oracle Database Firewallでのロギング(ログに記録しない、すべての文をログに記録する、またはクラスタ、ソースIPアドレス、データベース・ユーザー名、オペレーティング・システム・ユーザー名およびクライアント・プログラム名の一意の組合せの文をログに記録する)。(詳細はオンライン・ヘルプを参照してください。)ロギングは、データベース・アクティビティの独立した記録として使用でき、たとえば、将来の監査または法廷対応などに使用できます。
ログに直接記録されるデータが増加すると、必要なディスク領域に影響を与えるため、ロギングの量は慎重に考慮してください。サンプル・ロギングの頻度は、クラスタに対して10文ごとになります。
保証されるポリシーはタイプごとに1つであるため、ログ固有のポリシーまたは初期ポリシーを使用することをお薦めします。すべての文をログに記録するのではなく、トラフィックが効率的にサンプリングされます。
Threat Severity: クラスタの文で予想される脅威。「Unassigned」(空の容器)から「Catastrophic」(明るい赤色で満たされた容器)の範囲で6種類の脅威の重大度設定があります。Oracle Database Firewallで文がログに記録されると、その文の脅威の重大度も記録されます。サードパーティのレポートやsyslogを使用すると、ログに記録された脅威の重大度に基づいてSQL文を表示できます。
これらの設定は、モデルに対してトレーニング・データを提供するときに、Analyzerで自動的に割り当てることができ、その後、必要に応じて設定を調整できます。「ポリシーの自動作成」を参照してください。
ポリシー設定に対する例外を作成します。
特定の文タイプが検出された場合または選択した表がコールされた場合(あるいはその両方の場合)にトリガーされるノベルティ・ポリシー(またはルール)を追加します。
データをフィルタ処理したり、特定の基準(クライアントIPアドレスなど)に基づいてポリシー・ルールを設定するためのプロファイルを作成します。
初期ポリシーは、 「Summary」タブから自動的に作成します。
図3-14は、「Summary」タブ・ウィンドウの一部を示しています。
「Summary」タブには、ポリシーとの主な相互作用が表示されます。「Summary」タブでは、ポリシーを自動的に生成したり、ポリシーの文クラス、脅威の重大度およびアクション・レベルの現状に関する内訳グラフを表示できます。ポリシーを手動でカスタマイズ(たとえば、「Unassigned」アクション・レベルのポリシーのみを表示するなど)するときは、グラフに続くリンクを使用して「Details」タブの内容をフィルタ処理できます。未割当ての文とは、分類していないSQL文です(たとえば、脅威レベルに割り当てた文)。
「Summary」タブを選択します。
「Summary」ページの右側で、次のボタンを選択します。
Assign Threat Severities: この設定により、脅威の重大度が「Unassigned」の各クラスタに、脅威の重大度が自動的に割り当てられます。脅威の重大度は、考えられるリスクに基づいて割り当てられます。
Assign Policies: この設定により、クラスタの脅威の重大度に基づいて、各クラスタにロギング・レベルとアクション・レベルが自動的に割り当てられます。(オンライン・ヘルプを参照してください。)
表示専用の権限が付与されているユーザーは、ポリシーを作成できますが、そのポリシーをDatabase Firewallに適用することはできません。新しいポリシーをアップロードしてDatabase Firewallに適用できるのは、Database Firewallシステム管理者のみです。
オプションで、次の機能を設定します。
例外
新しいノベルティ・ポリシー
オプション
「例外、ノベルティ・ポリシーおよびデフォルト・ルールの作成」を参照してください。
初期ポリシーを作成した後は、「Details」または「Baseline」タブを使用してポリシーをカスタマイズできます。
クラスタのアクション、ロギング・レベルおよび脅威の重大度は、「Details」または「Baseline」タブの右クリック・メニューを使用して設定または変更できます。次の図は、「Details」タブの右クリック・メニューの例を示しています。
クラスタのアクション、ロギングまたは脅威の重大度を設定または変更する手順は、次のとおりです。
「Details」または「Baseline」タブで、クラスタを右クリックします。
注意: 最初のクラスタを選択した後は、[Ctrl]キーを押しながらクラスタを選択することで、「Baseline」タブで複数のクラスタを選択できます。
「Set Action」、「Set Logging」または「Set Threat」サブメニューで、必要な設定を選択します。
図3-15は、アクションを設定するための右クリック・サブメニューを示しています。
Oracle Databaseには、Advanced Security Option (ASO)が用意されています。ASOを使用するように構成したOracleデータベースでは、このオプションによりネットワーク・トラフィックが自動的に暗号化されます。Oracle Database FirewallではASOで暗号化されたネットワーク・トラフィックの存在がレポートに記載されるため、ユーザーは、ポリシーを介してこのトラフィックをブロックできます。
ASOで暗号化されたトラフィックがDatabase Firewallで検出されると、次の文字列がログ・ファイルに入力されます。
extracted_from_protocol encrypted
ASOトラフィックを生成したASO対応のデータベースからモデルを作成またはリフレッシュすると(「ログ・データでのトレーニングからの新しいモデルの作成」を参照)、extracted from protocol encrypted
というテキストが記載されたクラスタが、モデルで生成されたその他のクラスタのリストに表示されます。ここから、このクラスタにポリシー(脅威レベルの設定やブロックなど)を作成できます。
関連項目: ASOの詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。 |
この項の内容は、次のとおりです。
例外およびノベルティ・ポリシーを作成し、データベース・トラフィックで発生する特定の状況および文のタイプについてルールを設定します。
ポリシー設定、例外またはノベルティ・ポリシーではカバーされない異常な文を処理するには、デフォルト・ルールをカスタマイズします。
特定のセッション・データが検出されたときに使用するアクション、ロギング・レベルおよび脅威の重大度は、例外によって決まります。たとえば、例外では、1日の特定の時間帯に発生する文や、選択したクライアントIPアドレスまたはユーザー名によって生じる(または生じない)文に対してルールを指定できます。
例外は、他のすべてのポリシー・ルールに優先します。たとえば、SQL文が管理者から発生した場合、または特定のIPアドレス以外から生じた場合は、標準のポリシー・ルールに優先することが必要になる場合があります。
例外を作成するためには、例外の定義に使用する要因のセットを定義しておく必要があります。「プロファイルおよび例外で使用する要因セットの定義」を参照してください。
例外を作成する手順は、次のとおりです。
Analyzerの「Summary」タブで、「New Exception」をクリックします。
「New Exception」ダイアログで、例外に指定または例外から除外するセットを選択します。ルールが有効になるためには、この例外セットのすべての基準を満たす必要があります。
前述の例では、「EMEA」IPアドレス・セットに起因し、かつ「hrdbadmin」DBユーザー・セットに起因する文に対して、この例外を適用することを指定しています。「hrdbadmin」DBユーザー・セットを「Exclude」にすると、この例外は、「EMEA」IPアドレスに起因し、かつ「hradmin」DBユーザー・セットに起因していない文に対して適用されます。
「OK」をクリックします。
例外は、「Summary」タブの最上部に表示されます。次の例には、2つの例外があります。
1つ目は、「NA」IPアドレス・セットに起因し、かつ「Ops」クライアント・プログラム・セットに起因しない文に適用されます。
2つ目は、「EMEA」IPアドレス・セットに起因し、かつ「hrdbadmin」DBユーザー・セットのユーザーからの文に適用されます。
「Summary」タブで、「Exceptions」(例外リストの上)を右クリックします。
例外のいずれかに該当する場合に適用する「Action」、「Logging」および「Threat」の各レベルを設定します。
すべての例外の横にあるアイコンは設定によって変ります。
ノベルティ・ポリシーは、特定タイプの文または選択した表で機能する文(あるいはその両方)に使用するアクション、ロギング・レベルおよび脅威の重大度を指定します。ノベルティ・ポリシーを使用すると、特定の文が検出された場合に通常のポリシー・ルールを緩和または強化できます。
たとえば、特定の文タイプに対する通常のポリシー・アクションが「Warn」であるときに、情報公開を含む表に対してこの文タイプが作用する場合は「Pass」アクションを適用するようにノベルティ・ポリシーを設定することが必要になる場合があります。あるいは、機密情報が記載されている表に対して作用するすべての文をブロックするノベルティ・ポリシーの設定が必要な場合もあります。
Analyzerの「Summary」タブで、「New Novelty Policy」をクリックします。
「New Novelty Policy」ダイアログで、このポリシーをトリガーする1つ以上の文クラスまたは1つ以上のデータベース表(あるいはその両方)を選択します。
「OK」をクリックします。
「Summary」タブの「Novelty statement policies」で、「new Novelty Policy」を右クリックして「Properties」を選択します。
「Novelty Statement Policy」ダイアログが表示されます。
次の設定を実行して、このポリシーのルールを定義します。
「OK」をクリックします。
新しいノベルティ・ポリシーが、設定に一致するアイコンとともに「Summary」タブに表示されます。
文が複数のノベルティ・ポリシーと一致する場合は、最悪の場合のポリシーが使用されます。たとえば、ブロックするポリシーは、警告を発するポリシーより優先されます。
文の異常(つまり、他のポリシー・ルールのいずれにも該当しない文)については、ユーザーがロギング、しきい値アクション停止時間、構文および大/小文字の区別に対してデフォルト設定を指定できます。
デフォルト・ルールをカスタマイズする手順は、次のとおりです。
Analyzerの「Summary」タブにある「Default Rule for Baseline Anomalies」セクションで、「Default Rule」を右クリックして「Properties」を選択します。
「Default Rules for Baseline Anomalies」ダイアログが表示されます。
次の項目を設定します。
「Action」、「Logging Level」、「Threat Severity」
(オプション)1分間に一定数の異常な文が検出された場合に別のアクションを適用するには、最上部にある「Apply action」チェック・ボックスを選択し、「statements per minute」のカウンタに数値を設定します。
オプションで、「Substitute Statement」を選択し、このデフォルト・ルールがトリガーされる場合の代替文を入力します。クライアント・アプリケーションで処理できる文を記述するように注意してください。
「OK」をクリックします。
クラスタを右クリックし、メニューから「Properties」を選択することで、「Baseline」タブのリストに表示されているクラスタのプロパティを検索および変更できます。
このダイアログ・ボックスには、次の追加の機能があります。
SQL文のブロックまたは警告の発行: 選択したクラスタに一致する文が1分間当たりの指定回数より頻繁に発生する場合は、SQL文をブロックするか、警告を発行するように選択できます。ブロックされた文のロギングは常に有効にしておきます。
代替SQL文の作成: ブロックされたアクションがあるクラスタに対する代替文は、データベース・ポリシー強制(DPE)モードでのみ定義できます。データベース・クライアントが適切なエラー・メッセージまたは応答を受け取るには、代替文が必要になる場合があります。
次の例は、Oracleデータベースに対して使用できる、安全性に問題がなく、値を返したりパフォーマンスに影響を与えることがない適切な代替文です。
SELECT
100 FROM DUAL
データベース・ユーザーのログインおよびログアウト・ポリシーは、「Tools」メニューから「Login/Logout Policy」を使用して指定できます。ログインおよびログアウト・ポリシーは、ポリシー違反が生じるとアラートを発行します。データベースに対する自動化された攻撃に対処する場合に役立ちます。
図3-17は、「Login/Logout Policy」ダイアログ・ボックスを示しています。
「Login/Logout Policy」ダイアログ・ボックスには3つのセクションがあります。
Login Policy: 成功または失敗したデータベース・ユーザーのログインに使用するアクション・レベルと脅威の重大度を指定し、ログインを記録するかどうかを指定します。
Failed Login Policy: たとえば、指定回数まで連続してログインに失敗すると、クライアントをブロックしたり警告を生成するなど(「warn」アクション・レベルである「アラート」)、失敗時のログイン・ポリシーを指定します。トリガーされると、「Reset period」に指定した期間中はログインがブロックされ、この期間が終了すると、データベース・クライアントは再びログインを試行できます。
Logout Policy: データベース・ユーザーのログアウトに使用するアクション・レベルと脅威の重大度を指定し、ログアウトをログに記録するかどうかを指定します。
プロファイルは、様々な方法でデータを表示できる一種のフィルタで、特定のデータベース・ユーザー、IPアドレス、オペレーティング・システム・ユーザー、クライアント・プログラムおよび時間についてポリシー・ルールを設定します。
たとえば、夜間にデータベースにアクセスするデータベース・ユーザーの特定セットに対して、異なるポリシー・ルールを設定できるプロファイルを作成するように決定できます。セットに属するユーザーが特定の時間帯にデータベースにアクセスときは、このプロファイル・ポリシー・ルールが標準的な「バックグラウンド」ルールに優先して使用されます。
プロファイルは、フィルタとして使用される次の要因セットの組合せです(「プロファイルおよび例外で使用する要因セットの定義」を参照)。
IPアドレス
データベース・ユーザー・ログイン名
クライアント・プログラム名(例: SQL*Plus)
オペレーティング・システム・ユーザー名
時間スライス(例: 月曜から金曜の午前9時から午後5時)
プロファイルを作成するためには、フィルタ処理目的で使用するように定義された要因のセットが必要です。「プロファイルおよび例外で使用する要因セットの定義」を参照してください。
プロファイルを作成するには:
「Tools」メニューから「Profiles」を選択します。
「Profiles」ダイアログ・ボックスで、「Add」を選択します。
「Profile」ダイアログ・ボックスで、次の設定を入力します。
Name: プロファイルの名前を入力します。
IP Address Set: リストから使用可能なIPアドレス・セットを選択するか、「Not Set」のままにします。
DB User Set: リストから使用可能なデータベース・ユーザー・セットを選択するか、「Not Set」のままにします。
Client Program Set: リストから使用可能なクライアント・プログラム・セットを選択するか、「Not Set」のままにします。
OS User Set: リストから使用可能なオペレーティング・システム・ユーザー・セットを選択するか、「Not Set」のままにします。
Timeslice: リストから使用可能な時間スライスを選択するか、「Not Set」のままにします。
「OK」をクリックします。
「Analysis」タブが表示されているときに、「View」メニューから初めて「Profile」を選択すると、プロファイルの選択を求めるプロンプトが表示されます。その後、プロファイルは「View」→「Change Profile」を使用して変更できます。
「Analysis」タブには、選択したプロファイルに一致するソースと時間に起因するSQL文のクラスタのみが表示されるようになります。たとえば、プロファイルにデータベース・ユーザー・セットのみが含まれている場合、「Analysis」タブには、DBユーザー・セットのデータベース・ユーザーに起因するSQL文のクラスタのみが表示されます。プロファイルにデータベース・ユーザー・セットと時間スライスの両方が含まれている場合、「Analysis」タブには、そのユーザー・セットとその時間スライスに起因する文のクラスタのみが表示されます。
プロファイルを表示している場合は、そのプロファイルに対してポリシー・ルールを設定できます。これらは、バックグラウンド・ルールに優先します。プロファイルが選択されている状態では、右クリックしてクラスタのバックグラウンド・アクション・レベルを変更できます。
「Details」タブでは、プロファイルを選択しても、表示されているクラスタは変更されません。すべてのクラスタが引き続き表示されますが、プロファイルを選択した場合は、そのプロファイルと他すべての文(バックグラウンド・ルール)に対してポリシー・ルールを設定できます。
1つのSQL文が、複数のプロファイルと一致する可能性があります。この場合、Oracle Database Firewallでは、一致するすべてのプロファイルの中で最も深刻なアクション、ロギング・レベルおよび脅威の重大度が使用されます。
セットは、プロファイルと例外で使用するフィルタの定義に使用されます。プロファイルと例外は、次のセットを使用して定義されます。
IP address set: データベース・クライアントのIPアドレスが指定されているリスト。
DB user set: データベース・ユーザー・ログイン名が指定されているリスト。
Client Program set: クライアント・プログラム(たとえば、SQL*Plus)が指定されているリスト。
OS User set: オペレーティング・システム・ユーザー名が指定されているリスト。
Timeslice: 1週間の時間が指定されているセット。たとえば、月曜から金曜の午前9時から午後5時のような時間スライス。時間は、データベースの監視に使用しているDatabase Firewallに基づいています。
「Tools」メニューで、次のオプションから選択します。
IP Address Sets
DB User Sets
Client Program Sets
OS User Sets
Timeslices
表示されたダイアログ(たとえば、「DB User Sets」)で、「Add」をクリックして新しいセットを作成します。
次のダイアログ・ボックスで、「Name」フィールドにセット名を入力します(例: hrdbadmin
)。
次のいずれか、または両方を実行します。
右側の「Recorded」リストから必要な項目を選択し、左向きの山カッコをクリックして「Selected」リストに移動します。
セットの新しいメンバーを指定するには、「Add」をクリックして「Selected」リストのフィールドに新しい項目の名前を入力します。
セットのメンバー(IPアドレスは除く)には、2種類のワイルドカードを使用できます。疑問符(?)は1文字に対応し、アスタリスク(*)は任意の文字数に対応します。
必要に応じてこの手順を繰り返し、このセットに項目を追加します。
「OK」をクリックした後、さらに「OK」をクリックします。
必要なセット数に応じて、これらの手順を繰り返します。これで、プロファイルまたは例外の定義にこれらのセットを使用できます。
ポリシーを設計した後は、ポリシーをファイルに保存し、このファイルをDatabase Firewallにデプロイする必要があります。
この項の内容は、次のとおりです。
Database FirewallまたはManagement Serverでポリシーをアップロードして有効にする手順は、次のとおりです。
スタンドアロンDatabase FirewallまたはManagement Server管理コンソールにログインし、「Monitoring」タブを選択します。
「Policies」メニューの「Upload」を選択します。
「Upload Policy」ページが表示されます。
「Upload Policy」ページで、次の操作を実行します。
「Browse」ボタンをクリックし、適切なポリシー・ファイルを検索します(拡張子.dna
)。
オプションで、「Description」フィールドにポリシーの説明を入力します。
「Save」ボタンをクリックします。
ポリシーがアップロードされたことを示す通知と現在アップロードされているポリシーのリストが「Policies」ページに表示されます。必要な場合は、ここからポリシーを編集または削除できます。
ポリシーを有効にする手順は、次のとおりです。
「Monitoring」タブで、「Enforcement Points」メニューの下にある「List」ボタンを選択します。
ポリシーに使用する強制ポイントに対応する「Settings」ボタンを選択します。
「Monitoring Settings」ページで、「Policy」領域にスクロールします。
アップロードしたポリシーがデフォルトのポリシーとともにリストに表示されます。
アップロードしたポリシーを選択します。
「Save」ボタンをクリックします。
Database Firewall Management Serverを使用している場合は、適切なOracle Database Firewallにポリシーが自動的に配布されます。
事前構成のポリシーとアップロードしたポリシーのリストを表示する手順は、次のとおりです。
Database FirewallまたはManagement Server管理コンソールで、「Monitoring」タブを選択します。
「Policies」メニューで、「List」を選択します。
事前定義のポリシー(最上部)およびアップロードされたポリシーが表示されます。
事前定義のポリシーは、デフォルトで提供されるポリシーです。事前定義のポリシーは削除できません。
リストに青色の背景で表示されているポリシーは、現在、強制ポイントによって使用されています。
(オプション)このページから、次の操作を実行します。
アップロードされているポリシーを削除するには、「Delete」をクリックします。
ポリシーの説明を編集するには、「Edit」をクリックします。
この項の内容は、次のとおりです。
ポリシーはいつでも新しい値を使用して調整できます。図3-18は、ポリシーの開発がどのように反復的なプロセスであるかを示しています。
ポリシーのSQLトラフィックを収集するために、ログ固有のポリシーが有効化されます。「ログ・データを提供するためのログ固有のポリシーの有効化」を参照してください。
Database Firewallでは、使用している初期ポリシー(ログ固有のポリシーやユーザーが開発したポリシーなど)に従ってSQL文がログに記録されます。
Analyzerでは、新しい文が適切なクラスタに割り当てられ、必要な場合は新しいクラスタが作成されます。新しいクラスタが作成されると、そのクラスタに対するアクション・レベルとロギング・レベルが自動または手動で割り当てられます。
新しいセッション要因(クライアントIPアドレス、データベース・ユーザー名、OSユーザー名、クライアント・アプリケーション名など)も適切なセットに割り当てられ、それに応じてプロファイル定義が更新されます。「プロファイルおよび例外で使用する要因セットの定義」を参照してください。
変更した後は、ポリシーをデプロイできます。
ポリシーの開発は反復的なプロセスです。初期ポリシーをデプロイした後は、ログ固有のポリシーを使用します。これによって、Oracle Database Firewallでは新しいSQL文をログに記録でき、その文は現在のポリシーの作成に使用した文と照合して分析するために、Analyzerにインポートできます。
ログ固有のポリシーを使用すると、ポリシーの異常も検出できます。このようにして、考えられるセキュリティの脆弱性を識別して、ポリシーをさらに改善できます。このプロセスは必要に応じて何回でも繰り返すことが可能です。
監視対象データベースからの更新データを使用してAnalyzerをリフレッシュする手順は、次のとおりです。
「Update」メニューから「Update with Log Data」を選択します。
「Traffic Log Server」ダイアログ・ボックスで、Database FirewallのIPアドレスと有効なDatabase Firewallシステム管理者の資格証明を入力します。
デフォルトのIPアドレスおよび資格証明が提供されます。
「Update with Log Data」ダイアログ・ボックスで、適切な設定を指定して「OK」をクリックします。
これらの設定の詳細は、「ログ・データでのトレーニングからの新しいモデルの作成」の手順4を参照してください。
あるいは、手順1で次のオプションを選択することもできます。
Update with File: トレーニング・ファイルまたはトレース・ファイルのデータと照合してモデルをテストします。
Test Single Statement: 単一のSQL文と照合してモデルをテストします。
監視対象データベースからの更新データを使用してAnalyzerをリフレッシュした後、Analyzerは更新データの各SQL文を読み取ってクラスタに割り当て、ユーザーが「Details」、「Baseline」および「Analysis」タブで分析できるようにします。
新しいデータの文によっては、追加のクラスタが生成されることがあります。これらのクラスタにはデフォルトの「Unassigned」アクション・アイコン(疑問符が描かれた三角形のアイコン)が表示されるため、「Details」および「Baseline」タブで簡単に識別できます。
図3-19は、「Analysis」タブで「Group by Shapes」を使用している場合に表示される結果の例を示しています。
この例では、追加のセットの円形のインジケータが表示されています。各行の最初のインジケータ(左側)は、モデルの作成に使用される当初のデータの文を説明しています。2番目のインジケータは、最初のテスト・データ・セットの文を説明しています。モデルをテストするたびに新しいインジケータのセットが表示されます。「「Analysis」タブのクラスタ・インジケータ」を参照してください。
図3-20は、新しいデータから作成された追加のクラスタ(「Details」タブ)の例を示しています。
更新したデータを使用してAnalyzerをリフレッシュした後は、モデルの新しいクラスタにルールを割り当てることができます。
ポリシー・ルールを新しいデータに割り当て、ポリシーを更新する手順は、次のとおりです。
次のいずれかを実行します。
ポリシー設定を新しいデータに自動的に割り当てるには、「Summary」タブで、「Assign Threat Severities」および「Assign Policies」をクリックします。割り当てた設定は後で変更できます。
ポリシー設定を手動で割り当てるには、「Baseline」または「Details」タブで新しいクラスタを検索し、アクション、ロギング・レベルおよび脅威の重大度の設定を割り当てます。「アクション、ロギング・レベルおよび脅威の重大度の手動設定」を参照してください。
「File」メニューから「Create Policy」を選択します。
「Create Policy」ダイアログ・ボックスでは、別の名前で新しいポリシーを作成したり、現在のポリシーを選択して自分の更新内容で置換することができます。
ポリシー・ファイルを作成した後は、管理コンソールを使用してそのファイルをManagement Serverにアップロードする必要があります。「ポリシー・ファイルの作成およびDatabase Firewallへのアップロード」を参照してください。
この項の内容は、次のとおりです。
機密データのマスキングによって、クレジット・カード番号などの機密データがログ・ファイルに表示されないようにします。
「Tools」メニューの「Sensitive data masking」を選択すると、ログ・ファイル内の機密データを自動的にマスキングするためのルールを設定できます。
図3-21は、「Sensitive data masking」ダイアログ・ボックスを示しています。
ログに記録された文が、このダイアログに設定されているマスキング・ポリシーと一致している場合は、その文のすべてのユーザー・データ(リテラル、整数定数、16進定数、浮動小数定数など)が代替の文字で自動的に置換されます。使用される文字はデータ型によって異なります。
モデル内のデータのHTMLサマリーを作成するには、「File」メニューから「Export as HTML」を選択します。この機能は、レポート作成の目的で使用する場合があります。
既存のポリシー・ファイルに基づいた新しいモデルの作成が必要な場合があります。
ポリシー・ファイル(.dna
)からモデルを作成する手順は、次のとおりです。
「File」メニューから「Load Policy」を選択します。
.dna
ポリシー・ファイルを選択します。
「File」メニューから、「Save」を選択します。
ファイルが.smdl
モデル・ファイルとして保存されます。