Compartilhamento de segredos criptografados para GitHub Actions

Crie e recupere links de segredos autodestrutivos em fluxos de trabalho de CI/CD — com duas linhas de YAML.

Criar um link de segredo
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.API_KEY }}
    views: 1
    expires: 24h
Recuperar e descriptografar
- uses: vaulted-fyi/share-secret/get@v1
  id: get
  with:
    url: ${{ needs.share.outputs.url }}

- run: echo "Secret is $SECRET"
  env:
    SECRET: ${{ steps.get.outputs.secret }}

Criptografado de ponta a ponta

A criptografia AES-256-GCM acontece dentro do runner do GitHub Actions. Arquitetura zero-knowledge — o servidor nunca vê o texto plano nem as chaves. A chave de descriptografia vive apenas no fragmento da URL.

Mascaramento automático de logs

Chama core.setSecret antes de setOutput para que o valor descriptografado nunca apareça nos logs do fluxo de trabalho. Segredos de várias linhas são mascarados linha a linha para proteção completa.

Sem necessidade de infraestrutura

Sem servidor Vault, sem AWS Secrets Manager, sem arquivos de configuração. Apenas duas linhas de YAML no seu fluxo de trabalho e você já tem compartilhamento de segredos criptografado.

Saídas combináveis

A ação de criação produz tanto url quanto id. Combine com notificações do Slack, comentários em PR, ações de e-mail ou qualquer passo que aceite uma entrada do tipo string.

Proteção com frase-senha

Adicione uma frase-senha opcional como segundo fator. A chave de criptografia é envolvida com PBKDF2 — mesmo que alguém intercepte o link, não consegue descriptografar sem a frase-senha.

Links autodestrutivos

Defina limites de 1 a 10 visualizações. Defina a expiração de 1 hora a 30 dias. Os segredos são excluídos automaticamente do servidor quando os limites são atingidos.

Fluxos de trabalho comuns

Publicar o link do segredo como comentário em uma PR
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.DEPLOY_TOKEN }}
    views: 1
    expires: 1h

- uses: actions/github-script@v7
  with:
    script: |
      github.rest.issues.createComment({
        owner: context.repo.owner,
        repo: context.repo.repo,
        issue_number: context.issue.number,
        body: `Deploy token: ${{ steps.share.outputs.url }}`
      })
Enviar para o Slack
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.DATABASE_URL }}
    views: 3
    expires: 7d

- uses: slackapi/slack-github-action@v2
  with:
    webhook: ${{ secrets.SLACK_WEBHOOK }}
    webhook-type: incoming-webhook
    payload: |
      {"text": "DB credentials: ${{ steps.share.outputs.url }}"}
Protegido com frase-senha
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.PROD_KEY }}
    passphrase: ${{ secrets.SHARE_PASSPHRASE }}
    views: 1
    expires: 1h

Entradas de criação

EntradaObrigatórioPadrãoDescrição
secretsimO segredo em texto plano a ser criptografado e compartilhado
viewsnão1Máximo de visualizações antes da exclusão automática (1, 3, 5, 10)
expiresnão24hTempo de expiração (1h, 24h, 7d, 30d)
passphrasenãoFrase-senha opcional para proteção adicional

Entradas de recuperação

EntradaObrigatórioPadrãoDescrição
urlsimURL do Vaulted a ser descriptografada
passphrasenãoFrase-senha caso o segredo esteja protegido