Как я могу назначить участника-службы группе AAD в моем размещенном конвейере выпуска VSTS с помощью PowerShell?

У меня есть конвейер выпуска VSTS, который предоставляет новое функциональное приложение с Управляемая идентификация службы. Мое решение включает в себя экземпляр хранилища общих ключей для секретов моего приложения. Хранилище ключей допускает максимум 16 записей управления доступом, поэтому я решил создать группу Azure AD для приложений, в которую я буду добавлять участников-служб приложений. Все просто и работает в PowerShell локально, но я не могу найти способ сделать это с помощью размещенных серверов сборки в конвейере выпуска VSTS и задачи выпуска Запуск Powershell в Azure.

Интерфейс командной строки Azure имеет версию 1.X на сервере сборки Hosted и 2.x на сервере сборки Hosted 2017 * 1.x, похоже, не предлагает управление группами AD или доступ к графическому API * 2.x предлагает az ad group member add, но размещенная сборка 2017 имеет проблему с New-AzureStorageTable, который используется где-то еще в моем конвейере, поэтому я не могу его использовать

Точно так же модуль PowerShell Azure RM на сервере размещенной сборки очень старый и не поддерживает манипуляции с членством в группах. Версия на сервере Hosted 2017 (которую я не могу использовать) имеет такие команды, как _ 2_, но ничего для добавления пользователя в эту группу.

Командлет Add-AzureADGroupMember, доступный в AAD PowerShell будет хорошим решением, но он недоступен ни на Размещено или Хостинг 2017 серверов сборки.

Я рассмотрел как модули Runbook для автоматизации, так и прямые HTTPS-сообщения в API-интерфейсе графа с использованием токена OAuth, доступного в конвейере выпуска, но хочу остаться с PowerShell, чтобы количество технологий в моем конвейере выпуска было как можно меньшим. Я также предпочел бы избегать безопасного хранения учетных данных для использования в команде PowerShell, такой как Login-AzureRmAccount, и полагаться на идентификатор Конечная точка службы, которую я определил для своего конвейера выпуска.

Предложения приветствуются.




Ответы (1)


Поскольку размещенный агент не может удовлетворить ваши требования, вы можете настроить частный агент сборки (он бесплатный) на своем компьютере: Развернуть агент в Windows.

Что касается командлета Add-AzureADGroupMember, вы можете установить его, вызвав Install-Module -Name AzureAD через задачу Azure PowerShell, которая отлично работает с размещенным агентом.

Сценарий:

Install-PackageProvider -Name NuGet -Force -Scope CurrentUser
Install-Module -Name AzureAD -Force -Verbose -Scope CurrentUser
person starian chen-MSFT    schedule 27.12.2017
comment
Верно, но я не заинтересован в том, чтобы брать на себя сборку / обслуживание / стоимость виртуальной машины для моего конвейера сборки, если есть программный вариант PAAS. - person Josh; 27.12.2017
comment
Вы можете вызвать командлет Add-AzureADGroupMember на размещенном агенте, проверить обновление моего ответа. - person starian chen-MSFT; 27.12.2017
comment
Я думал, что пробовал это, но сделал это снова. Установка модуля запрещена: Administrator rights are required to install modules in 'C:\Program Files\WindowsPowerShell\Modules' - person Josh; 27.12.2017
comment
Кстати, в сообщении об ошибке предлагается добавить -Scope CurrentUser для установки модуля в каталог сборщика, но этот подход не работает с Install-NuGetClientBinaries : Exception calling "ShouldContinue" with "2" argument(s) - person Josh; 27.12.2017
comment
Я обновил ответ, попробуйте еще раз и проверьте результат. - person starian chen-MSFT; 28.12.2017
comment
Да, спасибо, что собрали этот кусок пирога. К сожалению, я наткнулся на еще одно ваше сообщение, подтверждающее, что моя общая цель невозможна в конвейере выпуска. Было бы неплохо иметь возможность принять идентичность SvcPrincipal, которую мы создали в качестве участника подписки, и управлять AD. Не нравится идея хранить где-то клиент / секрет, который можно скопировать в блокнот. - person Josh; 06.01.2018