背景
・PHP/MySQLを学習し終え、簡単なアプリ開発をしたので、Herokuにデプロイしました。(これが人生初デプロイでした。)
・ポートフォリオの説明用にQiita記事(※)を投稿し、そこにGithubのURLを張り付けていました。
※書いたQiita記事は[こちら] (https://qiita.com/TkTkTkTkTako/items/d32fd686ce5335101e2a)です。
きっかけ
投稿したQiita記事に以下の内容のコメントをいただきました。
コメント
「すぐにデータベース情報を消して!Herokuなら環境変数も使えるよ!」
※要点を絞って記載しております。元コメントは抜粋しておりません。
しかし、
自分
「データベース情報を消す理由は?環境変数とは??そもそもデータベース情報を記事に記載していないはず…」
と「?」しか浮かびませんでした。
※ここでいうデータベース情報とは以下のheroku config
の結果で表示される情報です。
$ heroku config
=== arcane-ravine-17252 Config Vars
CLEARDB_DATABASE_URL: mysql://<username>:<password>@<hostname>/<dbname>?reconnect=true
こちらの記事などを参考にして
・Herrokuアカウントの作成
・Herokuアプリケーションの作成
・HerokuCLIのインストール
・ClearDBのインストール
が全て完了したら取得できるものです。
当初の認識
元々、データベース情報(ユーザー名/パスワード/ホスト名/データベース名)は個人情報と同じようなもので、管理に注意が必要であることは知っていたのでQiita記事を書く際やTwitterでアウトプットする際も気を付けていたつもりでした。
ですが、コメントを頂いたのでDB情報が記事内に書かれているのか再度見返しました。
重大なミスが発覚…
すると、、、Qiita記事に貼っていたGithub上のコードにDB情報を公開していることに気づきました(汗)
今回のアプリの開発で、普段から何気なくGithubにコード管理のためにプッシュしていたのですが、そのプッシュの内容に本番環境用のデータベース情報がしっかり入っていました(;^ω^)
この時点で、この行為自の危険性を初めて認識しました。
対処方法
コメント頂いた通り、すぐに以下を実行しました。
・Herokuで作成した当初アプリを削除
・再度新しいアプリを作成
・本番環境用のDBを作成し環境変数を使ってデプロイ
⇒デプロイの際に参考にした記事はこちらです
[【PHP】Heroku×PHP×MySQLの環境設定] (https://ryuki999.com/2019/11/10/herokuxphpxmysql-setup/#toc2)
原因
大きく分けて2点です。
1.Github上のコードは公開されているということの意識の欠乏
Githubはコードを管理すると同時に、「コードは公開されている」ということを忘れていたことが理由の一つです。
2. ステージング方法の悪い癖
私は普段Gitでのコミット時、ステージングを
git add .
で必ず実行する癖がついていました。
これでは意図しないファイルまでステージング/コミットしてしまうことにつながるので、ステージングは
git add -p <ファイル名>
も使用する必要があると学習しました。
学んだこと
エンジニアはデータベース上の顧客の個人情報を扱うことになるので、課題解決と同時にセキュリティ上の問題にも十分注意して仕事を進めなければいけないのだ、と実感しました。
このような事態が起こったのがエンジニアとして実務をする前の、個人開発のタイミングで本当によかったと感じました。