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/passwordsecret:prod/stripe/api-keysecret:staging/app/jwt-signing-keyLos 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.
| Segmento | Significado | Ejemplos |
|---|---|---|
env | El entorno | dev, staging, prod |
component | La cosa a la que pertenece el secreto | db, stripe, app |
key | El secreto específico | password, api-key, url |
Interpolación del entorno
Sección titulada «Interpolación del entorno»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/passwordkovra run --env dev --... # ${ENV} → devkovra run --env prod --... # ${ENV} → prodEsto 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.
Selector de scope
Sección titulada «Selector de scope»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/passwordSelector de mitad del keypair
Sección titulada «Selector de mitad del keypair»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-secretsecret:dev/ssh/deploy#private # the private key — never returned to your contextEl 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.