モチベーション
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
と似たようなインターフェースにしたのも同じ理由)