Ir al contenido

Referencias cloud

Una referencia es una entrada del vault que contiene un puntero a un valor que vive en un gestor de secretos cloud — no el valor en sí. kovra lo resuelve en tiempo de ejecución, bajo la propia identidad cloud, y nunca copia el texto plano al vault. Hoy se incluyen dos proveedores:

  • Azure Key Vault — azure-kv://<vault-name>/<secret-name>
  • AWS Secrets Manager — aws-sm://<region>/<secret-name> (el nombre puede contener /)

kovra add --reference almacena el puntero. No hay valor que pedir:

zsh
~ % kovra add secret:dev/db/url --reference 'azure-kv://my-keyvault/db-url'
Added dev/db/url (Medium).

En un listado, una referencia muestra un modo de reference y su puntero en lugar de un fingerprint — así se ve exactamente dónde resuelve, sin ningún valor en pantalla:

zsh
~ % kovra list
┌────────┬──────────────┬─────────────┬───────────┬───────────────────────────────────────────────┐
│ ORIGIN ┆ COORDINATE ┆ SENSITIVITY ┆ MODE ┆ FINGERPRINT │
╞════════╪══════════════╪═════════════╪═══════════╪═══════════════════════════════════════════════╡
│ global ┆ dev/db/url ┆ medium ┆ reference ┆ → azure-kv://my-keyvault/db-url │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ global ┆ prod/app/jwt ┆ high ┆ reference ┆ → aws-sm://us-east-1/prod/app/jwt-signing-key │
└────────┴──────────────┴─────────────┴───────────┴───────────────────────────────────────────────┘

Una referencia prod igual nace high — el piso de entorno aplica al puntero tal como aplicaría a un literal.

kovra revisa la forma del puntero antes de guardarlo — con kovra add --reference, kovra edit --reference y el edit_metadata de un agente. Un puntero que kovra run rechazaría (sin <scheme>://, de un proveedor que kovra no tiene, con un vault, una región o un nombre mal formados) se rechaza en ese momento, con el mismo mensaje que daría run, y no se escribe nada:

zsh
~ % kovra add secret:dev/db/url --reference 'my-keyvault/db-url'
Error: provider error: reference `my-keyvault/db-url` is malformed: expected `<scheme>://…`

Al reapuntar una referencia high, la revisión va antes del pedido de aprobación, así que nunca se le pide aprobar un cambio que después fallaría. Solo se revisa la forma — kovra no consulta la nube para hacerlo —, así que un secreto que no existe, o que usted no puede leer, sigue apareciendo cuando la referencia se resuelve. Los nombres que genera AWS, como los de RDS rds!db-<uuid> y rds!cluster-<uuid>, son válidos.

Cuando una coordenada referenciada se inyecta (vía kovra run o un agente), kovra llama al proveedor con las credenciales propias y transmite el valor directamente al proceso hijo — nunca se escribe en el vault, en un archivo ni en el contexto. La misma decisión de política gobierna la entrega; la única diferencia respecto de un literal es de dónde vienen los bytes.

Una referencia se resuelve con la sensibilidad más estricta que tenga cualquier referencia al mismo secreto del proveedor, en cualquier bóveda: una referencia low creada junto a una high no puede leer su valor sin la aprobación que pide la high. Las URI del proveedor se comparan como lo hace el proveedor — el esquema y los nombres de Azure sin distinguir mayúsculas, la región de AWS en minúsculas.

Esto mantiene la fuente de verdad en el gestor de secretos cloud y a la vez ofrece un único espacio de nombres de coordenadas, una única política y un único rastro de auditoría sobre secretos literales y respaldados en cloud.

Una referencia se mantiene viva — siempre resuelve el valor cloud vigente. Si en cambio se quiere una copia única capturada en el vault (sin vínculo continuo con la fuente), ver Importar desde 1Password.