Een workloadidentiteit gebruiken vanuit een GitHub Actions-werkstroom

Voltooid

Nadat u een workloadidentiteit hebt gemaakt en deze toegang hebt toegewezen aan uw Azure-omgeving, is het tijd om deze te gebruiken in uw GitHub Actions-werkstroom. In deze les leert u meer over de twee wijzigingen die u moet aanbrengen in uw werkstroomdefinitie.

Toestaan dat de werkstroom tokens aanvraagt

U moet uw implementatiewerkstroom toestaan tokens aan te vragen. Voeg in uw werkstroom de permissions eigenschap toe:

permissions:
  id-token: write
  contents: read

Aanmelden bij Azure

Uw implementatiewerkstroom gebruikt de azure/login actie om u aan te melden bij Azure. Wanneer u een workloadidentiteit gebruikt, moet u drie invoerwaarden opgeven:

Invoer Beschrijving
client-id De toepassings-id voor de toepassingsregistratie. Zorg ervoor dat u de toepassings-id gebruikt en niet de object-id.
tenant-id De unieke id voor uw Microsoft Entra-tenant (directory).
subscription-id De Azure-abonnements-id waarnaar u gaat implementeren.

Elk van deze waarden is een GUID.

Wanneer u de waarden definieert, kunt u deze rechtstreeks in uw werkstroomdefinitiebestand opgeven:

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

Sommige organisaties behandelen deze id's echter als geheime gegevens of staan niet toe dat id's worden doorgevoerd in Git-opslagplaatsen. U kunt gitHub-geheimen ook gebruiken om de waarden op te geven:

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

In de leertrajecten voor Bicep gebruiken we geheimen om deze id's op te slaan en te beheren. U kunt bepalen welke benadering het beste werkt voor uw organisatie.

Implementeren op Azure

Nadat uw werkstroom is aangemeld bij Azure, kunt u een Bicep-bestand implementeren met behulp van de azure/arm-deploy actie. De volgende werkstroomdefinitie toont een volledige Bicep-implementatiewerkstroom die gebruikmaakt van werkstroomidentiteiten:

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