SQLで漏れやすい情報
WHERE句の文字列やINSERT文の値は目立ちますが、customer_contractやemployee_salaryのような識別子からも業務内容を推測できます。接続先名、スキーマ名、コメント、ストアドプロシージャ名も確認対象です。
- 顧客番号、氏名、住所、メールアドレスなどの値
- 社内システム名を含むスキーマ名やテーブル名
- 業務ルールが分かるカラム名、定数、コメント
- 接続文字列、DBリンク、ホスト名、ファイルパス
構造を壊さずに置き換える手順
- 調査に必要なSQL文だけをコピーし、接続設定や実行ログを分離します。
- テーブル、カラム、値、コメントのうち、どの分類をマスキングするか決めます。
- 同じ識別子には同じ置換名を使い、JOINやサブクエリの対応関係を保ちます。
- 対象DBを選び、引用符、関数、ページング構文などのDB固有表現が残っているか確認します。
共有前に確認するポイント
| 確認項目 | 見るポイント |
|---|---|
| 構文 | 括弧、引用符、終端記号が欠けていないか |
| 対応関係 | 別名、JOIN条件、CTE参照が同じ置換名になっているか |
| 値 | 日付、ID、LIKE条件、IN句に実データが残っていないか |
| コメント | 担当者名、障害番号、顧客名が残っていないか |
マスキング後のSQLは本番DBで実行せず、共有用コピーとして扱います。動作確認が必要な場合は、テストデータを使う隔離環境で行ってください。
具体例:顧客検索SQLを調査用に共有する
顧客検索SQLでは、テーブル名とカラム名だけで業務内容が推測され、WHERE句には顧客番号や期間、IN句には複数の実データが残ります。コメントやスキーマ名も含めて確認します。
文字列をすべて同じ値へ置換するとJOIN条件や重複値の関係が失われます。同じ元値には同じマスキング値を割り当て、異なる値は区別できる状態を保ちます。
- 対象DBを選び、SQL全文を入力します。
- テーブル、カラム、識別子、値、コメントの対象範囲を決めます。
- マスキングを実行し、引用符、プレースホルダー、DB固有関数が壊れていないか確認します。
- 結果をコピーする前に、メールアドレス、電話番号、日付、IDを再検索します。
実行計画の調査ではテーブル構造や値の分布が必要な場合があります。隠す範囲と再現性のバランスを調査担当者と決めてください。
よくある質問
- SQLの値だけをマスキングすれば十分ですか?
- 案件名を含むスキーマ名、テーブル名、カラム名、コメントから機密情報が推測される場合があります。共有目的に応じて識別子も対象にします。
- マスキング後のSQLをデータベースで実行できますか?
- 構文の保持を目的としますが、実在しないテーブル名や値へ置換されるため、そのままの実行は想定しないでください。
ブラウザで試す
入力内容はブラウザ内で処理されます。元データを残したうえで、結果を確認してから保存・共有してください。
SQLマスキングツールを開く