全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / AI_DX制作記 / Vol.40 AI_DX制作記 Vol.5 守りの実装

記事 02

他人のIDで、他人の成果物は開けない——所有権とテナント分離

自分で作った仕組みに、わざと攻撃を仕掛けてみたことがある。

2026-06-20 公開

自分で作った仕組みに、わざと攻撃を仕掛けてみたことがある。

別の利用者のふりをして、自分のものではない成果物のリンクを叩いてみる。開けてしまった。誰の注文も、IDさえ分かれば覗ける状態だった。自分で見つけてよかった、と心底思った。これが本番で、外から見つかっていたらと考えると、ぞっとした。

持ち主だけが、開けるようにする

まず直したのは、所有権の確認だ。

注文も、契約も、成果物も、テナントも、すべてに持ち主がいる。その持ち主であることを確かめてからでないと、中身を見せない。IDが分かっただけでは、開かない。当たり前のようで、作っている最中は、つい後回しになる。動くことを優先すると、誰でも開ける作りのまま、進んでしまう。

会社ごとに、壁で仕切る

無人で多くの会社が使う以上、会社と会社の間にも、壁が要る。

ある会社のデータが、別の会社から見えてはいけない。だから、最初から会社ごとに区画を分け、その境を越えられないようにした。検索しても、ファイルをたどっても、隣の区画には入れない。一人で運用するからこそ、ここは仕組みで固める。私が一件ずつ見張ることは、できないからだ。

強い権限は、二重に確かめる

管理する側の権限も、絞った。

重要な操作をする管理者には、二段階の確認を求める。誰が何をできるかを、役割ごとに分ける。大事な操作の前には、もう一度、本人かを確かめる。便利さよりも、間違って強い操作が通らないことを優先した。秘密の鍵や、外部の接続情報は、画面にもログにも出さず、専用の金庫にしまう。

動くことと、守れていることは違う

作っている最中、いちばん油断するのは、動いてしまったときだった。

動くと、できた気になる。テストでも通る。でも、動くことと、守れていることは、別だ。誰でも開ける作りでも、正しいIDで叩けば、ちゃんと動く。動作だけ見ていたら、穴には気づけない。だから、動いた後に、わざと壊しにいく。正しく動くかではなく、間違った使い方を弾けるかを確かめる。確認の向きを、逆にした。

開発の近道を、本番に残さない

もう一つ、気をつけたことがある。開発中に作った近道だ。

動作確認のために、決済を通さず成果物を出せるような口を、つい作る。それが本番に残ると、そのまま穴になる。だから、そういう開発用の口は、手元の環境でしか動かないようにして、管理用の鍵がなければ叩けないようにした。便利な近道ほど、本番では危ない。

攻撃する側の目で、自分のコードを見直す。この癖がついてから、作りながら穴に気づけるようになった。守りは、後から足すより、作るそばから埋めるほうが、ずっと楽だった。

次の回は、同じ通知が二度来ても、二重に処理しない仕組みについて書く。