Segurança

Segurança e auditoria no Kubepier

A auditoria do Kubepier registra quem alterou o quê, em que cluster e quando, e o Kubepier Web conecta nos seus clusters e serviços sempre a partir de IPs de saída fixos. Libere só esses IPs na API do Kubernetes, no MongoDB Atlas, no Azure Service Bus, no RabbitMQ e no Redis, e esses endpoints continuam fechados para o resto da internet. Abaixo, o que isso garante, o que não garante e o resto do que protege o acesso.

IPs de saída do Kubepier Web

A lista de IPs aparece aqui e no app, no menu Rede e segurança.

Os mesmos IPs valem para todos os clientes do Kubepier Web. Libere todos os da lista.

Onde liberar os IPs

Cada serviço tem a própria lista de IPs autorizados. Inclua os IPs do Kubepier junto com os das suas redes (escritório, VPN, CI) que já estão lá.

ServiçoOnde liberar
AKSAuthorized IP ranges da API server: no portal, na rede do cluster, ou com az aks update --api-server-authorized-ip-ranges.
EKSPublic access CIDRs do endpoint público: no console, na rede do cluster, ou com aws eks update-cluster-config.
GKEMaster authorized networks (redes autorizadas do plano de controle): no console ou com gcloud container clusters update.
Outros clusters e on-premisesFirewall ou security group na frente da API do Kubernetes (em geral a porta 6443 ou 443).
MongoDB AtlasNo portal: Network Access → IP Access List → Add IP Address.
Azure Service BusNo portal: o namespace → Networking → Selected networks, e adicione os IPs no firewall. Confira se a camada do namespace aceita regras de IP.
RabbitMQFirewall ou security group do servidor, para a porta da API de gerenciamento (a URL cadastrada no cliente). Em RabbitMQ gerenciado, na lista de IPs do provedor, no portal.
RedisFirewall ou security group do servidor, ou a lista de IPs do serviço gerenciado, no portal (Azure Cache for Redis: Firewall; ElastiCache: security group).
SQL e KafkaHoje o Kubepier Web não conecta neles: o painel Dependências é do desktop e só lê as variáveis do pod e os ConfigMaps que elas referenciam. Se a web passar a consultar esses serviços, a conexão sai dos mesmos IPs.

Comandos para AKS, EKS e GKE

Troque <ip-1>, <ip-2> pelos IPs da lista acima e <ips-ja-liberados> pelos que o cluster já aceita:

# AKS
az aks update -g <resource-group> -n <cluster> \
  --api-server-authorized-ip-ranges <ip-1>/32,<ip-2>/32,<ips-ja-liberados>

# EKS
aws eks update-cluster-config --name <cluster> \
  --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="<ip-1>/32,<ip-2>/32,<ips-ja-liberados>"

# GKE
gcloud container clusters update <cluster> --enable-master-authorized-networks \
  --master-authorized-networks <ip-1>/32,<ip-2>/32,<ips-ja-liberados>

Esses comandos substituem a lista atual. Inclua também os IPs que já estão liberados, ou você corta o acesso de quem já usa o cluster.

O que o IP fixo garante, e o que não garante

  • A API do cluster e os serviços deixam de responder para a internet inteira: só para as suas redes e para o Kubepier.
  • Os IPs são compartilhados por todos os clientes do Kubepier Web. A lista de IPs é uma camada de rede somada às credenciais, nunca no lugar delas: quem chega pelos IPs do Kubepier ainda precisa do token, do certificado ou da senha.
  • Use credenciais com o mínimo de permissão. Cada página da documentação diz qual permissão cada função precisa.
  • Endpoints totalmente privados (sem endpoint público, só na VPC ou atrás de VPN) não são alcançáveis pela rota Direta. Para eles, use a rota Pelo cluster (um relay restrito num cluster do cliente, sem abrir nada para a internet) ou o Kubepier Desktop pela sua VPN.

