Použití identity úlohy z pracovního postupu GitHub Actions
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