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

ComponenteFunção
Auth ServiceAutoridade de certificados. Emite certs TLS/SSH de curta duração, armazena logs de auditoria.
Proxy ServiceProxy HTTPS/SSH público. Gerencia logins tsh, UI web e multiplexação ALPN na porta 443.
SSH Node AgentDaemon teleport em cada servidor, registra sessões com o Auth Service.
Access AgentsDaemons 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

RecursoTeleportHashiCorp BoundaryStrongDMBastion HostTailscale SSHOpenSSH
AutenticaçãoCerts curta duraçãoCredenciais dinâmicasInjeção de credenciaisChaves estáticasWireGuard + certsChaves estáticas
SSO/IdPSim (SAML/OIDC/GitHub)SimSimManualOIDCNão
Gravação sessõesCompleta (SSH+DB+K8s)NãoSimNãoNãoNão
Acesso DBSim (protocolo nativo)SimSimSó túnelNãoNão
KubernetesSim (RBAC)ParcialSimNãoNãoNão
Access RequestsSim (integrado)NãoNãoNãoNãoNão
Open sourceSim (Apache 2.0)Sim (MPL 2.0)Não (SaaS)N/AParcialSim

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

ProblemaSolução
Loop de redirecionamento em tsh loginVerificar que redirect_url do conector SSO corresponda exatamente ao endereço público do proxy
Nós não aparecem em tsh lsVerificar que o agente alcança o Auth na porta 443; revisar expiração do token de ingresso
Conexão ao banco de dados recusadaConfirmar que db_service está rodando; verificar firewall entre agente e host do DB
kubectl exec proibidoAdicionar verbo exec ao bloco kubernetes_resources do papel
Sessão não gravadaRevisar 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