Credenciais cifradas

  • Na web, tokens e certificados dos clusters, segredos das contas Azure e AWS e o acesso inteiro de cada serviço do cliente (RabbitMQ, Service Bus, MongoDB e Redis) são cifrados com AES-256-GCM antes de ir para o banco. A chave de cifra fica fora do banco.
  • Depois de salvas, as credenciais não voltam para a tela nem para o navegador: quem consulta os serviços é o servidor.
  • No desktop, os acessos aos serviços dos clientes ficam cifrados pelo chaveiro do sistema (Keychain, DPAPI ou libsecret). Sem chaveiro, nada é gravado em disco e os acessos valem até fechar o app.
  • Na web, um Secret aparece só com as chaves e o tamanho de cada valor, nunca os valores, e por isso não é editável pela web.
  • O banco fica no Microsoft Azure, na região Brazil South, e a comunicação usa TLS.

Login com GitHub, sem senha nova

  • O Kubepier Web não tem senha própria: você entra com a conta do GitHub, e a sessão fica num cookie.
  • O desktop entra com a mesma conta: o app mostra um código, você aprova no navegador e ele recebe um token só dele, cifrado pelo chaveiro do sistema. Sem chaveiro, o token não é gravado em disco e a barra de status avisa: "sem cofre do sistema: o login vale até fechar o app".
  • Você vê e desconecta cada dispositivo em app.kubepier.com.br/desktop.

Papéis e acesso por cliente

  • Cada pessoa da organização é admin ou membro.
  • O admin vê todos os clientes, cadastra clusters e credenciais, convida a equipe e, no plano pago, edita, escala, reinicia, apaga, abre shell no pod e no nó, purga filas e edita chaves do Redis.
  • O membro vê só os clientes liberados para ele, em modo leitura. No plano pago, também vê logs ao vivo, espia mensagens, abre o painel do MongoDB e navega nas chaves do Redis. O que não está liberado responde como se não existisse.
  • Na auditoria, o admin vê a organização inteira e o membro vê os próprios registros, nos clientes liberados para ele; os dois exportam CSV no plano pago. No Free, cada pessoa vê uma prévia dos próprios registros dos últimos 7 dias, sem CSV.
  • Convites valem por 7 dias. Quem sai da equipe perde o acesso na hora.

Free é só leitura

No plano Free, na web e no desktop, dá para conectar o cluster de produção e explorar sem risco de mudar nada: editar, escalar, reiniciar, apagar, logs ao vivo, shell, espiar mensagens, ações nos serviços dos clientes e diagnóstico com IA ficam nos planos pagos. O desktop só abre depois de você entrar com a conta, e o plano da organização vale nele também.

Auditoria: quem alterou o quê, e confirmação nas ações destrutivas

  • Reiniciar e apagar pedem confirmação. Cada tentativa de editar, escalar, reiniciar ou apagar pela web fica na auditoria, com quem fez, quando, em que cluster e recurso e se deu certo.
  • Purgar uma fila ou a DLQ pede que você digite o nome da fila. Apagar uma chave do Redis pede confirmação, e apagar várias pede que você digite a quantidade. Há limite de frequência (5 purgas a cada 10 minutos, 20 chaves apagadas por minuto) e, na web, isso é só de admin.
  • Purgas e edições nos serviços ficam na auditoria do banco, na web, e no arquivo local kubepier-audit.log, no desktop: quem, quando, qual cliente e quais nomes. Nunca o conteúdo.
  • Cada sessão de shell vai para a auditoria (web) ou para o kubepier-audit.log (desktop), com o alvo. No desktop, também as ações no cluster: aplicar, editar, escalar, reiniciar, apagar, cordon, uncordon e drain. O shell pela web é só de admin, dura no máximo 2 horas e cada pessoa abre até 3 ao mesmo tempo. O shell no nó pela web pede que o admin digite o nome do nó para confirmar, e o pod temporário dele é apagado ao fechar o terminal.
  • O shell confere a origem da conexão: outro site não consegue abrir um shell com a sua sessão.
  • Na web, a tela Auditoria filtra por período, usuário, cliente, cluster, ação e resultado e exporta CSV. No desktop, o mesmo fica em Preferências › TR › Auditoria, lido do kubepier-audit.log.

