Usar o GitHub Actions para conectar-se ao Azure

Saiba como usar o logon do Azure com o Azure PowerShell ou a CLI do Azure para interagir com seus recursos do Azure.

Para usar o Azure PowerShell ou a CLI do Azure e um fluxo de trabalho do GitHub Actions, primeiro você precisa fazer logon com a ação do logon do Azure.

A ação de logon do Azure dá suporte a duas maneiras diferentes de autenticação com o Azure:

Por padrão, a ação de logon faz logon com a CLI do Azure e configura o ambiente de execução de Ações do GitHub para a CLI do Azure. Você pode usar o Azure PowerShell com a propriedade enable-AzPSSession da ação de logon do Azure. Isso configura o ambiente de execução de Ações do GitHub com o módulo PowerShell do Azure.

Você pode usar o logon do Azure para se conectar a nuvens públicas ou soberanas, incluindo o Azure Government e o Azure Stack Hub.

Usar a ação de logon do Azure com OpenID Connect

Para configurar um logon do Azure com o OpenID Connect e usá-lo em um fluxo de trabalho do GitHub Actions, você precisará de:

  • Um aplicativo Microsoft Entra, com uma entidade de serviço que foi atribuída com uma função apropriada à sua assinatura.
  • Um aplicativo Microsoft Entra configurado com uma credencial federada para confiar em tokens emitidos por Ações do GitHub para seu repositório do GitHub. Você pode configurar isso no portal do Azure ou com APIs REST do Microsoft Graph.
  • Um fluxo de trabalho de Ações do GitHub que solicita tokens de emissão do GitHub para o fluxo de trabalho e usa a ação de logon do Azure.

Criar um aplicativo e uma entidade de serviço do Microsoft Entra

Você precisará criar um aplicativo e uma entidade de serviço do Microsoft Entra e, em seguida, atribuir uma função em sua assinatura ao seu aplicativo para que seu fluxo de trabalho tenha acesso à sua assinatura.

  1. Se você não tiver um aplicativo existente, registre um novo aplicativo e entidade de serviço do Microsoft Entra que possa acessar recursos. Como parte desse processo, é necessário:

    • Registre seu aplicativo com o Microsoft Entra ID e crie uma entidade de serviço
    • Atribuir uma função ao aplicativo
  2. Selecionar o aplicativo em Registros de aplicativo no portal do Azure e encontrar o aplicativo. Copiar os valores de ID do Aplicativo (cliente) e de ID do Diretório (locatário) para serem usados no fluxo de trabalho do GitHub Actions.

  3. Abrir Assinaturas no portal do Azure e encontrar sua assinatura. Copie a ID da assinatura.

Adicionar credenciais federadas

Você pode adicionar credenciais federadas no portal do Azure ou com a API REST do Microsoft Graph.

  1. Acesse Registros de aplicativo no portal do Azure e abra o aplicativo que você deseja configurar.
  2. No aplicativo, acesse Certificados e segredos.
    Select Certificates & secrets.
  3. Na guia Credenciais federadas, selecione Adicionar credencial. Add the federated credential
  4. Selecione o cenário de credencial GitHub Actions implantando recursos do Azure. Gere sua credencial inserindo os detalhes dela.
Campo Descrição Exemplo
Organização O nome da organização do GitHub ou do nome de usuário do GitHub. contoso
Repositório O seu nome do repositório GitHub. contoso-app
Tipo de entidade O filtro usado para delimitar as solicitações OIDC de fluxos de trabalho do GitHub. Esse campo é usado para gerar a declaração subject. Environment, , , BranchPull requestTag
Nome do GitHub O nome do ambiente, do branch ou da marca. main
Nome Identificador para a credencial federada. contoso-deploy

Para obter uma visão geral mais detalhada, confira Configurar um aplicativo para confiar em um repositório GitHub.

Criar segredos do GitHub

Você precisa fornecer a ID do cliente, a ID do locatário e a ID da assinatura do seu aplicativo para a ação de logon. Esses valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados em seu fluxo de trabalho. Salvar os valores como segredos do GitHub é a opção mais segura.

  1. Abra o repositório do GitHub e vá para Configurações.

    Select Settings in the navigation

  2. Selecione Segurança > Segredos e variáveis > Ações.

    Choose to add a secret

  3. Crie segredos para AZURE_CLIENT_ID, AZURE_TENANT_ID e AZURE_SUBSCRIPTION_ID. Use esses valores do seu aplicativo do Azure Active Directory para seus segredos do GitHub:

    Segredo do GitHub Aplicativo do Azure Active Directory
    AZURE_CLIENT_ID ID do aplicativo (cliente)
    AZURE_TENANT_ID ID do diretório (locatário)
    AZURE_SUBSCRIPTION_ID ID da assinatura
  4. Salve cada segredo selecionando Adicionar segredo.

Configurar o logon do Azure com a autenticação OpenID Connect

O fluxo de trabalho do GitHub Actions usa o OpenID Connect para autenticar com o Azure. Para saber mais sobre essa interação, confira a documentação do GitHub Actions.

Neste exemplo, você usará a CLI do Azure do OpenID Connect para autenticar com o Azure com a ação de logon do Azure. O exemplo usa segredos do GitHub para os valores client-id, tenant-id e subscription-id. Você também pode passar esses valores diretamente na ação de logon.

