Pular para o conteúdo principal
O Lerian SPI é a integração de mensageria nativa da Lerian para o Pix. Ele alcança o sistema de pagamento instantâneo do BACEN (SPI) e o diretório de chaves DICT pela RSFN. Ele distribui quatro binários de runtime (spi, dict, brcode e core), então seu conjunto de variáveis é amplo. O serviço lê cada variável na inicialização. Um valor que não pode ser lido no seu tipo, como yes em uma chave, impede a inicialização. Quando o systemplane está ativo (o padrão), ele pode sobrescrever um subconjunto delas em runtime sem reiniciar. As demais variáveis exigem um restart para mudar. Para os parâmetros que se comportam da mesma forma em todo serviço Go da Lerian (postura de deployment, datastores, telemetria), consulte Fundamentos de configuração do BYOC. Nas tabelas abaixo, Obrigatório marca uma variável que você deve definir, sempre (Sim) ou sob a condição indicada. — significa que não há padrão. As condições usam três termos:
  • Em operação real: o endpoint do BACEN usa https. Um ambiente local também aceita um endpoint http.
  • Ambiente local: ENV_NAME é development, local ou test.
  • Ambiente protegido: ENV_NAME é production, prod, staging, stage, pre-prod, preprod, pre-production ou preproduction.
A maioria das variáveis voltadas ao BACEN carrega um prefixo de superfície: BACEN_SPI_* para o transporte de liquidação do SPI, BACEN_DICT_* para o cliente DICT, BACEN_BRCODE_JOSE_* para a assinatura JOSE do BR Code e BACEN_ICOM_* para o canal de long-poll de entrada.

Runtime e servidor

Um ambiente protegido exige os arquivos de certificado e de chave do servidor, ou TLS_TERMINATED_UPSTREAM=true.

Autenticação

O Lerian SPI autoriza rotas protegidas, incluindo a API administrativa do systemplane, pelo Access Manager.

Callback do BACEN (entrada vinda do SPI)

Fora de um ambiente local, o trilho precisa de exatamente um modo de TLS mútuo de callback. No modo direto, defina SERVER_TLS_CERT_FILE, SERVER_TLS_KEY_FILE e SERVER_TLS_CLIENT_CA_FILE. No modo proxy, defina TLS_TERMINATED_UPSTREAM=true, os CIDRs confiáveis e o segredo de header.

Transporte de liquidação do SPI (BACEN_SPI_*)

Conexão com o endpoint de liquidação do SPI do BACEN pela RSFN, com o canal secundário de mensageria e o endpoint de transferência de arquivos (ARQ).

TLS mútuo com o BACEN

Os arquivos BACEN_TLS_* sustentam o canal de TLS mútuo com o BACEN. Os clientes do SPI e do DICT os compartilham.

Assinatura de mensagens e certificados

O Lerian SPI assina digitalmente suas mensagens de saída. Escolha um backend de custódia com BACEN_SPI_SIGNER_KIND.

Validação de certificado (OCSP/CRL)

Resolvedor de payload

Estas variáveis controlam como o serviço armazena e referencia payloads grandes do SPI.

Canal de entrada (BACEN_ICOM_*)

Canal de long-poll para mensagens que o BACEN envia de volta ao participante. Cada consumidor exige um backend de persistência configurado, BACEN_ICOM_ISPB, BACEN_SPI_INTERNAL_CALLBACK_SECRET e BACEN_CALLBACK_MTLS_HEADER_SECRET. O consumidor primário também exige BACEN_ICOM_BASE_URL. O consumidor secundário também exige BACEN_SPI_SECONDARY_ENDPOINT. Um consumidor habilitado exige o modo proxy de callback: TLS_TERMINATED_UPSTREAM=true, nenhum SERVER_TLS_CLIENT_CA_FILE e BACEN_CALLBACK_TRUSTED_PROXY_CIDRS com o endereço de onde o consumidor encaminha. Com o SERVER_ADDRESS padrão, esse endereço é 127.0.0.1.

Cliente DICT (BACEN_DICT_*)

Cliente para o diretório de chaves Pix do BACEN (DICT), incluindo o endpoint NP para verificações de existência de chaves em lote.

