У нас есть группа синхронизации базы данных Azure, которая время от времени должна запускаться приложением - например, пользователь сделал что-то, что требует синхронизации данных из одной базы данных в другую (чаще всего добавление нового пользователя ).
Мы дали разрешения веб-приложениям (с использованием идентификатора управляемой службы) на запуск этой синхронизации, добавив GUID идентификатора компьютера к соответствующей роли SQL Server - и это работает.
Впоследствии мы создали слоты развертывания на наших серверах Staging и Prod - и пока корневые сайты все еще работают, приложение при работе в слоте развертывания выдает исключение, говорящее о том, что у него нет разрешений на запуск синхронизации.
Я не могу найти какую-либо документацию для получения идентификатора объекта (фактического GUID) слота развертывания , он же Bar - чтобы добавить к этому утверждению:
az role assignment create --role "SQL Server Contributor" --assignee-object-id "Bar" --resource-group Foo
РЕДАКТИРОВАТЬ: я не установил вручную ни идентификацию ни слота, ни корневого приложения - я просто включил MSI и пытался обнаружить идентичность. Честно говоря, если бы оно было таким же, как у корневого приложения, это было бы хорошо.
Мне очень хорошо известно, что SQL Server Contributor - это огромное разрешение, которое можно дать веб-серверу, но, похоже, это было наименьшее количество привилегий, которые я мог дать серверу, у которого действительно было разрешение на запуск синхронизации базы данных.