Роли

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

Для Azure Analysis Services и наборов данных Power BI пользователи должны быть в вашем идентификаторе Microsoft Entra, а имена пользователей и группы должны быть указаны в адресе электронной почты организации или имени участника-пользователя. Для SQL Server Analysis Services роли содержат пользователей по имени пользователя Windows или группе Windows, а также разрешениям (чтение, обработка, администратор). Для Azure Analysis Services и семантических моделей Power BI пользователи должны находиться в Azure Active Directory, а имена пользователей и группы должны указываться по адресу электронной почты организации или имени участника-пользователя. Для SQL Server Analysis Services роли содержат пользователей по имени пользователя Windows или группе Windows, а также разрешениям (чтение, обработка, администратор).

Важно!

При использовании Visual Studio для создания ролей и добавления пользователей организации в проект табличной модели, который будет развернут в Azure Analysis Services или Power BI, используйте интегрированную рабочую область.

Важно!

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

Сведения в этой статье предназначены для авторов табличных моделей, которые определяют роли с помощью диалогового окна Диспетчер ролей в SSDT. Роли, определенные при создании модели, применяются к базе данных рабочей области модели. После развертывания базы данных модели администраторы базы данных модели могут управлять (добавлять, изменять, удалять) члены ролей с помощью SSMS.

Основные сведения о ролях

Роли используются в службах Analysis Services для управления доступом к данным модели. Существует два типа ролей.

  • Предопределимая роль сервера, которая предоставляет доступ администратора к экземпляру сервера служб Analysis Services. Роли сервера не применяются к Power BI. Вместо этого Power BI использует роли рабочей области.

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

Роли, определенные для табличной модели, являются ролями базы данных. Это значит, что роли содержат членов, состоящих из пользователей или групп, которые имеют определенные разрешения, определяющие действия, которые эти члены могут выполнять в базе данных модели. Роль создается как отдельный объект в базе данных и применяется только к базе данных, в которой создается эта роль. Пользователи и группы включаются в роль автором модели, который по умолчанию имеет разрешения администратора на сервере базы данных рабочей области; для развернутой модели администратором.

Роли в табличных моделях можно дополнительно определить с помощью фильтров строк, также называемых безопасностью на уровне строк. Фильтры строк используют выражения DAX для определения строк в таблице и любых строк на стороне связи «многие», которые может просматривать пользователь. Фильтры строк, в которых используются выражения DAX, могут быть определены только для разрешений на чтение, чтение и обработку. В Power BI роли модели определяются в Power BI Desktop и применяются только к безопасности на уровне строк. Дополнительные сведения см. в разделе Фильтры строк далее в этой статье.

По умолчанию при создании нового проекта табличной модели в проекте нет ролей. Роли можно определить с помощью диалогового окна диспетчера ролей в SSDT. При определении ролей во время создания модели они применяются к базе данных рабочей области модели. Когда модель развернута, те же роли применяются к развернутой модели. После развертывания модели члены роли сервера (администратор служб Analysis Services) и администраторы баз данных могут управлять ролями, связанными с моделью, и элементами, связанными с каждой ролью, с помощью SSMS.

Разрешения

Разрешения роли, описанные в этом разделе, применяются только к Azure Analysis Services и SQL Server Analysis Services. В Power BI разрешения определяются для семантической модели. Дополнительные сведения см. в статье Управление доступом к семантической модели.

Каждая роль определяет одно разрешение для базы данных (за исключением объединенного разрешения на чтение и обработку). По умолчанию новая роль имеет разрешение «Нет». То есть члены этой роли, добавленные с разрешением «Нет», не смогут изменять базу данных, выполнять операции по обработке, запрашивать данные и даже видеть базу данных, пока им не будет предоставлено другое разрешение.

Группа или пользователь может быть членом любого количества ролей, каждая из которых имеет разные разрешения. Когда пользователь является членом нескольких ролей, он обладает всеми разрешениями, определенными для каждой из них. Например, если пользователь является членом роли с разрешением на чтение, а также роли с разрешением «Нет», этот пользователь будет обладать разрешением на чтение.

Каждой роли можно назначить одно из следующих разрешений.

Разрешения Описание Фильтры строк с использованием DAX
Нет Члены не могут вносить изменения в схему шаблона базы данных, а также просматривать данные. Фильтры строк не применяются. Пользователи в этой роли не могут видеть данные
Read Члены могут запрашивать данные (с учетом фильтров строк), но не могут видеть шаблон базы данных в среде SSMS, не могут вносить изменения в схему шаблона базы данных, и пользователь не может обработать модель. Фильтры строк могут применяться. Пользователи могут видеть только данные, указанные в формуле DAX фильтра строк.
Чтение и обработка Члены могут просматривать данные (с учетом фильтров уровня строк) и выполнять операции по обработке, запуская скрипты или пакеты, содержащие команду обработки, но не могут вносить изменения в базу данных. Не удается просмотреть базу данных модели в SSMS. Фильтры строк могут применяться. Выполнять запросы можно только к данным, указанным в формуле DAX фильтра строк.
Процесс Члены могут выполнять операции по обработке путем запуска скриптов или пакетов, содержащих команды обработки. Не могут изменять схему шаблона базы данных. Запросы к данным невозможны. Не удается запросить базу данных модели в SSMS. Фильтры строк не применяются. Члены этой роли не могут запрашивать данные
Администратор Члены могут вносить изменения в схему модели и запрашивать все данные в конструкторе моделей, клиенте отчетов и SSMS. Фильтры строк не применяются. Члены этой роли могут запрашивать любые данные

