背景情報
データマスキングは、マスキングアルゴリズムを使用して、氏名、ID カード番号、携帯電話番号、固定電話番号、銀行口座、メールアドレスなどの機密性の高いプライバシー情報を変更し、機密性の高いプライバシーデータを保護します。
概念
データマスキング: データ処理および保存中に特定のアルゴリズムと技術を使用して機密データを処理、難読化、または置換し、データが識別または復元されないようにすることで、データセキュリティを保護し、データ侵害を防ぐ機能です。
動的マスキング: ユーザーがデータベースにクエリを実行したときに、データベース内のソースデータを変更せずに、機密データをリアルタイムでマスキングするプロセスです。一般に、動的マスキングは本番環境で使用されます。元のデータの整合性と正確性を確保しながら、データ侵害を防ぎます。ただし、動的マスキングは低速であるため、データベースのクエリ効率が低下する可能性があります。
静的マスキング: 機密データを前処理し、処理済みデータをデータベースなどのストレージメディアに保存するプロセスです。静的マスキングは通常、テスト、開発、およびデモ環境で使用されます。権限のない担当者による機密データの閲覧を防ぎ、データ侵害の法的責任を回避します。静的マスキングは高速であるため、クエリ効率を向上させることができます。ただし、静的マスキング後、元のデータは復元できないため、データの正確性が損なわれます。
マスキングアルゴリズム: 機密データをマスキングするために使用されるアルゴリズムです。マスキングアルゴリズムは、クエリと使用を容易にするためにデータ形式と構造を保持しながら、機密データのセキュリティを効果的に保護し、データ侵害を防ぐことができます。
識別ルール: データマスキングのために機密データを自動的に識別するために使用されるルールです。機密列を追加するためにスキャンすると、指定されたルールに基づいて機密列が自動的に識別されます。
機密列: データベーステーブルに機密データが含まれている列です。
実行プロセス

プロジェクト管理者として ODC コンソールにログインし、 > を選択して、組み込みのマスキングアルゴリズムを表示し、マスキング効果をテストします。セキュリティ仕様> マスキング アルゴリズム組み込みの脱感アルゴリズムを表示し、脱感の効果をテストします。
プロジェクト管理者として ODC コンソールにログインし、 > を選択します。 をクリックし、 または を選択できます。 を選択するには、識別ルールが作成されていることを確認してください。プロジェクト > 機密性の高い列。[クリック] できます機密列を追加を選択し、手動で追加または スキャンして追加。選択するには、スキャンして追加、識別ルールが作成されていることを確認します。
一般ユーザーとしてログインし、SQL ウィンドウでクエリを実行したり、結果セットをエクスポートしたり、チケットをエクスポートしたり、データベース変更チケットを送信したりすると、機密列の出力データはマスキングされます。
前提条件
プロジェクト管理者または DBA は、機密列と識別ルールを管理できます。
すべてのユーザーはマスキング効果を表示およびテストできますが、一般ユーザーはマスキングアルゴリズムを作成、編集、または削除することはできません。
考慮事項
コマンドラインウィンドウでは、データマスキングはサポートされていません。
PL の実行中は、データマスキングはサポートされていません。
識別ルールスクリプトを構成する場合、Groovy は Java の Objects クラスと String クラスのみをサポートします。
識別ルールスクリプトを構成する場合、Groovy クロージャと固有のクロージャ関数はサポートされていません。
MySQL データソースからデータをエクスポートするときに機密データが関係する場合、すべてマスキングアルゴリズムがマスキングに使用されます。
機密列の管理
機密列の追加
例: email 列と mobile_phone 列のデータを odc_test データベースの student テーブルから非識別化します。
パラメータ | 値の例 |
データソース | mysql 4.2.4 |
ソースデータベース名 | odc_test |
テーブル名 | student |
プロジェクト コラボレーション ウィンドウで、プロジェクト> 機密性の高い列。[クリック] できます機密列を追加を選択し、手動で追加または スキャンして追加。

機密列を手動で追加またはスキャンして追加した後、 をクリックします。[送信]。
方法 1: 機密列を手動で追加する

方法 2: スキャンして機密列を追加する
説明スキャンして機密列を追加する前に、識別ルールが作成されていることを確認してください。詳細については、このトピックの セクションをご参照ください。識別ルール管理このトピックのセクション。

機密列リストで、追加された機密列を表示および有効化できます。

