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? heimdall@yops.cloud

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:

  1. O browser chega à borda, que é sua. Se ainda não há sessão, ele segue para o login da empresa.
  2. A borda pergunta à API se aquela pessoa pode alcançar aquele serviço agora. A API decide e grava o resultado.
  3. 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.
  4. 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.
TERMINALheimdall network-grant
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  member@demo.example.com  network_flow.denied  network_service  7263e2f4-3bfa-42df-9d1e-b5f77c66dc92
Saída real de 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ê.

Acesso a aplicações internas: onde o dado fica
NA BORDA E NO AGENTENA 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.

Ver a segurança

Quem aprova o quê

Acesso a aplicações internas: quem aprova o quê
ATOQUEM
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 connect passa 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á.

Falar com engenharia

Abre uma conversa no WhatsApp. Prefere e-mail? heimdall@yops.cloud