TL;DR — Resumo Rápido

Guia completo do Gravitational Teleport para SSH seguro, Kubernetes, bancos de dados e apps. Certificados, SSO, RBAC, logs de auditoria e Access Requests.

O Teleport da Gravitational é uma plataforma open-source de acesso à infraestrutura que substitui chaves SSH estáticas, VPNs e jump hosts por certificados de curta duração, SSO e uma trilha de auditoria completa. Este guia cobre cada camada: arquitetura, instalação, inscrição de nós, RBAC, SSH, bancos de dados, Kubernetes e acesso a aplicações.

Pré-requisitos

  • Servidor Linux (Ubuntu 22.04+ ou RHEL 8+) com FQDN público para o Proxy Service.
  • Registro DNS A apontando teleport.exemplo.com para o IP do proxy.
  • Porta 443 (HTTPS/ALPN) aberta para entrada no proxy.
  • CLIs tsh e tctl instaladas na estação de trabalho.
  • Provedor de identidade (GitHub, Okta, Azure AD ou Google Workspace) para SSO — opcional em laboratório.

Arquitetura do Teleport

Componente Função
Auth Service Autoridade de certificados. Emite certs TLS/SSH de curta duração, armazena logs de auditoria.
Proxy Service Proxy HTTPS/SSH público. Gerencia logins tsh, UI web e multiplexação ALPN na porta 443.
SSH Node Agent Daemon teleport em cada servidor, registra sessões com o Auth Service.
Access Agents Daemons especializados: db_service, kube_service, app_service, windows_desktop_service.

A autenticação por certificados substitui as chaves SSH. Quando um usuário faz login com tsh, o Auth Service emite um certificado SSH válido por max_session_ttl (tipicamente 8–12 horas). Nenhuma chave privada de longa duração é distribuída ou rotacionada.


Instalação

Auto-hospedado: apt/yum

# Ubuntu/Debian
curl https://goteleport.com/static/install.sh | bash -s 15.0.0
apt-get install teleport

# RHEL/Rocky Linux
yum install teleport

Kubernetes (Helm)

helm repo add teleport https://charts.releases.teleport.dev
helm install teleport-cluster teleport/teleport-cluster \
  --namespace teleport --create-namespace \
  --set clusterName=teleport.exemplo.com \
  --set acme=true \
  --set acmeEmail=admin@exemplo.com

Teleport Cloud

Serviço gerenciado de Proxy+Auth. Apenas agentes (SSH, DB, Kube) são implantados na infraestrutura própria e conectados ao tenant cloud em suaempresa.teleport.sh.


Configuração Inicial e TLS com ACME

teleport configure \
  --cluster-name=teleport.exemplo.com \
  --public-addr=teleport.exemplo.com:443 \
  --acme \
  --acme-email=admin@exemplo.com \
  -o /etc/teleport/teleport.yaml

systemctl enable --now teleport

# Criar primeiro usuário administrador
tctl users add admin --roles=editor,access --logins=root,ubuntu

Adicionando Nós

Ingresso por Token

# Criar token de curta duração no auth server
tctl tokens add --type=node --ttl=5m

# No novo servidor
teleport start \
  --roles=node \
  --token=<token> \
  --auth-server=teleport.exemplo.com:443

Ingresso EC2/IAM (AWS — Sem Token)

O Teleport verifica o documento de identidade de instância AWS. Não são necessários tokens estáticos. O mesmo mecanismo existe para Azure Managed Identity e GCP Instance Identity.


Autenticação: SSO e MFA

Conector GitHub

kind: github
version: v3
metadata:
  name: github
spec:
  client_id: "ID_APP_OAUTH_GITHUB"
  client_secret: "SECRET_APP_OAUTH_GITHUB"
  redirect_url: "https://teleport.exemplo.com/v1/webapi/github/callback"
  teams_to_roles:
    - organization: minha-org
      team: devops
      roles: ["devops"]

Forçar MFA

kind: cluster_auth_preference
version: v2
metadata:
  name: cluster-auth-preference
spec:
  type: github
  second_factor: "on"
  webauthn:
    rp_id: "teleport.exemplo.com"

second_factor: "on" aceita TOTP (Google Authenticator), WebAuthn (YubiKey, Touch ID) ou passkeys.


RBAC: Papéis e Rótulos

kind: role
version: v7
metadata:
  name: devops
spec:
  options:
    max_session_ttl: "12h"
    record_session:
      default: "best_effort"
  allow:
    logins: ["ubuntu", "ec2-user"]
    node_labels:
      env: ["production", "staging"]
      team: ["devops"]
  deny:
    node_labels:
      restricted: ["true"]

Aplicar com tctl create papel.yaml. O bloco request habilita Access Requests — desenvolvedores podem solicitar acesso temporário à produção com uma aprovação.


Acesso SSH com tsh

# Login (abre navegador para SSO + MFA)
tsh login --proxy=teleport.exemplo.com

# Listar nós acessíveis
tsh ls

# Conectar a um nó
tsh ssh ubuntu@servidor-web-01