機密列の編集
前の図に示す機密列リストで、機密列の 列の をクリックして、機密列のマスキングアルゴリズムを変更します。編集内のアクション機密列の列で、機密列の脱感作アルゴリズムを変更します。
機密列の削除
機密列リストで、 [クリック] 削除内のアクション削除する機密列の列。
識別ルールの管理
識別ルールは、機密データ管理機能の拡張です。機密列を手動で追加するだけでなく、識別ルールを指定して機密列の自動スキャンを実装することもできます。識別ルールは、一致条件を定義します。ODC は、指定された条件を満たす列を機密列として識別します。ODC は、識別ルールにパス、正規表現、およびスクリプトの 3 つの識別方法をサポートしています。
パス: パス式に基づく識別ルールは、データベース名、テーブル名、または列名に基づいて機密列を識別します。データベース名、テーブル名、および列名はピリオド (.) で区切られます。一致条件はコンマ (,) で区切られます。アスタリスク (*) はワイルドカード文字として使用されます。
パラメータ
必須?
説明
ルール名
はい
識別ルールの名前。長さは 64 文字以下にする必要があります。
ルールのステータス
はい
識別ルールのステータスです。有効な値: 有効 および 無効。
一致ルール
はい
機密列と一致させる条件。ここで指定された条件を満たす列は、機密列として識別されます。
たとえば、識別ルール
\*\.\*\.mobile_phoneは、任意のテーブルおよびデータベース内のmobile_phoneという名前の列と一致するように指定します。除外ルール
いいえ
データ列を除外するための条件。
重要システムは、まず除外条件、次に一致条件に基づいて、データ列が機密列かどうかを判断します。
マスキングアルゴリズム
はい
識別された機密列のデフォルトのマスキングアルゴリズム。
ルールの説明
いいえ
識別ルールの説明。
正規表現: 正規表現に基づく識別ルールは、データベース名、テーブル名、列名、または列のコメントに基づいて機密列を識別します。
パラメータ
必須?
説明
ルール名
はい
識別ルールの名前。長さは 64 文字以下にする必要があります。
ルールのステータス
はい
識別ルールのステータスです。有効な値: 有効 および 無効。
識別オブジェクト - データベース名
いいえ
データベース名と一致させる正規表現。
たとえば、
*は任意の名前のデータベースを示します。識別オブジェクト - テーブル名
いいえ
テーブル名と一致させる正規表現。
たとえば、
e[a-z]?.*は、小文字で始まり、e で始まる名前のテーブルを示します。識別オブジェクト - 列名
いいえ
列名と一致させる正規表現。
識別オブジェクト - 列のコメント
いいえ
列のコメントと一致させる正規表現。
マスキングアルゴリズム
はい
識別された機密列のデフォルトのマスキングアルゴリズム。
ルールの説明
いいえ
識別ルールの説明。
スクリプト: Groovy スクリプトに基づく識別ルールは、データベース名、テーブル名、列名、列のコメント、またはデータ型に基づいて機密列を識別します。
重要スクリプトの出力はブール値 (
TrueまたはFalse) である必要があります。パラメータ
必須?
説明
ルール名
はい
識別ルールの名前。長さは 64 文字以下にする必要があります。
ルールのステータス
はい
識別ルールのステータスです。有効な値: 有効 および 無効。
Groovy スクリプト
はい
データ列が機密列かどうかを判断するスクリプト。スクリプトは Groovy 構文仕様に基づいて記述されます。
マスキングアルゴリズム
いいえ
識別された機密列のデフォルトのマスキングアルゴリズム。
ルールの説明
いいえ
識別ルールの説明。
ODC は、Groovy スクリプトで参照できる組み込みの列オブジェクトを提供します。次の表に、列オブジェクトの属性を示します。
属性
型
説明
スキーマ
String
列が属するデータベースの名前。
テーブル
String
列が属するテーブルの名前。
名前
String
列の名前。
コメント
String
列のコメント。
型
String
列のデータ型。
スクリプトを識別方法として使用する識別ルールの例を次に示します。
住所:
if (("varchar".equals(column.type) || "char".equals(column.type))) { if (column.name.indexOf("address") >= 0) { return true; } if (column.comment != null && (column.comment.toLowerCase().indexOf("address") >= 0 || column.comment.indexOf("Address") >= 0 || column.comment.indexOf("Residence address") >= 0 || column.comment.indexOf("Location") >= 0)) { return true; } } return false;携帯電話番号:
if (column.name.length() == 11 && ("varchar".equals(column.type) || "char".equals(column.type))) { if (column.name.indexOf("phone") >= 0 || column.name.indexOf("mobile") >= 0) { return true; } if (column.comment != null && (column.comment.toLowerCase().indexOf("phone") >= 0 || column.comment.indexOf("Phone number") >= 0 || column.comment.indexOf("mobile") >= 0 || column.comment.indexOf("Mobile number") >= 0)) { return true; } } return false;ID カード番号:
if (column.name.length() >= 15 && ("varchar".equals(column.type) || "char".equals(column.type))) { if (column.name.indexOf("id_number") >= 0 || column.name.indexOf("identity_card") >= 0) { return true; } if (column.comment != null && (column.comment.toLowerCase().indexOf("identity card") >= 0 || column.comment.indexOf("ID card number") >= 0)) { return true; } } return false;
識別ルールの追加
例:識別ルールを モバイルフォン の列学生 テーブル内の odc_test 管理者としてデータベースを使用します。
プロジェクト コラボレーション ウィンドウで、プロジェクト> 機密性の高い列。次に、[クリック] 機密列を追加を選択し、スキャンして追加。

