Поделиться через


Роли

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

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

Для служб Azure Analysis Services и семантических моделей Power BI пользователи должны находиться в идентификаторе Microsoft Entra. Имена пользователей и группы указываются по адресу электронной почты организации или имени участника-пользователя (UPN). Для служб 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 разрешения определяются для семантической модели. Дополнительные сведения см. в статье Управление доступом к семантической модели.

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

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

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

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

Заметка

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

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

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

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

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

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

Стол Выражение DAX
Область =Region[Country]="США"
ProductCategory =ProductCategory[Name]="Велосипеды"
Операций =Transactions[Year]=2020

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

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

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

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

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

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

Функция Описание
функции ИМЕНИ ПОЛЬЗОВАТЕЛЯ (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] совпадает со значением LoginID пользователя, вошедшего в систему, возвращаемого именем ПОЛЬЗОВАТЕЛЯ, и значения для dimEmployees[DepartmentId] совпадают со значениями dimDepartment[DepartmentId]. Затем значения в DepartmentId, возвращаемые LOOKUPVALUE, используются для ограничения строк, запрашиваемых в таблице dimDepartment, и всех таблиц, связанных с DepartmentId. Возвращаются только строки, в которых DepartmentId также находятся в значениях для DepartmentId, возвращаемых функцией LOOKUPVALUE.

dimEmployees

LastName FirstName LoginId DepartmentName DepartmentId
Коричневый Кевин Adventure-works\kevin0 Маркетинг 7
Брэдли Давид Adventure-works\david0 Маркетинг 7
Добни ДжоЛинн Adventure-works\JoLynn0 Производство 4
Baretto DeMattos Паула Adventure-works\Paula0 Кадровые ресурсы 2

dimDepartment

DepartmentId DepartmentName
1 Корпоративный
2 Генеральный директор и администрирование
3 Управление инвентаризацией
4 Производственный
5 Обеспечение качества
6 Исследования и разработка
7 Продажи и маркетинг

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

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

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

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

См. также

создание ролей и управление ими
перспективы
анализ в Excel
функции ИМЕНИ ПОЛЬЗОВАТЕЛЯ (DAX)
функция LOOKUPVALUE (DAX)
функции CUSTOMDATA (DAX)