Zaszyfrowane udostępnianie sekretów dla GitHub Actions
Twórz i pobieraj samodestrukcyjne linki do sekretów w przepływach CI/CD — za pomocą dwóch linii 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 }}Szyfrowanie end-to-end
Szyfrowanie AES-256-GCM odbywa się wewnątrz runnera GitHub Actions. Architektura zero-knowledge — serwer nigdy nie widzi plaintextu ani kluczy. Klucz deszyfrowania istnieje tylko we fragmencie URL.
Automatyczne maskowanie logów
Wywołuje core.setSecret przed setOutput, dzięki czemu odszyfrowana wartość nigdy nie pojawia się w logach przepływu pracy. Wieloliniowe sekrety są maskowane wiersz po wierszu dla pełnej ochrony.
Bez potrzeby infrastruktury
Żadnego serwera Vault, żadnego AWS Secrets Manager, żadnych plików konfiguracyjnych. Tylko dwie linie YAML w twoim przepływie pracy i masz zaszyfrowane udostępnianie sekretów.
Komponowalne wyjścia
Akcja tworzenia zwraca zarówno url, jak i id. Komponuj z powiadomieniami Slack, komentarzami do PR, akcjami e-mail lub dowolnym krokiem akceptującym dane tekstowe.
Ochrona hasłem
Dodaj opcjonalne hasło (passphrase) jako drugi czynnik. Klucz szyfrowania jest owijany za pomocą PBKDF2 — nawet jeśli ktoś przechwyci link, nie może odszyfrować bez hasła.
Samodestrukcyjne linki
Ustaw limity wyświetleń od 1 do 10. Ustaw czas wygaśnięcia od 1 godziny do 30 dni. Sekrety są automatycznie usuwane z serwera po osiągnięciu limitów.
Typowe przepływy pracy
- 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: 1hDane wejściowe tworzenia
| Dane wejściowe | Wymagane | Domyślne | Opis |
|---|---|---|---|
| secret | tak | — | Sekret w postaci plaintextu do zaszyfrowania i udostępnienia |
| views | nie | 1 | Maks. wyświetleń przed automatycznym usunięciem (1, 3, 5, 10) |
| expires | nie | 24h | Czas wygaśnięcia (1h, 24h, 7d, 30d) |
| passphrase | nie | — | Opcjonalne hasło dla dodatkowej ochrony |
Dane wejściowe pobierania
| Dane wejściowe | Wymagane | Domyślne | Opis |
|---|---|---|---|
| url | tak | — | Adres URL Vaulted do odszyfrowania |
| passphrase | nie | — | Hasło, jeśli sekret jest chroniony |