Firebase FunctionsからSecret Managerを使う

Firebase FunctionsからSecret Managerを使ってみた感想

これはなに?

Firebase FunctionsからSecret Managerに登録された値を参照できるようになっていたのでやってみた。

https://firebase.google.com/docs/functions/config-env

Secret Managerの利用手順

Secret Manager APIの有効化

適当にsecret系のコマンドを叩くと、Secret Manager APIを有効化しろと怒られる。

表示されるURLにアクセスして、 Enable API する。

Secret値の登録

Firebase CLIに戻り、 firebase functions:secrets:set によってSecret値を登録する。

初回コマンド実行時はSecretをFirebaseに管理させるかどうか聞かれる。あまり深く考えずにYesにしておくことにする。

続いてSecret値を入力する。これが終わるとプロジェクト上にSecret値が登録される。Google Cloudのコンソール上で値を設定する必要はない。

あとは従来のConfig設定と同様にFunctionsを再デプロイすればOK。

Functionsの修正

再デプロイする前に、Functions側からもSecret値を参照するように修正が必要であることを忘れてはならない。設定したSecret値はprocess.envを通じて参照可能になる。

感想

GCPのコンソールにアクセスしたのはAPIを有効化するときだけで、手軽にSecret Managerを始められるのはたいへんよい。Secret Managerに管理コンソールから値を登録しようとすると結構いろいろ聞かれて面倒だが、そのへんをFirebase CLIが隠蔽してくれている。

これまでfunctions:configにごった煮にされていた設定値とSecret値の管理がそれっぽく分散されるのはたすかる。

ただし、(この件に限った話ではないが)そんなにセキュアではない。しょせん環境変数の扱いなので、process.envをログに吐くと値が見えてしまう。このへんはなんか改善に期待したい。