Saltar al contenido

Buscar en la documentación

Escribe para buscar en todas las páginas de la documentación.

Menú de documentación
Guía prácticaPúblico · Operadores y desarrolladores

Secretos con Vault

Dónde guarda Agent-Lab sus secretos y cómo los recupera

Esta página se ha traducido automáticamente del inglés. Si hay alguna diferencia, prevalece el original.Leer el original en inglés

Cómo usa Agent-Lab Vault

Agent-Lab utiliza HashiCorp Vault para gestionar los secretos de forma segura: las claves de API, las credenciales de bases de datos y otros valores sensibles residen en Vault, no en la base de datos ni en archivos de entorno. Durante el arranque de la aplicación, el ConfigSource activo se conecta a Vault y carga la configuración; las integraciones almacenan referencias en la base de datos, mientras que los valores sensibles se obtienen de Vault bajo demanda.

Configurar Vault

Para el desarrollo local, los stacks de Compose incluyen un servidor Vault con una configuración de desarrollo (interfaz en http://localhost:8200, token de inicio de sesión dev-only-token). Consulta Ejecutar la aplicación.

Para producción, aprovisiona la instancia con el módulo de Terraform terraform/08_vault-instance/ de la guía de despliegue, incluida la secuencia init + unseal:

kubectl --namespace vault exec vault-0 -- vault operator init \
    -key-shares=1 \
    -key-threshold=1 \
    -format=json > cluster-keys.json

export VAULT_UNSEAL_KEY=$(jq -r ".unseal_keys_b64[]" cluster-keys.json)
kubectl --namespace vault exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEY

Aprovisionar la carga de secretos

VaultConfigSource lee un único secreto KV-v2 (montaje secret, ruta app_secrets) y lo asigna a las claves de configuración de la aplicación. Las claves de la carga se enumeran en la Referencia de configuración; escríbela una sola vez con la CLI de Vault:

vault kv put secret/app_secrets \
  api_base_url="https://<agent_lab_fqdn>" \
  cdp_url="http://<cdp_host>:9222" \
  auth_enabled="true" \
  auth_url="https://<auth_fqdn>" \
  auth_realm="<realm_name>" \
  auth_client_id="<client_name>" \
  auth_client_secret="<client_secret>" \
  broker_url="redis://:<password>@<redis_host>:6379/0" \
  db_url="postgresql://<user>:<pass>@<db_host>:5432/agent_lab" \
  db_vectors="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_vectors" \
  db_checkpoints="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_checkpoints"

Cuando la aplicación no puede (o no debe) usar un VAULT_TOKEN estático, la fuente por defecto pasa automáticamente a KubernetesVaultConfigSource si se define VAULT_K8S_ROLE: se autentica con el token proyectado de la ServiceAccount del pod, de modo que no hace falta aprovisionar ni rotar ningún token estático.

Producción

Siguiendo nuestros principios nativos de la nube, recomendamos la configuración de alta disponibilidad de Vault en Kubernetes. El módulo de Terraform 15_agent-lab-dependencies/ conecta las credenciales de ejecución; la aplicación lo recoge todo al arrancar mediante el contrato de configuración.