Использование удостоверения рабочей нагрузки из рабочего процесса 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