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


Роли (табличные службы SSAS)

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

Важно!

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

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

Табличное моделирование (Руководство по Adventure Works) содержит дополнительные сведения и уроки по использованию этой функции.

Разделы данной темы:

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

Роли используются в Microsoft SQL Server Analysis Services для управления безопасностью служб Analysis Services и данных. В службах Analysis Services существует два типа ролей:

  • Предопределимая роль сервера, которая предоставляет доступ администратора к экземпляру служб Analysis Services.

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

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

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

По умолчанию при создании нового проекта табличной модели в нем нет никаких ролей. Роли можно определить с помощью диалогового окна Диспетчер ролей в SQL Server Data Tools. При определении ролей во время создания модели они применяются к базе данных рабочей области модели. Когда модель развернута, те же роли применяются к развернутой модели. После развертывания модели члены роли сервера (администратор служб Analysis Services) и администраторы баз данных могут управлять ролями, связанными с моделью, и членами, связанными с каждой ролью, с помощью SQL Server Management Studio.

Примечание

В ролях, определенных для модели в режиме DirectQuery, нельзя использовать фильтры строк, однако определенные для каждой роли разрешения продолжают действовать.

Разрешения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

='dimDepartmentGroup'[DepartmentGroupId]=LOOKUPVALUE('dimEmployees'[DepartmentGroupId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartmentGroup'[DepartmentGroupId])

Функция LOOKUPVALUE возвращает значения для столбца dimEmployees[DepartmentId], где значение dimEmployees[LoginId] равно идентификатору входа текущего пользователя, возвращенному функцией USERNAME, а значения для dimEmployees[DepartmentId] равны значениям для dimDepartmentGroup[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 Сбыт и маркетинг

Проверка ролей

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

Связанные задачи

Раздел Описание
Создание ролей и управление ими (табличные службы SSAS) Задачи в этом разделе демонстрируют создание ролей и управление ими с помощью диалогового окна Диспетчер ролей .

См. также:

Перспективы (табличные службы SSAS)
Анализ в Excel (табличные службы SSAS)
USERNAME, функция (DAX)
Функция LOOKUPVALUE (DAX)
CUSTOMDATA, функция (DAX)