Управление ролями и пользователями базы данных

На уровне шаблона базы данных всем пользователям должна быть назначена роль. Роли определяют пользователей с определенными разрешениями для шаблона базы данных. Любой пользователь или группа безопасности, добавленная в роль, должна иметь учетную запись в клиенте Microsoft Entra в той же подписке, что и сервер.

Способ определения ролей отличается в зависимости от используемого средства, но на результат это не влияет.

Разрешения ролей включают следующие:

  • Администратор. Пользователи имеют полный набор прав в отношении базы данных. Роли базы данных с разрешениями администратора и администраторы сервера — это не одно и тоже.
  • Процесс. Пользователи могут подключаться к базе данных и выполнять операции обработки, а также анализировать данные шаблона базы данных.
  • Чтение. Пользователи могут использовать клиентское приложение, чтобы подключиться к шаблону базы данных и анализировать его данные.

При создании проекта табличной модели вы можете создать роли и добавить пользователей или группы в эти роли с помощью диспетчера ролей в Visual Studio с проектами Analysis Services. При развертывании на сервере используйте SSMS, командлеты PowerShell для служб Analysis Services или язык сценариев табличной модели (TMSL), чтобы добавить или удалить роли и участников пользователей.

При добавлении группы безопасности используйте obj:groupid@tenantid.

При добавлении субъекта-службы используйте app:appid@tenantid.

Добавление и администрирование ролей и пользователей в Visual Studio

  1. В обозревателе табличных моделей щелкните правой кнопкой мыши Роли.

  2. В диспетчере ролей нажмите кнопку Создать.

  3. Введите имя для роли.

    По умолчанию имя стандартной роли последовательно нумеруется для каждой новой роли. Мы рекомендуем ввести имя, которое четко определяет тип участника, например "Финансовые менеджеры" или "Специалисты по кадровым вопросам".

  4. Выберите одно из следующих разрешений:

    Разрешение Description
    нет Участники не могут считывать или изменять схему шаблона и запрашивать данные.
    Чтение Участники могут запрашивать данные (на основе фильтров строк), но не могут изменять схему шаблона.
    Чтение и обработка Участники могут запрашивать данные (на основе фильтров на уровне строк), а также выполнять операции обработки и массовой обработки, но не могут изменять схему шаблона.
    Обработать Члены могут выполнять операции «Обработать» и «Обработать все». Не могут считывать или изменять схему модели и запрашивать данные.
    Администратор Участники могут изменять схему шаблона и выполнять запрос всех данных.
  5. Если у роли, которую вы создаете, есть разрешения "Чтение" или "Чтение и обработка", вы можете добавить фильтры строк с помощью формулы DAX. Щелкните вкладку Фильтры строк, выберите таблицу, а затем щелкните поле Фильтр DAX и введите формулу DAX.

  6. Щелкните Участники>Добавить внешнего участника.

  7. В поле "Добавление внешнего участника" введите пользователей или группы в клиенте Идентификатор Microsoft Entra по адресу электронной почты. После того как вы нажмете кнопку "ОК" и закроете диспетчер ролей, роли и участники ролей появятся в обозревателе табличных моделей.

    Screen showing roles and users in Tabular Model Explorer.

  8. Выполните развертывание на сервере Azure Analysis Services.

Добавление ролей и пользователей в SSDT и управление ими

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

  1. В обозревателе объекта щелкните правой кнопкой мыши Роли>Новая роль.

  2. В области Создание роли введите имя и описание роли.

  3. Выберите разрешение.

    Разрешение Description
    Полный доступ (администратор) Участники могут изменять схему шаблона, обрабатывать и запрашивать все данные.
    Обработка базы данных Члены могут выполнять операции «Обработать» и «Обработать все». Не могут изменять схему модели и просматривать данные.
    Чтение Участники могут запрашивать данные (на основе фильтров строк), но не могут изменять схему шаблона.
  4. Щелкните Членство, а затем введите пользователя или группу в клиенте Microsoft Entra ID по адресу электронной почты.

    Screen showing Add user.

  5. Если у роли, которую вы создаете, есть разрешение "Чтение", вы можете добавить фильтры строк с помощью формулы DAX. Щелкните Фильтры строк, выберите таблицу, а затем введите формулу DAX в поле Фильтр DAX.

Добавление ролей и пользователей с помощью сценария TMSL

Вы можете выполнить сценарий TMSL в окне XMLA в SSMS или с помощью PowerShell. Используйте команду CreateOrReplace и объект Роли.

Пример скрипта TMSL

В этом примере внешний пользователь B2B и группа добавляются в роль "Аналитик" с разрешениями на чтение для базы данных SalesBI. Внешний пользователь и группа должны находиться в одном клиенте с идентификатором Microsoft Entra.

{
  "createOrReplace": {
    "object": {
      "database": "SalesBI",
      "role": "Analyst"
    },
    "role": {
      "name": "Users",
      "description": "All allowed users to query the model",
      "modelPermission": "read",
      "members": [
        {
          "memberName": "user1@contoso.com",
          "identityProvider": "AzureAD"
        },
        {
          "memberName": "group1@adventureworks.com",
          "identityProvider": "AzureAD"
        }
      ]
    }
  }
}

Добавление ролей и пользователей с помощью PowerShell

Модуль SqlServer предоставляет командлеты для конкретных задач управления базой данных, а также командлет общего назначения Invoke-ASCmd, который принимает запрос TMSL или сценарий. Следующие командлеты используются для управления ролями базы данных и пользователями.

Командлет Description
Add-RoleMember Добавление участника в роль базы данных.
Remove-RoleMember Удаление участника из роли базы данных.
Invoke-ASCmd Выполнение сценария TMSL.

Фильтры строк

Фильтры строк определяют, какие строки в таблице могут запросить участники определенной роли. Фильтры строк для каждой таблицы модели определяются с помощью формул DAX.

Они могут быть определены только для ролей с разрешениями "Чтение" и "Чтение и обработка". По умолчанию если фильтр строк не определен для конкретной таблицы, участники могут запросить все строки в таблице при условии, что не применена перекрестная фильтрация из другой таблицы.

Фильтрам строк требуется формула DAX, которая должна возвращать значение TRUE или FALSE, чтобы определить строки, которые могут запросить участники этой определенной роли. Строки, не включенные в формулу DAX, запросить нельзя. Например, в таблице "Клиенты" с выражением фильтров строк =Customers [Country] = "USA" участники роли "Продажи" могут видеть только клиентов из США.

Фильтры строк применяются к указанным строкам и связанным с ними строкам. Когда таблица содержит несколько связей, фильтры применяют защиту к связи, которая является активной. Фильтры строк пересекаются с другими фильтрами строк, определенными для связанных таблиц, например:

Таблицу Выражение DAX
Регион =Region[Country]="USA"
КатегорияПродукта =ProductCategory[Name]="Bicycles"
Транзакции =Transactions[Year]=2016

В конечном результате участники могут запрашивать следующие строки данных: для региона — США, для категории продукта — велосипед, для года — 2016. Пользователи не могут запрашивать транзакции за пределами США, транзакции, не связанные с велосипедами, а также транзакции, произошедшие не в 2016 году, пока они не станут участниками другой роли, предоставляющей эти разрешения.

Вы можете использовать фильтр =FALSE(), чтобы запретить доступ ко всем строкам для всей таблицы.

Следующие шаги

Управление администраторами сервера
Управление службами Azure Analysis Services с помощью PowerShell
Справочник по языку TMSL