LoginSignup
1
2

More than 3 years have passed since last update.

GCPのKey Management Service + Pythonでシークレット情報管理

Posted at

背景

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の対象にすればよい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2