Использование удостоверения рабочей нагрузки из рабочего процесса GitHub Actions
Завершив создание удостоверения рабочей нагрузки и назначив ему доступ к среде Azure, вы можете применить его в рабочем процессе GitHub Actions. В этом уроке вы узнаете, какие два изменения нужно внести в определение рабочего процесса.
Разрешение запрашивать маркеры для рабочего процесса
Вам нужно разрешить рабочему процессу развертывания запрашивать маркеры. В рабочем процессе добавьте свойство permissions
:
permissions:
id-token: write
contents: read
Вход в Azure
Рабочий процесс развертывания использует действие azure/login
для входа в Azure. При использовании удостоверения рабочей нагрузки необходимо указать следующие три элемента входных данных.
Входные данные | Description |
---|---|
client-id |
Идентификатор приложения для регистрации приложения. Убедитесь, что вы используете идентификатор приложения, а не идентификатор объекта. |
tenant-id |
Уникальный идентификатор клиента Microsoft Entra (каталог). |
subscription-id |
Идентификатор подписки Azure, в которой вы будете выполнять развертывание. |
Каждое из этих значений является идентификатором GUID.
Выяснив эти значения, вы можете указать их непосредственно в файле определения рабочего процесса:
- 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'
Но некоторые организации рассматривают эти идентификаторы как секретные данные или по другим причинам не желают фиксировать значения идентификаторов в репозиториях Git. В таком случае можно использовать для указания значений секреты GitHub:
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
В рамках схем обучения для Bicep мы используем секреты для хранения этих идентификаторов и управления ими. Вы можете сами решить, какой вариант лучше подходит для вашей организации.
Развернуть в Azure
Когда рабочий процесс выполнит вход в Azure, разверните файл Bicep с помощью действия azure/arm-deploy
. В следующем определении рабочего процесса показан весь рабочий процесс развертывания Bicep с использованием удостоверений рабочих процессов:
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