Usare un'identità del carico di lavoro da un flusso di lavoro di GitHub Actions

Completato

Dopo aver creato un'identità del carico di lavoro e averla assegnata all'ambiente Azure, è possibile usarla nel flusso di lavoro di GitHub Actions. In questa unità verranno illustrate le due modifiche necessarie per la definizione del flusso di lavoro.

Consentire al flusso di lavoro di richiedere token

È necessario consentire al flusso di lavoro di distribuzione di richiedere token. Nel flusso di lavoro aggiungere la proprietà permissions:

permissions:
  id-token: write
  contents: read

Accedere ad Azure

Il flusso di lavoro di distribuzione usa l'azione azure/login per accedere ad Azure. Quando si usa un'identità del carico di lavoro, è necessario specificare tre input:

Input Descrizione
client-id L'ID applicazione per la registrazione dell'applicazione. Assicurarsi di usare l'ID applicazione e non l'ID oggetto.
tenant-id Identificatore univoco per il tenant Microsoft Entra (directory).
subscription-id L'ID sottoscrizione di Azure in cui verrà eseguita la sottoscrizione.

Ognuno di questi valori è un GUID.

Quando si definiscono i valori, è possibile scegliere di specificarli direttamente nel file di definizione del flusso di lavoro:

- uses: azure/login@v1
  with:
    client-id: 'A123b4567c-1234-1a2b-2b1a-1234abc12345'
    tenant-id: 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
    subscription-id: 'B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0'

Tuttavia, alcune organizzazioni considerano questi identificatori come dati segreti o non consentono il commit degli identificatori nei repository Git. Per specificare i valori è anche possibile usare i segreti di GitHub:

- uses: azure/login@v1
  with:
    client-id: ${{ secrets.AZURE_CLIENT_ID }}
    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

In tutti i percorsi di apprendimento per Bicep vengono usati i segreti per archiviare e gestire questi identificatori. È possibile scegliere l'approccio più adatto per la propria organizzazione.

Distribuisci in Azure

Una volta che il flusso di lavoro ha eseguito l'accesso ad Azure, è possibile distribuire un file Bicep usando l'azione azure/arm-deploy. La definizione del flusso di lavoro seguente mostra un flusso di lavoro di distribuzione Bicep completo che usa le identità del flusso di lavoro:

name: MyWorkflow

on: [workflow_dispatch]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo
    - uses: azure/login@v1
      with:
        client-id: ${{ secrets.AZURE_CLIENT_ID }}
        tenant-id: ${{ secrets.AZURE_TENANT_ID }}
        subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    - uses: azure/arm-deploy@v1
      with:
        resourceGroupName: ToyWebsite
        template: ./deploy/main.bicep