Oracle LiveLabsの実装:DB Security - Data Masking and Subsetting (DMS)

概要

このラボでは、Oracle Data Masking and Subsetting (DMS) Pack for Enterprise Manager のさまざまな機能を紹介します。これらの機能を構成して、非運用環境で機密データを保護する方法を学ぶ機会をユーザーに提供します。

この実験の申し込み先はこちら、時間は60分です。

この実験は、DB セキュリティ上級セミナー、ラボ 8: データのマスキングとサブセット化 (DMS) の 8 番目の実験でもあります。この製品の中国語名は「Data Masking and Subsetting Package」です。

実験のヘルプはこちら.

この実験で使用した製品は、Oracle Enterprise Manager 13.5 です。

この実験では、Enterprise Manager とソース データベースの両方を含む 1 つのインスタンスのみが生成されます。私の特定の環境は次のとおりです。

  • 158.101.1.3 DBSEC-LAB

OEM (Oracle Enterprise Manager 13c) にログインするための情報は次のとおりです。

  • URL: https://<DBSEC-LAB IP アドレス>:7803/em (つまり、https://158.101.1.3:7803/em)
  • ユーザー名: シスマン
  • パスワード: Oracle123

タスク 1: スキーマ構造をインポートする

OEM にログインします。

Enterprise > Quality Management > Application Data Modelingメニューに入ります。

セキュリティ テスト データ管理の図を簡単に確認して、プロセスを理解してください。
ここに画像の説明を挿入

次に、[作成] をクリックして新しい ADM (アプリケーション データ モデル) を追加します。そのプロパティは次のとおりです。

  • ADM名称:Employee_ADM
  • ソース データベース: cdb1_PDB1
  • アプリケーション スイート タイプ:カスタム アプリケーション スイート
  • スキーマごとに 1 つのアプリケーションを作成する:選択中
    ここに画像の説明を挿入

また、Oracle Enterprise Business Suite (EBS) および Fusion アプリケーションのアプリケーション タイプもサポートされていることに注意してください。

図に示すように、[続行] をクリックし、事前定義されたユーザー DMS_ADMIN (パスワード Oracle123) を使用してログインします。注: SYS ユーザーも使用できます。本番環境では、DMS_ADMIN の権限を、その職務を実行するために必要なパッケージのみに制限できます。

ADM の EMPLOYEESEARCH_DEV スキーマを選択します。

ここに画像の説明を挿入
[続行] をクリックし、[送信] をクリックします。タスクをサブミットします (タスク名 METADATA_COLLECTION_85)。

タスクの初期状態:
ここに画像の説明を挿入

ジョブが完了すると、EMPLOYEE_ADM はロックされなくなり、編集できなくなります。このページを更新してステータスを確認し (更新アイコン)、Employee_ADM の最新のジョブ ステータスが「成功」になったら続行します。
ここに画像の説明を挿入

タスク 2: メタモデルを強化する

ADM を選択しEmployee_ADM、[編集] をクリックします。

Credential Name で DMS_ADMIN を選択したら、Continue をクリックします。

「アプリケーション・データ・モデルの編集」画面で、EMPLOYEESEARCH_DEV のアプリケーションがスキーマに基づいて作成されていることに注意してください。
ここに画像の説明を挿入
[参照関係] タブをクリックして、ADM でキャプチャされた参照関係を表示します。OEM は外部キーを認識したので、同じフォーマット マスクを子テーブルに自動的に適用します。
ここに画像の説明を挿入

データベースが参照関係を管理している場合、ADM はこれらを自動的にキャプチャします。これらがアプリケーションによって管理されている場合は、これらを手動で定義する必要があります。しかし、ここでは実証しません。

タスク 3: 定義済みの機密列タイプを使用する

Enterprise > Quality Management > Application Data Modelingメニューに入ります。

「アクション」メニューを展開し、サブメニュー「機密列タイプ」サブメニューを選択します。

DMS で提供されるデフォルトの機密列検出テンプレートを確認してください。
ここに画像の説明を挿入
列の上にマウスを移動すると、機密列のデフォルト定義が表示されます。

ノート:

  • This procedure uses Oracle regular Expressions, which are compatible with the IEEE Portable Operating System Interface (POSIX) Regular Expression Standard and the Unicode Consortium - Guidelines for Unicode Regular Expressions. この場合、検索タイプは Or 条件に設定されているため
    、上記の条件のいずれかが一致します

タスク 4: 新しい機密列タイプを作成する

[作成] をクリックして、新しい機密列タイプを作成します。
ここに画像の説明を挿入

タスク 5: 定義済みのテンプレートを使用して新しい機密列タイプを作成する

