Skip to main content

Esta versão do GitHub Enterprise Server foi descontinuada em 2024-03-26. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Configurando o OpenID Connect no Azure

Use OpenID Connect dentro dos seus fluxos de trabalho para efetuar a autenticação com o Azure.

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

Visão geral

O OpenID Connect (OIDC) permite aos seus fluxos de trabalho de GitHub Actions acessar recursos no Azure, sem precisar armazenar as credenciais do Azure como segredos de GitHub de longa duração.

Este guia fornece uma visão geral de como configurar o Azure para confiar no OIDC do GitHub como uma identidade federada e inclui um exemplo de fluxo de trabalho para a ação azure/login que usa tokens para se autenticar no Azure e acessar recursos.

Pré-requisitos

  • Para saber os conceitos básicos de como o GitHub usa o OIDC (OpenID Connect), além da arquitetura e dos benefícios, confira "Sobre o enrijecimento de segurança com o OpenID Connect".

  • Antes de prosseguir, você deve planejar sua estratégia de segurança para garantir que os tokens de acesso sejam atribuídos apenas de forma previsível. Para controlar como o provedor de nuvem emite os tokens de acesso, você precisa definir, pelo menos, uma condição, para que os repositórios não confiáveis não possam solicitar tokens de acesso aos seus recursos de nuvem. Para obter mais informações, confira "Sobre o enrijecimento de segurança com o OpenID Connect".

  • Habilite os seguintes pontos de extremidade publicamente acessíveis:

    • https://HOSTNAME/_services/token/.well-known/openid-configuration
    • https://HOSTNAME/_services/token/.well-known/jwks

    Observação: o Microsoft Entra ID (o antigo Azure AD) não tem intervalos de IP fixos definidos para esses pontos de extremidade.

  • Certifique-se de que o valor da declaração do emissor incluído no JSON Web Token (JWT) esteja configurado como uma URL roteável publicamente. Para obter mais informações, confira "Sobre o enrijecimento de segurança com o OpenID Connect".

Adicionando as credenciais federadas ao Azure

Provedor OIDC de GitHub funciona com a federação de identidade do Azure. Para ter uma visão geral, confira a documentação da Microsoft em "Federação de identidade de carga de trabalho".

Para configurar o provedor de identidade OIDC no Azure, você deverá definir a configuração a seguir. Para obter instruções sobre como fazer essas alterações, veja a documentação do Azure.

  1. Crie um aplicativo Entra ID e uma entidade de serviço.
  2. Adicione credenciais federadas para o aplicativo do Entra ID.
  3. Crie segredos de GitHub para armazenar a configuração do Azure.

Orientação adicional para a configuração do provedor de identidade:

Atualizar o seu fluxo de trabalho de GitHub Actions

Para atualizar seus fluxos de trabalho para o OIDC, você deverá fazer duas alterações no seu YAML:

  1. Adicionar configurações de permissões para o token.
  2. Use a ação azure/login para trocar o token OIDC (JWT) por um token de acesso à nuvem.

Observação: quando os ambientes são usados em fluxos de trabalho ou em políticas OIDC, recomendamos adicionar regras de proteção ao ambiente para segurança adicional. Por exemplo, você pode configurar regras de implantação em um ambiente para restringir quais ramificações e tags podem ser implantadas no ambiente ou acessar segredos de ambiente. Para obter mais informações, confira "Usando ambientes para implantação".

Adicionando configurações de permissões

 A execução de trabalho ou de fluxo de trabalho exige uma configuração permissions com id-token: write. Você não poderá solicitar o token de ID JWT do OIDC se a configuração permissions de id-token for definida como read ou none.

A configuração id-token: writepermite que o JWT seja solicitado do provedor OIDC do GitHub usando uma destas abordagens:

  • Usando variáveis de ambiente no executor (ACTIONS_ID_TOKEN_REQUEST_URL e ACTIONS_ID_TOKEN_REQUEST_TOKEN).
  • Usando getIDToken() por meio do kit de ferramentas do Actions.

Se você precisar buscar um token OIDC para um fluxo de trabalho, a permissão poderá ser definida no nível do fluxo de trabalho. Por exemplo:

YAML
permissions:
  id-token: write # This is required for requesting the JWT
  contents: read  # This is required for actions/checkout

Se você só precisa obter um token OIDC para um único trabalho, essa permissão poderá ser definida dentro desse trabalho. Por exemplo:

YAML
permissions:
  id-token: write # This is required for requesting the JWT

Solicitando o token de acesso

A ação azure/login recebe um JWT do provedor OIDC do GitHub e solicita um token de acesso da sua instância do Azure. Para obter mais informações, confira a documentação azure/login.

O exemplo a seguir troca um token de ID do OIDC com o Azure para receber um token de acesso, que pode, em seguida, ser usado para acessar os recursos da nuvem.

YAML
name: Run Azure Login with OIDC
on: [push]

permissions:
  id-token: write
  contents: read
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 'Az CLI login'
        uses: azure/login@v1
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: 'Run az commands'
        run: |
          az account show
          az group list

Leitura adicional