Uso de acciones de GitHub para conectarse a Azure

Aprenda a usar la acción Azure Login con Azure PowerShell o la CLI de Azure para interactuar con los recursos de Azure.

Para usar Azure PowerShell o la CLI de Azure en un flujo de trabajo de Acciones de GitHub, primero debe iniciar sesión con la acción Azure Login.

La acción de inicio de sesión de Azure admite dos formas distintas de autenticarse con Azure:

De forma predeterminada, la acción de inicio de sesión inicia sesión con la CLI de Azure y configura el entorno del ejecutor de Acciones de GitHub para la CLI de Azure. Puede usar Azure PowerShell con la propiedad enable-AzPSSession de la acción Azure Login. Esto configura el entorno del ejecutor de Acciones de GitHub con el módulo de Azure PowerShell.

Puede usar el inicio de sesión de Azure para conectarse a nubes públicas o soberanas, incluidas Azure Government y Azure Stack Hub.

Use la acción de inicio de sesión de Azure con OpenID Connect

Para configurar un inicio de sesión de Azure con OpenID Connect y usarlo en un flujo de trabajo de Acciones de GitHub, necesitará:

  • Una aplicación de Microsoft Entra, con una entidad de servicio que se ha asignado con un rol adecuado a la suscripción.
  • Una aplicación de Microsoft Entra configurada con una credencial federada para confiar en tokens emitidos por Acciones de GitHub en el repositorio de GitHub. Puede configurarlo en Azure Portal o con las API REST de Microsoft Graph.
  • Un flujo de trabajo de Acciones de GitHub que solicita tokens de emisión de GitHub al flujo de trabajo y usa la acción de inicio de sesión de Azure.

Creación de una aplicación y una entidad de servicio de Microsoft Entra

Deberá crear una aplicación y una entidad de servicio de Microsoft Entra y, a continuación, asignar un rol en la suscripción a la aplicación para que el flujo de trabajo tenga acceso a la suscripción.

  1. Si no tiene una aplicación existente, registre una nueva aplicación de Microsoft Entra y una entidad de servicio que puedan acceder a los recursos. Como parte de este proceso, asegúrese de:

    • Registro de la aplicación con el identificador de Entra de Microsoft y creación de una entidad de servicio
    • Asignación de un rol a la aplicación
  2. Abra Registros de aplicaciones en Azure Portal y busque la aplicación. Copie los valores del identificador de aplicación (cliente) y el identificador de directorio (inquilino) para usarlos en el flujo de trabajo de Acciones de GitHub.

  3. Abra Registros de aplicaciones en Azure Portal y busque la aplicación. Copie el valor de Id. de suscripción.

Adición de credenciales federadas

Las credenciales federadas se pueden crear en Azure Portal o con la API REST de Microsoft Graph.

  1. Vaya a Registros de aplicaciones en Azure Portal y abra la aplicación que desea configurar.
  2. Dentro de la aplicación, vaya a Certificados y secretos.
    Select Certificates & secrets.
  3. En la pestaña Credenciales federadas, seleccione Agregar credencial. Add the federated credential
  4. Seleccione el escenario de credenciales Acciones de GitHub que implementan recursos de Azure. Para generar la credencial, escriba los detalles de la credencial.
Campo Description Ejemplo
Organización El nombre de organización de GitHub o el nombre de usuario de GitHub. contoso
Repositorio Nombre de repositorio de GitHub. contoso-app
Tipo de entidad Filtro utilizado para el ámbito de las solicitudes de OIDC de flujos de trabajos de GitHub. Este campo se usa para generar la notificación de subject. Environment, Branch, , Pull request, Tag
Nombre de GitHub El nombre del entorno, rama o etiqueta. main
Nombre Identificador de la credencial federada. contoso-deploy

Para obtener información general más detallada, consulte Configuración de una aplicación para confiar en un repositorio de GitHub (versión preliminar).

Creación de secretos de GitHub

Debe especificar el identificador de cliente, el identificador de inquilino y el identificador de suscripción en la acción de inicio de sesión. Estos valores se pueden proporcionar directamente en el flujo de trabajo o se pueden almacenar en secretos de GitHub y se puede hacer referencia a ellos en el flujo de trabajo. Guardar los valores como secretos de GitHub es la opción más segura.

  1. Abra el repositorio de GitHub y vaya a Settings (Configuración).

    Select Settings in the navigation

  2. Seleccione Seguridad > Secretos y variables > Acciones.

    Choose to add a secret

  3. Cree secretos para AZURE_CLIENT_ID, AZURE_TENANT_ID y AZURE_SUBSCRIPTION_ID. Use estos valores de la aplicación de Azure Active Directory para los secretos de GitHub:

    Secreto de GitHub Aplicación de Azure Active Directory
    AZURE_CLIENT_ID Id. de aplicación (cliente)
    AZURE_TENANT_ID Id. de directorio (inquilino)
    AZURE_SUBSCRIPTION_ID Id. de suscripción
  4. Guarde todos los secretos, para lo que debe seleccionar Add secret (Agregar secreto).

