Кто-нибудь знает, как создать конечную точку службы Azure DevOps «Azure Resource Manager/федерация удостоверений рабочей нагрузки с OpenID Connect», автоматизированную с помощью терминалов Az CLI или Az PS? В противном случае подойдет даже вызов REST API Azure DevOPs.
Выделено то, что я хочу создать:
По результатам расследования, в лучшем случае они позволяют создавать только обычные конечные точки Service Principal? Насколько я могу, эти конечные точки службы WIF ARM можно создать только с помощью внешнего портала AzDO и даже Terraform, но ни один из них не подходит для моего использования. Кажется безумием, что MS предоставила конечные точки службы WIF стороннему решению (Terraform), но не своим собственным внутренним модулям командлетов!
Любой совет будет принят с благодарностью.


Как упоминалось в этом 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) | Майкрософт
@Clumsyhands Рад узнать, что проблема решена :)
при использовании управляемого удостоверения является ли значение «serviceprincipalid»: «appId» идентификатором клиента управляемого удостоверения?
Вы создаете подключение к службе типа «Azure Resource Manager с использованием федерации Workload Identity с OpenID Connect (вручную)»? Пожалуйста, задайте новый вопрос с более подробной информацией о вашем требовании и поделитесь ссылкой здесь.
спасибо, ты звезда, это решило мою проблему! Документы MS не содержат никаких ссылок на схему WorkloadIdentityFederation, что очень расстраивает...