Utilizar GitHub Actions para ligar ao Azure

Saiba como utilizar o início de sessão do Azure com Azure PowerShell ou a CLI do Azure para interagir com os seus recursos do Azure.

Para utilizar Azure PowerShell ou a CLI do Azure num fluxo de trabalho GitHub Actions, primeiro tem de iniciar sessão com a ação de início de sessão do Azure.

A ação de início de sessão do Azure suporta duas formas diferentes de autenticação com o Azure:

Por predefinição, a ação de início de sessão inicia sessão com a CLI do Azure e configura o ambiente de GitHub Actions runner para a CLI do Azure. Pode utilizar Azure PowerShell com enable-AzPSSession a propriedade da ação de início de sessão do Azure. Isto configura o ambiente GitHub Actions runner com o módulo Azure PowerShell.

Pode utilizar o início de sessão do Azure para ligar a clouds públicas ou soberanas, incluindo Azure Government e o Azure Stack Hub.

Utilizar a ação de início de sessão do Azure com o OpenID Connect

Para configurar um Início de Sessão do Azure com o OpenID Connect e utilizá-lo num fluxo de trabalho GitHub Actions, precisará de:

  • Uma aplicação do Azure Active Directory, com um principal de serviço que tem acesso de contribuidor à sua subscrição
  • Uma aplicação do Azure Active Directory configurada com uma credencial federada para confiar em tokens emitidos por GitHub Actions para o seu repositório do GitHub. Pode configurar esta opção no portal do Azure ou com as APIs REST do Microsoft Graph. A federação de identidade da carga de trabalho está em pré-visualização pública
  • Um fluxo de trabalho GitHub Actions que pede tokens de problemas do GitHub ao fluxo de trabalho e utiliza a ação de início de sessão do Azure

Criar uma aplicação e um principal de serviço do Azure Active Directory

Terá de criar uma aplicação e um principal de serviço do Azure Active Directory e, em seguida, atribuir uma função na sua subscrição à sua aplicação para que o fluxo de trabalho tenha acesso à sua subscrição.

  1. Se não tiver uma aplicação existente, registe uma nova aplicação e principal de serviço do Azure Active Directory que possa aceder aos recursos. Como parte deste processo, certifique-se de que:

    • Registar a sua aplicação com Azure AD e criar um principal de serviço
    • Atribuir uma função à aplicação
  2. Abra Registos de aplicações no portal do Azure e localize a sua aplicação. Copie os valores do ID da Aplicação (cliente) e do ID do Diretório (inquilino) para utilizar no fluxo de trabalho GitHub Actions.

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

Adicionar credenciais federadas (pré-visualização)

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. Na aplicação, aceda a Certificados e segredos.
    Selecione Segredos de certificados & .
  3. No separador Credenciais federadas , selecione Adicionar credencial. Adicionar a credencial federada
  4. Selecione o cenário de credenciais GitHub Actions implementar recursos do Azure. Gere a sua credencial ao introduzir os detalhes das credenciais.
Campo Descrição Exemplo
Organização O nome da sua organização do GitHub ou o nome de utilizador do GitHub. contoso
Repositório O seu nome do Repositório do GitHub. contoso-app
Tipo de entidade O filtro utilizado para definir o âmbito dos pedidos OIDC dos fluxos de trabalho do GitHub. Este campo é utilizado para gerar a subject afirmação. Environment, Branch, Pull request, Tag
Nome do GitHub O nome do ambiente, ramo ou etiqueta. main
Name Identificador da credencial federada. contoso-deploy

Para obter uma descrição geral mais detalhada, veja Configurar uma aplicação para confiar num repositório do GitHub.

Criar segredos do GitHub

Tem de fornecer o ID de Cliente da sua aplicação, o ID do Inquilino e o ID da Subscrição à ação de início de sessão. Estes valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados no fluxo de trabalho. Guardar os valores como segredos do GitHub é a opção mais segura.

  1. Abra o seu repositório do GitHub e aceda a Definições.

    Selecionar Definições na navegação

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

    Optar por adicionar um segredo

  3. Criar segredos para AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID. Utilize estes valores da sua aplicação do Azure Active Directory para os seus segredos do GitHub:

    Segredo do GitHub Aplicação do Azure Active Directory
    AZURE_CLIENT_ID ID da Aplicação (cliente)
    AZURE_TENANT_ID ID do Diretório (inquilino)
    AZURE_SUBSCRIPTION_ID ID da subscrição
  4. Guarde cada segredo ao selecionar Adicionar segredo.

