Saltar al contenido principal
Lerian SPI es la integración de mensajería nativa de Lerian para Pix. Llega al sistema de pagos instantáneos de BACEN (SPI) y al directorio de claves DICT a través de la RSFN. Incluye cuatro binarios en tiempo de ejecución (spi, dict, brcode y core), por lo que su conjunto de variables es amplio. El servicio lee todas las variables al iniciar. Un valor que no se puede leer en su tipo, como yes en un interruptor, detiene el inicio. Cuando systemplane está activo (el valor predeterminado), puede anular un subconjunto en tiempo de ejecución sin reiniciar. El resto de las variables requieren un reinicio para cambiar. Para los parámetros que se comportan igual en todos los servicios de Lerian en Go (postura de despliegue, almacenes de datos, telemetría), consulta Elementos esenciales de configuración de BYOC. En las tablas siguientes, Obligatorio marca una variable que debes configurar, siempre (Sí) o bajo la condición indicada. — significa que no tiene valor predeterminado. Las condiciones usan tres términos:
  • En vivo: el endpoint de BACEN usa https. Un entorno local también acepta un endpoint http.
  • Entorno local: ENV_NAME es development, local o test.
  • Entorno protegido: ENV_NAME es production, prod, staging, stage, pre-prod, preprod, pre-production o preproduction.
La mayoría de las variables orientadas a BACEN llevan un prefijo de superficie: BACEN_SPI_* para el transporte de liquidación de SPI, BACEN_DICT_* para el cliente DICT, BACEN_BRCODE_JOSE_* para la firma JOSE de BR Code, y BACEN_ICOM_* para el canal de long-poll entrante.

Tiempo de ejecución y servidor

Un entorno protegido exige los archivos de certificado y de clave del servidor, o TLS_TERMINATED_UPSTREAM=true.

Autenticación

Lerian SPI autoriza las rutas protegidas, incluida la API de administración de systemplane, a través de Access Manager.

Callback de BACEN (entrante desde SPI)

Fuera de un entorno local, el riel necesita exactamente un modo de TLS mutuo de callback. En el modo directo, configura SERVER_TLS_CERT_FILE, SERVER_TLS_KEY_FILE y SERVER_TLS_CLIENT_CA_FILE. En el modo proxy, configura TLS_TERMINATED_UPSTREAM=true, los CIDRs de confianza y el secreto de header.

Transporte de liquidación de SPI (BACEN_SPI_*)

Conexión al endpoint de liquidación SPI de BACEN a través de la RSFN, con el canal secundario de mensajería y el endpoint de transferencia de archivos (ARQ).

TLS mutuo con BACEN

Los archivos BACEN_TLS_* respaldan el canal TLS mutuo con BACEN. Los clientes de SPI y DICT los comparten.

Firma de mensajes y certificados

Lerian SPI firma digitalmente sus mensajes salientes. Elige un backend de custodia con BACEN_SPI_SIGNER_KIND.

Validación de certificados (OCSP/CRL)

Resolutor de payload

Estas variables controlan cómo el servicio almacena y referencia payloads grandes de SPI.

Canal entrante (BACEN_ICOM_*)

Canal de long-poll para los mensajes que BACEN envía de vuelta al participante. Cada consumidor requiere un backend de persistencia configurado, BACEN_ICOM_ISPB, BACEN_SPI_INTERNAL_CALLBACK_SECRET y BACEN_CALLBACK_MTLS_HEADER_SECRET. El consumidor principal también requiere BACEN_ICOM_BASE_URL. El consumidor secundario también requiere BACEN_SPI_SECONDARY_ENDPOINT. Un consumidor habilitado requiere el modo proxy de callback: TLS_TERMINATED_UPSTREAM=true, ningún SERVER_TLS_CLIENT_CA_FILE y BACEN_CALLBACK_TRUSTED_PROXY_CIDRS con la dirección desde la que reenvía el consumidor. Con el SERVER_ADDRESS predeterminado, esa dirección es 127.0.0.1.

Cliente DICT (BACEN_DICT_*)

Cliente para el directorio de claves Pix de BACEN (DICT), incluido el endpoint NP para verificaciones de existencia de claves por lote.

