Segredos dinâmicos e concessão temporária
Credenciais de curta duração e expiração automática.
Segredos dinâmicos e concessão temporária é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.
Segredos estáticos e dinâmicos
Um segredo estático é criado uma vez e reutilizado indefinidamente — por exemplo, a mesma senha de banco de dados que dez serviços compartilham durante anos. Segredos estáticos são o padrão e também o problema: têm longa duração, são amplamente compartilhados e são difíceis de renovar.
Um segredo dinâmico é gerado sob demanda, é exclusivo para um consumidor e expira automaticamente. Em vez de armazenar uma senha, o Vault cria uma credencial totalmente nova cada vez que uma é solicitada.
Essa única mudança resolve as partes mais difíceis do gerenciamento de segredos: a renovação se torna automática, e o raio de impacto de qualquer vazamento diminui para quase zero.
Como funcionam os segredos dinâmicos
Os segredos dinâmicos exigem que o Vault tenha acesso privilegiado ao sistema de destino. O fluxo para um banco de dados é o seguinte:
- Um administrador configura o Vault com uma credencial raiz do banco de dados e um modelo de criação.
- Um aplicativo se autentica e solicita uma credencial.
- O Vault executa
CREATE USERno banco de dados e retorna um nome de usuário e uma senha novos. - Quando a concessão expira, o Vault executa
DROP USERautomaticamente.
O aplicativo nunca vê uma senha de longa duração: recebe uma temporária, vinculada à sua identidade e à sua concessão.
# Configure Vault's database engine with a creation statement
vault write database/roles/billing-readonly \
db_name=appdb \
creation_statements="CREATE ROLE \"{{name}}\" LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON billing TO \"{{name}}\";" \
default_ttl="1h" max_ttl="24h"Solicitando uma credencial dinâmica
Quando um aplicativo precisa acessar um banco de dados, ele solicita uma credencial ao Vault. A resposta contém um nome de usuário e uma senha exclusivos e recém-criados, além de uma concessão que descreve por quanto tempo são válidos.
Cada consumidor recebe sua própria credencial. Se duas instâncias do mesmo serviço forem iniciadas, elas receberão dois nomes de usuário diferentes, possibilitando a auditoria por consumidor no nível do banco de dados.
vault read database/creds/billing-readonly
# Example response:
# lease_id database/creds/billing-readonly/abc123
# lease_duration 1h
# password A1b-2Cd3-temp-xyz
# username v-approle-billing-9f3a2Concessões: o contrato de tempo de vida
Uma concessão é um contrato que determina por quanto tempo este segredo é válido. Todo segredo dinâmico carrega um TTL (tempo de vida) e um TTL máximo opcional.
- default_ttl: por quanto tempo a credencial permanece válida antes de expirar.
- max_ttl: o limite absoluto, mesmo com renovações.
Quando a concessão expira, o Vault revoga a credencial e exclui ativamente o usuário do banco de dados. A expiração não é apenas um sinalizador; ela aciona uma limpeza real. É isso que torna os segredos dinâmicos vazados autorregeneráveis: uma credencial roubada se torna inútil dentro da janela do TTL.
Renovando e revogando concessões
Aplicativos de execução prolongada que ultrapassam a duração de uma concessão devem renová-la antes que expire. A renovação estende o TTL até o TTL máximo; depois disso, o aplicativo deve solicitar uma credencial nova.
Os operadores também podem revogar uma concessão imediatamente — o interruptor de emergência durante um incidente. Revogar uma concessão exclui a credencial subjacente na mesma hora, independentemente do TTL restante.
Você pode até revogar todas as concessões sob um prefixo para interromper instantaneamente um serviço ou ambiente inteiro.
# Renew a lease before it expires
vault lease renew database/creds/billing-readonly/abc123
# Revoke a single lease immediately (incident kill switch)
vault lease revoke database/creds/billing-readonly/abc123
# Revoke every lease under a path prefix
vault lease revoke -prefix database/creds/billing-readonlyAlém dos bancos de dados
Os segredos dinâmicos não se limitam aos bancos de dados. O Vault e ferramentas semelhantes geram credenciais de curta duração para muitos sistemas:
- IAM na nuvem: chaves temporárias de acesso a AWS/GCP/Azure por meio da assunção de função no estilo STS.
- SSH: certificados SSH assinados e de curta duração, em vez de chaves estáticas.
- PKI/TLS: certificados emitidos sob demanda com validade curta.
- RabbitMQ, MongoDB, Consul: credenciais efêmeras de serviço.
O padrão é idêntico em todos os casos: solicitar, usar brevemente e expirar automaticamente. Chaves estáticas de nuvem e longa duração são uma fonte frequente de violações; credenciais dinâmicas de IAM as eliminam.
# Generate temporary AWS credentials scoped to a role
vault read aws/creds/deploy-role
# returns short-lived access_key, secret_key, security_token
# Sign an SSH key for short-lived access (valid minutes, not forever)
vault write ssh/sign/admin public_key=@id_ed25519.pub ttl=15mPor que os segredos dinâmicos reduzem o raio de impacto
Considere uma credencial vazada em cada modelo:
- Estático: a senha permanece válida até que uma pessoa perceba o problema, faça sua renovação e atualize todos os consumidores. A janela de exposição dura dias ou meses.
- Dinâmico: a credencial expira dentro do seu TTL (geralmente entre alguns minutos e uma hora) e tem escopo restrito a um consumidor, com permissões mínimas. A janela de exposição é minúscula e o dano é contido.
Os segredos dinâmicos transformam a renovação de um projeto manual e penoso em uma propriedade automática e contínua do sistema.
A compensação da credencial raiz
Os segredos dinâmicos são poderosos, mas exigem que o Vault mantenha uma credencial raiz altamente privilegiada para cada sistema de destino no qual possa criar os usuários que emite. Isso concentra o risco no Vault.
Medidas de proteção:
- Renove a própria credencial raiz, para que nem mesmo o Vault mantenha a senha de administrador original.
- Restrinja a conta raiz exatamente às permissões necessárias para criar e excluir usuários, e nada mais.
- Isole e monitore rigorosamente o host do Vault, pois ele agora é um alvo de alto valor.
O Vault pode renovar sua própria credencial raiz para que, após a configuração, nenhuma pessoa saiba qual ela é.
# After configuring the engine, rotate the root credential
# so even operators no longer know the original password
vault write -force database/rotate-root/appdbLidando com a expiração no código do aplicativo
Os aplicativos precisam ser escritos para esperar que as credenciais mudem. Com segredos estáticos, o código lê uma senha uma vez na inicialização. Com segredos dinâmicos, o código precisa:
- Obter uma credencial e registrar o TTL da sua concessão.
- Renovar a concessão ou obter uma credencial nova novamente antes da expiração.
- Reconectar-se de forma transparente quando uma credencial antiga for revogada.
Um padrão comum é um agente auxiliar que gerencia o ciclo de vida da concessão e reescreve um arquivo local de segredo, para que o aplicativo simplesmente recarregue sua configuração. Os conjuntos de conexões também precisam ser atualizados, para que não continuem usando uma credencial expirada.
# Vault Agent auto-renews and re-templates on rotation
auto_auth { method "approle" { ... } }
template {
contents = "{{ with secret \"database/creds/billing-readonly\" }}{{ .Data.username }}:{{ .Data.password }}{{ end }}"
destination = "/run/secrets/db"
command = "systemctl reload billing-app"
}Quando os segredos estáticos são inevitáveis
Nem todo segredo pode ser dinâmico. Algumas APIs de terceiros fornecem uma única chave de longa duração que não pode ser gerada sob demanda. Para esses segredos estáticos, aplique medidas de proteção compensatórias:
- Armazene-os no Vault, nunca no código.
- Restrinja-os ao privilégio mínimo.
- Renove-os conforme uma programação (isso será abordado na próxima lição).
- Monitore seu uso em busca de anomalias.
A regra geral é: prefira o dinâmico; quando for obrigado a usar o estático, renove-o e audite-o continuamente.
Segredos dinâmicos em CI/CD
Os fluxos de CI/CD são um caso de uso ideal. Tradicionalmente, um fluxo mantém chaves de implantação de longa duração, o que representa um alvo valioso. Com segredos dinâmicos, o fluxo:
- Autentica-se no Vault usando sua identidade OIDC (por exemplo, um token OIDC do GitHub Actions).
- Solicita credenciais de nuvem de curta duração, válidas somente durante a tarefa.
- Permite que elas expirem automaticamente quando a tarefa termina.
Nunca existe uma chave de implantação de longa duração. Um registro de fluxo comprometido vaza uma credencial que já está inválida quando alguém o lê.
# GitHub Actions job exchanges its OIDC token for a short-lived AWS role
# No static AWS keys stored as repo secrets
permissions:
id-token: write
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123:role/deploy
aws-region: eu-central-1Verificação rápida
Teste sua compreensão das concessões e dos segredos dinâmicos.
Recapitulação: segredos dinâmicos e concessões
Você aprendeu como as credenciais de curta duração e com expiração automática transformam o gerenciamento de segredos.
- Os segredos dinâmicos são gerados sob demanda, exclusivos para cada consumidor e expiram automaticamente, ao contrário dos segredos estáticos reutilizados.
- Uma concessão define um TTL e um TTL máximo; na expiração, o Vault revoga a credencial e realiza uma limpeza efetiva.
- As concessões podem ser renovadas por aplicativos de execução prolongada ou revogadas instantaneamente como um interruptor de emergência durante um incidente.
- Os segredos dinâmicos funcionam para bancos de dados, IAM na nuvem, SSH, PKI e muito mais, reduzindo o raio de impacto e automatizando a renovação.
- A compensação é manter uma credencial raiz privilegiada no Vault: renove-a e restrinja rigorosamente seu escopo.
- Os aplicativos e os fluxos de CI/CD precisam ser escritos para lidar com a expiração; prefira o dinâmico e renove os segredos estáticos quando forem inevitáveis.
Em seguida, abordaremos a rotação de chaves e a detecção de vazamentos quando eles conseguirem passar pelos controles.
Perguntas Frequentes
A aula “Segredos dinâmicos e concessão temporária” é grátis?
Sim — o texto completo de “Segredos dinâmicos e concessão temporária” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.
O que vou aprender em “Segredos dinâmicos e concessão temporária”?
Credenciais de curta duração e expiração automática. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cyber Security Academy?
Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Segredos dinâmicos e concessão temporária”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cyber Security Academy?
Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O problema da proliferação de segredos
- Cofres e armazenamentos de segredos
- Segredos dinâmicos e concessão temporária
- Rotação e detecção de chaves