Я изучаю Azure и хотел использовать субъект-службу при входе в систему через интерфейс командной строки Azure вместо аутентификации через метод входа в Интернет. Я создал субъекта-службы с помощью az ad sp create-for-rbac
с областью действия в корне моей подписки и ролью «Владелец». Я могу успешно войти в систему с помощью субъекта-службы, но когда я пытаюсь выполнить az ad sp list
, я получаю сообщение об ошибке, что у меня недостаточно прав:
azure.graphrbac.models.graph_error.GraphErrorException: Недостаточно прав для завершения операции.
Когда я смотрю на вкладку управления доступом (IAM) в колонке подписки на портале, я вижу, что субъект службы является владельцем , и моя собственная учетная запись одновременно является владельцем и администратором службы.
Есть ли способ предоставить субъекту службы точно такие же права, как и моя собственная учетная запись?
Очевидно, что присвоить SP роль «Владелец» недостаточно. Вы можете назначить ему роль «Читатели каталога». Однако это невозможно с помощью Azure CLI или портала. Вам необходимо использовать API-интерфейс Azure AD Graph. Самый простой способ сделать это - использовать https://graphexplorer.azurewebsites.net/ .
Второе предостережение: вы не можете использовать сайт graphexplorer, используя свою собственную учетную запись Azure (в моем случае у меня была простая личная настройка Azure, и только я был администратором), но вы должны создать пользователя в своем Azure AD. Я дал ему роль глобального администратора, чтобы быть уверенным, я не уверен, какая минимальная роль будет иметь возможность использовать Graph API.
Теперь шаги по добавлению дают SP роль читателей каталогов немного долго объяснять здесь, я нашел их здесь: https://lnx.azurewebsites.net/directory-roles-for-azure-ad-service-principal/
Не уверен, почему это должно быть так запутано и почему этого нет в документации.
Если ваш SP имеет роль Владелец
, команда az ad sp list
может перечислить ваши SP.
Я предлагаю вам закройте текущую оболочку и повторно откройте новую оболочку, используя следующую команду для входа в свою подписку.
az login --service-principal -u <client id> -p <client secret> --tenant <tenant id>