Segurança e confiança
Segurança construída em etapas verificáveis.
Acompanhe controles em vigor, frentes em construção e próximas etapas do programa de segurança.
Em vigor
22Exercendo efeito hoje, com evidência conferível no repositório ou na resposta HTTP.
Em construção
2Etapa definida e em evolução técnica.
Próxima etapa
6Item previsto na evolução do programa.
Controles
Transporte e navegador
O que protege a entrega da página e restringe o que o navegador pode executar ou carregar.
HTTPS obrigatório
Em vigorTodo acesso é servido por HTTPS, e a política de conteúdo eleva requisições inseguras.
Evidência: firebase.json — upgrade-insecure-requests na CSP
HSTS
Em vigorA resposta declara Strict-Transport-Security por um ano, abrangendo os subdomínios. O domínio não está na lista de pré-carregamento dos navegadores: entrar nela é uma decisão de difícil reversão, e o plano prevê subdomínios que ainda não existem.
Evidência: firebase.json — Strict-Transport-Security com includeSubDomains
Content Security Policy
Em vigorA política restringe origens de script, estilo, fonte, imagem e conexão, bloqueia objetos e proíbe que o site seja embutido em moldura de terceiro.
Evidência: firebase.json — content-security-policy com frame-ancestors 'none'
Cabeçalhos de endurecimento
Em vigorEstão ativos X-Content-Type-Options, Referrer-Policy restritiva, Cross-Origin-Opener-Policy e Permissions-Policy negando câmera, microfone e geolocalização.
Evidência: firebase.json — bloco de headers aplicado a todas as rotas
Controles
Aplicação e cadeia de build
Como o código chega à produção e o que impede que algo indevido entre junto.
Ausência de segredo no front-end
Em vigorNenhuma chave privada, token ou credencial é embarcada no pacote publicado. As variáveis públicas do Firebase são tratadas como públicas por natureza.
Evidência: src/lib/firebase.ts e .env.example
Build reprodutível
Em vigorAs dependências são fixadas por arquivo de bloqueio versionado, e a publicação usa instalação limpa a partir dele.
Evidência: package-lock.json e npm ci no fluxo de publicação
Publicação sem chave de longa duração
Em vigorA automação de publicação autentica por federação de identidade de carga de trabalho. Não existe chave JSON de conta de serviço nem token pessoal no processo.
Evidência: Fluxo de publicação em .github/workflows
Portões de qualidade antes da publicação
Em vigorVerificação de tipos, análise estática, testes e testes das regras do Firestore em emulador precisam passar antes de qualquer publicação.
Evidência: package.json — scripts de verificação executados na integração contínua
Auditoria de dependências
Em vigorA auditoria bloqueia achados de severidade alta. Achados moderados transitivos permanecem registrados e revisados.
Evidência: npm audit --audit-level=high no fluxo de publicação
Inventário de licenças e SBOM
Em vigorCada componente do build é inventariado com versão, licença declarada e classificação, e a lista de materiais é publicada em SPDX. A triagem é de engenharia, não parecer jurídico: componentes de copyleft fraco ficam marcados para decisão humana.
Evidência: docs/LICENSE_INVENTORY.md e docs/sbom.spdx.json
Portão de licença na publicação
Em vigorA publicação falha quando um componente distribuído ao usuário tem licença de copyleft forte ou sem identificador declarado. Dependências apenas de desenvolvimento geram aviso, porque não são distribuídas.
Evidência: scripts/license-policy.mjs e o passo de licenças na integração contínua
Controles
Identidade e acesso
Quem consegue entrar no console administrativo e sob quais condições.
Identidade gerenciada
Em vigorO console administrativo aceita apenas o provedor corporativo aprovado. Não há autenticação por senha própria nem acesso anônimo.
Evidência: src/features/admin/use-admin-session.ts
Papel e segundo fator exigidos em conjunto
Em vigorO acesso administrativo exige papel atribuído, e-mail verificado, segundo fator provisionado e comprovação desse segundo fator na sessão corrente. Faltando qualquer um, o acesso é negado.
Evidência: src/features/admin/admin-access.ts e firestore.rules
Atribuição de papel fora do navegador
Em vigorPapel e política de segundo fator são atribuídos por processo administrativo com credencial privilegiada. Nenhuma identidade se autopromove pelo próprio login, e lista de e-mails não substitui a atribuição.
Evidência: scripts/provision-admin.mjs
Revogação
Em vigorA retirada do papel ou a revogação das sessões remove o acesso na renovação do token.
Evidência: scripts/provision-admin.mjs — revogação de tokens no provisionamento
Controles
Dados
O que é lido, o que é gravado e por qual identidade.
Negação por padrão
Em vigorAs regras do banco negam leitura e escrita para qualquer caminho não autorizado explicitamente.
Evidência: firestore.rules — regra final negando todos os documentos
Navegador sem escrita administrativa
Em vigorNenhuma identidade de navegador consegue gravar nas coleções administrativas. A escrita ocorre apenas por processo autorizado fora do navegador.
Evidência: firestore.rules — escrita negada nas coleções administrativas
Identidade dedicada de ingestão
Em vigorA carga do panorama de governança usa uma identidade técnica dedicada, separada da identidade que publica o site e sem permissão de administração de identidade.
Evidência: scripts/ingest-governance-snapshot.mjs
Regras exercitadas em emulador
Em vigorAs regras são testadas na integração contínua contra acesso anônimo, ausência de papel, ausência de segundo fator, papel inválido e tentativa de escrita.
Evidência: scripts/firestore-rules.integration.node-test.mjs
Demonstrações sintéticas
Em vigorTodo dado exibido em demonstração é sintético. Nenhum ambiente de terceiro é capturado e nenhuma informação pessoal aparece.
Evidência: src/data/demos.ts
Coleta somente leitura na origem
Em construçãoA coleta é desenhada para ler metadados sem editar a fonte observada. Como nenhum conector existe, o princípio ainda não foi exercido contra ambiente real.
Evidência: docs/CONTENT_GOVERNANCE.md e catálogo de integrações
Isolamento entre organizações
Em construçãoO isolamento entre organizações é requisito de desenho registrado no modelo de ameaça da Suíte. Não há organização conectada, portanto o isolamento não foi exercido em uso real.
Evidência: nodrail-suite/docs/THREAT_MODEL.md
Controles
Operação
Registro, resposta a incidente e canal para relatar uma falha de segurança.
Trilha de auditoria administrativa
Em vigorA carga do panorama de governança registra um evento com o commit de origem e o horário, legível apenas por identidade autorizada.
Evidência: scripts/ingest-governance-snapshot.mjs — evento de auditoria
Histórico de incidentes
Próxima etapaNão há histórico a publicar: não existe serviço em produção tratando dado de organização cliente.
Evidência: Relatórios da Suíte — ausência de organização conectada
Divulgação de vulnerabilidade
Próxima etapaNão existe programa formal de divulgação com escopo, prazo e política de porto seguro. Relatos podem ser enviados pelo formulário de contato e serão respondidos, sem compromisso de prazo publicado.
Evidência: docs/CONTENT_GOVERNANCE.md §8 — registrado como pendência
Teste de intrusão independente
Próxima etapaNenhum teste de intrusão por terceiro independente foi realizado.
Evidência: Ausência de relatório; nada a apresentar
Controles
Conformidade e certificação
O que a NODRAIL pode e o que não pode afirmar sobre normas e auditoria.
Certificação
Próxima etapaA NODRAIL não possui certificação emitida para este escopo. Qualquer material que sugira o contrário está incorreto.
Evidência: Panorama de governança da Suíte — estado declarado como não certificada
Eficácia de controle
Próxima etapaO sistema de gestão da Suíte registra controles e riscos, e nenhum controle teve eficácia comprovada. Eficácia exige teste independente com amostra, que não foi executado. Contagem de evidência não é prova de eficácia.
Evidência: Panorama de governança da Suíte — zero controles eficazes
Tratamento de dados pessoais
Em vigorO Portal coleta apenas os dados informados voluntariamente em formulário de contato, com finalidade e direitos do titular descritos na política de privacidade. Não há tratamento de dado operacional de organização cliente, porque não há organização conectada.
Evidência: src/routes/privacidade.tsx e src/lib/validation.ts
Subprocessadores
Próxima etapaNão há lista publicada de subprocessadores, porque ainda não há tratamento de dado operacional de organização cliente que a exija.
Evidência: docs/CONTENT_GOVERNANCE.md §8 — registrado como pendência
Relatar
Encontrou uma falha de segurança?
Use o formulário de contato para encaminhar o relato ao time responsável por segurança.
Sua operação depende de ativos que ninguém consegue afirmar se estão saudáveis?
Descreva as fontes, a recorrência e o impacto. A NODRAIL organiza o contexto e identifica o melhor próximo passo para a evolução da operação.
Cloud-first • Microsoft-first • Somente leitura por padrão • Evolução contínua