モチベーション
condo3 で app.yaml 内に Cloud KMS で暗号化した秘匿値を埋め込みやすくするために作ったモジュールをライブラリ化しました。
とはいえGoogle App Engine専用というわけではなく、GCP + GoであればCloud Functionsとかでも使えるはずです。
使い方
READMEからかいつまんで説明すると下記
- 秘匿値を
gcloud kms encryptで暗号化してBASE64に変換 KMS_ACCESS_TOKENのようにKMS_を先頭に付けた環境変数として登録- KMSで暗号化済なのでこの変数はgitにコミットしても問題ない
GetFromEnvOrKmsで呼び出す- この時接頭辞の
KMS_は不要
- この時接頭辞の
FAQ
Q. Secret Manager使えばいいのでは?
本番環境ではKMSで暗号化された値を使いたいけどローカルでは暗号化していないプレーンな値を環境変数で渡したいことがよくあるので、暗号化していないプレーンな環境変数とKMSで暗号化した環境変数を透過的に扱えるようにしています。( os.Getenv と似たようなインターフェースにしたのも同じ理由)