GitHub Actions için şifrelenmiş gizli paylaşımı

CI/CD iş akışlarında kendi kendini imha eden gizli bağlantılar oluştur ve al — iki satır YAML ile.

Bir gizli bağlantı oluştur
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.API_KEY }}
    views: 1
    expires: 24h
Al ve şifresini çöz
- 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 }}

Uçtan uca şifrelenmiş

AES-256-GCM şifrelemesi GitHub Actions runner içinde gerçekleşir. Sıfır bilgi mimarisi — sunucu hiçbir zaman düz metin veya anahtarları görmez. Şifre çözme anahtarı yalnızca URL parçasında yaşar.

Otomatik günlük maskeleme

Çözülen değerin iş akışı günlüklerinde hiç görünmemesi için setOutput'tan önce core.setSecret çağrılır. Çok satırlı gizliler tam koruma için satır satır maskelenir.

Altyapı gerekmez

Vault sunucusu yok, AWS Secrets Manager yok, yapılandırma dosyası yok. İş akışında sadece iki satır YAML ile şifrelenmiş gizli paylaşımına kavuşursun.

Birleştirilebilir çıktılar

Oluşturma eylemi hem url hem id çıktısı verir. Slack bildirimleri, PR yorumları, e-posta eylemleri veya dize girişi kabul eden herhangi bir adımla birleştir.

Passphrase koruması

İkinci faktör olarak isteğe bağlı passphrase ekle. Şifreleme anahtarı PBKDF2 ile sarmalanır — biri bağlantıyı ele geçirse bile passphrase olmadan şifresini çözemez.

Kendi kendini imha eden bağlantılar

Görüntüleme sınırını 1 ile 10 görüntüleme arasında ayarla. Son kullanma süresini 1 saatten 30 güne kadar belirle. Sınırlara ulaşıldığında gizliler otomatik olarak sunucudan silinir.

Yaygın iş akışları

Gizli bağlantıyı PR yorumu olarak gönder
- 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 }}`
      })
Slack'e gönder
- 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 }}"}
Passphrase korumalı
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.PROD_KEY }}
    passphrase: ${{ secrets.SHARE_PASSPHRASE }}
    views: 1
    expires: 1h

Oluşturma girdileri

GirdiZorunluVarsayılanAçıklama
secretevetŞifrelenip paylaşılacak düz metin gizlisi
viewshayır1Otomatik silme öncesi maksimum görüntüleme (1, 3, 5, 10)
expireshayır24hSon kullanma süresi (1h, 24h, 7d, 30d)
passphrasehayırEkstra koruma için isteğe bağlı passphrase

Alma girdileri

GirdiZorunluVarsayılanAçıklama
urlevetŞifresi çözülecek Vaulted URL'si
passphrasehayırGizli korumalıysa passphrase