O que nunca é guardado

  • O conteúdo dos recursos, dos logs e do shell: passa pela tela enquanto ela está aberta e não é gravado.
  • O corpo das mensagens das filas e os valores das chaves do Redis: aparecem na tela quando você abre e nunca são gravados, guardados em cache nem escritos nos registros do servidor.
  • Nas operações lentas do MongoDB e no SLOWLOG do Redis, os valores dos filtros e dos comandos são trocados por "?" ou viram uma contagem.
  • A auditoria guarda quem fez o quê e onde, nunca o conteúdo.

Diagnóstico com IA: o que sai e para onde vai

O diagnóstico com IA manda ao provedor o contexto do pod, sempre depois de remover chaves privadas, tokens, chaves de nuvem, senhas, credenciais em URLs, e-mails, endereços IP e sequências longas que pareçam segredos. Vão o status do pod e de cada container e os nomes das variáveis de ambiente, nunca os valores; Secrets e o kubeconfig nunca vão. Eventos e logs somam até 16 KB.

SituaçãoProvedor e chaveCaminhoEventos e logs
Teste de 7 dias, na web (cada usuário de organização Pro ou Team, inclusive nos 14 dias grátis)OpenAI (gpt-4o-mini), com a chave da TRNavegador → servidor do Kubepier → OpenAISó depois da prévia (com a opção de enviar sem eles), redigidos
Teste de 7 dias, no desktop 2.7.0 (logado numa organização Pro ou Team, sem chave própria)OpenAI (gpt-4o-mini), com a chave da TRDesktop → API do Kubepier → OpenAI (redigido no app e de novo no servidor)Só depois da prévia (com a opção de enviar sem eles), redigidos
Pro e Team na web, depois do testeAnthropic ou OpenAI, com a chave da organização, cifradaNavegador → servidor do Kubepier → provedorSó com o consentimento da organização, depois da prévia
Pro e Team no desktop, depois do testeAnthropic ou OpenAI, com a sua chave, no chaveiro do sistemaSua máquina → provedor, sem passar pelo KubepierSó com o seu consentimento, depois da prévia

O Kubepier não guarda nem escreve em log o texto enviado nem a resposta. A auditoria registra só quem pediu, quando, em que cluster e pod, e no teste marca a chave de teste e a origem (web ou desktop). No teste, cada usuário faz até 30 diagnósticos por dia (fuso de São Paulo, web e desktop somados), há uma cota mensal para todos os usuários, e organização Pro ou Team com chave própria usa a própria, sem consumir o teste. O Free não tem diagnóstico com IA. O histórico da tela Análises com IA fica só no navegador ou no computador de quem pediu.

O Kubepier Desktop conecta da sua máquina

  • O desktop usa o seu kubeconfig e fala direto com a API dos clusters e com os serviços dos clientes, pela sua rede ou VPN, inclusive com plugins exec como kubelogin, aws e gke-gcloud-auth-plugin. Esse tráfego não passa pelos servidores do Kubepier.
  • A conta serve para aplicar o plano: o app confere a licença com o servidor. Sem internet, uma licença Pro ou Team já confirmada continua valendo até a data que o servidor definiu (7 dias desde a última confirmação), para todas as funções pagas.
  • O registro de uso do desktop leva só abertura do app, minutos de uso, login, versão e sistema operacional. O formato aceito pelo servidor não tem campo para nome de cluster, namespace, kubeconfig ou conteúdo.
  • O diagnóstico com IA, com a sua chave, vai direto da sua máquina ao provedor. No teste de 7 dias, passa pela API do Kubepier até a OpenAI. O fluxo completo está na seção Diagnóstico com IA, acima.

Nada instalado no cluster

