Создание федерации удостоверений рабочей нагрузки Azure DevOps с помощью Az CLI/Az PS

Кто-нибудь знает, как создать конечную точку службы Azure DevOps «Azure Resource Manager/федерация удостоверений рабочей нагрузки с OpenID Connect», автоматизированную с помощью терминалов Az CLI или Az PS? В противном случае подойдет даже вызов REST API Azure DevOPs.

Выделено то, что я хочу создать:

По результатам расследования, в лучшем случае они позволяют создавать только обычные конечные точки Service Principal? Насколько я могу, эти конечные точки службы WIF ARM можно создать только с помощью внешнего портала AzDO и даже Terraform, но ни один из них не подходит для моего использования. Кажется безумием, что MS предоставила конечные точки службы WIF стороннему решению (Terraform), но не своим собственным внутренним модулям командлетов!

Любой совет будет принят с благодарностью.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
186
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в этом MS Doc, сначала необходимо определить файл конфигурации для создания конечной точки службы типа Workload Identity Federation через Azure CLI.

Devops.json:

{
    "data": {
      "subscriptionId": "subId",
      "subscriptionName": "subName",
      "environment": "AzureCloud",
      "scopeLevel": "Subscription"
    },
    "name": "WorkFederatedSE",
    "type": "azurerm",
    "url": "https://management.azure.com/",
    "authorization": {
      "scheme": "WorkloadIdentityFederation",
      "parameters": {
        "tenantid": "tenantId",
        "serviceprincipalid": "appId"
      }
    },
    "isShared": false,
    "isReady": true,
    "serviceEndpointProjectReferences": [
      {
        "projectReference": {
          "id": "projectId",
          "name": "projName"
        },
        "name": "WorkFederatedSE"
      }
    ]
  }

В моем случае я загрузил этот файл .json в Azure Cloud Shell и выполнил команду CLI, чтобы создать подключение к службе после подключения с помощью az login:

az devops service-endpoint create --service-endpoint-configuration ./devops.json --org https://dev.azure.com/orgName/ --project projName

Ответ:

Когда я проверил то же самое на портале Azure DevOps, новое подключение к службе было успешно создано следующим образом:

Вы можете проверить свойства подключения к этой службе, нажав кнопку Edit с типом «Федерация удостоверений рабочей нагрузки с OpenID Connect», как показано ниже:

Чтобы создать то же самое с помощью REST API Azure DevOps, используйте следующий запрос:

POST https://dev.azure.com/orgname/_apis/serviceendpoint/endpoints?api-version=7.1-preview.4

{
    "data": {
      "subscriptionId": "subId",
      "subscriptionName": "subName",
      "environment": "AzureCloud",
      "scopeLevel": "Subscription"
    },
    "name": "WorkFederatedSE",
    "type": "azurerm",
    "url": "https://management.azure.com/",
    "authorization": {
      "scheme": "WorkloadIdentityFederation",
      "parameters": {
        "tenantid": "tenantId",
        "serviceprincipalid": "appId"
      }
    },
    "isShared": false,
    "isReady": true,
    "serviceEndpointProjectReferences": [
      {
        "projectReference": {
          "id": "projectId",
          "name": "projName"
        },
        "name": "WorkFederatedSE"
      }
    ]
  }

Ответ:

Для подключения службы типа «Azure Resource Manager с использованием федерации Workload Identity с OpenID Connect (автоматически)» добавьте "creationMode": "Automatic", в раздел данных и удалите serviceprincipalid следующим образом:

POST https://dev.azure.com/orgname/_apis/serviceendpoint/endpoints?api-version=7.1-preview.4

{
    "data": {
      "subscriptionId": "subId",
      "subscriptionName": "subName",
      "creationMode": "Automatic", //Add this
      "environment": "AzureCloud",
      "scopeLevel": "Subscription"
    },
    "name": "WorkFederatedSEAut",
    "type": "azurerm",
    "url": "https://management.azure.com/",
    "authorization": {
      "scheme": "WorkloadIdentityFederation",
      "parameters": {
        "tenantid": "tenantId"
      }
    },
    "isShared": false,
    "isReady": true,
    "serviceEndpointProjectReferences": [
      {
        "projectReference": {
          "id": "projectId",
          "name": "projName"
        },
        "name": "WorkFederatedSEAut"
      }
    ]
  }

Ответ:

Когда я проверил на портале DevOps, новое сервисное соединение автоматического типа создано успешно:

Ссылка:

Конечные точки — Создать — REST API (конечная точка службы Azure DevOps) | Майкрософт

спасибо, ты звезда, это решило мою проблему! Документы MS не содержат никаких ссылок на схему WorkloadIdentityFederation, что очень расстраивает...

Clumsyhands 18.06.2024 22:04

@Clumsyhands Рад узнать, что проблема решена :)

Sridevi 18.06.2024 22:06

при использовании управляемого удостоверения является ли значение «serviceprincipalid»: «appId» идентификатором клиента управляемого удостоверения?

Ryu S. 22.07.2024 15:14

Вы создаете подключение к службе типа «Azure Resource Manager с использованием федерации Workload Identity с OpenID Connect (вручную)»? Пожалуйста, задайте новый вопрос с более подробной информацией о вашем требовании и поделитесь ссылкой здесь.

Sridevi 22.07.2024 17:55

Другие вопросы по теме

После создания конвейера развертывания с указанием имени ресурса всем существующим конвейерам теперь требуется разрешение на развертывание
Сборка и развертывание DACPAC через Azure DevOps Pipeline без .sln (или каких-либо артефактов)
Сборка Azure DevOps на агенте Mac: BuildKit включен, но появляется сообщение об ошибке: компонент buildx отсутствует или сломан
Объект конвейеров Azure YAML как параметры, считанные из файла
Пакетная обработка многоэтапных конвейеров — Azure DevOps
Конвейер Azure DevOps Terraform: проблема аутентификации с федеративным и управляемым удостоверением
Как создать запрос в Azure, чтобы найти изменения в оставшемся рабочем поле
Как перенести результаты тестирования gitlab ci в Azure TFS?
Каталог артефактов реакцииJS недоступен во время развертывания, даже если он хорошо скомпилирован в Azure DevOps Pipeline
Запуск автоматического теста для выбранного элемента управления и агента из файлов yaml в конвейерах Azure

Похожие вопросы

Внешние удостоверения — настройка письма с кодом подтверждения при регистрации
Фабрика данных Azure: как сохранить имя файла в приемнике с помощью действия копирования
Контейнерное приложение .NET обновлено с версии 6 до 8, и проба запуска начинает давать сбой в службах Azure Kubernetes
Удаление назначения роли az: в запросе не было подписки или допустимого поставщика ресурсов уровня клиента
Проблема с веб-приложением или Azure?: в этом регионе для вашей подписки предусмотрена квота в 0 ядер PremiumV2. Попробуйте выбрать другой регион или артикул
Получить все типы ресурсов в группе ресурсов
Как подключить модуль в AKS к Центру событий Azure с помощью интерфейса Kafka?
Перемещение электронных писем в удаленные элементы с помощью Microsoft Graph API
Предоставление согласия администратора на разрешение API регистрации приложения
Периодические проблемы с триггерами в сетке событий для загрузки и удаления больших двоичных объектов в функции Azure