クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

開示請求と情報漏えい対応

このレッスンのあとで: 本人の請求と情報漏えいに、決まった手順で対応できる。

60分のレッスンコマンド5件MySQL と phpMyAdmin のラボ:ショップのデータベースで SQL を練習する

本人の請求と情報漏えいには、手順で答える

開示請求とは、本人が「私について持っているデータを見せてほしい」と頼むことです。情報漏えいとは、守るはずのデータが外に出てしまうことです。

どちらも突然来ます。慌てないために、探し方と順番を先に決めておきます。この回では、その手順をデータベースで確かめます。

このレッスンのゴール

メモ

本人の請求と情報漏えいに、決まった手順で対応できる。

重要な言葉

ことばいみ
開示請求本人が、自分のデータを見せてほしいと頼むこと
削除請求本人が、自分のデータを消してほしいと頼むこと
情報漏えいデータが、見るはずのない人に渡ってしまうこと
影響を受ける人データが漏れた本人たち
通知起きたことを、相手に知らせること

学生が入力するセルは、このプレビューでは空白です。

本人は、見る、直す、消すを頼める

データ保護の法律は、本人にいくつかの権利を認めています。自分のデータを見る、間違いを直してもらう、消してもらう、の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つの一覧に

コード: sql
-- 会員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の一覧も出しましょう。

試す: 見落としに気づく

コード: sql
-- 注文だけを探すと、レビューを見落とします。違いを見比べます。
SELECT COUNT(*) AS orders_only FROM orders WHERE member_id = 2;
-- 上の件数は、本人に渡す情報の全部でしょうか。

削除は、子の表から先に行う

削除請求では、全部の場所から消します。外部キーでつながった表は、順番が大切です。

注文の行は顧客を指しています。顧客の行を先に消すと、指す先がなくなってエラーになります。だから、先に注文やレビューを消し、最後に顧客を消します。

会計のために残す義務のあるデータは、消さずに残し、理由を本人に伝えます。

情報漏えいには、順番に対応する

漏えいに気づいたら、最初にするのは被害を止めることです。次に、何がどこまで漏れたかを調べます。

影響を受ける人には、起きたことと、取れる対策を知らせます。必要な届け先にも、決められた期限までに知らせます。

そのあとで原因を直し、同じことが起きないよう、手順を見直して記録に残します。

このラボとソースについて: MySQL と phpMyAdmin のラボ:ショップのデータベースで SQL を練習する

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。