Gestion des informations secrètes avec le service de gestion de clés GCP + Python

Contexte

Je souhaite gérer des informations secrètes avec une application python. Cette fois, les informations secrètes sont gérées par yaml. Pour le chiffrement et le déchiffrement, utilisez le [service de gestion des clés] de GCP (https://cloud.google.com/kms?hl=ja). Décryptez-le avec une application python afin de pouvoir l'utiliser.

chiffrement

Créez un lien clé et une clé en vous reportant à Démarrage rapide.

Tout d'abord, créez un fichier yaml contenant des informations secrètes

sample_secret.yaml



HOGE_SECRET: HOGEHOGE
FUGA_SECRET: FUGAFUGA

Cryptez ceci comme suit et créez sample_secret.yml.encrypted


gcloud kms encrypt --location global --keyring test --key quickstart 
      --plaintext-file sample_secret.yml 
      --ciphertext-file sample_secret.yml.encrypted

Décrypter avec python

Lorsque vous l'utilisez dans une application Python, procédez comme suit.


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)

Le fichier secret chiffré doit être géré par git et le fichier non chiffré doit être ciblé par .gitignore.

Recommended Posts

Gestion des informations secrètes avec le service de gestion de clés GCP + Python
Service Python
[50 comptes] Transmission de clé à l'aide de Python pour Windows
Plan d'apprentissage Python pour la gestion de la progression de l'apprentissage de l'IA
Obtenir des informations sur les notes à l'aide du SDK Evernote pour Python 3
python [pour moi]
Informations d'identification utilisées par Boto3 (AWS SDK for Python)
Entrée clé qui n'attend pas l'entrée clé en Python
Informations pour contrôler les moteurs avec Python sur RaspberryPi