Вопрос или проблема
В Azure возможно ли связать два отдельных учетных записи пользователя Azure SQL Database с одной управляемой идентичностью?
Я подключаюсь к Azure SQL Database из Azure App Service, используя управляемую идентичность. Хотя это всего лишь одно приложение, я хочу использовать учетную запись SQL с меньшими привилегиями для определенной части приложения.
Чтобы создать SQL-пользователя, связанного с управляемой идентичностью, вы выполняете запрос, подобный этому:
CREATE USER [имя-идентичности] FROM EXTERNAL PROVIDER;
Но у Azure App Service только одна управляемая идентичность, поэтому я не могу создать две учетные записи пользователя для нее.
Существует ли какое-либо решение этой проблемы?
Нет, учетная запись пользователя в SQL привязана к конкретной Azure идентичности, поэтому вы не можете иметь две. Вы можете создать две управляемые идентичности с назначением пользователям и позволить вашему приложению выбрать соответствующую для использования.
Ответ или решение
В Azure действительно существует ограничение, связанное с привязкой учетных записей Azure SQL к управляемым идентификаторам. В вашем случае, если вы используете единую управляемую идентичность для подключения к базе данных Azure SQL из Azure App Service, то вы не сможете создать две разные учетные записи SQL для одной и той же управляемой идентичности.
Вот несколько возможных подходов для решения вашей проблемы:
-
Использование назначенных управляемых идентичностей: Вы можете создать несколько назначенных управляемых идентичностей в Azure и настроить свою Azure App Service таким образом, чтобы она использовала нужную идентичность в зависимости от того, какая часть приложения активна. Например, одна идентичность может иметь доступ только к определенным ресурсам или базе данных с минимальными правами, а другая — к полному доступу.
Чтобы создать назначенную управляемую идентичность:
- Перейдите в Azure Portal.
- Найдите вашу App Service и выберите её.
- Перейдите в раздел "Managed identities" и создайте новую назначенную управляемую идентичность.
После этого вы можете установить соответствующие разрешения и создать учетные записи SQL для каждой из управляемых идентичностей, как показано ниже:
CREATE USER [identity1_name] FROM EXTERNAL PROVIDER; CREATE USER [identity2_name] FROM EXTERNAL PROVIDER;
-
Использование связанных учетных записей SQL: Если имеет смысл, вы можете рассмотреть возможность интеграции логики для переключения между учетными записями в вашем приложении. Например, вы можете хранить подключения в конфигурации и выбирать их программно в зависимости от того, какую часть приложения вы вызываете.
-
Делегирование прав: Если допустимо, попробуйте минимально делегировать необходимые права существующему пользователю. Возможно, это получится сделать через создание отдельных наборов действий в SQL на уровне ролей. Тем не менее, при этом есть риск избыточности прав, поэтому применять этот подход нужно с осторожностью.
Таким образом, использование двух назначенных управляемых идентичностей является наиболее устойчивым и безопасным решением для вашего сценария. Это позволит вам сегментировать доступ к ресурсам и предоставлять необходимые разрешения для разных частей вашего приложения.