O Kubepier fala com a API do Kubernetes e não instala agente. As exceções são pedidas por você: o Lens Metrics (desktop), para ver o consumo: em Configurações do cluster › Metrics, o botão Instalar / Atualizar aplica o Prometheus, o kube-state-metrics e o node-exporter no namespace lens-metrics, e Remover apaga esse namespace depois de confirmar, e pods temporários que somem quando a função termina.

  • Shell no nó (web e desktop): um pod privilegiado no kube-system, fixo no nó escolhido, apagado ao fechar o terminal. Na web, o pod kubepier-shell-no-* usa imagem fixada por digest, não tem token de service account e é apagado também em erro, queda, 120 s sem subir ou 2 horas. Se o cluster bloqueia pod privilegiado (Pod Security, Azure Policy, Gatekeeper, Kyverno), o shell no nó não abre.
  • Túnel seguro (desktop): para um host da rede do cluster, um pod de repasse sem privilégio, apagado com o último túnel, em 2 horas ou quando o app fecha.
  • Bastion (web): um pod sem privilégio no namespace escolhido, apagado ao fechar ou em 2 horas.
  • Rota pelo cluster (web): um relay sem privilégio no cluster e no namespace da rota, apagado depois de 10 minutos sem uso ou em 2 horas.

Bastion e Túnel seguro, sem privilégios

  • Bastion (web): um pod temporário no namespace do cliente, com o perfil PodSecurity "restricted" (usuário 1000, sem capabilities, raiz só leitura, HOME e /tmp em memória, sem token de ServiceAccount), imagem fixada por digest. Dura no máximo 2 horas e é apagado ao fechar. A chave SSH opcional fica só na memória do pod.
  • Túnel seguro (desktop): a conexão parte da sua máquina. Para um Service, é port-forward direto, sem pod. Para um host da rede do cluster, um pod de repasse restrito (só socat, sem acesso interativo) é criado e apagado com o último túnel, em 2 horas ou quando o app fecha. A porta local só escuta em 127.0.0.1.
  • Abertura, fechamento e túneis vão para a auditoria; o conteúdo, nunca.

Privacidade e LGPD

O tratamento de dados pessoais segue a LGPD e está descrito na política de privacidade: o que coletamos, por quê, com quem compartilhamos e por quanto tempo guardamos.

Os IPs de saída são exclusivos da minha empresa?

Não. Os mesmos IPs valem para todos os clientes do Kubepier Web. Eles fecham o endpoint para o resto da internet, mas quem chega por eles ainda precisa da credencial do cluster ou do serviço.

Meu cluster é totalmente privado. Dá para usar o Kubepier?

Pela web, não: o Kubepier Web só alcança a API de clusters com endpoint público que aceite os IPs de saída. O Kubepier Desktop conecta da sua máquina, pela sua VPN, e alcança qualquer cluster que o kubectl alcance. Já os serviços dos clientes (RabbitMQ, Service Bus, MongoDB e Redis) em rede privada a web alcança pela rota Pelo cluster, se algum cluster do cliente chega neles.

O Kubepier guarda os logs, o que eu digito no shell ou as mensagens das filas?

Não. Logs, shell, mensagens e valores do Redis aparecem na tela enquanto ela está aberta e não são gravados. A auditoria registra a ação (quem, onde, quando), nunca o conteúdo.

Quem da equipe pode abrir shell ou alterar recursos?

Na web, só quem é admin da organização, e só nos planos Pro e Team. O shell no nó pede ainda que o admin digite o nome do nó. O membro vê os clientes liberados para ele em modo leitura.

O que o diagnóstico com IA manda para fora?

O status do pod e dos containers, os nomes das variáveis de ambiente (sem os valores) e, se aceitos na prévia (no teste e com a sua chave), eventos e logs até 16 KB, sempre depois da redação de segredos e dados pessoais. No teste, vai à OpenAI pela chave da TR, passando pelo Kubepier; depois, ao provedor que você escolher, com a sua chave. O Kubepier não guarda o texto nem a resposta.

O Kubepier vê os valores dos Secrets?

A web mostra só as chaves e o tamanho de cada valor; os valores nunca chegam ao navegador. O desktop lê o cluster com o seu próprio kubeconfig, como o kubectl.

Entrar com GitHub