RAG・検索基盤

PIIマスキングとは|規則を5つ当てて6箇所伏せても、氏名と住所と社員番号は残った

PIIマスキングとは何をする処理なのか規則で伏せられる範囲はどこまでか残ったものをどうするのか

社内の記録をAIに渡すとき、個人情報を伏せてから渡す処理を挟むことがあります。メールアドレスや電話番号を記号に置き換える形です。

実際に当ててみたところ、規則5つで6箇所が伏せられました。ところが氏名も住所も社員番号も、そのまま残っています

この記事の要点

  • 規則5つを当てて伏せられたのは6箇所
  • 氏名・住所・社員番号を含む5種類が残った
  • 形の決まる情報は規則で伏せられる
  • 見るべきは伏せた数ではなく残った情報

規則を5つ当てて6箇所伏せても、氏名と住所と社員番号は残った

記録5件に規則を当てて実際に測りました。6箇所が伏せられ、5種類の個人情報が残ります。

PIIマスキングがどこまで届くのかを、実際に当てて測りました。用意したのは個人情報を含む記録5件と、規則5件です。

処理は本当に実行しています。記録も規則もコードに書いてあり、そこを変えれば結果も変わります。

javascript
const RULES = [
  ['メールアドレス', /[\w.+-]+@[\w-]+\.[\w.-]+/g, '[メール]'],
  ['電話番号', /0\d{1,4}-\d{1,4}-\d{3,4}/g, '[電話]'],
  ['カード番号', /\d{4}-\d{4}-\d{4}-\d{4}/g, '[カード]'],
  ['郵便番号', /〒\d{3}-\d{4}/g, '[郵便番号]'],
  ['金額', /\d{1,3}(,\d{3})+円/g, '[金額]'],
];
const mask = (s, rules) => rules.reduce((t, [, re, rep]) => t.replace(re, rep), s);
text
  元: 問い合わせ者: 鈴木一郎 / 電話 03-1234-5678 / 社員番号 E-4471。
  後: 問い合わせ者: 鈴木一郎 / 電話 [電話] / 社員番号 E-4471。

  元: クレジットカード 4111-1111-1111-1111 で決済済み。処理番号は TX-88213。
  後: クレジットカード [カード] で決済済み。処理番号は TX-88213。

足した規則           伏せた箇所  残った個人情報の例
メールアドレス                    1箇所  佐藤太郎・山田花子
電話番号                       3箇所  佐藤太郎・山田花子
カード番号                      4箇所  佐藤太郎・山田花子
郵便番号                       5箇所  佐藤太郎・山田花子
金額                         6箇所  佐藤太郎・山田花子

規則5件を全部当てても、氏名・住所・社員番号は残る(残り 5 種類)

1つ目の記録が分かりやすいはずです。電話番号は伏せられたのに、氏名も社員番号もそのまま残っています。

形が決まるかどうかで分かれる

伏せられたものと残ったものの違いは、書式にあります。メールアドレスも電話番号もカード番号も、形が決まっています

だから正規表現で拾えます。ところが氏名は違います。「鈴木一郎」と「経理課」を、文字の形だけで区別する方法がありません

残ったものを数える

表の右の列を見てください。規則を5つまで足しても、残った個人情報は5種類のままです。

左の列だけを見ると、伏せた箇所が1から6に増えて進んでいるように見えます。右の列を見ないと、進んでいない部分に気づけません

社員番号のような社内固有のもの

見落としやすいのが社員番号です。形は決まっているのに、規則を書いていないから残っています

外部の仕組みを使うと、こうした社内固有の書式は拾えません。自社の書式は自分で規則を足すことになります

伏せた数は増える。残った情報の種類は減らない。

件数60メール+電話+カード+郵便番号+金額伏せた箇所残った個人情報の種類記録5件での実測。残ったのは氏名3件・住所・社員番号で、いずれも書式が決まっていないか規則を書いていない。
図1 ── 規則を足したときの、伏せた箇所と残った種類
出典OWASP Gen AI Security Project「LLM02:2025 Sensitive Information Disclosure」2026-08-18 確認
This includes personal identifiable information (PII), financial details, health records, confidential business data, security credentials, and legal documents.
原文OWASP Gen AI Security Project「LLM02:2025 Sensitive Information Disclosure」 この内容の有効期限2027-02-18

PIIマスキングとは何をする処理なのか

渡す前の文字列から、個人を特定できる情報を取り除きます。渡してしまってからでは取り消せません。

PIIマスキングは、AIに渡す前の文字列から、個人を特定できる情報を取り除く処理です。置き換えるか、削るかします。

何を守る話なのか

OWASPは対象の範囲を挙げています。個人を特定できる情報、金融の詳細、健康の記録、社外秘の業務データ、認証情報、法務の文書です。