# Transferência de arquivos
tsh scp ./deploy.sh ubuntu@servidor-web-01:/tmp/

# Encaminhamento de porta
tsh ssh -L 5432:localhost:5432 ubuntu@servidor-db

# Comando em múltiplos nós
tsh ssh --labels env=staging "systemctl restart nginx"

A gravação de sessão é automática. Reproduzir pela UI web ou CLI:

tsh play <id-sessao>

Acesso a Bancos de Dados

tsh db login prod-postgres --db-user=appuser --db-name=meudb
tsh db connect prod-postgres   # abre psql
tsh db connect prod-mysql      # abre mysql CLI
tsh db connect mongo-atlas --db-user=leitor
tsh db connect redis-cache

O Teleport atua como proxy com reconhecimento de protocolo — entende o protocolo de rede nativo do banco de dados sem expor suas portas.


Acesso ao Kubernetes

tsh kube ls
tsh kube login producao
kubectl get pods -n default

O YAML de papel define recursos Kubernetes permitidos com verbos específicos (get, list, exec). A impersonação aplica as permissões do usuário Teleport ao contexto Kubernetes.


Acesso a Aplicações

app_service:
  enabled: true
  apps:
    - name: grafana
      uri: http://grafana.interno:3000
      labels:
        env: production

Usuários acessam https://grafana.teleport.exemplo.com. O Teleport adiciona um cabeçalho JWT com a identidade do usuário. SSO protege cada app interna sem modificá-la.


Log de Auditoria

# Consultar log de auditoria
tctl audit events --event-type=session.start --format=json

# Intervalo de datas
tctl audit events \
  --from="2026-03-01" \
  --to="2026-03-23" \
  --event-type=db.session.query

Backends de armazenamento: S3 (com Athena), GCS (com BigQuery) ou DynamoDB.


Access Requests: Escalada de Privilégios Just-in-Time

# Solicitar papel de produção
tsh request create --roles=production-access \
  --reason="Investigando incidente P1 #4821"

# Aprovar
tsh request review --approve <id-solicitacao>

# Negar
tsh request review --deny <id-solicitacao>

Teleport inclui plugins para Slack, PagerDuty, ServiceNow e Jira. Aprovações podem ser feitas diretamente do Slack.


Teleport vs Alternativas

Recurso Teleport HashiCorp Boundary StrongDM Bastion Host Tailscale SSH OpenSSH
Autenticação Certs curta duração Credenciais dinâmicas Injeção de credenciais Chaves estáticas WireGuard + certs Chaves estáticas
SSO/IdP Sim (SAML/OIDC/GitHub) Sim Sim Manual OIDC Não
Gravação sessões Completa (SSH+DB+K8s) Não Sim Não Não Não
Acesso DB Sim (protocolo nativo) Sim Sim Só túnel Não Não
Kubernetes Sim (RBAC) Parcial Sim Não Não Não
Access Requests Sim (integrado) Não Não Não Não Não
Open source Sim (Apache 2.0) Sim (MPL 2.0) Não (SaaS) N/A Parcial Sim

Casos Especiais e Armadilhas

  • Desvio de relógio destrói certificados. Auth, Proxy e todos os nós precisam de sincronização NTP dentro de ±30 segundos.
  • Multiplexação ALPN requer porta 443. Dividir portas quebra algumas funcionalidades de proxy para proxy.
  • Wildcard TLS para acesso a apps. Subdomínios de aplicações requerem certificado wildcard ou desafio ACME por app.
  • EC2 IAM join precisa de IMDSv2. Verificar que o endpoint de metadados da instância seja acessível.
  • Impersonação do Kubernetes. O agente kube_service precisa de permissões ClusterRole de impersonate.

Solução de Problemas

Problema Solução
Loop de redirecionamento em tsh login Verificar que redirect_url do conector SSO corresponda exatamente ao endereço público do proxy
Nós não aparecem em tsh ls Verificar que o agente alcança o Auth na porta 443; revisar expiração do token de ingresso
Conexão ao banco de dados recusada Confirmar que db_service está rodando; verificar firewall entre agente e host do DB
kubectl exec proibido Adicionar verbo exec ao bloco kubernetes_resources do papel
Sessão não gravada Revisar política record_session; verificar permissões do bucket S3 para o papel IAM do Auth Service

Resumo

  • Autoridade de certificados — substitui chaves SSH estáticas por certs que expiram automaticamente.
  • SSO + MFA — GitHub, Okta, Azure AD, Google Workspace; TOTP, WebAuthn, chaves de hardware.
  • RBAC com rótulos de nó — papéis correspondem a servidores por rótulos de ambiente/equipe.
  • Auditoria completa — cada sessão gravada como eventos estruturados + vídeo, armazenados em S3/GCS.
  • Bancos de dados e Kubernetes — proxy com protocolo nativo sem expor portas ou distribuir credenciais.
  • Access Requests — escalada de privilégios just-in-time com fluxos de aprovação no Slack/PagerDuty.
  • Open source — Apache 2.0, auto-hospedável ou gerenciado via Teleport Cloud.

Artigos Relacionados