Роли (табличные службы 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

Нет

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

Фильтры строк не применяются. Пользователи в этой роли не могут видеть данные

Чтение

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

Фильтры строк могут применяться. Пользователи могут видеть только данные, указанные в формуле DAX фильтра строк.

Чтение и обработка

Члены могут просматривать данные (с учетом фильтров уровня строк) и выполнять операции по обработке, запуская скрипты или пакеты, содержащие команду обработки, но не могут вносить изменения в базу данных. Не могут просматривать базу данных модели в среде Среда SQL Server Management Studio.

Фильтры строк могут применяться. Выполнять запросы можно только к данным, указанным в формуле DAX фильтра строк.

Обработка

Члены могут выполнять операции по обработке путем запуска скриптов или пакетов, содержащих команды обработки. Не могут изменять схему шаблона базы данных. Запросы к данным невозможны. Запросы к шаблону базы данных в среде Среда SQL Server Management Studio невозможны.

Фильтры строк не применяются. Члены этой роли не могут запрашивать данные

Администратор

Члены могут вносить изменения в схему базы данных модели и запрашивать любые данные в конструкторе модели, клиенте отчетов и среде Среда SQL Server Management Studio.

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

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

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

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

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

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

Таблица

Выражение DAX

Region

=Region[Country]=”USA”

ProductCategory

=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

Brown

Kevin

Adventure-works\kevin0

Marketing

7

Bradley

David

Adventure-works\david0

Marketing

7

Dobney

JoLynn

Adventure-works\JoLynn0

Production

4

Baretto DeMattos

Paula

Adventure-works\Paula0

Human Resources

2

dimDepartment

DepartmentId

DepartmentName

1

Corporate

2

Executive General and Administration

3

Inventory Management

4

Manufacturing

5

Quality Assurance

6

Research and Development

7

Sales and Marketing

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

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

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

Раздел

Описание

Создание ролей и управление ими (табличные службы SSAS)

Задачи в этом разделе демонстрируют создание ролей и управление ими с помощью диалогового окна Диспетчер ролей.

См. также

Справочник

USERNAME, функция (DAX)

Функция LOOKUPVALUE (DAX)

CUSTOMDATA, функция (DAX)

Основные понятия

Перспективы (табличные службы SSAS)

Анализ в Excel (табличные службы SSAS)