Verwenden einer Workloadidentität in einem GitHub Actions-Workflow
Nachdem Sie eine Workloadidentität erstellt und ihr Zugriff auf Ihre Azure-Umgebung gewährt haben, können Sie sie in Ihrem GitHub Actions-Workflow verwenden. In dieser Lerneinheit erfahren Sie mehr über die beiden Änderungen, die Sie an Ihrer Workflowdefinition vornehmen müssen.
Zulassen der Anforderung von Token durch den Workflow
Sie müssen Ihrem Bereitstellungsworkflow das Anfordern von Token erlauben. Fügen Sie in Ihrem Workflow die Eigenschaft permissions
hinzu:
permissions:
id-token: write
contents: read
Anmelden bei Azure
Ihr Bereitstellungsworkflow verwendet die Aktion azure/login
, um sich bei Azure anzumelden. Wenn Sie eine Workloadidentität verwenden, müssen Sie drei Eingaben angeben:
Eingabe | BESCHREIBUNG |
---|---|
client-id |
Die Anwendungs-ID für die Anwendungsregistrierung. Stellen Sie sicher, dass Sie die Anwendungs-ID und nicht die Objekt-ID verwenden. |
tenant-id |
Der eindeutige Bezeichner für Ihren Microsoft Entra-Mandanten (Verzeichnis). |
subscription-id |
Die ID des Azure-Abonnements, in dem die Bereitstellung durchgeführt wird. |
Jeder dieser Werte ist eine GUID.
Wenn Sie die Werte definieren, können Sie sie direkt in Ihrer Workflowdefinitionsdatei angeben:
- 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'
Einige Organisationen behandeln diese Bezeichner jedoch als Geheimnisdaten oder gestatten nicht, dass Bezeichner in Git-Repositorys übertragen werden. Sie können zum Angeben der Werte auch GitHub-Geheimnisse verwenden:
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
In den Lernpfaden für Bicep werden diese Bezeichner mithilfe von Geheimnissen gespeichert und verwaltet. Sie können entscheiden, welcher Ansatz für Ihr Unternehmen am besten geeignet ist.
In Azure bereitstellen
Nachdem sich Ihr Workflow bei Azure angemeldet hat, können Sie mit der Aktion azure/arm-deploy
eine Bicep-Datei bereitstellen. Die folgende Workflowdefinition zeigt einen vollständigen Bicep-Bereitstellungsworkflow, der Workflowidentitäten verwendet:
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