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:

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:

Guardando las credenciales de Postgres con keyring

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:

Conectando a la base de datos con las credenciales guardadas

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):

Acceso a Llaveros

Atributos de la entrada en Acceso a Llaveros

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