Usare un'identità del carico di lavoro da un flusso di lavoro di GitHub Actions
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