動的データマスキング機微カラムを、クエリ時にマスクする。
動的データマスキングは、読み取り時に機微値を変換します — あるロールには完全な値、別のロールにはハッシュ、3 番目には末尾 4 桁。保存データは決して変わらず、SELECT の結果だけが変わります。
動的データマスキングのアーキテクチャ
読み取りで変換。保存では不変。
クエリ時の変換
マスキングはクエリの実行中に結果集合の値を書き換える。ストレージは手つかず — 維持すべきマスク済みコピーも、第 2 の正本もない。同じ行が呼び出し元ごとに異なる値を返す。
ロールベースのポリシー
各呼び出し元が何を見るかはポリシーの判断であり、カラムの属性ではない。ルールはロール、環境、プロジェクト、テーブル、カラム、分類にひもづく — だから 1 つのカラムが、調査官には平文、サポートには末尾 4 桁、アナリストにはハッシュを返せる。
動的データマスキングガイド
順番に読む。
- 01
クエリ時マスキングとは
実用的なプリミティブとしての DDM — クエリ時マスキングが何を変換し、静的マスキングとどう違い、誰が何を見るかを律するポリシーパターン。
- 02
静的 vs 動的 — どちらをいつ使うか
静的マスキングはマスク済みコピーを書き出し、動的マスキングはクエリ時に変換する。それぞれが合う場面 — 非本番データセット対 本番のライブ読み取り — と、なぜ二者択一ではないか。
- 03
アクセス経路ごとに実装する
DDM を実装する 5 つの方法 — エンジンネイティブ、データベース内、アプリケーション、BI、ワークフロー型ゲートウェイ — と、それぞれがどの呼び出し元をマスクするか。アプリの経路にはネイティブ、人間にはゲートウェイ。
エンジン別の動的データマスキング
エンジン別にマスクする — Postgres、MySQL、SQL Server、Oracle、BigQuery、Snowflake。
各エンジンは独自のマスキングプリミティブを備える — 拡張、ビューベース、ネイティブポリシー。各比較記事はそれらをワークフロー型ゲートウェイの代替と並べて評価する。
Postgres の動的データマスキング
PG Anonymizer (拡張ベース) とクエリ時マスキング — どちらのアプローチがどのワークフローに合うか。
読む →MySQL の動的データマスキング
MySQL Enterprise (有償) と Percona のプラグイン (OSS) を、ワークフロー型ゲートウェイと比較する。
読む →SQL Server の動的データマスキング
ネイティブ DDM (5 つのマスク種別、2022 の粒度の細かい UNMASK) をワークフロー型ゲートウェイと比較する。
読む →Oracle の動的データマスキング
Oracle Data Redaction (Advanced Security オプション、DBMS_REDACT) をワークフロー型ゲートウェイと比較する。
読む →BigQuery の動的データマスキング
BigQuery の組み込みマスキングルールはポリシータグとデータポリシーで駆動される。ワークフロー型ゲートウェイと比較する。
読む →Snowflake の動的データマスキング
Snowflake のネイティブ CREATE MASKING POLICY 構文と、その限界。
読む →
Bytebase の動的データマスキング
クエリでマスク、すべてのエンジンで。
Bytebase はデータベースの前段に立ち、クエリ時にマスキングを適用します。ルールは環境、プロジェクト、テーブル、カラム、分類への CEL 条件で書かれ、申請者のロールに対して解決されます — だから同じカラムが人によって異なる値を返し、1 つのポリシーと 1 つの監査証跡をすべてのエンジン横断で実現します。
1 つのポリシー。すべてのエンジン。
動的データマスキングに関する質問
よくある質問。
- 動的データマスキングとは?
- 動的データマスキング (DDM) は、誰が尋ねているかに基づいて、クエリの応答時に機微なカラム値を変換します。保存データは決して変更されません — 同じ SELECT が、あるロールには実値を、別のロールにはマスク済みの値 (ハッシュ、墨消し、末尾 4 桁) を返します。これは結果集合の制御層です: 誰が接続できるかはアクセス制御、接続できた人が実際に何を見るかがマスキングです。
- 静的データマスキングとは何が違うか?
- 静的マスキングはマスク済みの値をデータの別コピーに書き込みます — 非本番データセットには有用ですが、リフレッシュして同期を保つ必要のある第 2 の正本になります。動的マスキングは本番データを手つかずのままクエリ時に値を変換するため、維持すべきコピーがなく、同じ行が呼び出し元ごとに異なる値を返せます。
- 行レベルセキュリティ (RLS) とは何が違うか?
- RLS はポリシーに基づいて行全体を隠します。マスキングは行を隠さずに特定のカラム値を変換します。Postgres、SQL Server、Oracle は RLS をネイティブに備えますが、エンジンネイティブの RLS は性能の地雷とバイパスのリスクを伴います。ワークフロー型ゲートウェイは DB の前段に立ち、エンジン横断で同じように動くマスキングのポリシーを、中央集約の監査証跡とともに適用します。
シリーズのすべての投稿。
基礎。
エンジン別にマスクする。
- 01
Postgres の動的データマスキング
PG Anonymizer のビューベースの仕組みを辿り、ワークフロー層マスキングが受け持つ範囲を整理する。
- 02
MySQL の動的データマスキング
MySQL Enterprise のマスキング関数、Percona のプラグイン、ワークフロー型ゲートウェイのアプローチを並べて比較。
- 03
SQL Server の動的データマスキング
5 つのマスク種別と SQL Server 2022 の粒度の細かい UNMASK、そしてワークフロー型ゲートウェイが承認と監査をどう加えるか。
- 04
Oracle の動的データマスキング
DBMS_REDACT による Oracle Data Redaction (Advanced Security オプション)、SYSDBA と EXEMPT REDACTION POLICY による迂回、ワークフロー型ゲートウェイがどこを補うか。
- 05
BigQuery の動的データマスキング
BigQuery の組み込みマスキングルールはポリシータグとデータポリシーでカラムにバインドされる。Fine-Grained Reader は平文を見られ、ワークフロー型ゲートウェイが承認と監査を加える。
- 06
Snowflake 動的データマスキングと代替
ネイティブのマスキングポリシー構文、ロールベース適用、スコープ外のケース。