Publique a partir do GitHub Actions usando autenticação multifator
O GitHub Actions é uma excelente plataforma para criar pipelines de CI/CD para seus projetos. A StepSecurity cria soluções de segurança de código aberto para plataformas CI/CD. Temos o prazer de anunciar que estamos lançando uma nova ação do GitHub chamada Wait-for-secrets . Wait-for-secrets permite o uso de autenticação multifator para fluxos de trabalho de liberação.
O GitHub é a maior plataforma de hospedagem para projetos de código aberto. Os mantenedores desses projetos publicam em registros de pacotes populares, como o registro npm e o DockerHub.
O uso de fato dos mantenedores padrão é publicar a partir de seus computadores pessoais. A liberação de pacotes de uma máquina de desenvolvedor local cria um risco de segurança. O artefato de construção pode ser adulterado se a máquina do desenvolvedor estiver comprometida. Também dificulta a geração de proveniência e a validação do processo de liberação por outras pessoas.
A publicação usando plataformas de CI/CD, como o GitHub Actions, ajuda a resolver esses problemas. Os executores hospedados do GitHub Actions, por exemplo, são VMs efêmeras, em que cada trabalho é executado em uma nova VM separada.
A desvantagem de publicar a partir de um pipeline de CI/CD é que os desenvolvedores perdem a capacidade de usar a autenticação multifator. Registros de pacotes, como npm e PyPi, reforçam a autenticação multifator para pacotes populares. Mas, para publicar a partir de CI/CD, os desenvolvedores até agora tiveram que usar tokens de automação de fator único.
A StepSecurity criou a ação GitHub Wait-For-Secrets para oferecer aos desenvolvedores o melhor das duas opções. Para publicar a partir de um pipeline de CI/CD e usar a autenticação multifator para o processo de lançamento.
Estudo de caso
O popular pacote eslint-plugin-react usa Wait-for-secrets para publicar no registro npm usando uma senha única (OTP).
Aqui está um depoimento de Jordan Harband (https://github.com/ljharb), que o integrou ao fluxo de trabalho de lançamento do pacote eslint-plugin-react:
> Por anos, resisti a publicar da CI — publicar é a única ação verdadeiramente irrevogável e acredito fortemente que deveria exigir intervenção humana manual. Este é um dos primeiros fluxos de trabalho de “publicação de CI com interação humana manual” que eu vi que não exige que eu hospede nada, não perde o “dois fatores” usando um único fator de um token secreto e funciona tão bem no desktop quanto no celular.
> Vou abstrair isso em um fluxo de trabalho reutilizável em breve, para que eu possa usá-lo em muitos outros pacotes. Isso também me permitirá começar ergonomicamente usando o Github Releases pela primeira vez, pois posso encadear uma ação pós-publicação que cria automaticamente o texto do lançamento com base no meu changelog; Também posso conectar Slack e notificações push móveis. Isso resultará em uma porcentagem significativa do tráfego de download do npm não mais dependente apenas da segurança do meu computador pessoal.
O fluxo de trabalho de liberação se parece com isso.
Aqui está uma captura de tela do log de compilação mostrando eslint-plugin-react publicado usando uma senha de uso único (OTP).
Integrando espera por segredos em seu fluxo de trabalho do GitHub Actions
Para integrar a ação do GitHub Wait-for-secrets em seu fluxo de trabalho de publicação, siga estas etapas:
- Adicione a Ação Wait-for-secrets antes da etapa em que você precisa do segredo de publicação.
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. Quando estiver pronto para publicar, clique no URL no log de construção. Um site será aberto com detalhes sobre a execução do fluxo de trabalho.
4. Insira as credenciais temporárias, como uma senha única neste site.
5. A etapa de ação Wait-for-secrets receberá o token de autenticação multifator e interromperá o bloqueio. A etapa de publicação pode usar o token e prosseguir com a publicação.
Esperar por segredos O GitHub Action e a API de back-end que ele usa são de código aberto. Você pode encontrar fluxos de trabalho de amostra neste repositório:
https://github.com/step-security/wait-for-secrets





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)