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.
- uses: vaulted-fyi/share-secret@v1
id: share
with:
secret: ${{ secrets.API_KEY }}
views: 1
expires: 24h- 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
- 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 }}`
})- 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 }}"}- uses: vaulted-fyi/share-secret@v1
id: share
with:
secret: ${{ secrets.PROD_KEY }}
passphrase: ${{ secrets.SHARE_PASSPHRASE }}
views: 1
expires: 1hEntradas de criação
| Entrada | Obrigatório | Padrão | Descrição |
|---|---|---|---|
| secret | sim | — | O segredo em texto plano a ser criptografado e compartilhado |
| views | não | 1 | Máximo de visualizações antes da exclusão automática (1, 3, 5, 10) |
| expires | não | 24h | Tempo de expiração (1h, 24h, 7d, 30d) |
| passphrase | não | — | Frase-senha opcional para proteção adicional |
Entradas de recuperação
| Entrada | Obrigatório | Padrão | Descrição |
|---|---|---|---|
| url | sim | — | URL do Vaulted a ser descriptografada |
| passphrase | não | — | Frase-senha caso o segredo esteja protegido |