Appearance
Infisical
Infisical es una herramienta para gestionar secretos y certificados. Se puede intaractuar con CLI, SDK y su API, además de su interfaz visual (Dashboard).
Instalacion de Infisical
Infisical puede usarse en Linux Ubuntu/Debian (o WSL2) ejecutando las siguientes sentencias desde la línea de comandos (terminal):
bash
curl -1sLf 'https://artifacts-infisical-core.infisical.com/setup.deb.sh' | sudo -E bash
sudo apt-get update && sudo apt-get install -y infisical-corePuede verificar la instalación ejecutando:
infisical-ctl help
Para confgiurar se debe considerar crear un archivo infisical.rb en la ruta /etc/infisical, con el fin de conectar la base de datos. Tomando el ejemplo de la documentación oficial de Infisical, tenemos las siguientes líneas:
bash
# Important: Replace with secure values in production
infisical_core['ENCRYPTION_KEY'] = '6c1fe4e407b8911c104518103505b218'
infisical_core['AUTH_SECRET'] = '5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE='
# Example database connection strings
infisical_core['DB_CONNECTION_URI'] = 'postgres://<db-username>:<db-password>@<db-host>:<db-port>/<db-name>'
infisical_core['REDIS_URL'] = 'redis://<redis-host>:<redis-port>'Para iniciar el servicio se ejecuta:
bash
infisical-ctl reconfigurePor defecto se expone el servicio en el puerto
8080, salvo que se modifique eninfisical.rb.
Infisical para contenedor (Docker)
Basados en la documentación respectiva, se tendrían los siguientes comandos de ejemplo con docker:
bash
docker pull infisical/infisical:v0.160.5
docker run -p 8080:8080 \
-e ENCRYPTION_KEY=f40c9178624764ad85a6830b37ce239a \
-e AUTH_SECRET="q6LRi7c717a3DQ8JUxlWYkZpMhG4+RHLoFUVt3Bvo2U=" \
-e DB_CONNECTION_URI="<>" \
-e REDIS_URL="<>" \
-e SITE_URL="<>" \
infisical/infisical:v0.160.5Nótese que se debe configurar al menos los valores de entorno para
ENCRYPTION_KEY,AUTH_SECRET,DB_CONNECTION_URI,REDIS_URL,SITE_URL
Ejemplo con JavaScript (Node.js) - SDK
Instalación:
bash
npm install @infisical/sdkEjemplo completo (index.js):
js
const { InfisicalSDK } = require("@infisical/sdk");
async function main() {
const client = new InfisicalSDK({
siteUrl: "https://tu-infisical.ejemplo.com" // opcional, por defecto app.infisical.com
});
await client.auth().universalAuth.login({
clientId: process.env.INFISICAL_CLIENT_ID,
clientSecret: process.env.INFISICAL_CLIENT_SECRET
});
const secret = await client.secrets().getSecret({
environment: "dev",
projectId: "<tu-project-id>",
secretName: "DATABASE_URL",
secretPath: "/"
});
console.log("DATABASE_URL:", secret.secretValue);
}
main().catch(console.error);Ejemplo con JavaScript (Node.js) - API
Obtén un token (con CLI o directamente vía API) y úsalo como Bearer.
Ejemplo con fetch (Node ≥18):
js
const token = process.env.INFISICAL_TOKEN; // o JWT obtenido vía /api/v1/auth/universal-auth/login
const url = new URL("https://tu-infisical.ejemplo.com/api/v4/secrets/DATABASE_URL");
url.searchParams.set("projectId", "<tu-project-id>");
url.searchParams.set("environment", "dev");
url.searchParams.set("secretPath", "/");
const res = await fetch(url, {
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
}
});
if (!res.ok) throw new Error(await res.text());
const { secret } = await res.json();
console.log("Valor:", secret.secretValue);Ejemplo con Java (JBang) - SDK
JBang permite ejecutar un script Java con dependencias sin proyecto Maven/Gradle.
Crea InfisicalSdkExample.java:
java
///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS com.infisical:sdk:3.0.7
import com.infisical.sdk.InfisicalSdk;
import com.infisical.sdk.SdkConfig;
public class InfisicalSdkExample {
public static void main(String[] args) {
var sdk = new InfisicalSdk(
new SdkConfig.Builder()
.withSiteUrl("https://tu-infisical.ejemplo.com")
.build()
);
sdk.Auth().UniversalAuthLogin(
System.getenv("INFISICAL_CLIENT_ID"),
System.getenv("INFISICAL_CLIENT_SECRET")
);
var secret = sdk.Secrets().GetSecret(
"DATABASE_URL",
"<tu-project-id>",
"dev",
"/"
);
System.out.println("DATABASE_URL = " + secret);
}
}Ejecuta:
bash
jbang InfisicalSdkExample.java