sql >> データベース >  >> RDS >> Database

データベースでPIIを分類、検索、マスクする方法…

    データベース接続を確立すると、IRIFieldShieldとIRIDarkShieldの両方のユーザーは、1つ以上のスキーマで機密データを分類、検索、匿名化するための幅広いオプションを利用できます。 IRI Workbenchのルールベースの機能を使用して、これらすべての目標を一度に実行できるようになりました。

    この記事では、FieldShieldを使用して小さなリレーショナルデータベーススキーマ全体でPIIを検索およびマスキングするためのデータクラスの使用方法を段階的に説明しますが、これらの手順をより大きなスキーマまたはより多くのスキーマに拡張することもできます。データベースに半構造化列または非構造化列が含まれている場合は、RDBのDarkShield classify-search-maskプロシージャに関するこの記事、またはNoSQLDBのこの記事を参照してください。

    FieldShield構造化列RDB操作では、データは通常、一度に1つのスキーマに分類されますが、保存されたルールを使用して、アドホックまたは更新のスケジュールに従ってグローバルにマスクされます。

    定義するデータマスキングルールを使用すると、データの各クラスに最適な関数を選択し、それを一貫して適用できます。一意の元のプレーンテキスト値ごとに同じ一意の暗号文の結果を生成すると(任意のテーブルまたはファイルで)、参照整合性も維持されます。たとえば、データがマスクされた後も結合は機能します。

    この例では、VMサンドボックスで提供されているSCOTTスキーマのOracleテーブルのサンプルを使用しています。別のデータベースに接続するには、以下を構成する必要があります。

    • JDBCを使用したIRIWorkbenchでのDBのDTP接続プロファイル
    • そのソースDBのODBC DSN

    FieldShieldで使用するためにデータベースを接続する方法については、DBセットアップを参照してください。 ここ。

    ここで説明する手順は次のとおりです。

    1. セットアップ–データクラスとマスキングルールの定義
    2. スキャン–スキーマデータクラス検索ウィザードを実行します
    3. レビューと調整–データクラスライブラリエディタ
    4. マスク–データクラスデータベースマスキングウィザードを実行します

    同様のステップバイステップの説明がここにリンクされているビデオシリーズもあります。

    セットアップ–データクラスとマスキングルールの定義

    ルールとウィザードでデータクラスを使用するには、最初にデータクラスを定義して保存する必要があります。これは、ウィンドウ>設定>IRI>データクラスとグループを介して実行できます。 。詳細については、IRIWorkbenchでのデータ分類に関するこの記事を参照してください。データ分類の設定とマスキングルールのビデオチュートリアルもあります。

    データクラスは、列名(クラスEMAILはEMAILという名前の列と一致します)または列に含まれるデータと一致することにより、列と一致する可能性があります。この例には、正規表現またはセットファイルのいずれかを持つクラスがあります。セットファイルには、辞書検索として機能するエントリが含まれています。

    その設定ページで、次のデータクラスが存在することを確認します。

    • クラス CREDIT_CARD \ b((4 \ d {12}(\ d {3})?))|(?:5 [1-5] [0-9] {2} | 222[1-9]を使用します| 22 [3-9] [0-9] | 2 [3-6] [0-9] {2} | 27 [01] [0-9] | 2720)[0-9] {12} |( 3 [47] \ d {13})|(3(0 [0-5] | [68] \ d)\ d {11})|(6(011 | 5 \ d {2})\ d {12 })|((2131 | 1800 | 35 \ d {3})\ d {11})|(8 \ d {15})\ b マッチャーとして。
    • クラスメール \ b [\ w ._%+-] + @ [\ w .-]+\。[A-Za-z]{2,4}\ bを使用します
    • クラス PHONE_US ^(\ +?(1)([.-]?)?)?(\(?([2-9] \ d {2})\)?([.-]?)? )([2-9] \ d {2})([.-]?)(\ d {4})([#eExXtT] *)(\ d {2,6})?&
    • クラス PIN_US \ b([0-9] {3} [-]?[0-9] {2} [-]?[0-9] {4})\ bを使用します
    • セットファイルC:/IRI/cosort100/sets/names/names_last.setを使用するクラスLAST_NAME

    そうでない場合は、[デフォルトに戻す]をクリックします 。

    設定ページの上部には、エントリ Matching Threshold があります 。これは、列にデータクラスを割り当てるために必要な一致のパーセンテージを表します。スキーマ検索は、一致がこのしきい値に達するまで4Kブロックのデータをスキャンします。このしきい値に到達しない場合、データクラスは割り当てられません。

    「LAST_NAME」と呼ばれない可能性のある姓を含む列があるか、セットファイルに一致するデータがない可能性があることを知っているので、正規表現を使用してデータクラスを列名のように一致させることができます。 たとえば、LNAMEまたはLASTNAMEという名前の列がある場合があります。

    LAST_NAMEデータクラスを編集するには、[データクラス]ビューで[LAST_NAME]エントリをクリックし、[編集]をクリックします。 。名前をL(AST)?[_-]?NAMEに変更します (下線と括弧内のダッシュ)。 OKをクリックします 。 適用して閉じるをクリックします 。

    各データクラスの値をどのようにマスクするか(つまり、ターゲットの列形式)を事前に決定して、次にそれらのルールを定義できるようにする必要があります。この例では、編集、形式を保持する暗号化、および仮名化のルールがあります。それぞれをIRIメニューから一度だけ定義する必要があります。

    この例でこれらのルールを定義するには、次の手順に従います。

    ルール1-編集 (社会保障番号の場合)

    1. IRIメニュー>新しいルールを選択します 。
    2. フィールドルールを選択します 次へをクリックします 。
    3. 編集機能を選択します 、 SSNを使用します ルール名の先頭にSSNRedactionRuleと表示され、次へをクリックします。 。
    4. マスクの定義を選択します ラジオボタン。 1と入力します 開始位置 および5 長さテーブルに追加をクリックします および終了

    ルール2–暗号化 (クレジットカードの口座番号、メールアドレス、電話番号の場合)

    1. IRIメニュー>新しいルールを選択します 。
    2. フィールドルールを選択します 次へをクリックします 。
    3. 暗号化および復号化関数を選択します 次へをクリックします 。ルールの名前を変更しないでください。
    4. enc_fp_aes256_alphanumを選択します 左側のオプション。 secretと入力します パスフレーズの場合 。暗号化キー管理オプションについては、このページを参照してください。
    5. 完了をクリックします 。

    ルール3–仮名化 (名前の場合)

    1. IRIメニュー>新しいルールを選択します 。
    2. フィールドルールを選択します 次へをクリックします 。
    3. 仮名の置換を選択します 、名前をLNamePseudonymRuleに変更し、次へをクリックします。 。
    4. [独自の仮名リストを使用する]をクリックします 、および参照 ルックアップファイルに、 C:/git/workbench-demos/Database_Classification_Masking/sets/lnames.set
    5. 仮名リストからランダム描画を使用を選択します 。回復可能な仮名化も可能ですが、ソースデータが変更される可能性があるため、より複雑になることに注意してください。
    6. 完了をクリックします 。

    データクラスのマスキングルールが定義されたので、検索とマスキングの操作を実行して、1つ以上のデータベーススキーマ全体でデータをグローバルに検索して修正できます。

    スキャン–スキーマデータクラス検索ウィザードを実行します

    スキーマのすべてのテーブルでクラス定義に準拠するすべてのデータを検索するには、スキーマデータクラス検索ウィザードを使用します。これにより、事前に分類されたPIIを含む各テーブルと列のレポートが作成され、プロジェクトに固有のデータクラスファイルが作成され、そのファイルのフォームエディタが開きます。その編集ダイアログ(この後の次のステップ)では、最後のステップでグローバルデータマスキングに進む前に、データクラスとマスキングルールの定義を確認および変更できます。

    ウィザードは、IRIWorkbenchツールバーの[データ検出]メニューグループから実行できます。代わりに、データソースエクスプローラーから直接検索ウィザードを実行して、選択したスキーマをウィザードに事前入力することもできます。データソースエクスプローラー(DSE)でSCOTTスキーマを右クリックし、IRI>スキーマデータクラス検索を選択します。 。

    検索ウィザードのセットアップページで、データクラスファイルを保存する場所を入力します。各プロジェクトにはこのファイルタイプが1つしか存在できないため、名前フィールドの読み取り専用ステータスになります。デフォルトのままにします。 次へをクリックします 。

    入力ページには、1つのスキーマが選択されていることが示されています。 次へをクリックします 。次のページでは、データ型で検索される列を制限できます。 NUMERICを含める 、[次へ]をクリックします 。

    [アイテムの除外]ページでは、スキャン中にテーブルまたは列を除外できます。 次へをクリックします 。

    データクラスページでは、スキャン中に使用されるデータクラスをフィルタリングできます。 CREDIT_CARDのみを選択してください 、メール L(AST)?[_-]?NAME、PHONE_US 、および PIN_US 完了をクリックします 。

    レポートとともに、これにより、ソース列とデータクラス間のマッピングを含むデータクラスライブラリが作成(または追加)されます。開いたフォームエディタを使用すると、結果にルールを割り当てることができます。

    この46のテーブルを検索すると、18の列の一致が得られました。これはほとんど完全ではありませんが、完全ではありません。

    テーブルが空であるか、名前がセットファイルで一致を見つけられなかったために、いくつかの列が一致しなかったことを知っています。次のステップでは、これらのミスに対処し、テーブルごとにマスキングルールを確認できます。

    レビューと調整–データクラスライブラリエディタ

    データクラスライブラリのフォーム編集ウィンドウで検索結果が開いたので、テーブルレベルで列ルールを調べて変更し、データクラス名と一致する列名を持つスキーマ内の空のテーブルを削除できます。これらすべては、バルクマスキングジョブが実行できるように正しく設定されていることを確認するのに役立ちます。

    このビューは、データベース検索結果とともにフラットファイル(ディレクトリデータクラス)検索結果もサポートすることに注意してください。これらの結果をデータクラスライブラリに結合することで、異なるデータソース間でマスキング関数(ルール)を同じに保つことが容易になります。これにより、より分散したアプリケーション環境で参照整合性を維持し、データの一貫性をテストできます。

    データソース(テーブル)をクリックして、そのソースに関する詳細とその中のデータのプレビューを表示します。データクラスとの一致が行われた場合、その列にはそのクラスとその一致方法が表示されます。

    以下のPERSONSテーブルの場合、すべてのSSN列の値がPIN_USデータクラスのRegExパターンと一致し、LASTNAME列とCREDIT_CARD列がデータクラス名と一致しているため、これらの列スキャンは必要ありません。

    データクラスマッピングの編集は、ドロップダウンを使用してデータクラスを変更するか、列の選択を解除してマッピングを完全に削除することで行うことができます。テーブルが空の場合、必要なすべてのマッピングが割り当てられない可能性があります。これを処理する方法は3つあります。

    1. 上記の分類ウィザードの除外ページにテーブルを追加して、データクラスライブラリに追加されないようにすることができます
    2. テーブルに将来データが含まれる可能性がある場合は、ここでデータクラスを手動で割り当てます。次に、
      • マスキングウィザードでチェックを外します
      • そのままにしておくと、マスキングウィザードによって、実行されるがマスクされないジョブスクリプトが作成されます
    3. または、データクラスライブラリからデータソースを削除します

    この例では、次のデータソースを選択し、[削除]をクリックします 空であるか、マスクする必要がないため:

    SCOTT.DEMO_ROWGEN
    SCOTT.DM_EMPLOYEES
    SCOTT.PATIENT_RECORD_ENCRYPTED

    マスキングする前に、データクラスライブラリで結果を確認するように注意する必要があります。データが無効であるか、データクラスマッチャーを変更する必要があるために、一致が見落とされることがあります。誤検知が発生する可能性もあります。

    この例では、無効なメールアドレスと米国の電話番号の形式があるため、データクラスを手動で割り当てる必要がありますが、とにかくこれらの列をマスクしたいと思います。この列を選択して分類するには、次のようにします。

    SCOTT.EMPLOYEES.PHONE_NUMBER> PHONE_US

    結果を確認して必要に応じて変更したら、左側のライブラリのデータクラスをクリックして、デフォルトのルールを割り当てます。これにより、デフォルトのルールをクラスに割り当てるだけで、すべてのソースにルールを割り当てることができます。

    この例では、次のようにライブラリ内のデータクラスにマスキングルールを割り当てました。

    CREDIT_CARD> FieldEncryptionRule
    メール>FieldEncryptionRule
    L(AST)?[_-]?NAME> LNamePseudonymRule
    PHONE_US> FieldEncryptionRule
    PIN_US> SSNRedactionRule

    それぞれのマスキングルールを確認することで、グローバルルールの割り当てがデータソースに完全かつ正しく伝播されたことを確認できます。たとえば、上記で最初にルールとともに示したSCOTT.PERSONSテーブルには、次のようになります。

    特定のテーブルの列にルールがない場合、または別のルールが必要な場合は、デフォルトのルールが適用された後で、各データソースでそれらをアドレス指定することにより、そのルールを追加または変更できます。

    マスク–データクラスデータベースマスキングウィザードを実行します

    適切なマスキングルールがデータクラスに割り当てられていることを確認したら、それらをグローバルに適用する準備が整います。

    iriLibrary.dataclassを右クリックします IRI Workbench Project Explorerツリーのプロジェクトフォルダにあるオブジェクトを選択し、 IRI> New Data Class Database Masking Jobを選択します。 。ウィザードの最初のページで、プロジェクトフォルダーにデータクラスとルールライブラリが保存されていることを確認し、ジョブに名前を付けます。 概要ページを表示を選択します ジョブの詳細を確認します。

    ウィザードを使用すると、マスクされた結果を同じで更新できます。 ソーステーブル(静的にマスクするため)、異なる ターゲットテーブル、またはフラットファイル (推奨)最初に結果を検証し、それらをターゲットにロードできるようにします。 出力を変更します フラットファイル次へをクリックします 。

    [データクラスフィルター]ページで、すべてのデータクラスを選択したままにします。 次へをクリックします 。 [データソース]ページで、すべてのアイテムを選択したままにします。ジョブを実行したくないテーブルがある場合は、ここで選択を解除します。

    概要画面を表示することを選択したので、ジョブを確認できます:

    完了をクリックする前に 。

    次に、スクリプトが作成され、フロー図が開かれてジョブ全体が示されます。これは、Windows(またはUnix)バッチファイルとしてもシリアル化されます。列がマスクされる各テーブルは、タスクスクリプトでシリアル化される茶色の変換マッピングブロックで表されます。

    変換マッピングブロックをダブルクリックし、ターゲットへのオレンジ色の線を調べて、マスキング操作を確認します。これらは、入力から変更される列を示します。

    オレンジ色の線の右側にあるフィールドをクリックすると、画面の下部にプロパティビューが表示されます。 Advanced Fieldステートメントは、適用された変換(マスキング機能)を示しています。

    作成されたマスキングジョブに慣れたら、それを実行します。 new_classProtection フォルダで、 new_classProtection.batを右クリックします ファイルを作成し、実行>バッチプログラムを選択します 。

    ジョブはコマンドラインで実行され、マスクされた出力ファイルを開いて、プロジェクトフォルダーまたはファイルシステムから確認できます。実際、バッチ操作の実行後、すべてのマスキングタスクスクリプトとフラットファイル出力が新しいジョブフォルダーに表示されます。

    下のスクリーンショットは、左側にあるもの、中央にある私のテーブルの1つであるPERSONSの前後の状態、右側にあるスクリプトとアウトライン形式の特定のタスクステートメントを示しています。この表で分類およびルール割り当てされた3つの列が、計画どおりにどのようにマスクされたかを確認してください。

    バッチマスキングジョブが実行されたら、次の前に結果を再確認できます。

    1. IRI Workbenchのテーブルにロードします(ローダーファイルを自動作成できます)。
    2. 変更を加えるためにジョブを変更します。および/または、
    3. ウィザードを再実行して、代わりに出力をテーブルに送信します。

    これらのマスキングジョブはコマンドラインで実行され、データの更新と自動アーカイブのためにトリガーまたはスケジュールすることができます。このエンドツーエンドの構成プロセスまたはその展開のいずれかの側面について質問がある場合、またはサポートが必要な場合は、お問い合わせください。

    1. クレジットカードと国民ID番号での誤検知の可能性を排除するために、パターンマッチング値を検索する際に計算の妥当性チェックを自動的に実行できます。データクラス定義に関連付けるデータクラス検証スクリプトを選択または作成します。
    2. VoracityでFieldShieldを使用する場合、ターゲットテーブルのプライマリインデックスキーでこれらのファイルを同時にまたは後で並べ替えて、一括読み込みと一般的なクエリを高速化できます。

    1. Oracle PL/SQLをPostgresqlPL/pgSQLに変換するためのツール

    2. SQLiteデータベース全体をSQLファイルにエクスポートする

    3. データベースに接続した後、役割を切り替えます

    4. ネイティブ動的SQLを使用して実行されたSELECTステートメントの結果を出力するにはどうすればよいですか?