トップ›基礎編›第3章
基礎編第3章

扱うデータで決まる、リスクの大きさ

読む目安:約30分見るだけ/入力あり/他人のデータ。3段階で守りの深さを決める

第1章の結論は「危険の大きさは、誰が作ったかより、何を扱うかで決まる」でした。この章では、それを自分のアプリに当てはめるための物差しを作ります。扱うデータと利用者の範囲で3つの段階に分け、どこまで守る必要があるかを決めます。あわせて、「公開しない」という選択肢があることも確かめます。

この章の学習目標

  • 資産・脅威・脆弱性・リスクの4つの言葉を、内部統制の言葉に置き換えて説明できるようになる
  • 自分が公開しているものを3つの段階のどれかに分類し、その段階で最低限守るべきことを言えるようになる
  • 他人の個人情報を預かる場合に、法律上どんな義務が生じるかを概要として説明できるようになる

4つの言葉を、内部統制の言葉で

セキュリティの議論は、ほぼ次の4つの言葉で組み立てられています。経理のリスク管理と同じ構造なので、置き換えて読むと見通しがよくなります。

言葉意味内部統制でいえばミニ銀行アプリなら
資産守る価値のあるもの現金、預金、帳簿、取引先の情報利用者のメールアドレス、残高、取引履歴、あなたのアカウント
脅威資産に損害を与えうる出来事や行為者横領、盗難、記帳ミス、災害他人のデータを見ようとする第三者、乗っ取り、改ざん
脆弱性脅威が実現してしまう弱点金庫の鍵が開いている、職務分掌がない、承認を飛ばせる所有者の確認がない、鍵がコードに書いてある
リスク脅威が脆弱性を突いて資産を損なう可能性と、その大きさ発生可能性 × 影響額で評価する「誰でも他人の残高が見える」なら高い

ここで大切なのは、リスクは資産の大きさで決まる、という点です。金庫が空なら、鍵が開いていてもたいした被害は出ません。逆に、金庫に現金があるなら、小さな弱点も大きなリスクになります。アプリでいう「金庫の中身」が、扱うデータです。

レベル1:見るだけのサイト

教材サイト、用語集、アプリの紹介ページ。入力欄もログインもなく、誰が見ても同じ画面が出るものです。第2章の言葉では静的サイトに当たります。

預かるデータがないので、漏えいという被害は起きません。起きうるのは、ページの改ざん(内容を書き換えられる)と、乗っ取られて別の攻撃の踏み台にされること(偽サイトへの誘導など)です。被害は限定的ですが、ゼロではありません。

それでも守るべきことは2つあります。ひとつは、VercelやGitHubなど、サイトを置いている場所のアカウントに二要素認証(パスワードに加えて、スマートフォンのコードなどを求める仕組み)をかけること。改ざんや乗っ取りは、ほとんどがアカウントの側から起きます。もうひとつは、秘密情報を置かないこと。「見るだけ」のつもりで、AIのAPIキーをページのコードに埋め込んでいた、という例は珍しくありません。これは第9章で確かめます。

レベル2:入力やログインがある

問い合わせフォーム、会員ページ、自分だけが使う記録アプリ。利用者が何かを入力し、サーバーがそれを受け取って処理するものです。

ここから、2つの新しい口が開きます。ひとつはフォームです。入力欄は、利用者が自由な文字をサーバーに送り込める口で、そこに「命令」として解釈される文字が入ると、データベースや他の利用者の画面が操作されます(第5章、第11章)。もうひとつはログインです。ログインの仕組みが甘ければ、パスワードを当てられたり、ログイン済みの証明(トークン)を盗まれたりして、乗っ取られます。

「自分しか使わないから」は、安全の理由になりません。公開されている以上、誰でもログイン画面に到達できます。利用者が自分だけでも、そこに保存した記録は資産です。家計簿や健康記録のような個人的な内容なら、なおさらです。

レベル3:他人のデータやお金を扱う

社内ツール、複数人で使う管理画面、決済のある販売ページ、そして学習用であっても他人がアカウントを作れるミニ銀行。ここが本丸です。第1章の論文で見つかった深刻な脆弱性の多くは、この段階のアプリで、他人のデータに届いてしまうものでした。

この段階では、技術の話に加えて、法律と規程の話が入ってきます。

個人情報保護法の報告義務

