背景
pythonアプリでシークレット情報の管理を行いたい。今回はシークレット情報をyamlで管理する。
暗号化と復号化は、GCPの Key Management Service を使う。pythonアプリで復号化して使えるようにする。
暗号化
クイックスタート を参考に鍵リンクと鍵を作成する。
まず、シークレット情報の入ったyamlファイルを作成
sample_secret.yaml
HOGE_SECRET: HOGEHOGE
FUGA_SECRET: FUGAFUGA
これを以下のように暗号化し sample_secret.yml.encrypted
を作成する
gcloud kms encrypt --location global --keyring test --key quickstart
--plaintext-file sample_secret.yml
--ciphertext-file sample_secret.yml.encrypted
pythonで復号化
pythonアプリ内で使うときは以下のようにする。
f = open("/path/to/sample_secret.yml.encrypted", "rb")
client = kms_v1.KeyManagementServiceClient()
name = client.crypto_key_path_path(
'YOUR_PROJECT',
'global',
'test',
'quickstart'
)
res = client.decrypt(name, f.read())
data = yaml.load(res.plaintext, Loader=yaml.BaseLoader)
print(data)
暗号化したシークレットファイルをgit管理対象にし、暗号化前のものを.gitignoreの対象にすればよい。