Развертывание настраиваемых политик с помощью GitHub Actions

GitHub Actions позволяет создавать пользовательские рабочие процессы непрерывной интеграции (CI) и непрерывного развертывания (CD) непосредственно в репозитории GitHub. В этой статье описано, как автоматизировать развертывание настраиваемых политик Azure Active Directory B2C (Azure AD B2C) с помощью GitHub Actions.

Чтобы автоматизировать процесс развертывания настраиваемой политики, используйте GitHub Actions для развертывания настраиваемых политик Azure AD B2C. Разработка GitHub Actions была выполнена сообществом Azure AD B2C.

Это действие развертывает пользовательские политики Azure AD B2C в клиенте Azure AD B2C с помощью API Microsoft Graph. Если политика еще не существует в клиенте, она будет создана. В противном случае она будет заменена.

Важно!

При управлении настраиваемыми политиками Azure AD B2C с помощью Azure Pipelines сейчас используются предварительные версии операций, доступные в конечной точке /beta API Microsoft Graph. Использование этих API для приложений в рабочей среде не поддерживается. Дополнительные сведения см. в статье Справочные материалы по бета-версии конечной точки REST API Microsoft Graph.

Предварительные требования

Выберите папку настраиваемых политик.

Репозиторий GitHub может содержать все файлы политик Azure AD B2C и другие ресурсы. В корневом каталоге вашего репозитория создайте или выберите существующую папку, содержащую ваши настраиваемые политики.

Например, выберите папку с именем policies. Добавьте файлы настраиваемой политики Azure AD B2C в папку policies. Выберите параметр Фиксировать для изменений.

Не используйте Отправить для изменений. Это будет сделано позже после настройки рабочего процесса развертывания.

Регистрация приложения Microsoft Graph

Чтобы разрешить GitHub Actions взаимодействовать с API Microsoft Graph, создайте регистрацию приложения в своем клиенте Azure AD B2C. Зарегистрируйте приложение Microsoft Graph, если вы еще этого не сделали.

Чтобы обеспечить GitHub Actions доступ к данным в Microsoft Graph, предоставьте зарегистрированному приложению нужные разрешения приложения. Предоставьте разрешение Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework в разделе Разрешения API для регистрации приложения.

Создание зашифрованного секрета GitHub

GitHub секреты — это зашифрованные переменные среды, создаваемые в организации, репозитории или среде репозитория. На этом шаге вы сохраняете секрет приложения для приложения, которое вы зарегистрировали ранее при выполнении шага Регистрация приложения MS Graph.

GitHub Actions для развертывания настраиваемых политик Azure AD B2C использует секрет для получения маркера доступа, который используется для взаимодействия с API Microsoft Graph. Дополнительные сведения см. в статье Создание зашифрованных секретов для репозитория.

Чтобы создать секрет GitHub, выполните следующие действия.

  1. На веб-сайте GitHub перейдите на главную страницу репозитория.
  2. Под именем репозитория выберите Параметры.
  3. На левой боковой панели выберите Секреты.
  4. Выберите Создать секрет репозитория.
  5. Для параметра Имя укажите ClientSecret.
  6. В параметра Значения укажите созданный ранее секрет приложения.
  7. Выберите Добавить секрет.

Создание рабочего процесса GitHub

Рабочий процесс — это автоматизированный процесс, добавляемый в репозиторий. Рабочие процессы состоят из одного или нескольких заданий и могут быть запланированы или инициированы событием. На этом шаге создается рабочий процесс, который развертывает настраиваемую политику.