A ação de logon do Azure inclui um parâmetro de entrada opcional audience que tem api://AzureADTokenExchangecomo padrão . Você pode atualizar esse parâmetro para valores de audiência personalizados.

Esse fluxo de trabalho autentica com o OpenID Connect e usa a CLI do Azure para obter os detalhes da assinatura conectada e do grupo de recursos de lista.

name: Run Azure Login with OpenID Connect
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 Azure CLI commands'
      run: |
          az account show
          az group list
          pwd 

Verificar o logon bem-sucedido do Azure com OpenID

Abra a ação Az CLI login e verifique se ela foi executada com êxito. Você deve ver a mensagem Login successful. Se o seu logon não for bem-sucedido, você verá a mensagem Az CLI Login failed..

GitHub Actions Azure Login successful.

Usar a ação de logon do Azure com um segredo de entidade de serviço

Para usar o logon do Azure com uma entidade de serviço, primeiro você precisa adicionar sua entidade de serviço do Azure como um segredo ao repositório GitHub.

Criar uma entidade de serviço

Neste exemplo, você criará um segredo chamado AZURE_CREDENTIALS que pode ser usado para fazer a autenticação com o Azure.

  1. Abra o Azure Cloud Shell no portal do Azure ou na CLI do Azure localmente.

    Observação

    Se estiver usando o Azure Stack Hub, você precisará definir o ponto de extremidade de gerenciamento do SQL como not supported. az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Crie uma entidade de serviço no portal do Azure para seu aplicativo. A entidade de serviço deve ser atribuída com uma função apropriada.

        az ad sp create-for-rbac --name "myApp" --role contributor \
                                    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                                    --json-auth
    

    O parâmetro --json-auth gera o dicionário de resultados aceito pela ação de logon, acessível nas versões >da CLI do Azure = 2.51.0. Versões anteriores a essa usam --sdk-auth com um aviso de substituição.

  3. Copie o objeto JSON da entidade de serviço.

    {
        "clientId": "<GUID>",
        "clientSecret": "<GUID>",
        "subscriptionId": "<GUID>",
        "tenantId": "<GUID>",
        (...)
    }
    

Adicionar a entidade de serviço como um segredo do GitHub

  1. No GitHub, acesse seu repositório.

  2. Acesse Configurações no menu de navegação.

  3. Selecione Segurança > Segredos e variáveis > Ações.

    Screenshot of select Actions menu item.

  4. Selecione Novo segredo de repositório.

  5. Cole toda a saída JSON do comando da CLI do Azure no campo valor do segredo. Dê ao segredo o nome AZURE_CREDENTIALS.

  6. Selecione Adicionar segredo.

Usar a ação de logon do Azure

Use o segredo da entidade de serviço com a ação de Logon do Azure para autenticar no Azure.

Neste fluxo de trabalho, você autentica usando a ação de logon do Azure com os detalhes da entidade de serviço armazenados em secrets.AZURE_CREDENTIALS. Em seguida, você executa uma ação da CLI do Azure. Para obter mais informações sobre como consultar os segredos do GitHub em um arquivo do fluxo de trabalho, confira Usando segredos criptografados em um fluxo de trabalho, nos Documentos do GitHub.

Quando tiver uma etapa de logon do Azure em funcionamento, você poderá usar as ações do Azure PowerShell ou da CLI do Azure. Você também pode usar outras ações do Azure, como implantar aplicativo Web do Azure e as funções do Azure.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'

Usar a ação do Azure PowerShell

Neste exemplo, você faz logon com a ação de Logon do Azure e depois recupera um grupo de recursos com a ação do Azure PowerShell.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'
          enable-AzPSSession: true
      - name: Azure PowerShell Action
        uses: Azure/powershell@v1
        with:
          inlineScript: Get-AzResourceGroup -Name "< YOUR RESOURCE GROUP >"
          azPSVersion: "latest"

Usar a ação da CLI do Azure

Neste exemplo, você faz logon com a ação de logon do Azure e, em seguida, recupera um grupo de recursos com a ação da CLI do Azure.

on: [push]

name: AzureLoginSample

jobs:
build-and-deploy:
  runs-on: ubuntu-latest
  steps:

    - name: Log in with Azure
      uses: azure/login@v1
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Azure CLI script
      uses: azure/CLI@v1
      with:
          azcliversion: 2.0.72
          inlineScript: |
            az account show
            az storage -h

Conectar-se às nuvens do Azure Government e do Azure Stack Hub

Para fazer logon em uma das nuvens do Azure Government, defina o ambiente do parâmetro opcional com os nomes de nuvem com suporte AzureUSGovernment ou AzureChinaCloud. Se esse parâmetro não for especificado, ele usará o valor padrão AzureCloud e se conectará à nuvem pública do Azure.

   - name: Login to Azure US Gov Cloud with CLI
     uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
          environment: 'AzureUSGovernment'
          enable-AzPSSession: false
   - name: Login to Azure US Gov Cloud with Az Powershell
      uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
          environment: 'AzureUSGovernment'
          enable-AzPSSession: true

Conectar-se com outros serviços do Azure

Os artigos a seguir fornecem detalhes sobre como se conectar ao GitHub por meio do Azure e de outros serviços.

Microsoft Entra ID

Power BI

Conectores

Azure Databricks