EMAL_ID を選択し、 を選択しますCreate Like…赤枠内に部品を入力すると、その他が自動で表示されます。
ここに画像の説明を挿入

タスク 6: 新しいマスキング形式を作成する

メニューに入りますEnterprise > Quality Management > Data Masking Formats Libraryデフォルトのデータ マスキング フォーマットを表示します。
ここに画像の説明を挿入
[作成] をクリックし、下図の上部の情報を入力してから、右側の [追加] ドロップダウン ボックスをクリックして、[ランダム文字列] を選択してフォーマット エントリを追加します。次に、[移動] をクリックします。2 回追加した後の最終結果は次のとおりです。
ここに画像の説明を挿入

ノート:

  • EMAIL_ORA は、以前に作成された機密性の高い列タイプです
  • このマスキング アルゴリズムを使用すると、初期値が新しい値に置き換えられます。これは、固定値 @ercoal と連結された先頭の 6 ~ 8 文字のランダムな文字列です。
  • 下部に、使用される新しい値の例が表示されます

タスク 7: 機密列を手動で特定する

メニューに入りますEnterprise > Quality Management > Application Data Modeling

ADM を選択した状態でEmployee_ADM、 をクリックしますEdit

データベース キーの選択DMS_ADMINをクリックしますContinue

Sensitive Columnsタブを選択します。現在、機密性の高い列が見つからないため、検索を開始する必要があります。[オプション]をクリックしますCreate Discovery Job…

EMPLOYEESEARCH_DEVスキーマを選択する場合は、EMAIL_ID、ISBN_10、ISBN_13、UNIVERSAL_PRODUCT_CODE の 4 列を除外します。次に、 をクリックしますContinue[送信] をクリックします。
ここに画像の説明を挿入
タスクが完了したら、[Discover Results...] をクリックしてビューを展開し ([View] -> [Expand All])、これらの列の現在の機密ステータスが未定義であることを確認できます。
ここに画像の説明を挿入
すべての列の機密ステータスを機密にマスクするように設定する必要があります。次の列を確認します (tablename.columnname の形式で)。

  • DEMO_HR_SUPPLEMENATL_DATA.PAYMENT_ACCT_NO
  • DEMO_HR_EMPLOYEES.EMAIL
  • DEMO_HR_USERS.EMAIL
  • DEMO_HR_EMPLOYEES.FIRST_NAME
  • DEMO_HR_EMPLOYEES.LAST_NAME
  • DEMO_HR_SUPPLEMENATL_DATA.ROUTING_NUMBER

[機密ステータスの設定] をクリックします。
ここに画像の説明を挿入
状態が機密に変更されたことに注意してください。
ここに画像の説明を挿入
最終結果は次のとおりです。合計 6 つの機密列があります。
ここに画像の説明を挿入
最後に、 をクリックしますSave and Return

タスク 8: データ マスキング定義の作成

Enterprise > Quality Management > Data Masking Definitionsメニューに入ります。[作成] をクリックして、データ マスキング定義を作成します。

下図のように情報を入力し、 ADM を選択しますEmployee_ADM[追加] をクリックします。
ここに画像の説明を挿入
パスワードが必要な場合は、[名前付き] を選択しDMS_ADMINて [ログイン] をクリックします。

[検索] をクリックすると、以前の標準の 6 つの重要な列が下に表示されます。それらをすべて選択し、[追加] をクリックします。

ここに画像の説明を挿入
[OK] をクリックして以下を保存し、減感作形式を定義します。

タスク 9: フォーマット ライブラリとマスキング プリミティブを使用して列をフォーマットする

次のタスクを実行します。次に、センシティブなカラムの感度を下げたフォーマットを定義します:
ここに画像の説明を挿入
フォーマット ライブラリの既存のフォーマットを使用するには、[インポート フォーマット] ボタンをクリックし、以前に定義したフォーマットを選択しますMask Oracle Corp Email: [
ここに画像の説明を挿入
サンプル] の下のアイコンをクリックして、サンプル データを生成します: [
ここに画像の説明を挿入
OK] をクリックします。

次に、2 列目を別の方法で操作すると、1 列目が定義された後、アイコンも変化することがわかります。
ここに画像の説明を挿入
以下の図に示すように、マスキング形式をオンラインで定義する新しい方法を使用します。
ここに画像の説明を挿入
[シャッフル] を選択し、[追加] をクリックして、[OK] をクリックします。

列 3 DEMO_HR_EMPLOYEES.LASTNAME で、Shuffle も選択します。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入
最後に、[OK] をクリックして保存します。

タスク 10: データ マスキング スクリプトの生成

手順 9 ですべてのデータ マスク形式を定義した後、マスク定義のステータスは [スクリプトが生成されていません] になります。
ここに画像の説明を挿入

