Verschlüsseltes Teilen von Geheimnissen für GitHub Actions
Erstelle und rufe selbstzerstörende Geheimnis-Links in CI/CD-Workflows ab — mit zwei Zeilen 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 }}Ende-zu-Ende-verschlüsselt
AES-256-GCM-Verschlüsselung findet innerhalb des GitHub Actions Runners statt. Zero-Knowledge-Architektur — der Server sieht weder Klartext noch Keys. Der Verschlüsselungsschlüssel lebt ausschließlich im URL-Fragment.
Automatisches Log-Masking
Ruft core.setSecret vor setOutput auf, damit der entschlüsselte Wert niemals in Workflow-Logs erscheint. Mehrzeilige Geheimnisse werden zeilenweise maskiert für vollständigen Schutz.
Keine Infrastruktur nötig
Kein Vault-Server, kein AWS Secrets Manager, keine Konfigurationsdateien. Nur zwei Zeilen YAML in deinem Workflow — und du hast verschlüsseltes Teilen von Geheimnissen.
Kombinierbare Ausgaben
Die Create-Action gibt sowohl url als auch id aus. Kombiniere mit Slack-Benachrichtigungen, PR-Kommentaren, E-Mail-Actions oder jedem Schritt, der einen String-Input akzeptiert.
Passphrase-Schutz
Füge optional eine Passphrase als zweiten Faktor hinzu. Der Verschlüsselungsschlüssel wird mit PBKDF2 gewrappt — selbst wenn jemand den Link abfängt, kann er ihn ohne die Passphrase nicht entschlüsseln.
Selbstzerstörende Links
Setze Aufruflimits von 1 bis 10 Aufrufen. Stelle die Gültigkeitsdauer von 1 Stunde bis 30 Tage ein. Geheimnisse werden automatisch vom Server gelöscht, wenn die Limits erreicht sind.
Typische Workflows
- 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: 1hCreate-Inputs
| Input | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
| secret | ja | — | Das Klartext-Geheimnis zum Verschlüsseln und Teilen |
| views | nein | 1 | Max. Aufrufe vor automatischem Löschen (1, 3, 5, 10) |
| expires | nein | 24h | Gültigkeitsdauer (1h, 24h, 7d, 30d) |
| passphrase | nein | — | Optionale Passphrase für zusätzlichen Schutz |
Get-Inputs
| Input | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
| url | ja | — | Vaulted-URL zum Entschlüsseln |
| passphrase | nein | — | Passphrase, falls das Geheimnis geschützt ist |