見つけたときは、血の気が引きました。まったく別の作業のついでに、たまたま開いたファイルでした。
きっかけは「画像まわりの点検」だった
その日やろうとしていたのは、サイトに載せる画像の扱いを見直す作業でした。関係しそうな自動化スクリプトを順番に開いていたところ、5月ごろに作った古いファイルが1本出てきました。
中を見て、手が止まりました。サイト管理用のパスワードが、そのまま文字として書き込まれていたのです。伏せ字でも、別の場所から読み込む形でもなく、コードの中に直接。
そして悪いことに、そのファイルはコードの変更履歴を管理する仕組み(GitやGitHubと呼ばれるもの)に入っていました。つまり2か月以上、その状態のまま履歴に残り続けていたことになります。
他のファイルは、ちゃんと安全な方式だった
不思議だったのは、同じような役割のスクリプトが他にも何本かあり、そちらは全部「環境変数」という安全な方式に統一されていたことです。
環境変数というのは、パスワードのような秘密の情報を、コードの外側(実行するパソコンの設定)に置いておき、コードからは「そこにある値を使って」とだけ指示する仕組みです。コードそのものには秘密が書かれないので、ファイルを他人が見ても中身は分かりません。
つまり方針としては正しく決まっていて、実際そのとおりに直してもいた。ただ1本だけ、古い書き方のまま取り残されていたわけです。
なぜ取り残されたかというと、その1本は「その時かぎりの作業用」として急いで作ったもので、後から整備した対象のリストに入っていなかったからでした。一度きりのつもりが、そのまま残ってしまった典型です。
その場でやったこと
順番はこうしました。
- 書き方をすぐ直す — コードの中の文字列を消し、他のファイルと同じ環境変数方式に書き換える。
- パスワードを再発行する — ここが一番大事です。書き方を直しても、過去の履歴には古いパスワードが残ります。だから発行し直して、古いものを無効にする。これを「ローテーション」と呼びます。
- 同じ種類のファイルを全部見る — 1本あったなら他にもある前提で、横に並ぶファイルをまとめて確認する。
特に2番は忘れがちです。「消したから大丈夫」と思ってしまいますが、履歴を管理する仕組みは消した過去も含めて残すのが仕事なので、消しただけでは無かったことになりません。
AIに任せる量が増えた人こそ、横断点検を
私がこの数か月でいちばん増やしたのは、AIに小さな自動化を書いてもらう仕事です。手作業を減らせるので、ついどんどん作ります。
そこに落とし穴がありました。AIは、その場で頼まれた1本については、きちんと動くものを作ってくれます。でも「他のファイルと方針をそろえる」ところまでは、こちらが指示しないと見てくれません。しかも量が増えるほど、自分でも全部は覚えていられません。
だから今は、こう決めています。
- 秘密の情報(パスワード・鍵・トークン)は、コードに書かない。例外を作らない。
- 一度きりのつもりで作ったものほど、後で見に行く。残るのはたいていこの種類です。
- 月に一度、同じ種類のファイルを横に並べて見る。1本ずつではなく、横並びで見ると「1つだけ違う」がすぐ分かります。
- 見つけたら書き換えだけで終わらせず、必ず発行し直す。
まとめ
この件で学んだのは、「安全な設計にした」と「全部が安全な設計になっている」は別物だということでした。設計を直した日ではなく、取り残しがゼロになった日が、直った日です。自動化を増やしている最中の人は、増やす手を一度止めて、横並びで見る日を作ってみてください。私はそれをサボっていました。
※本記事は、筆者が自社で実際に経験した一例です。使っている仕組みや管理方法によって、必要な対処は変わります。認証情報の扱いに不安がある場合は、自己判断で進めず、詳しい方に相談することをおすすめします。

コメント