本人の請求と情報漏えいには、手順で答える
開示請求とは、本人が「私について持っているデータを見せてほしい」と頼むことです。情報漏えいとは、守るはずのデータが外に出てしまうことです。
どちらも突然来ます。慌てないために、探し方と順番を先に決めておきます。この回では、その手順をデータベースで確かめます。
このレッスンのゴール
メモ
本人の請求と情報漏えいに、決まった手順で対応できる。
重要な言葉
| ことば | いみ |
|---|---|
| 開示請求 | 本人が、自分のデータを見せてほしいと頼むこと |
| 削除請求 | 本人が、自分のデータを消してほしいと頼むこと |
| 情報漏えい | データが、見るはずのない人に渡ってしまうこと |
| 影響を受ける人 | データが漏れた本人たち |
| 通知 | 起きたことを、相手に知らせること |
学生が入力するセルは、このプレビューでは空白です。
本人は、見る、直す、消すを頼める
データ保護の法律は、本人にいくつかの権利を認めています。自分のデータを見る、間違いを直してもらう、消してもらう、の3つがよく使われます。
組織は、請求を受けたら、決まった期間の中で答えます。まず請求した人が本人かどうかを確かめます。他人のデータを渡してはいけないからです。
例: 請求と、組織がすること
| 請求 | 本人が頼むこと | 組織がすること |
|---|---|---|
| 開示 | 持っているデータを見せる | 全部の場所から集めて渡す |
| 訂正 | 間違いを直す | 全部の場所で直す |
| 削除 | データを消す | 全部の場所から消す。消せない分は理由を伝える |
学生が入力するセルは、このプレビューでは空白です。
1人分のデータは、複数の表に散らばる
顧客の表には名前とメールがあります。でも、注文は注文の表に、レビューはレビューの表にあります。
開示請求に答えるには、本人の id をたどって、全部の表から行を集めます。1つの表だけを見て答えると、残りを隠したことになります。
ラボで、顧客3番について、表ごとに読んでみましょう。準備の2行を先に Run します。
証明書を受け入れる設定
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ショップ用の短い名前
alias sql='mariadb -h db -u student -pstudent shop -t -e'ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
顧客3番の登録情報
sql "SELECT id, first_name, last_name, email, phone, city, country, joined_on FROM customers WHERE id = 3"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
顧客3番が書いたレビュー
sql "SELECT product_id, stars, comment, reviewed_on FROM reviews WHERE customer_id = 3 ORDER BY product_id"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
顧客3番の注文
sql "SELECT id, ordered_at, status FROM orders WHERE customer_id = 3 ORDER BY ordered_at"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
本人のデータは、主な表だけを見ればよいと思いがちです。実際は、注文、レビュー、問い合わせ、ログ、メールの控え、バックアップにも散らばります。データがある場所の一覧を、先に作っておきます。
試す: 1人分を1つの一覧に
-- 会員2の注文とレビューを、1つの一覧にします。
SELECT 'order' AS kind, ordered_on AS happened_on, item AS detail
FROM orders WHERE member_id = 2
UNION ALL
SELECT 'review', reviewed_on, note
FROM reviews WHERE member_id = 2
ORDER BY happened_on;
-- member_id = 2 を 3 に変えて、会員3の一覧も出しましょう。
試す: 見落としに気づく
-- 注文だけを探すと、レビューを見落とします。違いを見比べます。
SELECT COUNT(*) AS orders_only FROM orders WHERE member_id = 2;
-- 上の件数は、本人に渡す情報の全部でしょうか。
削除は、子の表から先に行う
削除請求では、全部の場所から消します。外部キーでつながった表は、順番が大切です。
注文の行は顧客を指しています。顧客の行を先に消すと、指す先がなくなってエラーになります。だから、先に注文やレビューを消し、最後に顧客を消します。
会計のために残す義務のあるデータは、消さずに残し、理由を本人に伝えます。
情報漏えいには、順番に対応する
漏えいに気づいたら、最初にするのは被害を止めることです。次に、何がどこまで漏れたかを調べます。
影響を受ける人には、起きたことと、取れる対策を知らせます。必要な届け先にも、決められた期限までに知らせます。
そのあとで原因を直し、同じことが起きないよう、手順を見直して記録に残します。