Esta documentación está en fase de desarrollo y puede contener errores.

Vault

Carga la configuración secreta de tu app desde un blob cifrado con VaultData: solo la URL y la contraseña viven en variables de entorno.

VaultData, en el paquete Dinaup, resuelve el problema de dónde guardar secretos (credenciales, endpoints, claves). El único dato en el entorno es la URL del almacén cifrado y la contraseña que lo descifra. Todo lo demás viaja cifrado y se lee en memoria.

using Dinaup;

Cómo funciona

VaultData descarga un JSON cifrado (AES-CBC) de una URL, lo descifra con la contraseña y expone cada clave con Read. La URL y la contraseña se pasan como valores directos o como nombres de variables de entorno: el constructor las resuelve buscando en el entorno (máquina, proceso y usuario, con fallback al prefijo dup_).

// Los nombres de las variables de entorno con la URL y la contraseña.
var vault = new VaultData("VAULT_URL", "VAULT_PASSWORD");
vault.Initialize();

// A partir de aquí, todo sale del vault descifrado.
string endpoint  = vault.Read("dinaup.endpoint");
string publicKey = vault.Read("dinaup.publickey");
string secretKey = vault.Read("dinaup.secretkey");

Read devuelve una cadena vacía si la clave no existe. El diccionario Parameters ignora mayúsculas y minúsculas.

Conectar Dinaup desde el vault

El caso típico: arrancar el cliente Dinaup sin credenciales en el código.

var vault = new VaultData(
    Environment.GetEnvironmentVariable("VAULT_URL"),
    Environment.GetEnvironmentVariable("VAULT_PASSWORD")
);
vault.Initialize();

var client = await DinaupClientC.ConnectAsync(
    endPoint:  vault.Read("dinaup.endpoint"),
    publicKey: vault.Read("dinaup.publickey"),
    secretKey: vault.Read("dinaup.secretkey")
);

Otras entradas

  • Initialize(url, pass): inicializa con la URL y la contraseña ya resueltas, sin pasar por variables de entorno.
  • Initialize() desde archivo local: si construyes con new VaultData(args) y uno de los argumentos es la ruta de un .json, Initialize() lo lee. El archivo debe traer endpoint (empieza por http) y pass (mínimo 4 caracteres); con eso descarga y descifra el vault remoto.
  • EnableEnvironmentVariableForConsole(nombre): en apps de consola, pide la ruta del JSON por terminal y la guarda en la variable de entorno indicada si no estaba.
  • HealthCheck(): descarga y descifra el vault y devuelve true si trae al menos una clave. Para un health-check de arranque.

El vault es de solo lectura desde el SDK: se descarga y descifra, no se escribe. Generar y publicar el blob cifrado es un paso previo fuera de esta librería.

On this page