くりにっき

フルスタックキュアエンジニアです

gcp-kmsenvを作った

github.com

モチベーション

condo3app.yaml 内に Cloud KMS で暗号化した秘匿値を埋め込みやすくするために作ったモジュールをライブラリ化しました。

とはいえGoogle App Engine専用というわけではなく、GCP + GoであればCloud Functionsとかでも使えるはずです。

使い方

READMEからかいつまんで説明すると下記

  1. 秘匿値を gcloud kms encrypt で暗号化してBASE64に変換
  2. KMS_ACCESS_TOKEN のように KMS_ を先頭に付けた環境変数として登録
    • KMSで暗号化済なのでこの変数はgitにコミットしても問題ない
  3. GetFromEnvOrKms で呼び出す
    • この時接頭辞の KMS_ は不要

FAQ

Q. Secret Manager使えばいいのでは?

本番環境ではKMSで暗号化された値を使いたいけどローカルでは暗号化していないプレーンな値を環境変数で渡したいことがよくあるので、暗号化していないプレーンな環境変数とKMSで暗号化した環境変数を透過的に扱えるようにしています。( os.Getenv と似たようなインターフェースにしたのも同じ理由)