Автоматизация интеграции git с субъектом-службой в Azure DevOps

Интеграция Fabric Git является основой для организаций, реализующих полностью автоматизированные конвейеры CI/CD, что позволяет легко перемещать ресурсы в средах разработки, тестирования и рабочей среды.

В настоящее время Интеграция Fabric Git поддерживает два основных поставщика Git:

  • Azure DevOps
  • GitHub

Эта статья фокусируется на возможности служебного принципала для Azure DevOps. Эта интеграция позволяет пользователю Fabric выполнять git-операции с помощью учетной записи службы.

Azure DevOps: проверка подлинности — автоматическая и настроенная

По умолчанию каждая рабочая область Fabric не подключена к любому репозиторию Git. Рабочая область Fabric имеет два разных способа проверки подлинности в репозитории Git. Эти процессы называются:

  • Автоматическая учетная запись Git
  • Настроенные учетные данные

Автоматические учетные данные Git

Когда администратор хочет подключить рабочую область к репозиторию Azure DevOps (ADO), сначала необходимо войти в систему через настройки рабочей области. Затем система определяет, к каким организациям ADO пользователь может получить доступ в текущем клиенте Fabric, что позволяет ему продолжить настройку.

После установки первоначального подключения любой дополнительный пользователь с по крайней мере разрешениями участника в той же рабочей области не должен повторять процесс подключения. Вместо этого система пытается пройти проверку подлинности второго пользователя с настроенным репозиторием ADO. Если у пользователя отсутствуют необходимые разрешения, панель управления версиями Git Fabric отображает красный индикатор.

Этот упрощенный процесс проверки подлинности называется "Автоматическая учетная запись Git".

Настроенные учетные данные

С помощью настроенных учетных данных можно программно создать облачное подключение Azure DevOps с помощью сервисного принципала.

Подключение Azure DevOps поддерживает два метода проверки подлинности:

  • OAuth 2.0
  • Служебный принципал

Оба метода включают поддержку сценариев мультитенантного (кросстенантного) и обеспечивают организациям гибкость в разных средах.

Любой другой пользователь с по крайней мере разрешениями участника в той же рабочей области не должен повторять процесс подключения. Перед поддержкой субъекта-службы система попыталась пройти проверку подлинности вторичных пользователей только с помощью автоматической проверки подлинности.

Если автоматическая проверка подлинности завершается ошибкой, система также пытается подключиться с помощью любых настроенных учетных данных , к которым у пользователя есть доступ, обеспечивая более плавное взаимодействие и уменьшая избыточные действия по настройке.

Принцип работы

Чтобы подключить рабочую область Fabric к внешнему поставщику Git с использованием сервисного принципала, интеграция Git должна использовать облачное подключение Fabric типа Azure DevOps – Управление исходным кодом.

Это облачное подключение можно создать двумя способами через портал:

В обоих случаях подключение создается под удостоверением пользователя, вошедшего в систему.

Если сервисный принципал должен использовать это подключение, пользователь должен либо

  • предоставление общего доступа к соединению с субъектом-службой
  • создайте новое подключение с помощью REST API Connections, передав учетные данные Service Principal.

Ниже описано, как использовать API для создания облачного подключения с помощью субъекта-службы.

Предпосылки

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

  • Зарегистрируйте приложение Entra ID и запишите:

    • Идентификатор арендатора
    • Идентификатор клиента
    • Секрет клиента
  • Предоставьте субъекту-службе:

Подключение новой рабочей области к Azure DevOps с помощью субъекта-службы

Чтобы подключить рабочую область Fabric к Azure DevOps программно через служебного принципала, выполните следующие шаги.

  1. Создайте токен доступа учетной записи службы: Выполняется аутентификация в Microsoft Fabric с использованием учетной записи службы.
  2. Создайте облачное подключение Azure DevOps: Создает новый ресурс подключения в Microsoft Fabric, в который хранятся учетные данные и конфигурации репозитория Azure DevOps.
  3. Подключение рабочей области к Git: Связывает определенную рабочую область Fabric с репозиторием Azure DevOps с помощью подключения, созданного на шаге 2.
  4. Инициализация подключения: Инициализирует подключение Git.

1. Создание токена доступа субъекта-службы

В следующих примерах показано, как создать токен доступа сервисного принципала.

