GitHub Actions es la plataforma de integración continua y entrega continua (CI/CD) de GitHub que permite a los equipos de desarrollo automatizar su flujo de trabajo, incluidos los procesos de creación, prueba y despliegue.
Una desventaja de utilizar GitHub Actions es que tus registros son públicos, y cualquiera puede acceder a ellos con los permisos necesarios.
Para evitar que los datos sensibles queden expuestos en los registros de GitHub Actions, debes utilizar variables de entorno encriptadas para almacenar los datos sensibles de forma segura. Estas variables de entorno encriptadas se conocen como GitHub Actions Secrets.
Este artículo te muestra cómo utilizar GitHub Actions Secrets para evitar que aparezca información sensible en tus registros de GitHub Actions.
Requisitos Previos:
Para seguir este tutorial:
- Asegúrate de que tienes una cuenta de GitHub.
- Tener un repositorio GitHub existente. Para este tutorial, puedes clonar este repositorio de demostración.
- Sigue estas instrucciones para clonar el repositorio de demostración.
Cómo Mantener Seguros Tus Registros de GitHub Action
Cuando creas flujos de trabajo utilizando GitHub Actions, cualquier visitante de tu repositorio puede ver los registros, por lo que no deberían incluir información sensible. Sin embargo, no puedes eliminar sin más tus tokens, contraseñas y otra información sensible — los necesitas para las pruebas y para que tu aplicación funcione correctamente.
La solución es ocultarlos con el comando de flujo de trabajo ::add-mask::
, que pone un asterisco (*) en lugar de los datos sensibles a los que se aplica.
La siguiente sección te muestra cómo enmascarar un registro.
Cómo Enmascarar Registros
Primero, abre el repositorio clonado en tu editor de texto.
Crea el directorio .github/workflows/ en el root de tu repositorio para almacenar los archivos de tu flujo de trabajo. A continuación, crea un nuevo archivo llamado hide-secrets.yml en el directorio .github/workflows y añádele el siguiente código:
name: Hide Sensitive Information
on: push
jobs:
print-secret-token:
runs-on: ubuntu-latest
steps:
- name: echo a secret
run: echo "your secret token is verySecretToken"
Confirma los cambios y envíalos a tu repositorio de GitHub. El flujo de trabajo GitHub Actions actualizado estará activo y se activará cada vez que envíes un nuevo cambio.
Abre tu repositorio en GitHub y selecciona la pestaña Acciones para ver los registros. Tu flujo de trabajo debería aparecer como sigue:
Examinando los registros del flujo de trabajo, encontrarás la cadena verySecretToken
impresa en los registros. Haz clic en tu flujo de trabajo y, a continuación, en el nombre de la tarea (print-secret-token) para ver el registro. Debería tener este aspecto
Para ocultarlo, utiliza el comando ::add-mask::
, edita el archivo hide-secrets.yml y añade un nuevo paso al trabajo print-secret-token
:
name: Hide Sensitive Information
on: push
jobs:
print-secret-token:
runs-on: ubuntu-latest
steps:
- name: Add Mask
run: echo "::add-mask::verySecretToken"
- name: echo a secret
run: echo "your secret token is verySecretToken"
Debes añadir el paso Add Mask
al principio, ya que el enmascaramiento sólo se aplica después de que se haya ejecutado ::add-mask::
. Si colocas el secret verySecretToken
antes del paso Add Mask
, seguirá apareciendo sin enmascarar. Así que, para asegurarte de que el valor está enmascarado, es esencial que utilices ::add-mask::
lo antes posible.
Una vez que confirmes y publiques tus modificaciones en tu repositorio de GitHub, la cadena verySecretToken
será sustituida por asteriscos (*) siempre que aparezca en tus registros:
Aunque esto soluciona el problema del enmascaramiento, introduce uno nuevo. Tu verySecretToken
sigue estando en el archivo de flujo de trabajo, por lo que cualquiera con acceso al código fuente puede verlo.
Otro inconveniente de enmascarar texto plano es que si enmascaras sólo una parte de una palabra, se ocultarán todas las instancias de la misma. Por ejemplo, toma la siguiente frase «Programar es genial, pero mis días más productivos son aquellos en los que no escribo un programa» Si enmascaras la palabra «programa», no sólo enmascarará la palabra al final de la frase, sino también en cualquier otro lugar donde aparezca, como en «programación»
Si intentas enmascarar texto sin formato, acabarás con algo así:
Un enfoque mejor para ocultar datos sensibles en los registros GitHub Actions es utilizar GitHub Actions de GitHub, como se demuestra en el siguiente apartado.
Cómo Utilizar GitHub Actions Secrets
Puedes utilizar GitHub Actions Secrets para almacenar cualquier dato privado que quieras utilizar en tu flujo de trabajo de acciones de GitHub. Los secrets se crean como pares clave/valor a nivel de repositorio u organización.
Mientras que ese repositorio sólo puede acceder a los secrets creados a nivel de repositorio, los secrets creados a nivel de organización son compartidos por todos los repositorios de una organización.
Los secrets creados a nivel de repositorio están disponibles para ser utilizados en acciones por cualquiera que tenga permisos de rol de colaborador. Puedes cambiar el valor de tus secrets en cualquier momento. Sin embargo, los secrets no pueden utilizarse con flujos de trabajo de un repositorio bifurcado.
Se aplican las siguientes directrices para nombrar los secretos:
- Los nombres de los secrets no pueden contener espacios.
- Los nombres de secrets no distinguen mayúsculas de minúsculas.
- Los nombres secrets no pueden empezar por un número.
- Los nombres de secrets no pueden empezar por el prefijo
GITHUB_
. - Los nombres de los secrets deben ser únicos — no pueden existir secrets con el mismo nombre en el mismo nivel.
Puedes utilizar estos secrets dentro del flujo de trabajo de las acciones de GitHub simplemente añadiendo secrets
antes de tu nombre secrets como una variable YML, como se muestra a continuación:
${{ secrets.MY_SECRET_TOKEN }}
También puedes enmascarar secrets para mayor seguridad, como se muestra en el siguiente apartado.
Cómo Enmascarar Secrets
En primer lugar, crea un secret de GitHub. En tu repositorio en GitHub, haz clic en la pestaña Settings, selecciona Secrets > Actions en la barra lateral izquierda y, a continuación, haz clic en New repository secret para añadir un nuevo secreto:
Dale a tu secret un nombre y un valor secreto, y luego haz clic en Add secret:
Ahora que has creado tu secret y le has dado el valor verySecretToken
, puedes utilizarlo en tu archivo de flujo de trabajo. Abre tu archivo hide-secrets.yml y realiza los siguientes cambios:
name: Hide Sensitive Information
on: push
jobs:
print-secret-token:
runs-on: ubuntu-latest
steps:
- name: Add Mask
run: echo "::add-mask::${{ secrets.MY_SECRET_TOKEN }}"
- name: Echo a secret
run: echo "your secret token is ${{ secrets.MY_SECRET_TOKEN }}"
La única diferencia entre este código y el anterior es que has sustituido el token secret por tu recién creado secret de GitHub «${{ secrets.MY_SECRET_TOKEN }}
.»
Una vez que confirmes el código y envíes los cambios a tu repositorio de GitHub, tus secrets estarán ocultos:
Resumen
No debes revelar ninguna información sensible en tus registros GitHub Action. El enmascaramiento de texto plano es una forma de ocultar datos, pero cualquiera que acceda a tus archivos de flujo de trabajo puede ver la información que intentas ocultar.
Como demuestra este tutorial, GitHub Actions Secret es un enfoque mucho más seguro para salvaguardar tus datos sensibles, y luego enmascararlos.
Lee nuestra documentación para saber más sobre el uso de Git en Kinsta. Prueba ahora gratis nuestro Alojamiento de Aplicaciones.
Deja una respuesta