Pular para o conteúdo
Fale conosco

Moatgator Vault

Um lugar para os segredos do seu backend, do seu CI e do seu app móvel

Coloque uma referência mg:// onde antes ficava o valor. A CLI, o GitHub Actions e o SDK móvel resolvem na hora de rodar, e o seu app só recebe um segredo em aparelho que passou no Attest.

Incluído a partir do plano Startup.

terminalExemplo
$ moatgator secrets run --env-file .env.tpl -- npm start$ moatgator secrets inject -i .env.tpl -o .env$ moatgator secrets get mg://api/prod/DATABASE_URL

Referências mg://

Versione a referência, não o valor

Uma referência aponta um projeto, um ambiente e um segredo, como em mg://api/prod/DATABASE_URL. Ela pode ficar no Git: só uma identidade com acesso a transforma em valor.

  1. 01

    Um .env.tpl no repositório

    Mantenha um modelo com referências. O moatgator secrets inject grava o .env com permissão 0600 e não sobrescreve um arquivo existente sem --force.

    .env.tplExemplo
    # .env.tpl: safe to commitDATABASE_URL=mg://api/prod/DATABASE_URLSTRIPE_KEY=mg://api/prod/STRIPE_KEYSENTRY_DSN=mg://api/prod/SENTRY_DSN
  2. 02

    moatgator secrets run

    Roda o seu comando com os segredos como variáveis de ambiente e esconde os valores na saída do comando. O moatgator secrets get lê uma referência só.

    terminalExemplo
    $ moatgator secrets run --env-file .env.tpl -- npm start$ moatgator secrets inject -i .env.tpl -o .env$ moatgator secrets get mg://api/prod/DATABASE_URL
  3. 03

    A mesma referência no app

    No SDK Android, Moatgator.vault.get("mg://mobile/prod/PARTNER_KEY") lê o ambiente vinculado ao app no console. O valor nunca vai dentro do APK.

    KotlinExemplo
    // Android (Kotlin), off the main threadMoatgator.startSession(playIntegrityProvider)val key = Moatgator.vault.get("mg://mobile/prod/PARTNER_KEY")

Projetos, ambientes e versões

  • Projetos e ambientes

    Todo projeto nasce com dev, staging e prod. Crie ambientes próprios quando precisar.

  • Herança e sobrescrita

    Um ambiente pode herdar de outro, até três níveis. Um segredo com o mesmo nome sobrescreve o herdado.

  • Ambientes protegidos

    O prod nasce protegido: só donos e admins leem os valores ou gravam nele.

  • Versões e rollback

    Toda mudança cria uma versão com histórico. O rollback cria uma versão nova, então o histórico nunca é reescrito.

  • Revogação imediata

    Revogue um segredo ou um token de serviço e a próxima leitura é recusada, sem esperar data de validade.

  • Papéis

    Os papéis de dono, admin, dev e leitor decidem quem vê os valores e quem os altera.

Só em aparelho atestado

O mesmo segredo, entregue ao seu app móvel só em aparelho que passou no Attest

Gerenciadores de segredos costumam atender servidores, desenvolvedores e CI. O Vault atende também o app na mão do seu usuário: o SDK pede na hora de rodar, a API confere o Attest do aparelho (Play Integrity ou App Attest, mais os sinais do RASP da Moatgator) e envia o valor cifrado para uma chave efêmera daquela sessão. Nada vai para o binário.

O SDK guarda o valor só em memória, nunca em disco nem em log. As referências mg:// estão disponíveis no SDK Android.

Políticas por segredo

  • Veredito mínimoEscolha o menor veredito do Attest que pode receber cada segredo.
  • Atestação da plataforma obrigatóriaExija o resultado da atestação da plataforma, não só os sinais do próprio SDK.
  • Idade máxima da atestaçãoRecuse o segredo quando a atestação do aparelho for mais antiga do que você permite.

CI e servidores

Nenhum token de longa duração guardado no seu CI

A Action moatgator-hq/github-action/vault troca o token OIDC do job por um token de leitura que dura 15 minutos. Pull requests nunca recebem token. Onde não houver OIDC, use um token de serviço.

  • Tokens de serviço (mgvt_…) são só de leitura e presos a um projeto e aos ambientes que você escolher.
  • A validade é obrigatória: 90 dias por padrão, no máximo um ano.
  • Os valores ficam mascarados no log do job e nunca viram saída de um passo.
  • Uma referência que não resolve reprova o passo sem exportar nada.
.github/workflows/deploy.ymlExemplo
permissions: { contents: read, id-token: write }steps:  - uses: moatgator-hq/github-action/vault@v1    with:      project-id: vpj_…      secrets: |        DATABASE_URL=mg://api/prod/DATABASE_URL  - run: ./deploy.sh   # $DATABASE_URL, *** in the log

Sync e rotação

Leve os segredos para onde você faz deploy, e troque-os no prazo

Um sync mantém um ambiente, com herança, copiado nos secrets do GitHub Actions, no Railway ou no Vercel. Ele roda ao ser criado e de novo a cada mudança nesse ambiente ou num ambiente do qual ele herda.

  • Secrets do GitHub Actions

    Sync para um repositório ou para um ambiente do GitHub. Cada valor é cifrado com a chave pública do repositório antes de sair da Moatgator.

  • Railway

    Sync para as variáveis de um projeto e ambiente do Railway, ou de um único serviço.

  • Vercel

    Sync para as variáveis de production, preview ou development de um projeto do Vercel, gravadas como variáveis cifradas.

  • Permissão explícita e status

    Você confirma cada destino e dá a ele um token só daquele destino, guardado cifrado. Cada sync mostra quando rodou pela última vez, quantos segredos gravou e qualquer erro.

Rotação agendada

  • Um valor aleatório novo no prazoPara segredos que só a sua empresa usa, como chaves de HMAC e segredos de sessão: a Moatgator gera um valor novo, cria uma versão e roda os syncs.
  • Um lembrete para chaves de outros provedoresPara uma chave emitida por outro serviço, donos e admins recebem um e-mail no vencimento, e o console mostra a rotação como atrasada até um valor novo ser salvo.

Um sync só grava no destino, e apaga lá só os segredos que ele mesmo gravou. Apagar um sync deixa o destino como está.

Cifrado por organização, auditado em cada leitura

  • Cifra em envelope por tenant

    Cada organização tem a própria chave, embrulhada por uma chave mestra.

  • Texto cifrado amarrado ao lugar

    Cada texto cifrado fica amarrado ao projeto, ao ambiente, ao nome e à versão, e não pode ser levado para outro segredo.

  • Valores fora dos logs

    Os valores dos segredos nunca vão para os nossos logs, e a CLI e a Action os escondem na sua saída.

  • Trilha de auditoria de cada leitura

    Em cada leitura: quem leu, por onde, qual versão e o resultado.

Comparar

Moatgator Vault, 1Password e Doppler

1Password e Doppler são gerenciadores de segredos consolidados, e os dois fazem boa parte do que o Vault faz. A tabela mostra onde cada um está, com fonte pública e a data em que conferimos em cada célula sobre eles. O Vault não é um gerenciador de senhas para pessoas: o foco é app, CI e aparelho móvel.

Recursos de gerenciamento de segredos, lado a lado
RecursoMoatgator Vault1PasswordDoppler
Referências no lugar do valor

mg://projeto/ambiente/NOME, também no SDK móvel

1

op://cofre/item/campo

Parcial23

referências ${…} dentro do Doppler; templates {{.NAME}} para arquivos

Rodar um comando com os segredos como variáveis de ambiente

valores escondidos na saída

4

op run, valores mascarados na saída por padrão

56

doppler run; mascaramento da saída não documentado na CLI

Gerar um arquivo a partir de um modelo

arquivo gravado com permissão 0600

7

op inject

3

secrets substitute e --mount

Ambientes com herança

até 3 níveis, sobrescrita pelo nome

Parcial8

Environments existem, independentes entre si

910

branch configs herdam da config raiz; herança entre configs no Team e no Enterprise

Histórico de versões e rollback

o rollback cria versão nova

11

histórico do item e restauração

12

rollback a partir dos logs

Tokens de máquina restritos e com validade

só leitura, por projeto e ambiente, validade obrigatória

1314

service accounts com permissão por cofre e validade opcional

15

service tokens por config, validade opcional

Revogação imediata de token1615
CI com OIDC, sem token guardado

GitHub Actions, token de 15 minutos

Parcial1718

a load-secrets-action usa token guardado; Credential Broker com OIDC em prévia pública

196

service account identities, planos Team e Enterprise

Sync com GitHub Actions, Railway e Vercel

a cada mudança; só grava, apaga só o que gravou

Parcial820

Environments com sync para o AWS Secrets Manager (beta); GitHub, Railway e Vercel não encontrados

2122

integrações com GitHub, Vercel e Railway enviam os segredos sozinhas

Rotação agendadaParcial

valor aleatório novo para segredos seus; lembrete por e-mail para chaves de terceiros

Não encontrado na documentação pública2316

tokens de service account trocados à mão; rotação agendada de segredos guardados não encontrada

24

rotação automática de serviços suportados, como bancos de dados, nos planos Team e Enterprise

Papéis e produção protegida

dono, admin, dev e leitor; prod protegido

258

permissões por cofre e por Environment

26

papéis por projeto e por ambiente

Auditoria de cada leitura de segredo

quem, por onde, versão e resultado

27

relatórios de uso no 1Password Business

Parcial28

o access log guarda a primeira e a última leitura de cada ator

Entrega ao app móvel só em aparelho atestado

Attest mais RASP, cifrado por sessão

Não encontrado na documentação pública2930

