Участник службы должен использоваться, если у вас есть служба (не являющаяся человеком), выполняющая операцию. В этом сценарии, например, Terraform будет использовать субъект-службу для предоставления вашей инфраструктуры как части конвейера CI / CD.
Принципалы обслуживания (в любой среде) обычно настраиваются с наименьшими привилегиями . Причина этого заключается в том, что субъект службы предназначен для использования в одной и очень конкретной цели, например, для вызова Terraform для обеспечения вашей среды. Таким образом, у участника службы могут быть разрешения на чтение определенного набора секретов из хранилища ключей Azure, которые используются для предоставления ресурсов в определенной группе ресурсов (или наборе групп ресурсов). Вот и все.
Сравните это с учетной записью пользователя, например с тем, что вы используете для своей работы. У вас может быть доступ к нескольким подпискам Azure, вы можете предоставлять ресурсы где угодно, удалять ресурсы, настраивать доступ к ресурсам и т. Д.
Основная причина использования субъекта службы сводится к безопасности. Используя приведенный выше пример, если учетные данные участника службы (идентификатор клиента и секрет) были скомпрометированы, то единственное, что можно сделать с этими учетными данными, - это прочитать секрет из хранилища ключей и выделить ресурсы в определенной группе ресурсов.
Документы здесь демонстрируют предоставление полномочий основного участника службы для всей подписки. Это менее ограничительно, чем пример, который я привел выше. Тем не менее, я подозреваю, что предполагается другая лучшая практика: ваша среда разработки / тестирования должна использовать подписку Azure, отличную от вашей рабочей и других сред. Таким образом, хотя у субъекта службы есть полные права «Участник» для подписки, посвященной dev / test, у него по-прежнему нет доступа к другим подпискам, которые есть у организации, и его нельзя использовать для настройки доступа к ресурсам в подписке. .