Примечание

Члены с разрешениями на чтение, чтение и обработку могут запрашивать данные на основе фильтров строк, но не могут видеть базу данных модели в SSMS. Члены не могут вносить изменения в схему базы данных модели и не могут обрабатывать модель. Однако в SQL Server Analysis Services 2019 г. и более ранних версиях члены могут использовать динамические административные представления для определения мер. SQL Server Analysis Services 2022 г. и более поздних версий блокируют доступ к динамическим административным представлениям для повышения безопасности.

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

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

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

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

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

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

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

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

Дополнительные сведения о ролях модели в Power BI см. в статье Безопасность на уровне строк в Power BI.

Динамическая безопасность

Динамическая безопасность позволяет определить безопасность на уровне строк на основе имени пользователя, вошедшего в систему, или свойства CustomData, возвращаемого из строка подключения. Для реализации динамической безопасности в модель необходимо включить таблицу со значениями имен входа (имена пользователей Windows) для пользователей, а также поле, которое можно использовать для определения конкретных разрешений, например таблицу dimEmployees с идентификаторами входа (домен или имя пользователя) и значением подразделения для каждого сотрудника.

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

Функция Описание
USERNAME, функция (DAX) Возвращает значение вида «домен\имя пользователя» для пользователя, который находится в системе в настоящий момент.
CUSTOMDATA, функция (DAX) Возвращает свойство CustomData в строке подключения.

Функция LOOKUPVALUE позволяет возвращать значения для столбца, в котором имя пользователя Windows соответствует имени пользователя, возвращенного функцией USERNAME, или строке, возвращенной функцией CustomData. После этого можно ограничить запросы строками, в которых значения, возвращенные функцией LOOKUPVALUE, совпадают со значениями в этой же или связанной таблице.

Пример использования формулы

='dimDepartment'[DepartmentId]=LOOKUPVALUE('dimEmployees'[DepartmentId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartment'[DepartmentId])

Функция LOOKUPVALUE возвращает значения для столбца dimEmployees[DepartmentId], где dimEmployees[LoginId] совпадает с Идентификатором входа пользователя, вошедшего в систему, возвращаемым параметром USERNAME, а значения dimEmployees[DepartmentId] совпадают со значениями для dimDepartment[DepartmentId]. Значения в поле DepartmentId, возвращенные функцией LOOKUPVALUE, используются для ограничения строк, запрашиваемых в таблице dimDepartment и любых таблицах, связанных по столбцу DepartmentId. Возвращаются только строки, столбец DepartmentId в которых входит в список значений DepartmentId, возвращенных функцией LOOKUPVALUE.

dimEmployees

LastName FirstName LoginId DepartmentName DepartmentId
Коричневый Кевин Adventure-works\kevin0 Marketing 7
Bradley David Adventure-works\david0 Marketing 7
Dobney JoLynn Adventure-works\JoLynn0 Производство 4
Baretto DeMattos Paula Adventure-works\Paula0 Human Resources 2

dimDepartment

DepartmentId DepartmentName
1 Корпоративный
2 Executive General and Administration
3 Управление запасами
4 Производство
5 Контроль качества
6 Научные исследования и разработки
7 Сбыт и маркетинг

Тестирование ролей

При создании проекта модели в Visual Studio можно использовать функцию Анализ в Excel для проверки эффективности определенных ролей. Если в меню Модель конструктора моделей выбрать команду Анализ в Excel, еще до открытия окна Excel появляется диалоговое окно Выбор учетных данных и перспективы . В этом диалоговом окне можно указать текущее имя пользователя, другое имя пользователя, роль и перспективу, которые будут использоваться для подключения к базе данных рабочей области модели в качестве источника данных. Дополнительные сведения см. в разделе Анализ в Excel.

Роли сценариев

Роли для развернутых моделей и семантических моделей можно создавать с помощью языка сценариев табличных моделей (TMSL) для создания или изменения объекта Roles. Скрипты TMSL можно выполнять в SSMS или с помощью командлета PowerShell Invoke-ASCmd.

См. также раздел

Создание ролей и управление ими
Перспективы
Анализ в Excel
USERNAME, функция (DAX)
Функция LOOKUPVALUE (DAX)
CUSTOMDATA, функция (DAX)