Skip to main content

Secretos y variables de entorno

La plataforma (apolo-app-platcom-platform) utiliza Seki para gestionar secretos y variables de entorno de forma centralizada y tipada.

Resumen

  • Archivo principal de definición: config/.secretsrc.json.
  • Para cada proyecto se genera un archivo src/config/secrets.ts.
  • Los secretos se generan automáticamente al ejecutar targets como serve, build, lint o test.
  • También pueden generarse de forma manual por proyecto.

Plantilla central (.secretsrc.json)

En config/.secretsrc.json se definen todos los secretos con:

  • name: nombre de la variable.
  • type: tipo (string, number, etc.).
  • default: valor por defecto (opcional).
  • description: descripción funcional (opcional).

Ejemplo simplificado:

{
"secrets": [
{
"name": "PRODUCT_NAME",
"type": "string",
"default": "apolo-app-platcom-platform",
"description": "Seki product name"
},
{
"name": "BFF_API_PORT",
"type": "number",
"default": 8080
}
]
}

Aca te mostraremos las variables de entorno que usamos en el proyecto organizados por categorias.

Generales

VariableDescripciónEjemplo
PRODUCT_NAMENombre del producto configurado en Sekiapolo-app-platcom-platform
ENVIRONMENTEntorno de ejecucióndevelopment, staging, production
APP_LOG_LEVELNivel de logging de la aplicacióntrace, debug, info, warn, error
APP_LOG_FORMATFormato de salida de logstext, json

Puertos de Servicios

VariableDescripciónEjemplo
BFF_API_PORTPuerto del BFF (Backend for Frontend)8080
TENANTS_API_PORTPuerto del servicio de tenants8081
AUTH_API_PORTPuerto del servicio de autenticación8082
PROVIDERS_API_PORTPuerto del servicio de providers8083
APPLICATIONS_API_PORTPuerto del servicio de aplicaciones8084
REPORTS_API_PORTPuerto del servicio de reportes8086
ENCRYPTION_API_PORTPuerto del servicio de encriptación8087
EXTERNAL_SUPPLIER_API_PORTPuerto del proveedor externo8088
CORE_API_PORTPuerto del servicio core8089
TRACKING_API_PORTPuerto del servicio de tracking8091

URLs de Servicios Internos

VariableDescripciónEjemplo
BFF_API_URLURL base del BFFhttp://localhost:8080
AUTH_API_URLURL del servicio de autenticaciónhttp://localhost:8082
APPLICATIONS_API_URLURL del servicio de aplicacioneshttp://localhost:8084
TENANTS_API_URLURL del servicio de tenantshttp://localhost:8081
REPORTS_API_URLURL del servicio de reporteshttp://localhost:8086
ENCRYPTION_API_URLURL del servicio de encriptaciónhttp://localhost:8087
EXTERNAL_SUPPLIER_API_URLURL del proveedor externohttp://localhost:8088
CORE_API_URLURL del servicio corehttp://localhost:8089
TRACKING_API_URLURL del servicio de trackinghttp://localhost:8091

Autenticación y Seguridad

VariableDescripciónEjemplo
JWTClave pública RSA para JWT (base64)<base64>
JWT_PRIVATEClave privada RSA para JWT (base64)<base64>
TOKEN_EXPIRATION_MINUTESTiempo de expiración del token JWT (minutos)240
ENCRYPTION_KEYClave de encriptación simétrica<secret>

Gestión de Accesos (apolo-rm-access-management)

VariableDescripciónEjemplo
RM_ACCESS_URLURL del API de Access Managementhttp://localhost:8090
RM_ACCESS_CLIENT_IDClient ID para Access Management66b645272cc2c37fca1331ba
RM_ACCESS_CLIENT_KEYAPI Key para Access Management<secret>

Integración IAM / Microsoft

VariableDescripciónEjemplo
IAM_BASE_API_URLURL base del IAMhttps://login.microsoftonline.com
IAM_API_PATHPath/version del API IAM/v1.0
IAM_CLIENT_IDClient ID de la aplicación IAM<client-id>
IAM_API_KEYAPI Key del servicio IAM<secret>

Envio de Correos (SendGrid / Microsoft Graph)

VariableDescripciónEjemplo
SENDGRID_API_KEYAPI Key de SendGrid<secret>
SENDGRID_EMAILEmail remitenteeasyventaempresa@cencosud.cl
EMAIL_SENDEREmail configurado para Microsoft Graphno-reply@cencosud.cl
TENANT_ID_KEYTenant ID de Microsoft Graph<tenant-id>
OAUTH_CLIENT_ID_KEYClient ID OAuth Microsoft Graph<client-id>
CLIENT_SECRET_KEYClient Secret OAuth Microsoft Graph<secret>

Archivos y Storage

VariableDescripciónEjemplo
S3_BUCKET_NAMENombre del bucket S3files
S3_REGIONRegión del bucket S3us-east-1
CLOUDFRONT_URLURL de CloudFrontdatasharing-pe-files.test.smdigital.pe

Reportes y Analítica

VariableDescripciónEjemplo
REPORT_POWER_BI_URLURL del servicio Power BIhttps://api.staging.cencox.xyz/...
REPORT_POWER_BI_API_KEY_IDAPI Key ID para Power BI<key-id>

Sesión e Inactividad

VariableDescripciónEjemplo
INACTIVITY_TIMEOUT_SECONDSTiempo antes de advertencia por inactividad (segundos)300
LOGOUT_AFTER_INACTIVITY_SECONDSTiempo para logout automático tras inactividad30

Eventos y Kafka

VariableDescripciónEjemplo
ABM_LOGIN_TOPICTópico Kafka de eventos de loginapolo.login.events

Generar Secretos Manualmente

Los secretos se gestionan mediante Seki y pueden generarse manualmente por proyecto cuando sea necesario.

# Para un proyecto específico
npx nx run bff-api:secrets
npx nx run auth-api:secrets
npx nx run applications-api:secrets
npx nx run reports-api:secrets
npx nx run tenants-api:secrets
npx nx run core-api:secrets
npx nx run portal-web:secrets

Ver Secretos del Proyecto

Cada proyecto tiene un .configrc.json en src/config/ que lista sus secretos:

cat apps/bff-api/src/config/.configrc.json