Configurar o Início de Sessão do Azure com a autenticação do OpenID Connect

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

Neste exemplo, irá utilizar a CLI do OpenID Connect do Azure para autenticar com o Azure com a ação de início de sessão do Azure . O exemplo utiliza segredos do GitHub para os client-idvalores , tenant-ide subscription-id . Também pode transmitir estes valores diretamente na ação de início de sessão.

A ação de início de sessão do Azure inclui um parâmetro de entrada opcional audience que é predefinido para api://AzureADTokenExchange. Pode atualizar este parâmetro para valores de audiência personalizados.

Este fluxo de trabalho autentica-se com o OpenID Connect e utiliza a CLI do Azure para obter os detalhes da subscrição ligada 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 início de sessão do Azure com êxito com o OpenID

Abra a ação Az CLI login e verifique se foi executada com êxito. Deverá ver a mensagem Login successful. Se o início de sessão não for bem-sucedido, verá a mensagem Az CLI Login failed..

GitHub Actions início de sessão do Azure com êxito.

Utilizar a ação de início de sessão do Azure com um segredo do principal de serviço

Para utilizar o início de sessão do Azure com um principal de serviço, primeiro tem de adicionar o principal de serviço do Azure como um segredo ao seu repositório do GitHub.

Criar um principal de serviço

Neste exemplo, irá criar um segredo com o nome AZURE_CREDENTIALS que pode utilizar para autenticar com o Azure.

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

    Nota

    Se estiver a utilizar o Azure Stack Hub, terá de definir o ponto final da Gestão de SQL como not supported. az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Crie um novo principal de serviço no portal do Azure da sua aplicação. O principal de serviço tem de ter a função Contribuidor atribuída.

        az ad sp create-for-rbac --name "myApp" --role contributor \
                                    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                                    --sdk-auth
    
  3. Copie o objeto JSON para o principal de serviço.

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

Adicionar o principal de serviço como um segredo do GitHub

  1. No GitHub, aceda ao seu repositório.

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

    Captura de ecrã a mostrar o item de menu Ações selecionado.

  3. Selecione Novo segredo do repositório.

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

  5. Selecione Add secret (Adicionar segredo).

Utilizar a ação de início de sessão do Azure

Utilize o segredo do principal de serviço com a ação de Início de Sessão do Azure para autenticar no Azure.

Neste fluxo de trabalho, vai autenticar com a ação de início de sessão do Azure com os detalhes do principal de serviço armazenados no secrets.AZURE_CREDENTIALS. Em seguida, executa uma ação da CLI do Azure. Para obter mais informações sobre como referenciar segredos do GitHub num ficheiro de fluxo de trabalho, veja Utilizar segredos encriptados num fluxo de trabalho no GitHub Docs.

Assim que tiver um passo de início de sessão do Azure funcional, pode utilizar as ações Azure PowerShell ou da CLI do Azure. Também pode utilizar outras ações do Azure, como a implementação da aplicação 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 }}'

Utilizar a ação Azure PowerShell

Neste exemplo, inicia sessão com a ação de Início de Sessão do Azure e, em seguida, obtém um grupo de recursos com a ação 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"

Utilizar a ação da CLI do Azure

Neste exemplo, inicia sessão com a ação de Início de Sessão do Azure e, em seguida, obtém 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

Ligar a clouds do Azure Government e do Azure Stack Hub

Para iniciar sessão numa das clouds Azure Government, defina o ambiente de parâmetros opcional com nomes AzureUSGovernment de cloud suportados ou AzureChinaCloud. Se este parâmetro não for especificado, utiliza o valor AzureCloud predefinido e liga-se à Cloud 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

Ligar a outros serviços do Azure

Os artigos seguintes fornecem detalhes sobre como ligar ao GitHub a partir do Azure e de outros serviços.

Azure Active Directory

Power BI

Conectores

Azure Databricks