121,805通のメッセージ
第16話 Challenge

セキュリティの穴

アラタ アラタ

血の気が引いた。

ダッシュボードのスクリーンショットを撮って、ハッチに送ろうとしたときだった。画面の右上に、テスト用に入れた従業員データが表示されていた。名前。部署。そして年収。

テストデータだから架空の情報だ。でも、もしこれが本番データだったら?


僕が作っていたのは、人事データの可視化ダッシュボードだった。HERP_Automationの一部として、採用候補者と既存社員のデータを一覧表示する機能。人事部長時代の経験を活かして「こういうのが欲しかった」を形にしていた。

問題は、僕が人事の感覚でデータを扱っていたことだ。

人事部にいたとき、従業員の個人情報を見るのは日常だった。名前、住所、家族構成、給与、評価。すべてExcelの中にあった。アクセス権限? ファイルサーバーのフォルダ分けが一応あったが、正直、かなりザルだった。

その感覚のまま、Webアプリケーションを作っていた。

画面キャプチャメモ L5430 2026-03-02 15:20

Dashboard shows:

  • 従業員名: 山田太郎、佐藤花子、田中一郎…
  • 部署: 営業部、開発部、人事部…
  • 年収: ¥5,200,000、¥7,800,000、¥4,500,000…
  • 評価: A、B+、A-… ⚠️ All data visible without role-based access control

URLを知っていれば、誰でもこのデータが見える状態だった。


🧑‍💼 アラタ
このポータルから個人名は絶対にでないようにして。
🤖 クロ
了解しました。個人名を匿名化し、社員IDまたはイニシャルでの表示に切り替えます。また、認証済みユーザーのみがアクセスできるよう、ミドルウェアでの認証チェックを追加します。
🧑‍💼 アラタ
年収情報はダッシュボード上にはださないでください。別のセキュアなページに分離して、管理者権限を持つユーザーだけが見られるようにしたい。
🤖 クロ
承知しました。年収データはRole-Based Access Control (RBAC) で保護します。ダッシュボードからは完全に除外し、/admin/salary-report という別ルートに移動させます。このルートはrole=‘admin’のユーザーのみアクセス可能にします。

冷や汗をかきながら、クロに指示を出した。


ハッチに相談した。

👨‍💻 ハッチ
あのさ、お前、人事データ扱ってるんだよな?
🧑‍💼 アラタ
テストデータだけど。本番で使うことを想定して作ってる。
👨‍💻 ハッチ
OWASP Top 10って知ってる?
🧑‍💼 アラタ
…知らない。
👨‍💻 ハッチ
Webアプリケーションのセキュリティ脆弱性トップ10。お前が今やらかしかけたのは、その中の「Broken Access Control」。一番多い脆弱性。

ハッチは厳しかった。でもそれは優しさだった。

セキュリティ対策チェックリスト L5467 2026-03-02 16:45

[x] 個人名の匿名化(表示はID/イニシャルのみ) [x] 認証ミドルウェアの実装(未認証ユーザーはログインページへリダイレクト) [x] RBAC実装(admin / manager / viewer の3ロール) [x] 年収データの分離(/admin/salary-report、admin限定) [x] APIエンドポイントの認証チェック(フロントだけでなくバックエンドも) [x] CORS設定の見直し [ ] セキュリティヘッダー(CSP, X-Frame-Options等) [ ] 監査ログの実装

チェックリストを作った。人事時代、個人情報保護の監査対応で使っていたフォーマットと同じだ。


この経験で学んだことは2つある。

1つ目。技術的なセキュリティの知識は、プロダクトを作るなら必須だということ。「動くものを作る」と「安全なものを作る」は全く別のスキルだ。AIは指示されたものを作る。でも「セキュリティを考慮して」と言わなければ、考慮しない。それは僕の責任だ。

2つ目。人事の経験が、逆にセキュリティ意識を高めてくれたということ。

個人情報保護法。プライバシーマーク。ISMSの監査対応。人事部長時代に嫌というほどやった。「個人情報は最小限の開示に留める」「アクセス権限は職務に必要な範囲に限定する」。あのとき暗記したルールが、今になって生きている。

🧑‍💼 アラタ
クロ、このアプリで扱うデータ全体について、個人情報保護の観点からレビューしてほしい。漏洩リスクがある箇所を全部洗い出して。
🤖 クロ
包括的なセキュリティレビューを実施します。データフロー全体を確認し、個人情報が露出するリスクのある箇所をリストアップします。

あの日以来、新しい機能を作るたびに「このデータが漏れたらどうなる?」と考えるようになった。

ダッシュボードを人に見せる前に気づいてよかった。テストデータだったからよかった。本番データだったら。本物の従業員の年収が、URLを知っている誰もが見られる状態で公開されていたら。

想像するだけでゾッとする。

セキュリティの穴は、空いているときには見えない。誰かに見せようとしたとき、初めて見える。だから、早い段階で人に見せることが大事なのだ。

セキュリティ · 失敗 · 学び

あわせて読む

シリーズ一覧を見る →