Použití identity úlohy z pracovního postupu GitHub Actions

Dokončeno

Po vytvoření identity úlohy a přiřazení přístupu k prostředí Azure je čas ji použít v pracovním postupu GitHub Actions. V této lekci se dozvíte o dvou změnách, které je potřeba provést v definici pracovního postupu.

Povolit pracovnímu postupu vyžádání tokenů

Pracovní postup nasazení musíte povolit vyžádání tokenů. Do pracovního postupu přidejte permissions vlastnost:

permissions:
  id-token: write
  contents: read

Přihlášení k Azure

Pracovní postup nasazení používá azure/login akci pro přihlášení k Azure. Při použití identity úlohy musíte zadat tři vstupy:

Vstup Popis
client-id ID aplikace pro registraci aplikace. Nezapomeňte použít ID aplikace, nikoli ID objektu.
tenant-id Jedinečný identifikátor vašeho tenanta Microsoft Entra (adresáře).
subscription-id ID předplatného Azure, do kterého nasadíte.

Každá z těchto hodnot je identifikátor GUID.

Když definujete hodnoty, můžete je zadat přímo v definičním souboru pracovního postupu:

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

Některé organizace ale s těmito identifikátory zachází jako s tajnými daty nebo neumožňují potvrzení identifikátorů do úložišť Git. K určení hodnot můžete použít také tajné kódy GitHubu:

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

V rámci studijních programů pro Bicep používáme tajné kódy k ukládání a správě těchto identifikátorů. Můžete se rozhodnout, který přístup bude pro vaši organizaci nejvhodnější.

Nasazení do Azure

Jakmile se pracovní postup přihlásí k Azure, můžete pomocí akce nasadit soubor azure/arm-deploy Bicep. Následující definice pracovního postupu ukazuje kompletní pracovní postup nasazení Bicep, který používá identity pracovních postupů:

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