curl --request GET \ 
--url https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \ 
--header 'content-type: multipart/form-data' \ 
--form grant_type=client_credentials \ 
--form client_id=<client-id> \ 
--form 'client_secret=<client-secret>' \ 
--form scope=https://api.fabric.microsoft.com/.default 

Замечание

Скопируйте access_token из ответа для дальнейших шагов.

2. Создание облачного подключения Azure DevOps

Создает новый ресурс подключения в Microsoft Fabric, в который хранятся учетные данные и конфигурации репозитория Azure DevOps.

curl --request POST \ 
--url https://api.fabric.microsoft.com/v1/connections \ 
--header 'authorization: Bearer <step1: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{ 

"displayName": "<name of the connection>", 
"connectivityType": "ShareableCloud", 
"connectionDetails": { 
"creationMethod": "AzureDevOpsSourceControl.Contents", 
"type": "AzureDevOpsSourceControl", 
"parameters": [ 

{ 
"dataType": "Text", 
"name": "url", 
"value": "https://dev.azure.com/<ado org name>/<project name>/_git/<repo name>/"}]}, 
"credentialDetails": { 
"credentials": { 
"credentialType": "ServicePrincipal", 
"tenantId": "<tenant-id>", 
"servicePrincipalClientId": "<client-id>", 
"servicePrincipalSecret": "<client-secret>"}}}' 

Замечание

Сохраните идентификатор из ответа. Он используется в следующих шагах.

3. Подключение рабочей области к Git

Связывает определенную рабочую область Fabric с репозиторием Azure DevOps с помощью подключения, созданного на шаге 2.

curl --request POST \ 
--url https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/git/connect \ 
--header 'authorization: Bearer <step1: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{ 
"gitProviderDetails": { 
"organizationName": "<ado org name>", 
"projectName": "<project name>", 
"gitProviderType": "AzureDevOps", 
"repositoryName": "<repo name>", 
"branchName": "<branch name>", 
"directoryName": "<folder name – must exist before OR empty>" 
}, 
"myGitCredentials": { 
"source": "ConfiguredConnection", 
"connectionId": "<step 2 – the new connection id>"}}' 

4. Инициализация подключения

Инициализация подключения, подробнее читайте здесь.

Замечание

Замените <> значениями, обратите внимание на параметр initializationStrategy, если подключенная рабочая область уже содержит элементы, вы можете использовать "preferWorkspace".

curl --request POST \ 
--url https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/git/initializeConnection \ 
--header 'authorization: Bearer <step1: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{"initializationStrategy": "PreferRemote"}' 

Если репозиторий /workspace не пуст, ответ возвращает параметр requiredAction (который основан на стратегии инициализации), используйте update-from-git или commit-to-git соответственно используя workspaceHead и remoteCommitHash из ответа, чтобы завершить процесс.

Подключение существующей рабочей области для использования учетной записи службы

Если ваша рабочая область уже подключена к Azure DevOps с помощью удостоверения пользователя, но вы хотите выполнять операции Fabric Git REST API с использованием учетной записи-службы, выполните следующие действия:

  1. Добавьте субъекта-службы в качестве администратора рабочей области.
  2. Предоставьте субъекту-службе доступ к Azure DevOps Cloud Connection. У вас есть два варианта:
  • Предоставление общего доступа к существующему подключению: Войдите с помощью пользователя, имеющего доступ к соответствующему облачному подключению ADO, и поделитесь им с субъектом-службой с помощью управления пользователями.
  • Создайте новое подключение: Повторите шаги 1 и 2 из предыдущего раздела, чтобы создать новое облачное подключение с помощью учетных данных субъекта-службы.
  1. Проверьте доступ - вызовите API GET Connections, чтобы подтвердить, что служебный принципал может получить доступ к необходимому облачному подключению здесь:
curl --request GET \ 
--url https://api.fabric.microsoft.com/v1/connections \ 
--header 'authorization: Bearer <step 2: access-token>' 

Получите значение id соответствующего подключения из ответа.

  1. Обновите учетные данные Git: создайте маркер доступа (шаг 1 из предыдущего раздела) и вызовите API обновления учетных данных Git, дополнительные сведения см. здесь (замените <> значения):
curl --request PATCH \ 
--url https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/git/myGitCredentials \ 
--header 'authorization: Bearer <step 2: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{ 
"source": "ConfiguredConnection", 
"connectionId": "<step 3: connection id>"}' 

После выполнения этих действий служебный принципал полностью настроен и готов к выполнению операций Git Fabric REST API.