Partage de secrets chiffrés pour GitHub Actions
Crée et récupère des liens de secrets autodestructeurs dans tes workflows CI/CD — avec deux lignes 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 }}Chiffré de bout en bout
Le chiffrement AES-256-GCM s'effectue à l'intérieur du runner GitHub Actions. Architecture zero-knowledge — le serveur ne voit jamais le texte en clair ni les clés. La clé de déchiffrement vit uniquement dans le URL fragment.
Masquage automatique des logs
Appelle core.setSecret avant setOutput pour que la valeur déchiffrée n'apparaisse jamais dans les logs du workflow. Les secrets multilignes sont masqués ligne par ligne pour une protection complète.
Aucune infrastructure requise
Pas de serveur Vault, pas d'AWS Secrets Manager, pas de fichiers de configuration. Juste deux lignes de YAML dans ton workflow et tu disposes d'un partage de secrets chiffré.
Sorties composables
L'action de création produit à la fois url et id. Combine-la avec des notifications Slack, des commentaires de PR, des actions d'e-mail ou toute étape qui accepte une entrée de type chaîne.
Protection par phrase secrète
Ajoute une phrase secrète optionnelle comme second facteur. La clé de chiffrement est encapsulée avec PBKDF2 — même si quelqu'un intercepte le lien, il ne peut pas déchiffrer sans la phrase secrète.
Liens autodestructeurs
Définis des limites de consultations de 1 à 10. Définis une expiration de 1 heure à 30 jours. Les secrets sont automatiquement supprimés du serveur lorsque les limites sont atteintes.
Workflows courants
- 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: 1hEntrées de création
| Entrée | Requis | Par défaut | Description |
|---|---|---|---|
| secret | oui | — | Le secret en texte en clair à chiffrer et partager |
| views | non | 1 | Consultations max. avant suppression automatique (1, 3, 5, 10) |
| expires | non | 24h | Délai d'expiration (1h, 24h, 7d, 30d) |
| passphrase | non | — | Phrase secrète optionnelle pour une protection supplémentaire |
Entrées de récupération
| Entrée | Requis | Par défaut | Description |
|---|---|---|---|
| url | oui | — | URL Vaulted à déchiffrer |
| passphrase | non | — | Phrase secrète si le secret est protégé |