[スクリプトの生成] をクリックして、スクリプトを生成します。秘密鍵は引き続き DMS_ADMIN を選択します。

[スクリプト生成オプション] セクションで、[データベース内をマスクする] を選択します。これは、データベース内の機密データをマスクされたデータで置き換えることにより、指定されたデータベース (通常は本番環境からコピーされたもの) をマスクすることを意味します。
もう 1 つのオプションである Mask In-Export は、Oracle Data Pump を使用して、マスクされたデータを指定されたソース データベース (通常は本番) からエクスポートすることを意味します。

最後に [送信] をクリックします。

スクリプト生成中。ステータスは、[スクリプト生成ジョブがスケジュールされました] から [スクリプトを生成中] に変わり、最後に [スクリプトが生成されました] に変わります。

スクリプトを表示します:
ここに画像の説明を挿入
次のように:
ここに画像の説明を挿入
説明:

  • Oracle Data Masking Pack は一連の検証手順を実行して、データ マスキング プロセスが正常に行われ、エラーがないことを確認します。実行されるチェックの 1 つは、マスクされた形式を検証することです。これは、選択したマスキング形式がデータベースとアプリケーションの整合性要件を満たすようにするために、データ マスキング プロセスで必要な手順です。
  • これらの要件には、一意性制約のためにマスクされた列の一意の値の生成、または列の長さまたは型の要件を満たす値の生成が含まれる場合があります
  • 検証チェックが正常に完了すると、Oracle Data Masking Packは、実行のためにターゲット・データベースに転送されるPL/SQLベースのマスキング・スクリプトを生成します
  • Oracle Data Masking Pack は、効率的で堅牢なメカニズムを使用して、マスクされたデータを作成します
  • Oracle Data Masking Pack は、元のデータベース制約、参照整合性、関連するアクセス構造 (INDEX や PARTITION など) およびアクセス権限 (GRANT など) を維持しながら、機密データを含むテーブルをマスクされたデータを含む同一のテーブルにすばやく置き換える一括操作を実行します。
  • テーブルの更新を実行するために時間がかかる従来のマスキング プロセスとは異なり、Oracle Data Masking Pack は、データベースに組み込まれている最適化を利用してデータベースのロギングを無効にし、並行して実行して、元のテーブルのマスクされた置換をすばやく作成します。
  • 機密データを含む元のテーブルはデータベースから完全に削除され、アクセスできなくなります

チップ:

  • スクリプトは、まったく同じスキーマを持つ他のターゲットで実行できます
  • [スクリプトの保存] をクリックすると、スクリプトをローカルに保存できます。

タスク 11: データマスキングスクリプトを実行する

データ マスキング スクリプトを実行するには、SSH キー ペアが必要です。パテ キー ペアは使用しませんが、以下の手順に従って RSA キー ペアを作成してください。

cd ~
ssh-keygen -b 2048 -t rsa
cd .ssh
cat id_rsa >/tmp/rsa_priv
cat id_rsa.pub >>authorized_keys

名前付き資格証明を新しいSSHキーで更新します。

Enterprise > Quality Management > Data Masking Definitionsメニューに入ります。EMPLOYEE_DATA_MASK をクリックし、[編集] を選択して更新します。
この戦略は、実際には、秘密鍵を介してログインするように oracle ユーザーを設定することです。

Enterprise > Quality Management > Data Masking Definitionsメニューに入ります。EMPLOYEE_DATA_MASK を選択し、[ジョブのスケジュール] をクリックします。

Mask In-Databas をチェックします。そして、選択したターゲットは本番データベースではありません..

スクリプト ディレクトリとスクリプト名は次のように設定されます。

  • /home/oracle/DBSecLab/livelabs/dms
  • mask_empdata_in-db_20220522.sql

[Host Credentials] セクションで、[Named] と以前に設定した OS_ORACLE_SSH を選択します。
データベース キーは引き続き DMS_ADMIN を選択します。
ここに画像の説明を挿入
次の図に示すように、[送信] をクリックして、タスクが成功したことを確認します。
ここに画像の説明を挿入

タスク 12: マスク前のデータとマスク後のデータを比較する

ジョブが正常に完了したら、開発環境と本番環境で減感したデータをクエリして、前後の比較を行います。

タスク 13: データサブセット定義の作成

タスク 14: データ サブセット スクリプトの実行

タスク 15: サブセット化前のデータとサブセット化後のデータを比較する

タスク 16: (オプション) Labs 環境をリセットする

付録:製品について

概要

