2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Laravel] 本番環境で環境変数をテストするアイディアを考察

Posted at

先日は話題になりましたこちらの記事を拝見しまして、
色々考えることがありましたので、こちらの記事を書くことにしました。

はじめに

Laravelのfacade/ignitionパッケージに脆弱性(CVE-2021-3129)が見つかり、
上記の記事では、筆者さんの注意喚起やご自身のマルウェア感染体験談を紹介してくれています。

しかし、こちらの脆弱性はちょっと特殊な事情があります。
脆弱性の対象が、本番環境では利用されるはずのないパッケージであることや、Laravelの環境変数の設定ミスを狙ったものになっています。
なので、公開サーバーにデプロイされているLaravelを適切に設定していれば、該当しないことが基本です。

Laravelに限った話ではありませんが、アプリケーションを本番環境にデプロイするのは、神経質な作業を伴います。
個人的なプロジェクトだったら良いのですが、会社などの組織としてクライアントやエンドユーザーに
製品として提供するアプリケーションの場合は、組織が全責任を負います。

厳密には、会社の代表を含む役員が責任を負うことになりますので、
リスクを回避する一定の仕組みを責任者が設ける必要があります。

私も極小規模の会社ではございますが、一応代表の立場ではありますので、責任者として仕組みを作れないかと思い、
アイディアレベルの内容ではありますが、こちらの記事に試作を紹介したいと思います。

Laravelの環境変数をデプロイ時にテスト

早速ではございますが、下記にて試作を作ってみました。
https://github.com/timoshka-lab/laravel-health-check

現時点では、数時間で作れるクオリティーでしかないので、実践では使えません。
あくまでもアイディアの一つとして皆さんのご意見やフィードバックを頂くことが目的のプロジェクトになっています。

パッケージの目的

  • Laravelアプリケーションの環境変数が、本番環境に見合った内容で設定されているかをテストしたい
  • Composerで require-devのパッケージがインストールされていないかをテストしたい
  • Laravelパッケージは汚したくない、独立した場所で検証したい
  • コマンドラインインタフェースで操作したい
  • テストケースを誰でも分かりやすい形にしたい(追加も安易)
  • 可能な限りシンプルに作りたい(役割が限られているので、管理を踏まえて作り込みすぎない)

PHPUnitを有効活用した試作

試作では、artisan風にコマンドラインから入力を受け取り、PHPUnitでテストケースを走らせる形にしました。
PHPUnitのテストケースであれば、誰でも理解しやすいし、管理もしやすいことが主な目的です。

ご利用時の注意点

rootユーザーでの実行はお控え下さい。コマンド内部では、ターゲットになっているLaravelアプリケーションをブートしていますので、
場合によっては、ログファイルがroot権限で書き込まれてしまいます。phpの実行ユーザーでご利用下さい。

プロジェクトの今後

使えそうなアイディアであった場合は、徐々にリファクタリングや機能の追加をしていこうと思います。
現時点では試作レベルのため、DBやキュードライバーの対応が不十分だったり、Redisなどの環境変数を検証できていなかったりなど、
まだまだ実践での利用からは程遠い状態です。

同様のプロジェクト

実は同様のプロジェクトが既にPackagistに登録されています。その多くは、Laravelの内部から利用するものなっていたため、
今回の目的に合いませんでした。(すべて確認したわけではありませんが。。。)

ご意見ください

どんなご意見でもOKです。すべてのご意見を快く受け止めます。

番外編

Composerでインストールしているパッケージに脆弱性が含まれていないか、検証できるプロジェクトが存在しています。
ご存知の方も多いとは思いますが、一応記載しておきます。
https://github.com/FriendsOfPHP/security-advisories

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?