Assinatura JOSE do BR Code (BACEN_BRCODE_JOSE_*)

Assina payloads dinâmicos do BR Code (JWS). Quando BACEN_BRCODE_JOSE_SIGNER_KIND não está definida, o JOSE fica desabilitado e os endpoints públicos de payload se recusam a servir. Com o JOSE habilitado, roteie os caminhos de payload (/api/v1/brcode/payload/*) e o caminho do conjunto de chaves (/api/v1/brcode/.well-known/jwks.json) sob a PUBLIC_BASE_URL para o binário brcode, sem nenhum autorizador na frente deles. O PSP do pagador chama essas rotas sem credencial.

Resolução de QR do BR Code (BACEN_BRCODE_QR_PAYER_*)

Controla a resolução de um QR dinâmico no lado do pagador. Quando a resolução está desligada, a operação dela responde 503.

Criptografia e hashing de PII

Toda variável abaixo guarda material sensível de chave ou pepper. Ela protege dados pessoais em repouso por criptografia e indexação cega. Nunca faça commit nem registre em log um valor. Injete-o no momento do deploy pelo seu gerenciador de segredos. Uma rotação de pepper ou chave exige uma reindexação ou recriptografia planejada.
Cada chave tem 32 bytes, em formato bruto ou base64. Cada pepper tem pelo menos 32 caracteres.

PostgreSQL

Redis

Arquivo regulatório (REGULATORY_ARCHIVE_*)

Os binários spi e dict mantêm o arquivo regulatório em um armazenamento compatível com S3. Os binários brcode e core não usam essas variáveis. Aqui, um ambiente de desenvolvimento é aquele em que ENV_NAME é development, develop, dev, local ou test, e DEPLOYMENT_MODE não é saas. Essas regras leem ENV_NAME como definido, então um ENV_NAME não definido não é um ambiente de desenvolvimento. Uma variável obrigatória ausente impede a inicialização. Em um ambiente de desenvolvimento sem bucket, o trilho não arquiva nada. Com o arquivo ativo, /readyz em spi e dict informa o serviço como não pronto enquanto o bucket não responde.

Outbox e streaming

O Lerian SPI publica eventos por um outbox transacional e um produtor de streaming, e consome eventos de liquidação para o BR Code. O consumidor de liquidação do BR Code roda incondicionalmente. O streaming não tem chave de habilitação: STREAMING_BROKERS é obrigatória na inicialização, inclusive quando OUTBOX_ENABLED=false. Cada binário exige seu próprio valor fixo de STREAMING_CLOUDEVENTS_SOURCE, e qualquer outro valor impede a inicialização: br-spi para spi, br-spi-dict para dict, br-spi-brcode para brcode e br-spi-core para core. Uma entrada de STREAMING_EVENT_POLICIES que desliga um evento do Lerian SPI impede a inicialização. Apenas os dois eventos spi_tracking e três eventos dict_med_operations (inconsistent_projection, feed_blocked e feed_record_abandoned) podem ser desligados.

Agendadores

Tarefas em segundo plano, cada uma com sua própria chave. As duas tarefas do DICT com padrão true carregam deveres regulatórios, então o binário dict inicia seu agendador para elas, a menos que SCHEDULER_ENABLED=false. O binário spi faz o mesmo para as tarefas de veredito dos agendamentos e de prazo de portabilidade. As tarefas com padrão false também exigem SCHEDULER_ENABLED=true. Os workers de descoberta e inventário do DICT têm seus próprios controles na próxima seção.

Descoberta e inventário do DICT

Os workers abaixo rodam independentemente de SCHEDULER_ENABLED, cada um com sua própria chave.

Rate limiting, idempotência e conectividade

Systemplane e configuração em runtime

Consulte Systemplane para a API, os namespaces e as permissões exigidas.

Observabilidade

Documentação

Health e readiness

O Lerian SPI expõe GET /health (liveness), GET /readyz (readiness) e GET /version na porta HTTP principal. /metrics roda em seu próprio listener quando habilitado. Consulte Health e readiness para o contrato de probe.