つまり氏名や連絡先だけの話ではありません。社内の取引条件や原価も同じ枠に入ります。

いつ漏れるのか

同じ文書では、やりとりの中で個人を特定できる情報が開示されうるとされています。渡すときだけでなく、返ってくるときも経路になります。

ですから伏せる場所も2つあります。渡す前と、返ってきた後です。前者だけ実装して、後者を忘れる構成をよく見ます。

取り除くこと自体が対策として挙がっている

OWASPは緩和の手立てとして、利用者のデータが学習に入らないよう、十分なデータの浄化を行うことを挙げています。

この記事で測ったのは、その浄化がどこまで届くかです。規則で拾える範囲には限りがあるという結果でした。

余談 実物を5件読むのが早い

測ってみて実際的だったのは、伏せた後の出力を目で読むことでした。件数だけ見ていると進んでいるように見えます。5件でいいので、実物を読めば残っているものはすぐ分かります。

出典OWASP Gen AI Security Project「LLM02:2025 Sensitive Information Disclosure」2026-08-18 確認
PII Leakage Personal identifiable information (PII) may be disclosed during interactions with the LLM.
原文OWASP Gen AI Security Project「LLM02:2025 Sensitive Information Disclosure」 この内容の有効期限2027-02-18

伏せた気になる状態をどう避けるか

残った情報を数えます。伏せた箇所の数だけを見ていると、進んでいない部分が見えません。

PIIマスキングでいちばん危ないのは、処理を入れたことで安心してしまうことです。前の節のとおり、規則を5つ当てても5種類が残りました。

数える対象を変える

見るべき数字は、伏せた箇所ではありません。残った個人情報の種類です。

前の節の表では、伏せた箇所が1から6に増えるあいだ、残った種類は5のまま動きませんでした。左の列だけを報告すると、進んだように見えます。

指示だけに頼らない

OWASPは、返してよいデータの種類について指示に制限を書くことが、機微情報の開示に対する緩和になりうるとしています。

有効な手立てですが、これは返す側の制御です。渡した情報そのものは消えません。指示による制御の限界はガードレールの記事で扱っています。

進め方

  1. 実物を5件抜き出す。想像で規則を書かない
  2. いまの規則を通して出力を読む。目で読む
  3. 残った情報を種類ごとに書き出す。これが次の課題になる
  4. 伏せた箇所の数だけを報告する。進んでいないことが隠れる

1番目が効きます。社員番号のような社内固有の書式は、実物を見ないと思いつきません

処理を入れたことと、守れていることは別。

充足 2 / 4残った個人情報の種類を数えている伏せた箇所が1から6に増える間、残った種類は5のまま動かなかった実物を読んで規則を決めている社員番号のような社内固有の書式は、実物を見ないと思いつかない伏せた箇所の数で進み具合を測っている数は増えるが、氏名も住所もそのまま残っている指示に書けば渡した情報も守れる指示は返す側の制御。渡してしまった情報は取り消せない記録5件・規則5件での実測にもとづく。規則を全部当てても5種類の個人情報が残った。
図2 ── PIIマスキングの点検項目
出典OWASP Gen AI Security Project「LLM02:2025 Sensitive Information Disclosure」2026-08-18 確認
Adding restrictions within the system prompt about data types that the LLM should return can provide mitigation against sensitive information disclosure.
原文OWASP Gen AI Security Project「LLM02:2025 Sensitive Information Disclosure」 この内容の有効期限2027-02-18

よくある質問

なぜ氏名は伏せられないのですか
形が決まっていないためです。メールアドレスや電話番号は書式が決まっているので規則で拾えますが、氏名は普通の語と区別が付きません。
氏名を伏せるにはどうしますか
辞書を持つか、文の中での役割を判定する仕組みが要ります。規則だけでは足りません。
伏せれば安全になりますか
伏せた範囲だけです。この計測でも、規則を全部当てた後に5種類の情報が残っていました。残ったものを数えないと、伏せた気になるだけです。
指示で「個人情報を出すな」と書けば足りませんか
補助にはなります。OWASPも、返してよいデータの種類を指示に書くことが緩和になるとしています。ただし渡してしまった情報は、指示では取り消せません。

まとめ

  • PIIマスキングは個人情報を伏せてから渡す処理
  • 規則5つで伏せられたのは6箇所
  • 氏名・住所・社員番号など5種類が残った
  • 確かめるのは残った情報のほう

今日から始められること

  1. AIに渡している記録から、実物を5件抜き出す
  2. いま当てている規則を通して、出力を目で読む
  3. 残っている個人情報を種類ごとに書き出す
  4. 残ったものを、渡す前に落とせるかを検討する

実務で組んだPIIマスキングのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る