氏名やメールアドレスのような他人の個人情報を預かっていて、それが漏えいした(またはそのおそれがある)場合、一定の事態に当たれば、個人情報保護委員会への報告と、本人への通知が法律で義務づけられています。個人情報保護委員会の資料によれば、報告対象となるのは、要配慮個人情報(病歴など)を含む場合、財産的被害のおそれがある場合(クレジットカード番号など)、不正の目的によるおそれがある場合、本人の数が1,000人を超える場合の4つです。

報告は2段階で、速報が発覚からおおむね3〜5日以内、確報が30日以内(不正の目的によるおそれがある場合は60日以内)です。2022年4月に施行された改正で義務化されました。「趣味で作ったアプリだから」という区別はありません。不正アクセスで漏えいしたなら、不正の目的によるおそれがある場合に当たります。

会社の情報を扱うなら、社内規程

社内ツールを自作して部署で使う場合、法律の前に社内規程があります。情報の持ち出し、外部サービスの利用、個人情報の取り扱い。たいていの会社では、情報システム部門の承認なしに社外のクラウドへ業務データを置くことを禁じています。「便利だから」で自作ツールにデータを入れると、善意でも規程違反になります。公開の前に、情報システム部門に相談してください。

注意:レベル3は、この教材だけで完結しない 他人のデータやお金を扱うものを本格的に公開するなら、基礎編と実践編を終えたうえで、専門家のレビューを受けてください。この教材は、専門家と話せるようになるためのものです。どこから先を専門家に頼むかは、第27章で扱います。

判断の表と、「公開しない」という選択肢

段階を決めるとき、扱うデータだけでなく、利用者の範囲も見ます。同じデータでも、自分だけが使うのと、不特定多数に開くのとでは、脅威の数が違うからです。

扱うデータ \ 利用者自分だけ知人・同僚不特定多数
公開してよい情報だけ(教材、用語集)レベル1レベル1レベル1
自分の記録、自分の入力レベル2レベル2レベル2(ログインの守りを厚く)
他人の個人情報、他人の記録レベル3(預かった時点で)レベル3レベル3(報告義務の対象になりうる)
お金、決済、会社の業務データレベル3レベル3(社内規程の確認)レベル3(専門家のレビュー必須)

表の読み方はひとつです。行(扱うデータ)で段階が決まり、列(利用者の範囲)で守りの厚さが決まります。「他人のデータを扱うが、利用者は同僚3人だけ」でも、レベル3です。預かった時点で、あなたは預かり主だからです。

自分の公開物を、この表に当てはめてみてください。教材サイトはレベル1、ログイン付きのミニ銀行は、他人がアカウントを作れるならレベル3です。学習用であっても、利用者のメールアドレスとパスワードを預かっているからです。

「公開しない」という選択肢

段階が上がるほど、守りに手間がかかります。その手間を払う前に、「そもそも公開する必要があるか」を考える価値があります。選択肢は3つです。

  • ローカルだけで動かす。自分のパソコンの中で動かし、インターネットに出さない。自分だけが使う記録アプリなら、これで十分なことが多いです。インターネットから到達できなければ、外からの脅威はほぼ消えます。
  • パスワード保護をかける。サイト全体に入口の鍵をかけ、知っている人しか開けないようにします。アプリ自体のログインとは別の、もう一枚の扉です。
  • Vercelのデプロイ保護を使う。Vercelには、公開先のURLにアクセスできる人を制限するDeployment Protectionという機能があります。Vercelの公式ドキュメントによれば、Vercelのアカウントでログインした人だけに制限する方式(Vercel Authentication)は全プランで使えます。パスワードで制限する方式(Password Protection)は有料プラン向けです。試作段階のアプリや、同僚にだけ見せたいものには、この機能が向いています。

「作ったものを人に見せたい」という気持ちは自然ですし、それがバイブコーディングの楽しさでもあります。ただ、見せる相手が決まっているなら、全世界に公開する必要はありません。扉を一枚増やすだけで、レベル2やレベル3のアプリに届く脅威の数は大きく減ります。

まとめ

  • リスクは、資産(扱うデータ)の大きさで決まる。金庫が空なら、鍵が開いていても被害は小さい。資産・脅威・脆弱性・リスクは、内部統制の言葉にそのまま置き換えられる。
  • 見るだけ(レベル1)、入力やログインあり(レベル2)、他人のデータやお金(レベル3)の3段階。他人のデータは、預かった時点でレベル3。利用者の範囲は守りの厚さを決める。
  • レベル3では法律と規程が関わる。個人情報の漏えいは、速報おおむね3〜5日、確報30日以内(不正の目的なら60日以内)の報告と本人通知が義務。公開しない、扉を増やす、という選択肢も常にある。

出典