Settings/OptionValuesを環境変数 / Secretへ登録する判断ポイントを考える

Settings/OptionValuesを設定ファイルに含めるかどうか、環境変数で直接挿すか、Secret経由で環境変数を挿すか問題

Settings/OptionValuesを設定ファイルに含めるかどうか

設定ファイルに含めるかどうかは、最悪漏れた時に個人情報漏洩等も含めたセキュリティインシデントになりうるかどうかだと思っている。

例えばgit-repoにメールアドレスを含めるのであれば @example.com 等に留めるべき。
それ以外は最低でも環境変数で直接挿すことが望ましい。

環境変数で挿した方がうれしいケース

Instanceをタケノコのように増やして、prop違いで駆動させたい場合等、別に漏洩してもリスクはなくとも環境変数で挿した方が都合の良いケースは存在する。
特定のSettings/OptionValuesのみ値を変えて複数のApplication Instanceを作成したいケースでは、設定ファイルを複数用意するのも冗長なので環境レベル毎に代表的な設定ファイルを用意した上で、細かい部分は環境変数でswitchするほうが運用が単純化しやすいように思う。

環境変数で直接挿すだけでは不足なケースはなにか

不必要に知りすぎてしまう状況を防止するためにSecret経由で環境変数を挿すという所作が求められるケースがある。 例えば

  • 永続化レイヤーの接続情報(prod)
  • 外部連携先のエンドポイントのURL(prod)

のような、 インフラ業を行うチームが知っておいてほしいものの、開発者は気軽にアクセス出来るべきではないpropを取り扱うケースの場合、Secret経由で環境変数を挿す が筋が良いように思える。

まとめ

  • 漏れても問題ない情報は設定ファイルに含める
  • 外部に漏れると問題のある情報は環境変数から挿すことを強く推奨する
  • 但し、環境変数で挿した方が運用上単純化できるケースは積極的に使っていく
  • 内部でも限られたプレイヤーのみが知っているべき情報はSecret経由で環境変数を挿すことを強く推奨する

くらいの塩梅が良いのかなと現状は感じている。