すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase (Deprecated):データのマスキング

最終更新日:Jan 21, 2025

背景情報

データマスキングは、マスキングアルゴリズムを使用して、氏名、ID カード番号、携帯電話番号、固定電話番号、銀行口座、メールアドレスなどの機密性の高いプライバシー情報を変更し、機密性の高いプライバシーデータを保護します。

概念

  • データマスキング: データ処理および保存中に特定のアルゴリズムと技術を使用して機密データを処理、難読化、または置換し、データが識別または復元されないようにすることで、データセキュリティを保護し、データ侵害を防ぐ機能です。

  • 動的マスキング: ユーザーがデータベースにクエリを実行したときに、データベース内のソースデータを変更せずに、機密データをリアルタイムでマスキングするプロセスです。一般に、動的マスキングは本番環境で使用されます。元のデータの整合性と正確性を確保しながら、データ侵害を防ぎます。ただし、動的マスキングは低速であるため、データベースのクエリ効率が低下する可能性があります。

  • 静的マスキング: 機密データを前処理し、処理済みデータをデータベースなどのストレージメディアに保存するプロセスです。静的マスキングは通常、テスト、開発、およびデモ環境で使用されます。権限のない担当者による機密データの閲覧を防ぎ、データ侵害の法的責任を回避します。静的マスキングは高速であるため、クエリ効率を向上させることができます。ただし、静的マスキング後、元のデータは復元できないため、データの正確性が損なわれます。

  • マスキングアルゴリズム: 機密データをマスキングするために使用されるアルゴリズムです。マスキングアルゴリズムは、クエリと使用を容易にするためにデータ形式と構造を保持しながら、機密データのセキュリティを効果的に保護し、データ侵害を防ぐことができます。

  • 識別ルール: データマスキングのために機密データを自動的に識別するために使用されるルールです。機密列を追加するためにスキャンすると、指定されたルールに基づいて機密列が自動的に識別されます。

  • 機密列: データベーステーブルに機密データが含まれている列です。

実行プロセス

image

  1. プロジェクト管理者として ODC コンソールにログインし、 > を選択して、組み込みのマスキングアルゴリズムを表示し、マスキング効果をテストします。セキュリティ仕様> マスキング アルゴリズム組み込みの脱感アルゴリズムを表示し、脱感の効果をテストします。

  2. プロジェクト管理者として ODC コンソールにログインし、 > を選択します。 をクリックし、 または を選択できます。 を選択するには、識別ルールが作成されていることを確認してください。プロジェクト > 機密性の高い列。[クリック] できます機密列を追加を選択し、手動で追加または スキャンして追加。選択するには、スキャンして追加、識別ルールが作成されていることを確認します。

  3. 一般ユーザーとしてログインし、SQL ウィンドウでクエリを実行したり、結果セットをエクスポートしたり、チケットをエクスポートしたり、データベース変更チケットを送信したりすると、機密列の出力データはマスキングされます。

前提条件

  • プロジェクト管理者または DBA は、機密列と識別ルールを管理できます。

  • すべてのユーザーはマスキング効果を表示およびテストできますが、一般ユーザーはマスキングアルゴリズムを作成、編集、または削除することはできません。

考慮事項

  • コマンドラインウィンドウでは、データマスキングはサポートされていません。

  • PL の実行中は、データマスキングはサポートされていません。

  • 識別ルールスクリプトを構成する場合、Groovy は Java の Objects クラスと String クラスのみをサポートします。

  • 識別ルールスクリプトを構成する場合、Groovy クロージャと固有のクロージャ関数はサポートされていません。

  • MySQL データソースからデータをエクスポートするときに機密データが関係する場合、すべてマスキングアルゴリズムがマスキングに使用されます。

機密列の管理

機密列の追加

例: email 列と mobile_phone 列のデータを odc_test データベースの student テーブルから非識別化します。

パラメータ

値の例

データソース

mysql 4.2.4

ソースデータベース名

odc_test

テーブル名

student

  1. プロジェクト コラボレーション ウィンドウで、プロジェクト> 機密性の高い列。[クリック] できます機密列を追加を選択し、手動で追加または スキャンして追加

    image

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

    • 方法 1: 機密列を手動で追加する

      image

    • 方法 2: スキャンして機密列を追加する

      説明

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

      image

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

    image

機密列の編集

前の図に示す機密列リストで、機密列の 列の をクリックして、機密列のマスキングアルゴリズムを変更します。編集内のアクション機密列の列で、機密列の脱感作アルゴリズムを変更します。

機密列の削除

機密列リストで、 [クリック] 削除内のアクション削除する機密列の列。

識別ルールの管理

識別ルールは、機密データ管理機能の拡張です。機密列を手動で追加するだけでなく、識別ルールを指定して機密列の自動スキャンを実装することもできます。識別ルールは、一致条件を定義します。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 管理者としてデータベースを使用します。

  1. プロジェクト コラボレーション ウィンドウで、プロジェクト> 機密性の高い列。次に、[クリック] 機密列を追加を選択し、スキャンして追加

    image

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

    image

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

    image

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

    image

    たとえば、パスベースの識別ルール odc_test*.student.*a,*.*.mobile_phone は、mobile_phone 列と student テーブルを odc_test データベース内で一致させることを指定します。

  5. 識別ルールリストで、追加された識別ルールを表示および有効化できます。

    image

識別ルールの管理

前の図に示されているページで、[クリック] 表示編集、または 削除内のアクション識別ルールを表示、変更、または削除するには、識別ルールの列をクリックします。

マスキングアルゴリズムの表示

プロジェクト コラボレーション ウィンドウで、セキュリティ仕様> マスキング アルゴリズムおよび 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 データベースでは、データは自動的に非識別化されます。

  1. エクスポートした後、生徒 ODC コンソールでチケットを送信することでテーブルを作成し、[クリック] [表示]内のアクションエクスポート タスク リストのエクスポート タスクの列。

    image

  2. 次の チケットの詳細 パネルで、クリックダウンロード右下隅にあります。

    image

  3. ダウンロードした student テーブルをローカルディスクで表示します。

    image

シナリオ 2: データ変更中のデータマスキング

例: テーブルにデータを挿入すると、データは自動的にマスキングされます。生徒 テーブルでは、データが自動的に非識別化されます。

  1. ODC コンソールで、データベース変更チケットを送信する ことで、student テーブルにデータを挿入します。

  2. SQL ウィンドウの左側のナビゲーションペインで、image odc_test データベースを見つけ、student テーブルの非識別化されたデータを表示します。

    image

シナリオ 3: SQL ウィンドウでのデータマスキング

例: テーブルにデータを挿入すると、データは自動的にマスキングされます。学生 テーブルでは、データは自動的に非識別化されます。

  1. SQL ウィンドウで、SQL 文を記述し て、student テーブルにデータを挿入します。

    image

  2. 結果タブで、 テーブルでマスキングされたデータを表示できます。学生 テーブル。

関連情報