Condivisione sicura di segreti cifrati per GitHub Actions
Crea e recupera link segreti autodistruttivi nei workflow CI/CD — con due righe di 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 }}Crittografia end-to-end
La crittografia AES-256-GCM avviene all'interno del runner GitHub Actions. Architettura zero-knowledge — il server non vede mai testo in chiaro né chiavi. La chiave di decifratura vive solo nel frammento URL.
Mascheramento automatico dei log
Chiama core.setSecret prima di setOutput in modo che il valore decifrato non appaia mai nei log del workflow. I segreti multiriga vengono mascherati riga per riga per una protezione completa.
Nessuna infrastruttura necessaria
Nessun server Vault, nessun AWS Secrets Manager, nessun file di configurazione. Solo due righe di YAML nel tuo workflow e hai la condivisione sicura di segreti cifrati.
Output componibili
L'action create restituisce sia url che id. Componibile con notifiche Slack, commenti PR, action email o qualsiasi step che accetta un input stringa.
Protezione con passphrase
Aggiungi facoltativamente una passphrase come secondo fattore. La chiave di cifratura viene avvolta con PBKDF2 — anche se qualcuno intercetta il link, non può decifrarlo senza la passphrase.
Link autodistruttivi
Imposta limiti di visualizzazione da 1 a 10 visualizzazioni. Imposta la scadenza da 1 ora a 30 giorni. I segreti vengono eliminati automaticamente dal server quando i limiti vengono raggiunti.
Workflow comuni
- 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: 1hInput create
| Input | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|
| secret | sì | — | Il segreto in testo in chiaro da cifrare e condividere |
| views | no | 1 | Visualizzazioni massime prima dell'eliminazione automatica (1, 3, 5, 10) |
| expires | no | 24h | Tempo di scadenza (1h, 24h, 7d, 30d) |
| passphrase | no | — | Passphrase opzionale per protezione aggiuntiva |
Input get
| Input | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|
| url | sì | — | URL Vaulted da decifrare |
| passphrase | no | — | Passphrase se il segreto è protetto |