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をログに吐くと値が見えてしまう。このへんはなんか改善に期待したい。