Oracle Data Masking Pack for Enterprise Manager は、オラクルのデータベース セキュリティ ソリューションの包括的なポートフォリオの一部であり、組織が Sarbanes-Oxley (SOX)、Payment Card Industry (PCI) Data Security Standard (DSS)、The実際の顧客データの使用を制限する多くの法律の中でも、医療保険の携行性と説明責任に関する法律 (HIPAA)、欧州連合の一般データ保護規則 (GDPR)、および今後のカリフォルニア州消費者プライバシー法 (CCPA) などがあります。

Oracle Data Masking を使用すると、クレジット カード番号や社会保障番号などの機密情報を実際の値に置き換えることができるため、本番データを開発、テストに安全に使用したり、アウトソーシングまたはオフショア パートナーと本番以外の目的で共有したりできますOracle Data Masking は、テンプレート ライブラリとフォーマット ルールを使用してデータを一貫して変換し、アプリケーションの参照整合性を維持します

データ マスキング (データ スクランブリングおよびデータ匿名化とも呼ばれます)は、本番データベースからテスト データベースまたは非本番データベースにコピーされた機密情報を、マスキング ルールに基づいてサニタイズされた実際のデータに置き換えるプロセスです。データ マスキングは、機密データまたは規制対象データを他の非実稼働ユーザーと共有する必要があるほぼすべての状況に適用されます。たとえば、アプリケーション開発者などの内部ユーザーや、オフショア テスト会社やサプライヤー、顧客などの外部ビジネス パートナーなどですこれらの非運用ユーザーは、一部の生データにアクセスする必要がありますが、特に情報が政府の規制によって保護されている場合は、すべてのテーブルのすべての列を表示する必要はありません。

データ マスキングを使用すると、組織は元のデータと同様の特性を持つ、完全に機能する本物のデータを生成し、機密情報や機密情報を置き換えることができます。これは、単純にデータを隠し、適切なアクセス権またはキーを使用して元のデータを取得できるようにする暗号化または仮想プライベート データベースとは対照的です。データ マスキングを使用すると、生の機密データを取得したり、アクセスしたりできなくなります。名前、住所、電話番号、クレジット カードの詳細は、不適切な可視性から保護する必要があるデータの例です。稼働中の本番データベース環境には、貴重な機密データが含まれています。この情報へのアクセスは厳重に管理されています。ただし、**すべての実稼働システムには通常、複製された開発コピーがあり、そのようなテスト環境は厳密に制御されていません。これにより、データが不適切に使用されるリスクが大幅に高まります。**データ マスキングは、機密性の高いデータベース レコードを変更して、機密情報や個人を特定できる情報が含まれないようにします。ただし、アプリケーションの整合性を確保するために、マスクされたテスト データは元のデータと視覚的に類似しています。

ここに画像の説明を挿入

なぜデータマスキングが必要なのですか?

次の課題に基づいて、いくつかの理由でそれが必要です。

  • 個人を特定できる機密データは、業務上知る必要のない開発およびテスト グループの関係者と共有されています。
  • 個人情報やその他の機密情報を含む運用データベースをテスト目的で使用します。特定されたすべての機密情報とコンテンツは、使用前に認識できないほど削除または変更する必要があります。
  • 開発および QA 環境に配布する前に機密性の高い本番データを無防備化および無害化するための、確立された文書化された手順とデータ無害化基準の施行はありません。
  • 適切にサニタイズされたデータを開発および QA 環境に提供するために必要な手順とプロセスは、時間がかかり、手作業であり、一貫性がありません。

DMS を使用するメリットを実感する

  • 機密情報を保護することでデータの商業的価値を最大化
  • 機密性の高い生産情報を拡散させないことで、コンプライアンスの境界を最小限に抑えます
  • データをサブセット化することで、テストおよび開発環境のストレージ コストを削減
  • 機密データと親子関係を自動的に検出
  • 包括的なマスク形式、マスク変換、サブセット化手法、選択したアプリケーション テンプレートを提供
  • データベースまたはファイルでデータのマスキングとサブセット化を実行する (ソース データベースからデータを抽出することにより)
  • Oracle データベースと非 Oracle データベースのマスキングとデータ サブセットのサポート
  • Oracle CloudでホストされているOracle Databaseのマスクおよびサブセット化
  • マスキングおよびサブセット化中にデータの整合性を維持し、より独自の機能を提供する
  • 選択した Oracle のテスト、セキュリティ、および統合製品と統合します。

もっと知りたいですか?

文档:Oracle Data Masking & Subsetting Pack 12.2

视频:Oracle Data Masking & Subsetting - Advanced Use Cases (2019 年 6 月)

謝辞

データベース セキュリティの PM である Hakim Loumi によって書かれました。寄稿者はルネ・フォンチャです。

おすすめ

転載: blog.csdn.net/stevensxiao/article/details/124359946