【PHP】コンテナの環境変数を参照する

AWS ECSでコンテナアプリケーションを実装する時の、コンテナに設定された環境変数取得方法のまとめです

環境ごとの設定値を設定ファイルに書き出しておくのはよくやる手法ですが、githubを使ってソース管理する場合、思わぬ情報漏洩に繋がるケースがあります。

例えばデータベースのホスト名やパスワードを設定ファイルに書き出して環境ごとにコミットしたとします。FuelPHPの設定ファイルを例にとって見てみます。

config/production/db.php (普通に書く)

return array(
  'default' => array(
    'connection'  => array(
      'hostname' => '255.255.255.255,
      'database' => 'database',
      'username' => 'testuser',
      'password' => 'password',
    ),
  ),
);

これをgithubへコミットしてしまうと、何かの拍子でpublicになってしまったとき外部から丸見えになってしまいます。何かの拍子というのは、そのほとんどが人的ミスによるものです。

また、こういった情報を良からぬクローラーがさらっていく情報漏洩が結構発生しているようですので、コンテナの環境変数に設定してアプリケーションからは環境変数を読み込んで処理するのが望ましいです。

さらに上記のような極めて重要な情報は、AWSパラメータストアに設定しておきコンテナから参照するようにすればセキュリティ的には万全な作りになります。

この辺はインフラ担当者がやってくれるので、コンテナに設定する環境変数名をインフラ担当者に依頼するようにします。ここではコンテナの環境変数に設定済みの値を読み込むように修正します。

config/production/db.php (コンテナの環境変数を読み込む)

return array(
  'default' => array(
    'connection'  => array(
      'hostname' => $_SERVER['DBHOST'],
      'database' => $_SERVER['DBNAME'],
      'username' => $_SERVER['DBUSER'],
      'password' => $_SERVER['DBPASS'],
    ),
  ),
);

こうしておけばECSコンテナ上に設定された環境変数を読み込んでくれます。

ECSコンテナの環境変数の確認

ECSコンテナに設定された環境変数はAmazonコンソールから確認できます。

  • Amazonコンソールへログイン
  • Amazon ECS
  • タスク定義
  • 対象アプリケーションのタスク定義をクリック
  • ビルド毎にRevisionが表示されるので直近をクリック
  • ビルダータブのコンテナ名をクリック
    環境変数のエリアに全て表示される

※パラメータストアには直接アクセスはできないのでエンジニア側で意識する必要は特に無い

この記事へのコメント

スポンサーリンク