Een workloadidentiteit gebruiken vanuit een GitHub Actions-werkstroom
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