Usar ações do GitHub para se conectar 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 em um fluxo de trabalho de Ações do GitHub, você precisa primeiro fazer logon com a ação de logon do Azure.

A ação de início de sessão do Azure suporta duas formas 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 runner do GitHub Actions para a CLI do Azure. Você pode usar o Azure PowerShell com enable-AzPSSession a propriedade da ação de logon do Azure. Isso configura o ambiente runner do GitHub Actions com o módulo do Azure PowerShell.

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 o OpenID Connect

Para configurar um Logon do Azure com o OpenID Connect e usá-lo em um fluxo de trabalho de Ações do GitHub, você precisará:

  • 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 tokens emitidos pelo GitHub Actions ao seu repositório 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 uma entidade de serviço e aplicativo 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 Microsoft Entra e uma entidade de serviço que possa acessar recursos. Como parte desse processo, certifique-se de:

    • Registe a sua aplicação com o Microsoft Entra ID e crie uma entidade de serviço
    • Atribuir uma função ao aplicativo
  2. Abra os registos de aplicações no portal do Azure e localize a sua aplicação. Copie os valores para ID de aplicativo (cliente) e ID de diretório (locatário) para usar em seu fluxo de trabalho de ações do GitHub.

  3. Abra Subscrições no portal do Azure e localize a sua subscrição. Copie o ID da Subscrição.

Adicionar credenciais federadas

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

  1. Aceda a Registos de aplicações no portal do Azure e abra a aplicação que pretende configurar.
  2. Dentro do aplicativo, vá para 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 Ações do GitHub implantando recursos do Azure. Gere sua credencial inserindo seus detalhes.
Campo Description Exemplo
Organization Seu nome de organização do GitHub ou nome de usuário do GitHub. contoso
Repositório Seu nome de repositório GitHub. contoso-app
Tipo de entidade O filtro usado para definir o escopo das solicitações OIDC dos fluxos de trabalho do GitHub. Este campo é usado para gerar a subject declaração. Environment, , , BranchPull requestTag
Nome do GitHub O nome do ambiente, ramificação ou tag. main
Nome Identificador da credencial federada. contoso-deploy

Para obter uma visão geral mais detalhada, consulte 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 aplicativo para a ação de login. 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 GitHub e vá para Configurações.

    Select Settings in the navigation

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

    Choose to add a secret

  3. Crie segredos para AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID. Use estes valores do seu aplicativo Azure Ative Directory para seus segredos do GitHub:

    Segredo do GitHub Aplicativo Azure Ative Directory
    AZURE_CLIENT_ID ID da aplicação (cliente)
    AZURE_TENANT_ID ID do Diretório (inquilino)
    AZURE_SUBSCRIPTION_ID ID de Subscrição
  4. Salve cada segredo selecionando Adicionar segredo.

Configurar o Login do Azure com autenticação OpenID Connect

Seu fluxo de trabalho de Ações do GitHub usa o OpenID Connect para autenticar com o Azure. Para saber mais sobre essa interação, consulte a documentação de Ações do GitHub.

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

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

Esse fluxo de trabalho é autenticado 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 Login do Azure bem-sucedido com OpenID

Abra a ação e verifique se ela foi executada Az CLI login com êxito. Deverá ver a mensagem Login successful. Se o seu login 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 da 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 seu repositório GitHub.

Criar um principal de serviço

Neste exemplo, você criará um segredo chamado AZURE_CREDENTIALS que pode ser usado para autenticar com o Azure.

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

    Nota

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

  2. Crie uma nova 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 este uso --sdk-auth com um aviso de descontinuação.

  3. Copie o objeto JSON para sua 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, vá para o seu repositório.

  2. Vá para Configurações no menu de navegação.

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

    Screenshot of select Actions menu item.

  4. Selecione Novo segredo do repositório.

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

  6. Selecione Add secret (Adicionar segredo).

Usar a ação de logon do Azure

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

Neste fluxo de trabalho, você se autentica usando a ação de logon do Azure com os detalhes da entidade de serviço armazenados no secrets.AZURE_CREDENTIALS. Em seguida, execute uma ação da CLI do Azure. Para obter mais informações sobre como fazer referência a segredos do GitHub em um arquivo de fluxo de trabalho, consulte Usando segredos criptografados em um fluxo de trabalho no GitHub Docs.

Depois de ter uma etapa de logon do Azure em funcionamento, você pode usar as ações do Azure PowerShell ou da CLI do Azure. Você também pode usar outras ações do Azure, como a implantação do 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 Logon do Azure e 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 Logon do Azure e recupera um grupo de recursos com a ação 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 ao Azure Government e às nuvens do Azure Stack Hub

Para iniciar sessão numa das nuvens do Azure Government, defina o ambiente de parâmetros opcionais com nomes AzureUSGovernment de nuvem suportados ou AzureChinaCloud. Se esse parâmetro não for especificado, ele usará o valor AzureCloud padrão 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

Conecte-se com outros serviços do Azure

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

Microsoft Entra ID

Power BI

Conectores

Azure Databricks