Acesso público TCP
Por padrão, bancos, caches e filas de um ambiente só são alcançáveis de dentro do cluster. O acesso público TCP permite que uma ferramenta de fora (um cliente de banco, um job de BI, um pipeline de CI) se conecte a um recurso, sempre pela borda gerenciada da plataforma e nunca por um IP público próprio do recurso.
Cada exposição é um endpoint TCP do recurso, com:
- uma allowlist obrigatória de IPs/CIDRs de origem;
- TLS ponta a ponta verificável com a CA da sua organização (a borda não abre o TLS);
- uma credencial externa própria do endpoint, separada da credencial que suas aplicações usam;
- registro de conexões (IP de origem, resultado, bytes e duração; nunca o conteúdo).
Quem pode expor
Abrir um recurso para a internet é uma decisão de segurança. Só o papel Admin do projeto cria, edita, rotaciona e remove endpoints. Developer e Viewer apenas leem. Um recurso exposto não pode ser removido enquanto o endpoint existir: remova o acesso público primeiro.
Recursos que podem ser expostos
| Recurso | Porta do serviço | TLS | Modo SNI | Credencial externa |
|---|---|---|---|---|
| Banco PostgreSQL | primário (5432) | obrigatório | só PostgreSQL 17 ou mais novo | sim |
| Cache Redis | porta TLS (6380) | obrigatório | sim | sim |
| Fila RabbitMQ | AMQPS (5671) | obrigatório | sim | sim |
| Aplicação TCP | porta da aplicação | da própria aplicação (passthrough) ou texto puro | só com TLS próprio | não |
Volumes, máquinas virtuais, funções e jobs não podem ser expostos por TCP.
Modos de publicação
| Modo | Endereço | Quando usar |
|---|---|---|
| Porta dedicada (padrão) | <recurso>-<ambiente>-<organização>.tcp.<domínio>:<porta>, com a porta alocada pela plataforma (faixa 20000–20999) | Funciona com qualquer cliente, inclusive o PostgreSQL clássico (sslmode=verify-full) |
| SNI | o mesmo hostname, na porta 443 compartilhada | Redes que só liberam a 443 de saída. Exige que o cliente envie o nome do servidor (SNI) já no início do TLS |
A porta é escolhida pela plataforma, não pelo cliente. Quando um endpoint é removido, a porta fica 24 horas em quarentena antes de ser reaproveitada.
Allowlist
Informe pelo menos um IP ou CIDR (por exemplo 203.0.113.10 ou 198.51.100.0/24), com uma nota opcional. Conexões de qualquer outra origem são recusadas na borda e aparecem como recusadas na aba Conexões.
- Para bancos, caches e filas, cada entrada pode ser no máximo
/16(IPv4) ou/32(IPv6), e0.0.0.0/0nunca é aceito. - Uma aplicação TCP pode ser aberta para qualquer IP só em planos com essa opção, e o pedido fica na auditoria.
- A allowlist muda na hora: edite o endpoint, sem aplicar o ambiente de novo. Se outra pessoa alterou o endpoint enquanto você editava, o portal avisa e oferece Recarregar.
Planos e limites
| Chave | O que controla | Starter | Pro | Business | Enterprise |
|---|---|---|---|---|---|
tcp.enabled | Acesso público TCP disponível | não | sim | sim | sim |
tcp.maxEndpoints | Endpoints na organização | 0 | 2 | 10 | 50 |
tcp.maxAllowlistEntries | Entradas de allowlist por endpoint | 0 | 10 | 50 | 200 |
tcp.maxConnections | Conexões simultâneas por endpoint | 0 | 50 | 200 | 1.000 |
tcp.allowAnywhere | Aplicação TCP aberta a qualquer IP | não | não | sim | sim |
tcp.allowPlaintext | Aplicação TCP sem TLS | não | não | sim | sim |
tcp.connectionLogRetentionDays | Dias de registro de conexões | 0 | 30 | 90 | 180 |
Os valores são os padrões de cada plano; a administração da plataforma pode ajustá-los por plano ou por organização. Ao mudar para um plano menor, os endpoints existentes continuam funcionando, mas não é possível criar novos nem ampliar os limites. As horas de endpoint ativo e os bytes enviados aos clientes entram no consumo da organização.
Credencial externa
Ao criar um endpoint de banco, cache ou fila, a plataforma gera um usuário próprio do endpoint (ext_xxxxxxxx; na fila, ext-xxxxxxxx) com uma senha aleatória forte, com acesso de leitura e escrita ou somente leitura.
- A senha aparece uma única vez, logo após a criação. Copie-a e confirme Copiei a senha para fechar o diálogo. Ela não pode ser consultada depois.
- Perdeu a senha ou quer trocá-la? Use Rotacionar credencial: uma senha nova é exibida uma vez e a anterior deixa de valer.
- Ao remover o endpoint, o usuário externo é removido junto.
CA da organização
Os certificados dos serviços expostos são emitidos por uma CA própria da sua organização, com o hostname público no certificado. Baixe a CA em Baixar CA (arquivo atlas-<organização>-ca.pem) e configure o cliente para verificar o servidor com ela. Assim o cliente confere que está falando com o seu recurso, e não com o de outra organização.
Exemplos de conexão
PostgreSQL, modo porta dedicada:
psql "host=db-prod-acme.tcp.exemplo.com port=20017 user=ext_1a2b3c4d dbname=app \
sslmode=verify-full sslrootcert=atlas-acme-ca.pem"
PostgreSQL 17 ou mais novo, modo SNI (porta 443):
psql "host=db-prod-acme.tcp.exemplo.com port=443 user=ext_1a2b3c4d dbname=app \
sslmode=verify-full sslnegotiation=direct sslrootcert=atlas-acme-ca.pem"
Redis (compatível · Valkey):
valkey-cli --tls --cacert atlas-acme-ca.pem -h cache-prod-acme.tcp.exemplo.com -p 20018 \
--user ext_5e6f7a8b --pass '<senha>'
RabbitMQ (AMQPS), confiando na CA da organização no cliente:
amqps://ext-9c0d1e2f:<senha>@fila-prod-acme.tcp.exemplo.com:20019/app
O portal mostra a string de conexão de cada endpoint já preenchida (sem a senha, exceto no diálogo da criação ou da rotação).
Conexões
A aba Conexões do recurso lista as conexões recebidas pela borda, das mais recentes para as mais antigas, com filtros por resultado e período:
| Resultado | Significado |
|---|---|
| Aceita | A conexão passou pela borda e chegou ao recurso |
| Recusada (allowlist) | A origem não está na allowlist |
| Limite de conexões | O endpoint já tinha o máximo de conexões simultâneas |
| Erro no destino | A borda não conseguiu falar com o recurso (por exemplo, recurso parado) |
Os registros ficam guardados pelo número de dias do seu plano. O banco vê as conexões vindas da borda; o IP real do cliente fica neste registro.