Skip to main content

Postgres のデータマスキング

Mila · 2023年11月21日

データマスキングは、クレジットカード番号、社会保障番号 (SSN)、住所などの機微データを守るために広く使われるアプローチです。マスキングは自社や顧客のデータを守るだけにとどまらず、法律で求められる場合もあります — もっとも有名な例は GDPR です。

データマスキングには置換、シャッフル、編集 (redaction) など多様な手法があり、目的も異なります。機微データをマスクすれば、データ漏洩や不正アクセスの可能性を減らしながら、開発、テスト、分析のような現実的なデータを必要とする作業を続けられます。

PostgreSQL Anonymizer

_

PostgreSQL Anonymizer はコミュニティ製の拡張で、さまざまなマスキング選択肢と方式を PostgreSQL に追加します。

マスキング設定は PostgreSQL Security Label に格納されます。

動的マスキング

動的マスキングは、ロールを "MASKED" として宣言し、マスキングルールも併せて宣言する形で機能します。"MASKED" ロールを付与されたユーザーは元データにアクセスできなくなり、他のロールは引き続きアクセスできます。多様なマスキング関数が用意されており、独自ルールも書けます。

_

この方式にはいくつかの制限があります。たとえばドキュメントに書かれているとおり、DBeaver や pgAdmin のような GUI を使うと問題が生じることがあり、特定のクエリでは動的マスキングが非常に遅くなり得ます。さらに、マスキングのバリエーションごとに異なるビューが必要で、ロールが変わるたび、また下層テーブルやバリエーションが増えるたびに管理が手に負えなくなります。

静的マスキング

PostgreSQL Anonymizer は静的マスキングもサポートし、元データセットを直接変換します。元データを偽データに置き換える、ノイズを加える、シャッフルするなどで機微データを隠せます。

ただしこの方式は元データを破壊し、遅いプロセスです。使う前によく考えてください。静的マスキングの原理は、マスク対象カラムを少なくとも 1 つ含むテーブルの全行を更新することです。事実上 PostgreSQL がディスク上の全データを書き換えます。

Bytebase Dynamic Data Masking

_

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

_

Bytebase Dynamic Data Masking は次のコンポーネントで構成されます。

  1. グローバルマスキングルール: Workspace AdminDBA が一括でマスキングレベルを適用できる。例えば「email」と命名されたすべてのカラムを「Partial」マスキングに。数千のカラムにマスキングポリシーを再適用したり、ビューを保守し続けたりせずに、ポリシーを簡単に変更できます。

_

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

_

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

_

Workspace AdminDBA は Bytebase のロールです。

比較表

PostgreSQL AnonymizerBytebase Dynamic Data Masking
互換性postgresql_anonymizer 拡張が必要すべての PostgreSQL ディストリビューション ⭐️
適用場所データベース自身 ⭐️Bytebase SQL Editor
機能基本細粒度のマスキングポリシーとアクセス付与を備える高度な機能 ⭐️
価格無料 ⭐️有償

PostgreSQL Anonymizer の利点は、データベース自体に直接実装される点です。したがってクエリの送信経路に関係なくマスキングルールが強制されます。Bytebase Dynamic Data Masking は、クエリが SQL Editor を通る必要があります。

Bytebase Dynamic Data Masking の利点は、すべての PostgreSQL ディストリビューションとの互換性、機能豊富なマスキングポリシーとアクセス付与です。チームが Bytebase の SQL Editor を経由して DB へクエリすることを徹底できれば (管理の観点でもそれが望ましい)、Bytebase Dynamic Data Masking は最適な選択です。


このチュートリアルで Bytebase Dynamic Data Masking を試せます。問題に遭遇したり、助けが必要なら、Discord チャンネルへどうぞ。

ブログに戻る

データベース開発のスタンダードを体験する