Verwenden einer Workloadidentität in einem GitHub Actions-Workflow

Abgeschlossen

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