Condivisione sicura di segreti cifrati per GitHub Actions

Crea e recupera link segreti autodistruttivi nei workflow CI/CD — con due righe di YAML.

Crea un link segreto
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.API_KEY }}
    views: 1
    expires: 24h
Recupera e decifra
- 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

Pubblica il link segreto come commento 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 }}`
      })
Invia a 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 }}"}
Protetto da passphrase
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.PROD_KEY }}
    passphrase: ${{ secrets.SHARE_PASSPHRASE }}
    views: 1
    expires: 1h

Input create

InputObbligatorioPredefinitoDescrizione
secretIl segreto in testo in chiaro da cifrare e condividere
viewsno1Visualizzazioni massime prima dell'eliminazione automatica (1, 3, 5, 10)
expiresno24hTempo di scadenza (1h, 24h, 7d, 30d)
passphrasenoPassphrase opzionale per protezione aggiuntiva

Input get

InputObbligatorioPredefinitoDescrizione
urlURL Vaulted da decifrare
passphrasenoPassphrase se il segreto è protetto