Wonderful Python Libraries #2: almacenamiento seguro de secretos en Python
Manejar datos sensibles forma parte del trabajo. Y más veces de las que debería, es un engorro.
En este artículo vemos qué es un almacén seguro de secretos y una forma ligera de tener uno para scripts locales y montajes pequeños, sin levantar ningún servidor.
TL;DR: qué es un almacén seguro de secretos
Un vault es un almacén seguro para datos sensibles: contraseñas, tokens de acceso, claves de API y demás.
También lo verás con el nombre de gestor de secretos (secret manager).
Todos los grandes proveedores de nube tienen uno:
- AWS: AWS Secrets Manager
- Google Cloud: Google Cloud Secret Manager
- Azure: Key Vault
También hay opciones de código abierto. La más conocida es Hashicorp Vault.
Todas las anteriores son cliente-servidor. No está mal, y para un sistema en producción es lo que quieres. Pero a veces hace falta algo más ligero. Un script en tu portátil no se merece un clúster de Vault.
Esta librería, en pocas palabras
Con keyring puedes guardar datos sensibles desde Python sin riesgo.
La gracia es que no guarda nada por su cuenta: se lo entrega al almacén seguro del propio sistema operativo.
Algunos ejemplos
Supongamos que queremos guardar las credenciales de Postgres con esta librería:
Ahora queremos usar esas credenciales en un script que se conecta a una base de datos PostgreSQL.
Primero, instala el driver de PostgreSQL:
> pip install "psycopg[binary]"
Después, conecta:
Y ya está.
Por último, comprobamos que los secretos han ido a parar de verdad al almacén seguro del sistema operativo. Yo uso OS X, así que aparecen en Acceso a Llaveros (Keychain Access):
El código de los ejemplos está en mi repositorio de GitHub para los artículos de Medium:
https://github.com/cr0hn/my-medium-posts-resources/tree/main/WonderfulLibraries/post-2