05 · ACESSO A APLICAÇÕES INTERNAS
Aplicações internas pelo browser, sem VPN.
A borda roda na sua infraestrutura, e é nela que o TLS termina. Cada pessoa recebe acesso a um serviço do catálogo, com prazo e motivo, e cada conexão é decidida e registrada antes que o primeiro byte passe.
Abre uma conversa no WhatsApp. Prefere e-mail? [email protected]
O que faz
Pelo browser, sem instalar nada
Seja um painel, uma ferramenta de BI ou uma aplicação feita em casa, a pessoa abre o endereço de sempre e entra pelo login único da empresa, sem campo de senha. A sessão vale por 8 horas e só serve para aquele endereço.
No terminal, pelo nome de verdade
heimdall network up faz o nome interno resolver no computador da pessoa e leva cada conexão pela borda. Kafka, MongoDB em replica set e Redis Cluster, que anunciam o nome de cada nó, funcionam pelo nome real, sem localhost e sem mudar a configuração da aplicação.
A concessão
Cada concessão vale para uma pessoa e um serviço, com prazo obrigatório de até 90 dias e um motivo, que alguém vai ler meses depois para decidir se o acesso ainda faz sentido. A janela de horário, num fuso IANA, é opcional. Só owner e admin concedem acesso; um membro não consegue conceder nem a si mesmo.
Cada conexão passa por uma decisão
A cada conexão, a API verifica, naquele momento, se a pessoa é membro da organização, se tem concessão vigente para aquele serviço, se está dentro da janela e se a policy permite. Nem a concessão nem a policy bastam sozinhas: as duas precisam permitir.
Registrada antes do primeiro byte
A decisão vira uma linha de auditoria antes que qualquer byte passe: quem pediu, de onde, para qual serviço e, quando há recusa, o motivo. Se não for possível gravar a linha, a conexão é recusada.
Nada fora do catálogo
Um serviço só fica alcançável se tiver Component e environment no catálogo, e só ganha nome público sob um domínio que a organização provou por DNS. A recusa devolve a mesma resposta em todos os casos, para que ninguém use a borda para listar os portais da empresa.
Identidade que não se forja
Antes de entregar a requisição ao portal, a borda apaga os cabeçalhos de identidade que vieram do browser — justamente os que portais e proxies costumam aceitar como "quem é o usuário".
Como funciona
O percurso de uma conexão, do browser até o serviço:
- O browser chega à borda, que é sua. Se ainda não há sessão, ele segue para o login da empresa.
- A borda pergunta à API se aquela pessoa pode alcançar aquele serviço agora. A API decide e grava o resultado.
- O Agente, que já mantém uma conexão aberta de dentro para fora, abre a conexão com o serviço. Ele nunca aceita conexão vinda de fora.
- O tráfego entre a borda e o Agente é cifrado de ponta a ponta, e a borda exige que o Agente apresente um certificado da sua organização com o nome de Agente que a API indicou.
heimdall network-grant create --service grafana.lvh.me --user f8e39903-3865-85b2-837c-3270d4eeaf23 --days weekdays --from 09:00 --expires-in 30d --reason "painel de vendas"
Error: --timezone, --days, --from and --to go together, or leave all four out for a grant that is open at any time. Half a window is a rule nobody wrote
heimdall network-grant create --service grafana.lvh.me --user f8e39903-3865-85b2-837c-3270d4eeaf23 --expires-in 91d --reason "painel de vendas"
Error: VALIDATION_ERROR: networkedge: a grant must expire in the future and at most 90 days out (got 2027-01-09T06:20:04Z)
heimdall network-grant create --service grafana.lvh.me --user f8e39903-3865-85b2-837c-3270d4eeaf23 --expires-in 1d --reason "eu mesmo"
Error: FORBIDDEN: access denied
heimdall network-grant create --service grafana.lvh.me --user f8e39903-3865-85b2-837c-3270d4eeaf23 --expires-in 30d --reason "acompanha os painéis de vendas"
✓ Network access granted: f8e39903-3865-85b2-837c-3270d4eeaf23 → grafana.lvh.me (daily 00:00-24:00 UTC, until 2026-11-09T06:20:04Z)
heimdall audit list --action network_flow.denied
TIMESTAMP ACTOR ACTION RESOURCE_TYPE RESOURCE_ID
2026-10-10T06:19:57Z [email protected] network_flow.denied network_service 7263e2f4-3bfa-42df-9d1e-b5f77c66dc92
heimdall network-grant create e da trilha de uma conexão recusada.Onde o dado fica
Tudo roda na sua infraestrutura. Mesmo assim, a divisão abaixo importa dentro da sua empresa, porque mostra quem, no seu time, tem acesso a quê.
| NA BORDA E NO AGENTE | NA API, QUE É SUA |
|---|---|
A borda termina o TLS do browser com o certificado do seu domínio e vê o HTTP do portal, como qualquer proxy da sua empresa. O Agente se conecta ao serviço de dentro da sua rede, e o endereço interno nunca sai dela. | A trilha de auditoria guarda quem pediu qual serviço, de qual endereço, quando e qual foi a decisão. O log guarda a duração e os bytes de cada conexão. O conteúdo, não: o que a pessoa viu, clicou ou baixou fica fora da trilha. O tráfego atravessa a API cifrado entre a borda e o Agente. |
Quem aprova o quê
| ATO | QUEM |
|---|---|
| Registrar um serviço e provar o domínio | owner e admin |
| Conceder e revogar acesso | owner e admin — e ninguém concede a si mesmo sem esse papel |
| Suspender uma pessoa sem caçar as concessões dela | uma policy forbid, que prevalece sobre qualquer permissão |
| Conectar | quem é membro, tem concessão vigente e tem permissão da policy. Nenhuma policy deixa passar quem não tem concessão, nem mesmo o owner |
Com os outros módulos
-
01
Catálogo
Cada serviço alcançável é um Component num
environment; a trilha registra os dois. -
04
Database Manager
heimdall db connectpassa pela mesma borda e soma a ela a governança do banco: exige concessão de rede e aprovação de banco.
Converse com quem constrói o Heimdall.
Conte como a sua engenharia guarda secrets e acessa o banco hoje. Respondemos dizendo o que o Heimdall colocaria sob regra primeiro e como a implantação chegaria lá.
Abre uma conversa no WhatsApp. Prefere e-mail? [email protected]