engineAPIengine·API

Segurança

Práticas de segurança da Engine API: encriptação, certificados, LGPD, infraestrutura e compliance.

Segurança

A Engine API lida com dados fiscais sensíveis e certificados digitais. Levamos segurança a sério em todas as camadas da infraestrutura.

lock

Encriptação

TLS 1.3 em trânsito, AES-256 em repouso

shield-halved

Isolamento

Dados segregados por Partner e Issuer

scale-balanced

Compliance

Aderência à LGPD e padrões fiscais


Certificados digitais

Armazenamento seguro

Os certificados A1 (.pfx) dos seus clientes são tratados com o mais alto nível de proteção:

| Aspecto | Implementação | |---------|--------------| | Upload | Via HTTPS (TLS 1.3). Certificado nunca trafega em texto plano | | Armazenamento | Encriptado com AES-256 usando chave rotacionada | | Acesso | Somente o serviço de emissão fiscal acessa o certificado, em memória | | Exposição | A API nunca retorna o conteúdo do certificado. Apenas metadados | | Remoção | Endpoint DELETE /v1/companies/:id/certificate remove permanentemente |

Certificados A1 são arquivos sensíveis. Nunca armazene a senha do certificado em código-fonte, logs ou variáveis de ambiente expostas. Use um vault de secrets (AWS Secrets Manager, HashiCorp Vault, etc.).

Validade e renovação

typescript
// Verificar status do certificado
const cert = await client.companies.buscar('ISSUER_UUID');
console.log('Válido até:', cert.data.certificateExpiresAt);

Recomendamos configurar um webhook para ser notificado quando um certificado está próximo do vencimento.


Autenticação

API Keys

| Característica | Implementação | |---------------|--------------| | Formato | ek_live_UUID (prefixo identificável) | | Hash | Armazenada como hash bcrypt. Impossível recuperar | | Rotação | Crie quantas keys quiser, revogue as antigas | | Exposição | O valor completo é mostrado apenas na criação |

typescript
// Criar nova API Key
const key = await client.auth.criarApiKey();
console.log('Salve esta chave:', key.data.key); // Único momento que aparece

JWT (sessões de dashboard)

| Característica | Implementação | |---------------|--------------| | Algoritmo | HS256 com secret rotacionado | | Expiração | 24 horas | | Refresh | Via re-login |


Infraestrutura

Stack de segurança

| Camada | Tecnologia | |--------|-----------| | Proxy reverso | Nginx com TLS 1.3, HSTS, rate limiting | | Application | NestJS com Helmet.js (headers de segurança) | | Autenticação | Passport.js (JWT + API Key strategies) | | Validação | Zod schemas + class-validator em cada endpoint | | Database | PostgreSQL 16 com conexões encriptadas | | Container | Docker com user não-root, read-only filesystem | | Monitoramento | Sentry para error tracking, Prometheus para métricas |

Headers de segurança

Todas as respostas incluem headers de segurança via Helmet.js:

font-mono text-sm bg-slate-800 text-blue-300 rounded px-1.5 py-0.5
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 0
Content-Security-Policy: default-src 'self'
Referrer-Policy: strict-origin-when-cross-origin

LGPD e proteção de dados

Dados coletados

| Dado | Propósito | Retenção | |------|-----------|---------| | CNPJ/CPF | Emissão fiscal (obrigatório por lei) | Enquanto a conta estiver ativa | | Certificado A1 | Assinatura digital junto à SEFAZ | Até remoção pelo partner | | Endereços | Composição do XML fiscal | Enquanto a conta estiver ativa | | Logs de acesso | Auditoria e troubleshooting | 90 dias |

Direitos do titular

| Direito | Como exercer | |---------|-------------| | Acesso | GET /v1/companies/:id retorna todos os dados | | Correção | PATCH /v1/companies/:id atualiza dados | | Exclusão | DELETE /v1/companies/:id remove empresa e dados | | Portabilidade | Download de XMLs via endpoints de download |

A Engine API atua como operadora de dados. O Partner (Software House) é o controlador perante a LGPD. O Partner é responsável por obter consentimento do titular antes de enviar dados para a API.


Boas práticas


Próximos passos