次の 機密列を追加するためにスキャンするダイアログボックス、クリック識別ルールを選択し、識別ルールを管理するドロップダウン リストから。

次の 識別ルールを管理するダイアログボックス、クリック 識別ルールを作成する。

[識別ルールを作成するペインで、ルールの名前、ステータス、識別方法、および非識別化アルゴリズムを指定し、[クリック] 作成。

たとえば、パスベースの識別ルール
odc_test*.student.*a,*.*.mobile_phoneは、mobile_phone列とstudentテーブルをodc_testデータベース内で一致させることを指定します。識別ルールリストで、追加された識別ルールを表示および有効化できます。

識別ルールの管理
前の図に示されているページで、[クリック] 表示、編集、または 削除内のアクション識別ルールを表示、変更、または削除するには、識別ルールの列をクリックします。
マスキングアルゴリズムの表示
プロジェクト コラボレーション ウィンドウで、セキュリティ仕様> マスキング アルゴリズムおよび ODC でサポートされている脱感アルゴリズムを表示します。
次の表に、ODC でサポートされているマスキングアルゴリズムを示します。
アルゴリズム | テストデータ | プレビュー結果 |
すべてマスキング (システムデフォルト) | テスト値 | ***** |
個人名 (漢字) | 個人姓名 | **名 |
個人名 (アルファベット) | Personal Name | P** |
ニックネーム | Nickname | N***e |
メール | odc@oceanbase.com | o***@oceanbase.com |
住所 | Hangzhou, Zhejiang Province, China | Hangzhou, Z*** |
電話番号 | 13500000000 | 135******00 |
固定電話番号 | 010-12345678 | **********78 |
証明書番号 | 123456789 | 1*******9 |
銀行カード番号 | 1234 5678 5678 1234 | ***************1234 |
ナンバープレート番号 | 浙AB1234 | 浙A**234 |
デバイス固有識別番号 | AB123456789CD | ****89CD |
IP アドレス | 10.123.456.789 | 10...* |
MAC アドレス | ab:cd:ef:gh:hi:jk | ab:*:*:*:*:* |
MD5 | default | c21f969b5f03d33d43e04f8f136e7682 |
SHA256 | default | 37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f |
SHA512 | default | 1625cdb75d25d9f699fd2779f44095b6e320767f606f095eb7edab5581e9e3441adbb0d628832f7dc4574a77a382973ce22911b7e4df2a9d2c693826bbd125bc |
SM3 | default | 40c357923156504f734717d8b4f5623e75209e9572701f4b51ef2a03d9ced863 |
四捨五入 | 123.456 | 123 |
空白化 | default | - |
デフォルト | abcd1234 | abc**234 |
シナリオ
追加された機密列は、SQL ウィンドウ、データエクスポート、およびデータ変更中にマスキングされます。
シナリオ 1: データエクスポート中のデータマスキング
例: データベースの テーブルからデータをエクスポートすると、データは自動的にマスキングされます。学生 テーブル内のodc_test データベースでは、データは自動的に非識別化されます。
エクスポートした後、
生徒ODC コンソールでチケットを送信することでテーブルを作成し、[クリック] [表示]内のアクションエクスポート タスク リストのエクスポート タスクの列。
次の チケットの詳細 パネルで、クリックダウンロード右下隅にあります。

ダウンロードした
studentテーブルをローカルディスクで表示します。
シナリオ 2: データ変更中のデータマスキング
例: テーブルにデータを挿入すると、データは自動的にマスキングされます。生徒 テーブルでは、データが自動的に非識別化されます。
ODC コンソールで、データベース変更チケットを送信する ことで、
studentテーブルにデータを挿入します。SQL ウィンドウの左側のナビゲーションペインで、
odc_test データベースを見つけ、studentテーブルの非識別化されたデータを表示します。
シナリオ 3: SQL ウィンドウでのデータマスキング
例: テーブルにデータを挿入すると、データは自動的にマスキングされます。学生 テーブルでは、データは自動的に非識別化されます。
SQL ウィンドウで、SQL 文を記述し て、
studentテーブルにデータを挿入します。
結果タブで、 テーブルでマスキングされたデータを表示できます。
学生テーブル。