Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Creating and using encrypted secrets

Encrypted secrets allow you to store sensitive information, such as access tokens, in your repository.

Acciones de GitHub is available with GitHub gratis, GitHub Pro, Equipo de GitHub, and Nube de GitHub Enterprise. Acciones de GitHub is unavailable for per-repository plans, which are legacy billing plans. For more information, see "GitHub's products."

En este artículo

Anyone with write access to a repository can create, read, and use secrets.

About encrypted secrets

Los secretos son variables de entorno cifradas creadas en un repositorio y solo pueden ser utilizadas por Acciones de GitHub. GitHub cifra secretos en el navegador web usando el cifrado autenticado de clave pública y el algoritmo de cifras Poly1305. Para obtener más información, consulta la documentación de "TweetNaCl.js". Para hacer que un secreto esté disponible para una acción, debes configurar el secreto como una variable de entrada o de entorno en tu archivo de flujo de trabajo.

GitHub redacta automáticamente los secretos impresos en el registro, pero debes evitar imprimir secretos en el registro de manera intencional.

Creating encrypted secrets

Los nombres de los secretos no pueden incluir espacios. To ensure that GitHub redacts your secret in logs, avoid using structured data as the values of secrets. For example, avoid creating secrets that contain JSON or encoded Git blobs.

  1. En GitHub, visita la página principal del repositorio.

  2. Under your repository name, click Settings.

    Repository settings button

  3. En la barra lateral izquierda, haz clic en Secrets.

  4. Escribe un nombre para tu secreto en el cuadro de entrada "Name".

  5. Escribe el valor de tu secreto.

  6. Haz clic en Add secret (Agregar secreto).

Para pasar un secreto a una acción, configura el secreto como una variable de entrada o de entorno en tu flujo de trabajo. Revisa el archivo README de la acción para saber qué variables de entrada y de entorno espera la acción. Para obtener más información, consulta "Sintaxis del flujo de trabajo paraAcciones de GitHub".

Using encrypted secrets in a workflow

Con la excepción de GITHUB_TOKEN, los secretos no se pasan al ejecutador cuando un flujo de trabajo se dispara desde un repositorio bifurcado.

To provide an action with a secret as an input or environment variable, you can use the secrets context to access secrets you've created in your repository. For more information, see "Contexts and expression syntax for Acciones de GitHub" and "Workflow syntax for Acciones de GitHub."

steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}

Límites para los secretos

Your workflow can have up to 100 secrets. The names of secret environment variables must be unique in a repository.

Los secretos tienen un tamaño máximo de 64 KB. Para usar secretos de un tamaño mayor a 64 KB, puedes almacenar los secretos cifrados en tu repositorio y guardar la contraseña de descifrado como un secreto en GitHub. Por ejemplo, puedes usar gpg para cifrar tus credenciales de manera local antes de verificar el archivo en tu repositorio en GitHub. Para obtener más información, consulta la página del manual "gpg".

Advertencia: Ten la precaución de evitar que tus secretos se impriman cuando se ejecuta tu acción. Cuando usas esta solución, GitHub no redacta los secretos que están impresos en los registros.

  1. Ejecuta el siguiente comando en tu terminal para cifrar el archivo my_secret.json usando gpg y el algoritmo de cifras AES256.

    $ gpg --symmetric --cipher-algo AES256 my_secret.json
  2. Se te pedirá que ingreses una contraseña. Recuerda la contraseña, porque deberás crear un nuevo secreto en GitHub que use esa contraseña como valor.

  3. Crea un nuevo secreto en tu repositorio para almacenar la contraseña. Por ejemplo, crea un nuevo secreto con el nombre LARGE_SECRET_PASSPHRASE y establece el valor del secreto para la contraseña que seleccionaste en el paso anterior.

  4. Copia tu archivo cifrado en tu repositorio y confírmalo. En este ejemplo, el archivo cifrado es my_secret.json.gpg.

  5. Crea un script shell para descifrar la contraseña. Guarda este archivo como decrypt_secret.sh.

    #!/bin/sh
    
    # Decrypt the file
    mkdir $HOME/secrets
    # --batch to prevent interactive command --yes to assume "yes" for questions
    gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
    --output $HOME/secrets/my_secret.json my_secret.json.gpg
  6. Asegúrate de que tu shell script sea ejecutable antes de verificarlo en tu repositorio.

    $ chmod +x decrypt_secret.sh
    $ git add decrypt_secret.sh
    $ git commit -m "Add new decryption script"
    $ git push
  7. En tu flujo de trabajo, usa un step para llamar al shell script y descifrar el secreto. Para tener una copia de tu repositorio en el entorno virtual en el que se ejecuta tu flujo de trabajo, será necesario que uses la acción actions/checkout/. Haz referencia a tu shell script usando el comando run relacionado con la raíz de tu repositorio.

    name: Workflows with large secrets
    
    on: push
    
    jobs:
      my-job:
        name: My Job
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v1
          - name: Decrypt large secret
            run: ./.github/scripts/decrypt_secret.sh
            env:
              LARGE_SECRET_PASSPHRASE: $
          # Este comando es solo un ejemplo para mostrar cómo se imprime tu secreto.
          # Asegúrate de eliminar las declaraciones impresas de tus secretos. GitHub 
          # no oculta los secretos que usan esta solución.
          - name: Test printing your secret (Elimina este paso en la producción)
            run: cat $HOME/secrets/my_secret.json

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos