Selo de estado:
Preview— inventário e runbook de rotação das credenciais do workspace. Atualizado em 2026-09-17. Fonte de estado: matriz de estados do produto. Limite atual do produto = Preview.
Um mapa de quais segredos existem no seu workspace, como cada um é guardado e o que trocar, rotacionar e revogar significam para cada um — porque não significam a mesma coisa.
Não existe um princípio único para "todas as credenciais"
Esta página já afirmou que, para toda credencial, o valor cru aparece uma vez, que perder significa gerar outra e que a antiga é recusada imediatamente. Isso só é verdade para uma parte da família 1 abaixo — as chaves emitidas. Uma credencial que o produto precisa usar na sua origem de dados é recuperável por natureza, e "recusar a antiga" depende de alguém revogá-la lá, não aqui.
As famílias#
| Família | O que o sistema faz com o segredo | Exemplos |
|---|---|---|
| 1. Verificadores | Só confere um valor que você apresenta. O valor guardado é um hash; nem nós conseguimos voltar ao original. | 1a. chave de API de dados e service principal (chaves emitidas pelo produto) · 1b. senha de login |
| 2. Credenciais recuperáveis da origem | Precisa usar o valor para autenticar no seu banco/API. O valor é cifrado e volta a ser lido na execução. | senha/token/chave de uma conexão de dados |
| 3. Segredos de assinatura e de cálculo | Precisa do valor para assinar ou calcular algo nosso. Cifrado, recuperável, mas nunca sai para você depois. | segredo de embed, semente TOTP do MFA, chave da conta de serviço do workspace |
A diferença não é estética: ela decide o que acontece quando você troca o valor.
Senha de login
não é uma chave emitida A família 1 agrupa duas coisas pela forma de guardar (as duas são hash), mas elas se comportam de um jeito diferente na hora de trocar, e tratá-las juntas foi o que produziu a página anterior. Uma chave emitida nasce no produto, aparece uma vez, é revogável e para de valer no mesmo instante em que você a revoga. Uma senha de login identifica uma pessoa, não é revogável peça a peça e — pelo desenho de sessão de hoje — trocá-la não derruba as sessões já abertas. Por isso as duas metades estão separadas abaixo.
Família 1a — Chaves EMITIDAS pelo produto (API de dados e service principal)#
Como é guardada. A chave de API de dados (ing_live_…) e o service principal
(sp_live_…) viram um SHA-256 do valor cru, mais um prefixo de 16
caracteres guardado em claro só para você identificar a chave na lista.
Valor cru. Aparece uma única vez, na criação. Não há como reexibi-lo — o banco não tem o original.
Perdeu? Gere outra e revogue a anterior. Não existe recuperação.
Trocar = rotacionar. Aqui as duas palavras coincidem: a credencial nasce e morre dentro do ingestia.io, não existe cópia dela em outro sistema.
A antiga é recusada imediatamente? Sim. Toda requisição resolve a chave
consultando o banco pelo hash e para se houver revokedAt. Não há cache de chave
resolvida, nem janela de graça — a leitura vai ao banco a cada chamada.
Escopo. O service principal carrega o papel no envelope da própria
credencial e cai para viewer quando o envelope está ilegível (fail-closed). Um
token ing_live_… nunca é aceito como service principal, e vice-versa: o
prefixo é conferido antes de qualquer consulta.
Chave de API (dados)
Em Configurações → Chaves de API, gere uma nova chave, atualize seus integradores e revogue a antiga. A partir da revogação, chamadas com a chave velha respondem
401— sem espera.Service principal
Gere um novo
sp_live_…com o papel adequado, aponte o IdP/integração para ele e revogue o anterior. Revogar um SP de outro workspace é recusado (a checagem é por dono, não por id).
Família 1b — Senha de login#
Como é guardada. Hash scrypt com sal, no formato scrypt$N$sal$hash. O
servidor só confere o que você digita; o valor original não fica em lugar nenhum.
Onde ela é definida. No cadastro da conta (e-mail + senha). É o único ponto do produto que grava a senha de login.
Não existe autoatendimento de troca nem de redefinição de senha
A versão implementada não tem tela de "alterar minha senha" nem fluxo de "esqueci minha senha". Esta página já afirmou que "cada pessoa troca a própria" — isso não corresponde ao produto e foi retirado. Trocar a senha de uma conta existente é, hoje, um caso de suporte, como a recuperação de MFA. Quem entra por Google ou por SSO não tem senha local: a troca acontece no provedor de identidade, não aqui.
A antiga para de valer na hora? Para autenticar, sim: o login confere o hash gravado, então uma senha substituída não abre sessão nova. Mas as sessões já abertas continuam valendo: a sessão é um token assinado, guardado no navegador de quem entrou, e o servidor não mantém lista de sessões para revogar. Não há, portanto, "encerrar sessões em todos os dispositivos". Uma sessão aberta termina quando a pessoa sai ou quando o token expira.
E o cache? Não existe cache de senha. Dentro de uma mesma requisição, a sessão é resolvida uma única vez (memoização por requisição) e nada disso atravessa requisições. O que sobrevive à troca é o token já emitido — ver o parágrafo acima —, não um cache do servidor.
O convite de membro não emite senha — emite um link de ativação
Ao cadastrar alguém em Configurações → Usuários, o produto não gera senha provisória. Ele emite um token de ativação de uso único, com validade, guardado como hash; a pessoa recebe um link de ativação e define a própria senha ao aceitar. O token é credencial de convite, não de acesso: ele serve uma vez, para entrar no workspace, e depois não vale mais.
Se o link expirar ou se perder, a ação é reenviar o convite (que emite um token novo e invalida o anterior). Não existe "gerar nova senha".
Família 2 — Credenciais das suas fontes de dados#
Esta é a família em que "rotacionar" é ambíguo, e onde a confusão custa caro.
Como é guardada. Duas possibilidades, por conexão:
- cifrada no banco (AES-256-GCM) — o padrão de hoje; ou
- no cofre externo de credenciais, com o banco guardando só uma
referência. A referência aponta para uma versão numerada (nunca
latest).
Valor cru. Você digita, o produto usa, e a interface não devolve o valor depois. Para mudar, use Substituir credencial — não existe "ver a senha atual". Mas atenção: não reexibir não é a mesma coisa que não ser recuperável. O processamento precisa autenticar no seu banco, então o valor é decifrado a cada execução.
Trocar o valor aqui NÃO conclui a rotação
O texto que a própria tela mostra em toda troca: "Trocar o valor no cofre NÃO conclui a rotação. A credencial anterior continua VÁLIDA na origem (banco, provedor, IAM) até ser invalidada LÁ. Só marque a rotação como concluída depois de revogar a credencial antiga na origem — até lá, considere-a exposta."
Por isso a conexão tem um estado de rotação próprio, com três valores:
| Estado | O que significa |
|---|---|
| Sem rotação | A versão em uso é a original cadastrada. |
| Valor trocado no cofre | Existe versão nova, validada e promovida — mas ninguém confirmou que a credencial anterior foi invalidada na origem. A rotação não acabou. |
| Concluída na origem | Alguém com acesso à origem confirmou a revogação lá. Só aqui a rotação terminou. |
O ciclo de troca, na ordem em que acontece. Cada passo só roda se o anterior deu certo, e o relatório da tela mostra cada um:
- garantir o segredo no cofre (idempotente);
- criar a versão nova;
- validar — ler a versão de volta e conferir que os campos gravados são exatamente os esperados. Sem isso, promover seria um voto de confiança;
- promover — a referência passa a apontar para a versão nova;
- invalidar o cache da conexão;
- aposentar a versão anterior — desabilitada, não destruída (janela de rollback e perícia).
Se a validação (passo 3) falhar, nada é promovido: a versão nova é desabilitada e a credencial anterior continua em uso. O passo 6 é o único "melhor esforço": falhar em aposentar não desfaz uma credencial nova que já está válida — e o relatório diz que a versão antiga seguiu habilitada no cofre.
Cache. O valor resolvido fica em memória do processo, com validade de 5 minutos, e a chave do cache inclui tenant + conexão + segredo + versão. Consequências práticas:
- promover uma versão nova muda a chave, então o valor antigo não é servido por engano;
- rotação e revogação invalidam o cache na hora no processo que executou a operação;
- em outros processos (o executor dos pipelines roda em outro lugar), o teto é a validade de 5 minutos;
- o segredo nunca vai para cache externo (cache compartilhado, disco) nem para uma chave sem a versão.
Processos em andamento. A resolução acontece no início da execução. Uma execução que já começou termina com o valor que resolveu; ela não é interrompida por uma troca feita no meio. A execução seguinte resolve de novo e já usa a credencial nova — ou falha, se você revogou.
Revogação. Revogar marca a referência como revogada e desabilita a versão no cofre. Depois disso, toda resolução falha fechada. E, deliberadamente, a revogação não:
- volta para a credencial cifrada no banco (isso faria a revogação parecer aplicada sem estar);
- reabre a versão anterior;
- apaga a versão (destruir é irreversível e impediria perícia).
Sem fallback silencioso. Quando existe referência de cofre, o cofre é a única fonte. Cofre indisponível ou IAM negado interrompem a execução com mensagem acionável e código estável — nunca resolvem para um segredo global, homônimo ou de outro tenant. Referência de outro workspace ou de outra conexão é recusada antes de qualquer chamada de rede.
Família 3 — Segredos de assinatura e de cálculo#
São nossos, não da sua origem. O produto precisa do valor para assinar um token ou calcular um código — e por isso eles são cifrados (AES-256-GCM), não hasheados.
Segredo de embed do painel
- Guardado cifrado. O par é
keyId(público, viaja no token) +secret. - Rotacionar troca os dois de uma vez. Todo token já emitido para de valer
na hora, porque a verificação compara o
keyIddo token com okeyIdatual antes de olhar a assinatura. - Atualize o segredo no seu servidor antes de rotacionar, ou o painel incorporado para junto.
Semente do MFA (TOTP)
- Guardada cifrada; o verificador recalcula os códigos de seis dígitos a partir dela.
- Limitação inventariada: o leitor tolera semente legada em texto plano (cadastros anteriores à cifra). Se a decifra falhar, o valor guardado é usado como está. Cadastros antigos podem, portanto, ainda não estar cifrados.
- Não existem códigos de recuperação de uso único no produto hoje. Esta página já os listou; não há implementação correspondente. Perder o dispositivo de MFA é um caso de suporte, não de autoatendimento — ver Suporte.
Chave da conta de serviço do workspace
- Usada para acessar os recursos de nuvem do processamento; guardada cifrada ou no cofre gerenciado.
- Rotacionar invalida a chave atual: ferramentas que usam a chave antiga param. Baixe e distribua a nova antes de rotacionar.
O que é cifra e o que é verificador (tabela de conferência)#
Esta tabela descreve a implementação atual, não uma intenção.
| Credencial | Como fica guardada | Por quê |
|---|---|---|
| Senha de login | verificador (scrypt com sal) | o servidor só confere o que você digita. Definida no cadastro; sem tela de troca/redefinição hoje |
| Chave de API (dados) | verificador (SHA-256) + prefixo visível | você apresenta a chave; nós só conferimos. O prefixo identifica a chave na lista |
| Service principal | verificador (SHA-256) + prefixo + papel no envelope | idem, com o papel viajando junto (fail-closed → viewer) |
| Credencial da sua fonte | cifrada (AES-256-GCM) no banco, ou referência a uma versão no cofre de credenciais | o processamento precisa autenticar no seu banco/API. Um hash não autenticaria em lugar nenhum |
| Segredo de embed | cifrado (AES-256-GCM) | é a chave que assina os tokens do painel incorporado |
| Semente do MFA (TOTP) | cifrada (AES-256-GCM); leitura tolera legado em texto plano | o verificador recalcula os códigos a partir dela |
| Chave da conta de serviço | cifrada, ou em cofre gerenciado quando disponível | é usada para acessar os recursos de nuvem do processamento |
A chave de cifra vem de uma variável de ambiente dedicada do servidor; em produção, a ausência dela falha fechado em vez de cair num valor de desenvolvimento.
Inventário rápido#
| Credencial | Prefixo/forma | Cria/revoga | Escopo | Onde documentar |
|---|---|---|---|---|
| Chave de API (dados) | ing_live_… | só o owner | workspace (lê todos os marts publicados) | Autenticação da API |
| Service principal | sp_live_… | admin/owner | workspace/org do SP, com papel no envelope | SSO e SCIM |
| Segredo de embed | keyId público + secret | ações do workspace | um painel por token assinado | Embed SDK |
| Credencial de fonte | por conector (senha/token/OAuth/chave) | admin/owner (source.manage) | uma conexão | Conectores |
| Login/MFA | senha (verificador) + semente TOTP (cifrada) | senha: só no cadastro (sem troca por autoatendimento) · MFA: cada pessoa ativa o próprio | a própria identidade | Autenticação e MFA |
O que vale para todas#
Três coisas — e só três — valem para todas as famílias:
- Escopo por workspace. Toda credencial resolve apenas o workspace/org que a emitiu. Nenhuma cruza clientes, e a checagem de dono acontece antes de qualquer leitura.
- Menor privilégio. Um service principal
vieweré negado (403) em ações acima do papel — ver RBAC. - Nada de segredo em log, erro, auditoria, export ou DAG. Os valores não aparecem em mensagem de erro nem em linha de log; a definição do pipeline guarda a referência da conexão, nunca a credencial.
Quando rotacionar#
- Suspeita de vazamento (segredo em log, URL compartilhada, print): trate como incidente Crítico (Suporte). Para a família 2, lembre que o passo que encerra o risco é a revogação na origem.
- Saída de pessoa com acesso ao segredo.
- Higiene periódica de credenciais de integração.
Limites#
- Chave de dados = nível workspace (sem recorte por membro). Chave por
membro com RLS está no
Roadmap. - Allowlist de origens do embed é global da instância hoje (por-workspace =
Roadmap) — ver Embed. - Um único cofre externo suportado — o do próprio produto. Levar as credenciais para um cofre seu é o adicional de Gestão de Credenciais, e não está incluído no plano.
- Sem códigos de recuperação de MFA (ver família 3).
- Rotação de refresh token de alguns conectores OAuth (Bling, Conta Azul, HubSpot) não é persistida — por isso a configuração desses conectores é recusada hoje. Ver Conectores.
Erros comuns e diagnóstico#
| Sintoma | Causa provável | O que fazer |
|---|---|---|
Integração parou com 401 | chave revogada/rotacionada | atualize o integrador com a nova chave |
| Todo token de embed parou | segredo de embed foi rotacionado (troca keyId e secret) | atualize o segredo no seu servidor |
| Segredo "sumiu" após criar | família 1a: o valor cru da chave emitida só aparece 1× | gere outra chave e revogue a anterior |
| Troquei a senha e a origem ainda aceita a antiga | comportamento esperado: trocar aqui não revoga lá | revogue na origem e marque a rotação como concluída |
| Execução falhou com "credencial revogada" | a referência está revogada no cofre | cadastre credencial nova; não há volta para o valor antigo do banco |
| Execução falhou com "cofre indisponível" | cofre de credenciais fora do ar ou acesso negado | falha fechada de propósito; nada foi resolvido por aproximação |
| A execução em andamento usou a credencial velha | o segredo é resolvido no início da execução | esperado; a execução seguinte usa a nova |
| Fonte falhando após um tempo | refresh token OAuth não persistido | reconecte a fonte; esses conectores estão bloqueados hoje |
Exemplo#
Um script da Comércio Aurora (fictícia) teve a chave ing_live_… vazada num
log. Maria (owner) gera outra chave, atualiza o servidor de integração e
revoga a antiga — toda chamada com a chave vazada responde 401 na hora.
Se o que tivesse vazado fosse a senha do banco de origem, o roteiro seria outro: trocar o valor na conexão resolve qual senha o ingestia.io usa, mas quem copiou a senha antiga continua entrando no banco até alguém revogá-la no banco. Só então a rotação é marcada como concluída na origem.
Resultado esperado#
- Família 1a: a chave nova funciona e a antiga responde
401imediatamente. - Família 1b: uma senha substituída não abre sessão nova — mas a sessão que já estava aberta continua até sair ou expirar; não há revogação de sessão.
- Família 2: a versão nova é a que o produto usa; a origem só está segura depois da revogação lá, e a conexão registra esse estado.
- Família 3: o segredo novo assina/calcula, e o que dependia do antigo para de valer na hora.
- Nenhuma credencial resolve dados de outro workspace.
Relacionados#
Última revisão: 2026-09-17. As famílias, o ciclo de troca, o cache, o comportamento em execução e os limites acima foram conferidos contra o código do produto, não contra um princípio geral.