住所データのプライバシーは、取得してから消すまでの各段階で考える必要があります。住所は氏名と結び付いたときに個人を特定できる情報になり、単独では地域の傾向を示す情報にもなります。この記事では、押さえるべき原則と、開発の現場で見落とされやすいテスト環境の問題を扱います。
住所は個人情報に当たるのか
当たります。単独の住所だけでも、そこに住む人を絞り込める場合があります。氏名、電話番号、生年月日と組み合わさると、特定の個人を指し示す度合いはさらに強まります。
ここで注意したいのは、住所そのものを消しても、周辺の情報から復元され得るという点です。郵便番号、市区町村、番地の一部、そして購買の履歴が別々の場所に残っていると、それらを突き合わせて住所が再構成される可能性があります。したがって、住所を含む項目は、一箇所だけを保護しても十分ではありません。
保存期間を決めずに持つと何が起きるのか?
不要になった住所が残り続けます。保存期間を定めずに取得したデータは、用途が終わったあとも残り、参照され続けます。参照される限り、削除の判断は誰も下しません。
保存期間を決めておくと、三つの効果があります。まず、削除の判断を人が下さなくてもよくなります。次に、保存する量が自然に抑えられ、漏えいしたときの影響範囲が小さくなります。そして、そもそも取得すべきだったかを問い直す機会になります。
期間を決めるときの単位は、用途から逆算します。配送のために必要な期間は、配送が完了して問い合わせが落ち着くまでです。それ以降も保持する理由があるなら、その理由を記録しておきます。理由を書けない保持は、削除の候補です。
テスト環境に実在の住所を入れてよいのか?
よくありません。ここは開発の現場で最も見落とされやすいところです。
本番のデータをそのまま複製してテスト環境に置くと、本番と同じ保護がテスト環境にも必要になります。ところがテスト環境は、権限が緩く、記録が残らず、長く放置されがちです。本番では守られていた情報が、複製された時点で守られなくなります。
また、テストの失敗を報告するときに、値が画面に出ます。記録にも残ります。第三者の住所が、その人の関与しない文脈で開発者の端末に残るのは望ましくありません。
代替の方法は、合成した住所を使うことです。合成であれば、値が見えても特定の個人には結び付きません。件数も自由に増やせます。実在の値が必要なのは、存在確認の連携を試すなど、ごく限られた場面だけです。
開発者向け: 扱いを減らす設計
第一に、取得する項目を減らします。住所の全項目が必要な場面は多くありません。郵便番号だけで足りる処理、市区町村までで足りる処理は多いはずです。番地や部屋番号まで求めるのは、配送のように本当に必要な場合に限ります。この考え方は、個人情報の保護の基本である必要最小限の取得そのものです。
第二に、保存する形を考えます。表示に使う値と、照合に使う値は別で構いません。照合には郵便番号や行政区だけで足りることがあります。生の住所を長く持たずに済むなら、そのほうが安全です。
第三に、記録に出さない工夫です。ログや不具合の記録に住所がそのまま出ると、保護の及ぶ範囲が広がります。記録には識別子だけを残し、値は必要になったときに権限のある経路で参照する形にします。
第四に、掩蔽です。開発中の画面や資料に住所を載せるときは、一部を置き換えます。国内の例では、郵便番号や番地の一部を同じ桁数の別の値に置き換えるだけでも、特定の度合いは下がります。ただし、置き換えの規則が単純すぎると復元され得るため、規則そのものを公開しないようにします。
第五に、削除を実行できる形にします。保存期間を決めても、削除の手段がなければ実行できません。利用者からの求めに応じて削除できる経路を用意し、実際に削除が動くことをテストします。削除のテストは、記録からも消えるところまで確認します。
ここまでの方針を短く並べると、次のとおりです。
- 取得する項目を減らし、郵便番号や市区町村までで足りる処理を先に探す
- 表示に使う値と照合に使う値を分けて持ち、生の住所を長く残さない
- 記録には識別子だけを残し、値そのものを記録に出さない
- 開発中の画面や資料では、値の一部を別の値に置き換える
- 削除は、記録からも消えるところまで確かめる
委託先と共有するときの確認
住所を含むデータを外部と共有する場合、確認すべき点は三つです。何のために渡すのか、渡した先でいつまで持つのか、そして不要になったときに消されるのか。
この三つが文書で確認できない場合、渡す範囲を狭めるか、合成データで代替できないかを検討します。連携のテストであれば、合成データで目的を満たせることが少なくありません。テスト用の住所を用意する考え方はテスト固定装置の住所データにまとめています。
次のステップ
まず、自分のテスト環境に本番由来の住所が入っていないかを確認してください。入っていたら、合成データへの置き換えを検討する余地があります。次に、住所を保存している場所と、それぞれの保存期間が決まっているかを書き出します。期間を説明できない場所が見つかったら、そこが削除の候補です。データの在りかを確認する出発点としては国際住所の書き方のように項目の意味を整理した記事が役に立ち、置き換え用の値はランダム住所生成で作れます。