この記事は「本番環境などでやらかしちゃった人 Advent Calendar 2025」24日目の記事です。
今回は人生初の記事投稿ということで、今年の学園祭で制作したソフトにおいて発生した大問題をまとめて、今後の再発防止に努めたいと思います。
尚、私が記事を執筆するのはこれが史上初であり、稚拙な部分があるかと思いますがご容赦ください。
やらかしたこと
今回のやらかしは大きく2つです。
- SQLのパスワードなどを.envを経由することなくソースに直接書いた状態でデプロイしかけた
- 顧客用の予約確認ページをサーバーのグローバルIPアドレスで提供した
当時の状況
時は10月末日。私は翌月1-2日に開催される学園祭で使用する予約管理システムを制作していました。
当時は夜通し開発という感じの状態になっており、時間に余裕はありませんでした。
仕様としてはごく普通の予約管理・予約確認システムなのですが、他人が使うwebサービス制作は今回が初だったのでかなり手古摺りました。
一度ハッカソンに出場したときwebサービスを制作しましたが、自分でしか使わない前提で設計・構築したものなのでノーカウントです。
開発はほぼ完了、テスト環境内での動作確認もすでに完了しており、後は本番サーバへのアップロードを残すのみという状況でした。
そんな中、あることに気づきます。
「...パスワードをちゃんとソースから消したよな...?」
すぐさまコードを確認します。すると...
conn = psycopg2.connect(
host="(ホスト名)",
dbname="mainDatabase",
user="staff",
password="******"
)
...消えてませんでした。危ない危ない。
すぐさま.envを参照する形式に書き換え、何とか事なきを得ます。
その後、一通り開発を終えた私は本番サーバーへシステムをアップロードし、本番サーバーで最終確認をしていました。
しかし、またもや問題が発生します。
「...?ドメインにアクセスしてもページが表示されない...?」
私は当時apacheを使って開発を行っていたのですが、設定ファイルをしっかりと書いたはずなのになぜか「サービスが稼働していません」といったエラーが表示されていました。
しかもアクセスできないのは顧客用のページ。スタッフ用ページは問題なくアクセスできていました。
apacheをまともに触ったことがない私は大パニックに陥ります。
そうこうしているうちに夜が明けて、文化祭当日...
結局私はやむを得ず顧客用予約確認ページをサーバーのグローバルIPアドレスで提供しました。
今回の問題の発生理由
(共通項目)
- 焦燥により冷静さを保てていなかった
- 自身の経験が足りなかった
- スケジュールをまともに組まなかった
(パスワードをソースに書いたままデプロイしかけた件)
- .envを書いた後、すぐにソースを書き換えなかった
- (そもそも最初から.envを使わなかった)
(顧客用ページをグローバルIPで提供した件)
- ログを見て修正しようとしていなかった
教訓
余裕をもって開発しろ
もうこの一言に尽きます。どの口が言ってるんだと思うかもしれませんが、今回の一件で私は非常に痛感しました。
ソースにパスワードとかを書くな
とんでもないセキュリティインシデントが発生する原因になりかねません。今回は使用範囲が限られており問題は発生しなかったからいいものの(いい...いや良くない)、これが公に公開するシステムなら大問題です。首が飛びかねない。
落ち着いてログを見ろ
当時の私はなんでこんな簡単なことすら気づかなかったのでしょうか。
原因のほとんどはログに書かれているというのに、結局ログを見ないまま焦ってばかりいる、という状況下でした。
ログを見て落ち着いてデバッグしていれば、今回のような騒動は起こらなかったのかもしれません。
二度と繰り返さないためにも今回の一件をしっかりと記憶しておきます。