Compartición de secretos cifrados para GitHub Actions

Crea y recupera enlaces de secretos autodestructivos en flujos de trabajo de CI/CD — con dos líneas de YAML.

Crear un enlace de secreto
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.API_KEY }}
    views: 1
    expires: 24h
Recuperar y descifrar
- 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 }}

Cifrado de extremo a extremo

El cifrado AES-256-GCM ocurre dentro del runner de GitHub Actions. Arquitectura de conocimiento cero — el servidor nunca ve el texto plano ni las claves. La clave de descifrado vive únicamente en el fragmento de la URL.

Enmascarado automático de registros

Llama a core.setSecret antes de setOutput para que el valor descifrado nunca aparezca en los registros del flujo de trabajo. Los secretos de varias líneas se enmascaran línea a línea para una protección completa.

Sin necesidad de infraestructura

Sin servidor Vault, sin AWS Secrets Manager, sin archivos de configuración. Solo dos líneas de YAML en tu flujo de trabajo y ya tienes compartición de secretos cifrada.

Salidas combinables

La acción de creación produce tanto url como id. Combínala con notificaciones de Slack, comentarios en PR, acciones de correo o cualquier paso que acepte una entrada de tipo cadena.

Protección con frase de contraseña

Añade una frase de contraseña opcional como segundo factor. La clave de cifrado se envuelve con PBKDF2 — incluso si alguien intercepta el enlace, no puede descifrarlo sin la frase de contraseña.

Enlaces autodestructivos

Establece límites de 1 a 10 visualizaciones. Establece la caducidad de 1 hora a 30 días. Los secretos se eliminan automáticamente del servidor cuando se alcanzan los límites.

Flujos de trabajo comunes

Publicar el enlace del secreto como comentario en una PR
- 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 }}`
      })
Enviar a Slack
- 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 }}"}
Protegido con frase de contraseña
- uses: vaulted-fyi/share-secret@v1
  id: share
  with:
    secret: ${{ secrets.PROD_KEY }}
    passphrase: ${{ secrets.SHARE_PASSPHRASE }}
    views: 1
    expires: 1h

Entradas de creación

EntradaObligatorioPor defectoDescripción
secretEl secreto en texto plano que se va a cifrar y compartir
viewsno1Máximo de visualizaciones antes del autoborrado (1, 3, 5, 10)
expiresno24hTiempo de caducidad (1h, 24h, 7d, 30d)
passphrasenoFrase de contraseña opcional para protección adicional

Entradas de recuperación

EntradaObligatorioPor defectoDescripción
urlURL de Vaulted que se va a descifrar
passphrasenoFrase de contraseña si el secreto está protegido