Azure: Несколько пользователей SQL, связанных с одной управляемой идентичностью

Вопрос или проблема

В 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 для одной и той же управляемой идентичности.

Вот несколько возможных подходов для решения вашей проблемы:

  1. Использование назначенных управляемых идентичностей: Вы можете создать несколько назначенных управляемых идентичностей в 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;
  2. Использование связанных учетных записей SQL: Если имеет смысл, вы можете рассмотреть возможность интеграции логики для переключения между учетными записями в вашем приложении. Например, вы можете хранить подключения в конфигурации и выбирать их программно в зависимости от того, какую часть приложения вы вызываете.

  3. Делегирование прав: Если допустимо, попробуйте минимально делегировать необходимые права существующему пользователю. Возможно, это получится сделать через создание отдельных наборов действий в SQL на уровне ролей. Тем не менее, при этом есть риск избыточности прав, поэтому применять этот подход нужно с осторожностью.

Таким образом, использование двух назначенных управляемых идентичностей является наиболее устойчивым и безопасным решением для вашего сценария. Это позволит вам сегментировать доступ к ресурсам и предоставлять необходимые разрешения для разных частей вашего приложения.

Оцените материал
Добавить комментарий

Капча загружается...