não encontrado na documentação dos SDKs e do Connect

Não encontrado na documentação pública3121

não encontrado na documentação dos SDKs e das integrações

Onde o 1Password é forte

  • Criptografia de ponta a ponta, com uma Secret Key que nunca é enviada à 1Password.3233
  • O op run mascara os valores dos segredos na saída do comando por padrão.4
  • SDKs oficiais para Go, JavaScript e Python.29

Onde o Doppler é forte

  • Uma lista documentada de integrações nativas com plataformas de nuvem e de CI.21
  • O doppler run --mount entrega os segredos por um named pipe efêmero, em vez de um arquivo em disco.5
  • Uma chave de cifra por workplace e chaves gerenciadas pelo cliente (EKM) no plano Enterprise.3435

Fontes

  1. 1. 1Password CLI — Secret references · conferido em
  2. 2. Doppler — Secrets (referencing) · conferido em
  3. 3. Doppler — Secret injection with templates · conferido em
  4. 4. 1Password CLI — op run · conferido em
  5. 5. Doppler — Accessing secrets (run, --mount) · conferido em
  6. 6. Doppler — GitHub OIDC examples · conferido em
  7. 7. 1Password — Load secrets into config files (op inject) · conferido em
  8. 8. 1Password Environments · conferido em
  9. 9. Doppler — Branch configs · conferido em
  10. 10. Doppler — Config inheritance · conferido em
  11. 11. 1Password — View and restore previous versions of items · conferido em
  12. 12. Doppler — Versioning · conferido em
  13. 13. 1Password CLI — op service-account · conferido em
  14. 14. 1Password CLI — op connect · conferido em
  15. 15. Doppler — Service tokens · conferido em
  16. 16. 1Password — Manage service accounts · conferido em
  17. 17. 1Password — GitHub Actions (load-secrets-action) · conferido em
  18. 18. 1Password Credential Broker — GitHub Actions (public preview) · conferido em
  19. 19. Doppler — Service account identities (OIDC) · conferido em
  20. 20. 1Password — Sync Environments to AWS Secrets Manager (beta) · conferido em
  21. 21. Doppler — Integrations · conferido em
  22. 22. Doppler — GitHub Actions integration · conferido em
  23. 23. 1Password Secrets Automation · conferido em
  24. 24. Doppler — Secrets rotation · conferido em
  25. 25. 1Password — Create, share, and manage vaults · conferido em
  26. 26. Doppler — Project permissions · conferido em
  27. 27. 1Password — Reports (usage reports) · conferido em
  28. 28. Doppler — Access logs · conferido em
  29. 29. 1Password SDKs · conferido em
  30. 30. 1Password Connect · conferido em
  31. 31. Doppler — Future SDKs and integration roadmap · conferido em
  32. 32. 1Password — About the 1Password security model · conferido em
  33. 33. 1Password — About your Secret Key · conferido em
  34. 34. Doppler — Security fact sheet · conferido em
  35. 35. Doppler — Pricing · conferido em

1Password e Doppler são marcas dos seus donos, citadas só para identificar os produtos comparados. O que dizemos sobre eles vem da documentação pública deles na data indicada. “Não encontrado” quer dizer que não achamos nas páginas citadas, não que o produto não tenha. Se algo mudou, escreva para nós que corrigimos.

Planos

O Vault está incluído nos planos Startup, Scale e Enterprise.

PlanoProjetos por organizaçãoSegredos por ambiente
Startup5100
Scale50500
Enterprise2001.000
Ver todos os planos

Perguntas frequentes

Preciso mudar o meu código para usar o Vault?

Em servidor e CI, não: o seu código continua lendo variáveis de ambiente, e você inicia o processo com o moatgator secrets run ou com a Action do GitHub. No app Android, chame Moatgator.vault.get com a referência.

Quem tem o meu APK consegue ler um segredo do Vault?

O valor não está no APK. A API só o envia para um aparelho que passou no Attest conforme a política do segredo, cifrado para aquela sessão, e o SDK o guarda só em memória. Um aparelho ainda pode ser comprometido depois de passar, então mantenha as checagens no servidor para tudo que movimenta dinheiro.

E se um token de serviço vazar?

Revogue no console e o próximo pedido é recusado. Tokens de serviço são só de leitura, limitados a um projeto e aos ambientes escolhidos, e vencem em 90 dias por padrão.

O Vault substitui o 1Password ou o Doppler?

Não necessariamente. Se você já usa um deles para servidor e CI, ele pode ficar. O Vault acrescenta a entrega ao seu app móvel em aparelho atestado, e também atende servidor e CI se você preferir uma ferramenta só.

Quais planos incluem o Vault?

Startup, Scale e Enterprise. Projetos por organização: 5, 50 e 200. Segredos por ambiente: 100, 500 e 1.000.

Comece com um segredo

Crie um projeto, cadastre um segredo e resolva pela CLI, pelo seu CI ou pelo seu app.