Ir al contenido

Coordenadas

Nunca se refiere a un secreto por su valor. Se lo refiere por su coordenada — una dirección estable de tres segmentos:

secret:<env>/<component>/<key>

Por ejemplo:

secret:dev/db/password
secret:prod/stripe/api-key
secret:staging/app/jwt-signing-key

Los tres segmentos están siempre presentes — no hay forma corta. Es deliberado: elimina la ambigüedad de “¿este segmento es el entorno o el componente?” y hace que toda coordenada se lea de la misma manera.

SegmentoSignificadoEjemplos
envEl entornodev, staging, prod
componentLa cosa a la que pertenece el secretodb, stripe, app
keyEl secreto específicopassword, api-key, url

El segmento de entorno — y solo ese segmento — puede ser el placeholder ${ENV}, que se sustituye en tiempo de ejecución a partir del flag --env:

secret:${ENV}/db/password
Ventana de terminal
kovra run --env dev --... # ${ENV} → dev
kovra run --env prod --... # ${ENV} → prod

Esto es lo que permite que un único archivo .env.refs sirva a todos los entornos. La interpolación en cualquier otro lugar (${COMPONENT}, o cualquier otro ${…}) se rechaza, nunca se deja pasar en silencio.

Por defecto una coordenada se resuelve con el vault de proyecto prevaleciendo sobre el vault global. Prefijar la dirección con //global/ para ignorar el override del proyecto y resolver solo contra el vault global:

secret://global/dev/db/password

Para keypairs asimétricos, un fragmento final opcional selecciona sobre qué mitad de la clave actúa una operación:

secret:dev/ssh/deploy#public # the public key — free, non-secret
secret:dev/ssh/deploy#private # the private key — never returned to your context

El fragmento es parte de la solicitud, no de la dirección almacenada: una coordenada y sus formas #public / #private se archivan bajo el mismo registro del vault. Para un literal simple o una referencia, el fragmento no tiene sentido y se ignora.