Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

GDPRを遵守するためにアプリケーションに必要となる機能

請負開発したシステムでEU域内の個人データを扱う場合、GDPRの遵守は納入先となる顧客が負うことになるわけだけれど、とはいえGDPRに対応するための機能が入ってないと問題になることは見えているので、提案書の段階で必要な機能は機能要件に織り込んでおく必要があるわけです。

そこで、「個人データの取扱いと関連する自然人の保護に関する、及び、そのデータの自由な移転に関する、並びに、指令95/46/EC を廃止する欧州議会及び理事会の2016 年4 月27 日の規則(EU) 2016/679(一般データ保護規則)」の前文と条文の中から、アプリケーションの機能に関わりそうな箇所をピックアップしてみました。

なお、前文と条文をざっと眺めた結果なので、当然ながら網羅性は保証されません。何をアプリで実装して、何をミドルで実装するかはシステムによって違うしね。

前文

(30) 自然人は、インターネットプロトコルアドレス、クッキー識別子、又は、無線識別タグのようなその他の識別子といったような、当該自然人のデバイス、アプリケーション、ツール及びプロトコルによって提供されるオンライン識別子と関連付けられうる。

IPアドレスやJSESSIONIDをログ出力する際に注意が必要。同意が取れていない場合はログにIPアドレスやJSESSIONIDを保存できないことになる。Logbackの場合、MDCで同意が取れているリクエストのみIPアドレスやJSESSIONIDをログ出力するよう制御できる。

(32) この同意は、インターネット Web サイトを訪問する際にボックスをチェックすること、情報社会サービスのための技術的な設定を選択すること、又は、この文脈において、自己の個人データについて提案された取扱いについてのデータ主体の承諾を明確に示す上記以外の陳述又は行為を含みうる。それゆえ、沈黙、予めチェック済みのボックス又は不作為は、同意を構成するものとしてはならない。

同意のためのチェックボックスは、デフォルトOFFにすること。

条文

第5条

1 . (f) 無権限による取扱い若しくは違法な取扱いに対して、並びに、偶発的な喪失、破壊又は損壊に対して、適切な技術上又は組織上の措置を用いて行われる保護を含め、個人データの適切な安全性を確保する態様により、取扱われる。

個人データに対するアクセス制御の実装が必要。

第7条

1 . 取扱いが同意に基づく場合、管理者は、データ主体が自己の個人データの取扱いに同意していることを証明できるようにしなければならない。

同意したことの記録はDB上に永続化する。または、特定のセッションIDのユーザが取り扱いに同意したことをログへ出力する。

3 . データ主体は、自己の同意を、いつでも、撤回する権利を有する。

同意したことの記録はDB上で更新できるようにする。または、特定のセッションIDのユーザが取り扱いの同意を撤回したことをログへ出力し、以降はログ出力時の識別子をマスクする *1

第8条

1 . ... その子どもが16 歳未満の場合、そのような取扱いは、その子どもの親権上の責任のある者によって同意が与えられた場合、又は、その者によってそれが承認された場合に限り、かつ、その範囲内に限り、適法である。 加盟国は、その年齢が 13 歳を下回らない限り、法律によって、それらの目的のためのより低い年齢を定めることができる。

記録の対象が16歳(または導入先の国の法律によって設定された年齢)未満か以上かで処理を分ける必要がある。または、単純に16歳未満の利用を禁止できるようにする。

第12条

2 . ... 第15条から第22条に基づくデータ主体の権利の行使を容易にするものとする。

記録している個人データは照会可能にする必要がある。保存しっぱなしはマズい。

3 . ... 第15条から第22条に基づく要求に基づいて行われた行為に関する情報を提供する。

個人データに対するアクセスログ監査証跡として保存する必要がある。第30条も同じ。プレーンテキストのログへアクセス記録を出力する場合は、個人データの主キー*2を併せて出力しておかないと識別が難しい。

第13条

2 . (a) その個人データが記録保存される期間、又は、それが不可能なときは、その期間を決定するために用いられる基準。

個人情報の保存時刻をレコードのカラムとして持った上で、保存期限を過ぎたデータはバッチ的に消去が必要。

2 . (b) 個人データへのアクセス、個人データの訂正又は消去、又は、データ主体と関係する取扱いの制限を管理者から得ることを要求する権利、又は、取扱いに対して異議を述べる権利、並びに、データポータビリティの権利が存在すること。

個人データはまとめてエクスポートできる必要がある。

第15条

1 . (c) 個人データが開示された、又は、個人データが開示される取得者若しくは取得者の類型

個人データに対するアクセスログ監査証跡として保存する必要がある。第30条も同じ。

第30条

1 . 個々の管理者、及び、該当する場合、管理者の代理人は、その責任において、取扱活動の記録を保管する。

個人データに対するアクセスログ監査証跡として保存する必要がある。実装方法としては、DBのテーブルにアクセス記録用のカラムを設ける、監査証跡用のテーブルを設ける、DBの監査証跡機能を利用する、主キーをプレーンテキストのログへ出力する、など。

*1:注意: 同意を撤回した場合、記録は遡って消去する必要がある?

*2:個人を識別する情報そのものではマズいので、内部的なサロゲートキー的なIDが必要となる。