データベースユーザ定義コントロールの使用

データベース UDC タイプを使用して、データベースで SQL 文を実行することでカスタムチェックを作成します。これらのチェックを使用して、データベースのポリシーレポートを作成することもできます。

現在、次のデータベースがサポートされています。

- MS SQL

- Oracle

- Sybase

- PostgreSQL/Pivotal Greenplum

- SAP IQ

- IBM DB2

手順 1 - データベースコントロールの追加

「PC」->「Policies」->「Controls」->「New」->「Control」に移動します。

「Database Control Types」を選択し、次のコントロールタイプから 1 つをクリックします。

MS SQL Database Check

Oracle Database Check

Sybase Database Check

PostgreSQL/ Pivotal Greenplum Database Check

SAP IQ Database Check

IBM DB2 Database Check

各コントロールで、データベースに実行する SQL 文を定義します。この値には 32000 文字まで入力できます。

注記 - データベースコントロールでサポートされているのは、SELECT 文のみです。例えば、次の SQL 文を使用して、国が“ Germany ”で、かつ都市が“ Berlin ”である“ Customers ”のすべてのフィールドをリスト表示できます。

SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin'

クエリと結果の例については、ここをクリックしてください。

手順 2 - データベースコントロールのポリシーへの追加

コンプライアンスポリシーを新規作成するか(方法についてはこちらを参照)、既存のポリシーを編集し、データベースコントロールをポリシーに追加します。ヒント - ポリシーに、コントロールで選択されたデータベーステクノロジがあることを確認します。

スキャンがまだ完了していない場合、コントロールを表示しても、ポリシーのデータベースから実際のデータは表示されません。

スキャン前の Policy Editor

 

時間短縮のためのヒント: ポリシーによる制限を使用せずにデフォルトモードでコンプライアンススキャンを実行してから、データベースコントロールをポリシーに追加することもできます。この方法では、ポリシーを作成し条件を設定するためのスキャンデータが既に取得されています。

手順 3 - コンプライアンススキャンの開始

データベースを実行しているホストでコンプライアンススキャンを開始します。方法については、こちらを参照してください。

スキャンに使用するコンプライアンスオプションプロファイルを編集して、チェックで返される最大行数を設定できます。デフォルトでは、Oracle については最大で 5,000 行、その他のすべてのコントロールタイプについては最大で 256 行が返されます。この制限を編集するコントロールタイプを選択します。

オプションプロファイルのデータベースコントロールタイプ

手順 4 - ポリシーに戻ってコントロール条件を設定

Policy Editor を使用してコンプライアンスポリシーを編集し、スキャンで返される実際のデータを表示します。

スキャン後の Policy Editor

 

列を選択し、期待値を定義します。これにより、コントロールの合格/不合格ステータスを判断する条件が設定されます。

正確な結果を取得するためには、選択したデータタイプに適切な期待値を指定してください。例: データタイプに「List String」を選択した場合、「Expected Values」フィールドにテキスト値を指定します。

スキャン条件設定後の Policy Editor

 

注記 - 最初のチェックボックス「Set status to PASS if no data found」と「Criteria 1」はコントロール評価に「OR」を使用します。これは変更できません。

さらに条件を追加するには、「Add another column」をクリックします。「Criteria 1」、「Criteria 2」、「Criteria 3」というように、最大 5 つの条件を追加できます。

各条件で「AND」または「OR」を選択できます。「AND」を選択すると、合格するには両方の条件に一致する必要があります。「OR」を選択すると、合格するには少なくとも 1 つの条件に一致する必要があります。

設定した条件を確認するには、「Test Control」をクリックします。次に、ポリシーを保存します。

スキャン条件テスト後の Policy Editor

手順 5 - レポートの実行

コントロールの場合と同様に、レポートに「PASS」または「FAIL」のステータスが表示されます。最新スキャンで返された列が前回のスキャンと異なる場合は、ポリシーを編集して、コントロールで選択された条件を変更することができます。

以下のレポート例では、期待値と実際値が一致したため、ステータス「PASS」が返されています。

MS SQL Database Check のレポート出力の例

 

よくある質問

「Set status to PASS if no data found」オプションが有効化されているのに、チェックが「Fail」とマークされるのはなぜですか?

Policy Editor で「Set status to PASS if no data found」オプションが有効化されており、SQL 文に一致するデータがデータベースで見つからなかった場合は、スキャン後、すべてのチェックは「Pass」とマークされるはずです。ただし、条件 2 以降のいずれかが「AND」に設定されている場合、「AND」条件に不合格となり、チェックは「Fail」とマークされます。

「Actual Value」項に条件の設定時に選択した列名が表示されないのはなぜですか?

最新のスキャンで返されたデータが、条件の設定時に選択した列を返さない場合、これらは表示されません。「AND」であるか「OR」であるかによって、チェックで設定された条件が「Pass」または「Fail」とマークされます。

最新スキャンで返された列が前回のスキャンと異なる場合は、ポリシーを編集して、コントロールで選択された条件を変更することができます。

「matches」条件で「string list」と「regular expression list」を選択した場合に結果が異なるのはなぜですか?

演算子条件「matches」で演算子「regular expression list」を選択すると、部分一致すれば「PASS」となります。

演算子条件「matches」で演算子「string list」を選択すると、「PASS」となるには、完全一致する必要があります。この場合、部分一致では「FAIL」となります。

クエリ例とそのクエリの結果を共有できますか?

はい。こちらを参照してください