Чтобы создать рабочий процесс, выполните следующие действия.

  1. На веб-сайте GitHub перейдите на главную страницу своего репозитория.

  2. Под именем репозитория выберите Действия.

    Снимок экрана: вкладка GitHub Actions

  3. Если вы раньше не настраивали рабочий процесс, выберите Настроить рабочий процесс самостоятельно. В противном случае выберите Создать рабочий процесс.

    Снимок экрана: создание нового рабочего процесса

  4. GitHub предлагает создать файл рабочего процесса с именем main.yml в папке .github/workflows. Этот файл содержит информацию о рабочем процессе, включая вашу среду Azure AD B2C и настраиваемые политики для развертывания. В веб-редакторе GitHub добавьте следующий код YAML.

    on: push
    
    env:
      clientId: 00000000-0000-0000-0000-000000000000
      tenant: your-tenant.onmicrosoft.com
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2
    
        - name: 'Upload TrustFrameworkBase Policy'
          uses: azure-ad-b2c/deploy-trustframework-policy@v3
          with:
            folder: "./Policies"
            files: "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml"
            tenant: ${{ env.tenant }}
            clientId: ${{ env.clientId }}
            clientSecret: ${{ secrets.clientSecret }}
    
  5. Обновите следующие свойства файла YAML.

    Section Имя Значение
    env clientId Идентификатор приложения (клиента) , которое вы зарегистрировали на шаге Регистрация приложения MS Graph.
    env tenant Имя клиента Azure AD B2C (например, contoso.onmicrosoft.com).
    with folder Папка, в которой хранятся файлы настраиваемых политик, например ./Policies.
    with files Разделенный запятыми список файлов политик для развертывания, например TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

    Важно!

    При выполнении агентов и отправке файлов политики следите за соблюдением правильного порядка:

    1. TrustFrameworkBase.xml
    2. TrustFrameworkLocalization.xml
    3. TrustFrameworkExtensions.xml
    4. SignUpOrSignin.xml
    5. ProfileEdit.xml
    6. PasswordReset.xml
  6. Выберите Начать фиксацию.

  7. Под полями сообщения о фиксации укажите, следует ли добавить фиксацию в текущую или в новую ветвь. Выберите Фиксировать новый файл или Предложить новый файл, чтобы создать запрос на вытягивание.

Тестирование рабочего процесса

Чтобы протестировать созданный рабочий процесс, выберите Отправить для изменений пользовательской политики. После запуска задания можно увидеть граф визуализации хода выполнения и просмотреть действие каждого шага в GitHub.

  1. На веб-сайте GitHub перейдите на главную страницу своего репозитория.

  2. Под именем репозитория выберите Действия.

  3. В левой боковой панели выберите созданный рабочий процесс.

  4. В разделе Запуски рабочего процесса выберите имя запуска, который требуется просмотреть.

    Снимок экрана: выбор действия рабочего процесса

  5. В разделе Задания или на графе визуализации выберите задание, которое требуется просмотреть.

  6. Просмотрите результаты каждого шага. На следующем снимке экрана показан журнал действий Отправка настраиваемой политики.

    Журнал действий отправки настраиваемой политики

Дополнительно. Планирование рабочего процесса

Созданный рабочий процесс запускается событием Отправить. При желании можно выбрать другое событие для запуска рабочего процесса, например запрос на вытягивание.

Можно также запланировать выполнение рабочего процесса в определенное время в формате UTC с помощью синтаксиса POSIX cron. Событие планирования позволяет запускать рабочий процесс в запланированное время. Дополнительные сведения см. в разделе Запланированные события.

В следующем примере рабочий процесс запускается каждый день в 5:30 и 17:30 (в формате UTC).

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'

Чтобы изменить рабочий процесс, выполните следующие действия.

  1. На веб-сайте GitHub перейдите на главную страницу своего репозитория.

  2. Под именем репозитория выберите Действия.

  3. В левой боковой панели выберите созданный рабочий процесс.

  4. В разделе Запуски рабочего процесса выберите имя запуска, который требуется просмотреть.

  5. В меню выберите три точки ... , а затем выберите Просмотреть файл рабочего процесса.

    Снимок экрана: просмотр файла рабочего процесса

  6. В веб-редакторе GitHub выберите Изменить.

  7. Измените on: push к приведенном выше примере.

  8. Выберите параметр Фиксировать для ваших изменений.

Дальнейшие действия