Saltar a contenido

HashiCorp - Vault

Nada puede ser más sencillo que interactuar con claves secretas que el complemento BotCity para HashiCorp Vault.

Administra tus credenciales.

Motor de secretos KV

El motor de secretos kv es un almacén genérico de clave-valor utilizado para almacenar secretos arbitrarios dentro del almacenamiento físico configurado para Vault. Este backend se puede ejecutar en uno de dos modos; se puede configurar para almacenar un único valor para una clave o se puede habilitar la versión y se almacenarán un número configurable de versiones para cada clave.

Este complemento se ejecuta en la versión 2, esta versión puede conservar un número configurable de versiones. Esto se establece en 10 versiones de forma predeterminada. Se pueden recuperar los metadatos y los datos de las versiones antiguas. Además, se pueden utilizar operaciones de comprobación y establecimiento para evitar sobrescribir datos de forma no intencionada.

Más información.

Instalación

pip install botcity-hashicorp-vault-plugin

Importar el complemento

Después de instalar este paquete, el siguiente paso es importar el paquete en tu código y comenzar a utilizar las funciones.

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

Autenticación

Info

Si estás utilizando Hashicorp Cloud: debes usar la URL pública y el token es válido durante 6 horas. Ver tipos de token.

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(
    url="<your_public_url>",
    token="<your_token>",
    namespace="<your_namespace>",
    mount_point="<your_mount_point>",
    base_path="<your_base_path>"
)

Propiedades

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)

# Properties
vault.mount_point = "<another_mount_point>"
vault.base_path = "<another_base_path>"
client = vault.vault_client  # returns: hvac Client instance

Operaciones con secretos

Crear o actualizar secreto

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)

secret = {'key': 'value', 'key01': 'value'}
print(vault.create_or_update_secret(path="<secret_name>", secret=secret))

# Or
vault["<secret_name>"] = {'key': 'value', 'key01': 'value'}

Recuperar valor del secreto

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.get_secret_value(path="<secret_name>"))

# Or (retrieves the value of the last version of the secret)
print(vault["<secret_name>"])

Recuperar metadatos del secreto

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.get_secret_metadata(path="<secret_name>"))

Listar todos los secretos en la ruta

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.list_secrets())

Marcar versión del secreto como eliminada

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.mark_secrets_as_delete(path="<secret_name>", versions=[0, 1]))

# Or (mark latest secret version as deleted)
del vault["secret"]

Desmarcar versión del secreto como eliminada

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.undelete_secrets(path="<secret_name>", versions=[0, 1]))

Destruir permanentemente la versión del secreto

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.destroy_secret_versions(path="<secret_name>", versions=[3]))

Eliminar permanentemente el secreto

from botcity.plugins.hashicorp.vault.kv import BotHashicorpKVPlugin

vault = BotHashicorpKVPlugin(...)
print(vault.delete_secret_permanently(path="<secret_name>"))