Publicar desde GitHub Actions usando autenticación multifactor
GitHub Actions es una plataforma excelente para crear canalizaciones de CI/CD para sus proyectos. StepSecurity crea soluciones de seguridad de código abierto para plataformas CI/CD. Nos complace anunciar que estamos lanzando una nueva GitHub Action llamada Wait-for-secrets . Wait-for-secrets permite el uso de la autenticación multifactor para los flujos de trabajo de lanzamiento.
GitHub es la plataforma de alojamiento más grande para proyectos de código abierto. Los mantenedores de estos proyectos publican en registros de paquetes populares, como el registro npm y DockerHub.
El uso estándar de facto de los mantenedores es publicar desde sus computadoras personales. La liberación de paquetes desde una máquina de desarrollador local crea un riesgo de seguridad. El artefacto de compilación puede alterarse si la máquina del desarrollador se ve comprometida. También dificulta generar la procedencia y que otros validen el proceso de liberación.
La publicación mediante plataformas de CI/CD como GitHub Actions ayuda a resolver estos problemas. Los ejecutores alojados de GitHub Actions, por ejemplo, son máquinas virtuales efímeras, donde cada trabajo se ejecuta en una máquina virtual nueva e independiente.
La desventaja de publicar desde una canalización de CI/CD es que los desarrolladores pierden la capacidad de usar la autenticación multifactor. Los registros de paquetes, como npm y PyPi, imponen la autenticación multifactor para paquetes populares. Pero para publicar desde CI/CD, los desarrolladores hasta ahora han tenido que usar tokens de automatización de un solo factor.
StepSecurity creó la acción Wait-For-Secrets GitHub para brindarles a los desarrolladores lo mejor de ambas opciones. Para publicar desde una canalización de CI/CD y usar la autenticación multifactor para el proceso de publicación.
Caso de estudio
El popular paquete eslint-plugin-react usa Wait-for-secrets para publicar en el registro npm usando una contraseña de un solo uso (OTP).
Aquí hay un testimonio de Jordan Harband (https://github.com/ljharb), quien lo integró en el flujo de trabajo de lanzamiento del paquete eslint-plugin-react:
> Durante años, me he resistido a publicar desde CI: publicar es la única acción verdaderamente irrevocable y creo firmemente que debería requerir la intervención humana manual. Este es uno de los primeros flujos de trabajo de "publicación desde CI con interacción humana manual" que he visto que no requiere que yo mismo hospede nada, no pierde el "dos factores" al usar un solo factor de un token secreto, y funciona tan bien en el escritorio como en el móvil.
> Voy a resumir esto en un flujo de trabajo reutilizable pronto, para poder usarlo en muchos más de mis paquetes. Esto también me permitirá comenzar a usar Github Releases de manera ergonómica por primera vez, ya que puedo encadenar una acción posterior a la publicación que crea automáticamente el texto del lanzamiento en función de mi registro de cambios; También puedo conectar Slack y notificaciones push móviles. Esto dará como resultado que un porcentaje significativo del tráfico de descargas de npm ya no dependa únicamente de la seguridad de mi computadora personal.
El flujo de trabajo de lanzamiento se ve así.
Aquí hay una captura de pantalla del registro de compilación que muestra eslint-plugin-react publicado con una contraseña de un solo uso (OTP).
Integración de Wait-for-secrets en su flujo de trabajo de GitHub Actions
Para integrar Wait-for-secrets GitHub Action en su flujo de trabajo de publicación, siga estos pasos:
- Agregue la acción Wait-for-secrets antes del paso en el que necesita el secreto de publicación.
name: Wait-for-secrets Demo
on: workflow_dispatch
jobs:
build:
permissions:
id-token: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: step-security/wait-for-secrets@v1
id: get-otp
with:
secrets: |
DUMMY_SECRET:
name: 'Dummy secret'
description: 'Dummy secret to demo wait-for-secrets'
- run: |
echo ${{ steps.get-otp.outputs.DUMMY_SECRET }}
3. Cuando esté listo para publicar, haga clic en la URL en el registro de compilación. Se abrirá un sitio web con detalles sobre la ejecución del flujo de trabajo.
4. Ingrese las credenciales temporales, como una contraseña de un solo uso en este sitio web.
5. El paso de acción Wait-for-secrets recibirá el token de autenticación multifactor y dejará de bloquear. El paso de publicación puede usar el token y continuar con la publicación.
Wait-for-secrets GitHub Action y la API de back-end que utiliza son de código abierto. Puede encontrar ejemplos de flujos de trabajo en este repositorio:
https://github.com/step-security/wait-for-secrets

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