Configuración del inicio de sesión de Azure con la autenticación de OpenID Connect

El flujo de trabajo de Acciones de GitHub usa OpenID Connect para autenticarse con Azure. Para más información sobre esta interacción, consulte la documentación de Acciones de GitHub Actions.

En este ejemplo, usará OpenID Conectar CLI de Azure para autenticarse con Azure con la acción de inicio de sesión de Azure. En el ejemplo se usan secretos de GitHub para los valores client-id, tenant-id y subscription-id. Estos valores también se pueden pasar directamente en la acción de inicio de sesión.

La acción de inicio de sesión de Azure incluye un parámetro de entrada opcional audience que tiene api://AzureADTokenExchangecomo valor predeterminado . Puede actualizar este parámetro para los valores de audiencia personalizados.

Este flujo de trabajo se autentica con openID Conectar y usa la CLI de Azure para obtener los detalles de la suscripción conectada y el 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 

Comprobación del inicio de sesión correcto de Azure con OpenID

Abra la acción Az CLI login y compruebe que se haya ejecutado correctamente. Verá el mensaje Login successful. Si el inicio de sesión no se realiza correctamente, verá el mensaje Az CLI Login failed..

GitHub Actions Azure Login successful.

Uso de la acción de inicio de sesión de Azure con un secreto de entidad de servicio

Para usar el inicio de sesión de Azure con una entidad de servicio, primero es preciso agregar una entidad de servicio de Azure como un secreto al repositorio de GitHub.

Creación de una entidad de servicio

En este ejemplo, creará un secreto llamado AZURE_CREDENTIALS que puede usar para autenticarse con Azure.

  1. Abra Azure Cloud Shell en Azure Portal o la CLI de Azure localmente.

    Nota:

    Si usa Azure Stack Hub, deberá establecer el punto de conexión de SQL Management en not supported. az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Cree una nueva entidad de servicio en Azure Portal para la aplicación. La entidad de servicio debe asignarse con un rol adecuado.

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

    El parámetro --json-auth genera el diccionario de resultados aceptado por la acción de inicio de sesión, accesible en las versiones >de la CLI de Azure = 2.51.0. Las versiones anteriores a esta usan --sdk-auth con una advertencia de desuso.

  3. Copie el objeto JSON de la entidad de servicio.

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

Adición de la entidad de servicio como secreto de GitHub

  1. En GitHub, vaya al repositorio.

  2. Vaya a Configuración en el menú de navegación.

  3. Seleccione Seguridad > Secretos y variables > Acciones.

    Screenshot of select Actions menu item.

  4. Seleccione New repository secret (Nuevo secreto del repositorio).

  5. Pegue la salida JSON completa del comando de la CLI de Azure en el campo de valor del secreto. Asigne al secreto el nombre AZURE_CREDENTIALS.

  6. Seleccione Add secret (Agregar secreto).

Uso de la acción Azure Login

Use el secreto de la entidad de servicio con la acción Azure Login para autenticarse en Azure.

En este flujo de trabajo, la autenticación se realiza mediante la acción Azure Login con los detalles de la entidad de servicio almacenados en secrets.AZURE_CREDENTIALS. A continuación, ejecute una acción de la CLI de Azure. Para más información sobre cómo hacer referencia a secretos de GitHub en un archivo de flujo de trabajo, consulte Uso de secretos cifrados en un flujo de trabajo en la documentación de GitHub.

Una vez que tenga un paso de Azure Login en funcionamiento, puede usar las acciones de Azure PowerShell o la CLI de Azure. También puede usar otras acciones de Azure, como webapps-deploy y functions-action.

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 }}'

Uso de la acción de Azure PowerShell

En este ejemplo, iniciará sesión con la acción Azure Login y, después, recuperará un grupo de recursos con la acción para 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"

Uso de la acción de la CLI de Azure

En este ejemplo, iniciará sesión con la acción Azure Login y, después, recuperará un grupo de recursos con la acción de la CLI de 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

Conexión a nubes de Azure Government y Azure Stack Hub

Para iniciar sesión en una de las nubes de Azure Government, establezca el entorno de parámetro opcional con los nombres de nube admitidos AzureUSGovernment o AzureChinaCloud. Si no se especifica este parámetro, toma el valor predeterminado AzureCloud y se conecta a la nube pública de 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

Conexión con otros servicios de Azure

En los artículos siguientes se proporcionan detalles sobre cómo conectarse a GitHub desde Azure y otros servicios.

Microsoft Entra ID

Power BI

Conectores

Azure Databricks