データマスキングは、クレジットカード情報、SSN、住所などの機微データを共有したりテストに使うときに保護する手法です。
データマスキングには置換、シャッフル、編集 (redaction) など多様な手法があり、シナリオに応じて使い分けます。機微データをマスクすれば、データ漏洩や不正アクセスのリスクを最小化しながら、開発、テスト、分析向けに現実的なデータを使い続けられます。
MySQL Enterprise Data Masking
データマスキングは、プラグイン として MySQL Enterprise エディションでのみ提供されます。
MySQL のデータマスキングの仕組みは、プラグインが mask_inner、mask_outer、mask_ssn などのマスキング用関数群を提供する形です。

マスク関数でテーブルを直接クエリさせる代わりに、組織で適切な権限を持つ人 (通常は DBA) がマスク済みデータを示す VIEW を定義します。ビューは、機微データへのアクセスが制限されたユーザーにとってテーブルのように見えます。アクセスはそのビューからクエリするだけです。
このアプローチは素直ですが、いくつかの制限があります。
-
細かい MySQL ユーザーアカウント / ロールに依存する。実運用では多くの MySQL インスタンスのユーザー数は限られている。本プラグインを採用するにはアカウント設計を作り直す必要がある。
-
マスキングのバリエーションごとに別のビューが必要。下層テーブルやバリエーションが増えると、すぐに管理不能になる。
-
データマスキングを管理する専用モジュールが無い。結局は素の MySQL VIEW。
Percona Data Masking Plugin
Percona Data Masking Plugin は、先述の MySQL データマスキングプラグインの無料かつオープンソースな実装で、機微データをマスクする関数群を提供します。

同様に、生データを守る方法は VIEW です。
ただし Percona Data Masking は Percona Server for MySQL でしか動きません。主流である Oracle の MySQL エディションを使うなら、別の手段を探す必要があります。
Bytebase Dynamic Data Masking

Bytebase Dynamic Data Masking は MySQL のビューやユーザーに依存しません。マスキングポリシーと付与を Bytebase 内部で管理し、ユーザーが SQL Editor からクエリしたタイミングで適用します。

Bytebase Dynamic Data Masking は次のコンポーネントで構成されます。
- グローバルマスキングルール:
Workspace AdminとDBAが一括でマスキングレベルを適用できる。例えば「email」と命名されたすべてのカラムを「Partial」マスキングに。数千のカラムにマスキングポリシーを再適用したり、ビューを保守し続けたりせずに、ポリシーを簡単に変更できます。

- カラム単位マスキングルール:
Workspace AdminとDBAがテーブルカラムを別のマスキングレベルに設定できる。カラム単位ルールはグローバルルールに優先する。

- アンマスクデータへのアクセス: マスクされたコンテンツに対して、
Workspace AdminとDBAは特定ユーザーにアンマスクされたデータへのアクセスを付与できる。

Workspace Admin と DBA は Bytebase のロールです。
比較表
| MySQL Enterprise Data Masking Plugin | Percona Data Masking Plugin | Bytebase Dynamic Data Masking | |
|---|---|---|---|
| 互換性 | MySQL Enterprise Edition のみ | Percona Server for MySQL | すべての MySQL ディストリビューション ⭐️ |
| 適用場所 | データベース自身 ⭐️ | データベース自身 ⭐️ | SQL Editor |
| 機能 | 基本 | 基本 | 細粒度のマスキングポリシーとアクセス付与を備える高度な機能 ⭐️ |
| 価格 | 有償 | 無料 ⭐️ | 有償 |
MySQL Enterprise Data Masking / Percona Data Masking Plugin の利点は、データベース自体に実装されていること。クエリの送信経路に関係なくマスキングルールが強制されます。Bytebase Dynamic Data Masking は、クエリが SQL Editor を通る必要があります。
Bytebase Dynamic Data Masking の利点は、すべての MySQL ディストリビューションとの互換性、機能豊富なマスキングポリシーとアクセス付与です。チームが Bytebase の SQL Editor を経由して DB へクエリすることを徹底できれば (管理の観点でもそれが望ましい)、Bytebase Dynamic Data Masking は最適な選択です。
このチュートリアルで Bytebase Dynamic Data Masking を試せます。問題に遭遇したり、助けが必要なら、Discord チャンネルへどうぞ。