Ir al contenido

Buscar en la documentación

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

Menú de la documentación
ProcedimientoPúblico · Operadores y desarrolladores

Secretos con Vault

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

Esta página se tradujo 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 usa HashiCorp Vault para la gestión segura de secretos: las claves de API, las credenciales de bases de datos y otros valores sensibles se guardan en Vault, no en la base de datos ni en archivos de entorno. Durante el inicio de la aplicación, el ConfigSource activo se conecta a Vault y carga el contenido de configuración; las integraciones almacenan referencias en la base de datos, mientras que los valores sensibles se obtienen de Vault bajo demanda.

Configuración de Vault

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

Para producción, aprovisiona la instancia con el módulo de Terraform terraform/08_vault-instance/ de la guía de implementación, 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

Aprovisionamiento del contenido del secreto

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 del contenido se enumeran en la Referencia de configuración; escríbelo 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 predeterminada cambia automáticamente a KubernetesVaultConfigSource cuando VAULT_K8S_ROLE está definida: se autentica con el token proyectado de la ServiceAccount del pod, por lo que no es necesario aprovisionar ni rotar ningún token estático.

Producción

De acuerdo con nuestros principios cloud-native, 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 obtiene todo al iniciar mediante el contrato de configuración.