Firma JOSE de BR Code (BACEN_BRCODE_JOSE_*)

Firma payloads dinámicos de BR Code (JWS). Cuando BACEN_BRCODE_JOSE_SIGNER_KIND no está configurada, JOSE queda deshabilitado y los endpoints públicos de payload se niegan a servir. Con JOSE habilitado, enruta las rutas de payload (/api/v1/brcode/payload/*) y la ruta del conjunto de claves (/api/v1/brcode/.well-known/jwks.json) bajo PUBLIC_BASE_URL al binario brcode, sin ningún autorizador delante. El PSP del pagador llama a estas rutas sin credencial.

Resolución de QR de BR Code (BACEN_BRCODE_QR_PAYER_*)

Controla la resolución de un QR dinámico del lado del pagador. Cuando la resolución está desactivada, su operación responde 503.

Cifrado y hashing de PII

Cada variable a continuación contiene material sensible de clave o pepper. Protege los datos personales en reposo mediante cifrado e indexación ciega. Nunca confirmes ni registres un valor en logs. Inyéctalo en el momento del despliegue a través de tu gestor de secretos. Una rotación de pepper o clave requiere un reindexado o recifrado planificado.
Cada clave tiene 32 bytes, en formato bruto o base64. Cada pepper tiene al menos 32 caracteres.

PostgreSQL

Redis

Archivo regulatorio (REGULATORY_ARCHIVE_*)

Los binarios spi y dict mantienen el archivo regulatorio en un almacenamiento compatible con S3. Los binarios brcode y core no usan estas variables. Aquí, un entorno de desarrollo es aquel en el que ENV_NAME es development, develop, dev, local o test, y DEPLOYMENT_MODE no es saas. Estas reglas leen ENV_NAME tal como está configurado, así que un ENV_NAME sin configurar no es un entorno de desarrollo. Una variable obligatoria ausente detiene el inicio. En un entorno de desarrollo sin bucket, el riel no archiva nada. Con el archivo activo, /readyz en spi y dict informa el servicio como no listo mientras el bucket no responde.

Outbox y streaming

Lerian SPI publica eventos mediante un outbox transaccional y un productor de streaming, y consume eventos de liquidación para BR Code. El consumidor de liquidación de BR Code se ejecuta de forma incondicional. Streaming no tiene interruptor de activación: STREAMING_BROKERS es obligatorio al iniciar, incluso cuando OUTBOX_ENABLED=false. Cada binario requiere su propio valor fijo de STREAMING_CLOUDEVENTS_SOURCE, y cualquier otro valor detiene el inicio: br-spi para spi, br-spi-dict para dict, br-spi-brcode para brcode y br-spi-core para core. Una entrada de STREAMING_EVENT_POLICIES que desactiva un evento de Lerian SPI detiene el inicio. Solo los dos eventos spi_tracking y tres eventos dict_med_operations (inconsistent_projection, feed_blocked y feed_record_abandoned) se pueden desactivar.

Programadores

Trabajos en segundo plano, cada uno con su propio interruptor. Los dos trabajos de DICT con valor predeterminado true tienen deberes regulatorios, así que el binario dict inicia su programador para ellos, a menos que SCHEDULER_ENABLED=false. El binario spi hace lo mismo para los trabajos de veredicto de las programaciones y de plazo de portabilidad. Los trabajos con valor predeterminado false también requieren SCHEDULER_ENABLED=true. Los workers de descubrimiento e inventario de DICT tienen sus propios controles en la siguiente sección.

Descubrimiento e inventario de DICT

Los workers siguientes se ejecutan de forma independiente a SCHEDULER_ENABLED, cada uno con su propio interruptor.

Rate limiting, idempotencia y conectividad

Systemplane y configuración en tiempo de ejecución

Consulta Systemplane para conocer la API, los espacios de nombres y los permisos requeridos.

Observabilidad

Documentación

Salud y readiness

Lerian SPI expone GET /health (liveness), GET /readyz (readiness) y GET /version en el puerto HTTP principal. /metrics se ejecuta en su propio listener cuando está habilitado. Consulta Salud y readiness para conocer el contrato de las verificaciones.