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.

Einen Geheimnis-Link erstellen
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.API_KEY }}
    views: 1
    expires: 24h
Abrufen und entschlüsseln
- 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

Geheimnis-Link als PR-Kommentar posten
- 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 }}`
      })
An Slack senden
- 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 }}"}
Mit Passphrase geschützt
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.PROD_KEY }}
    passphrase: ${{ secrets.SHARE_PASSPHRASE }}
    views: 1
    expires: 1h

Create-Inputs

InputErforderlichStandardBeschreibung
secretjaDas Klartext-Geheimnis zum Verschlüsseln und Teilen
viewsnein1Max. Aufrufe vor automatischem Löschen (1, 3, 5, 10)
expiresnein24hGültigkeitsdauer (1h, 24h, 7d, 30d)
passphraseneinOptionale Passphrase für zusätzlichen Schutz

Get-Inputs

InputErforderlichStandardBeschreibung
urljaVaulted-URL zum Entschlüsseln
passphraseneinPassphrase, falls das Geheimnis geschützt ist