Безопасность измерений в SSAS и SSRS - PullRequest
0 голосов
/ 19 февраля 2009

Я застрял с проблемой реализации безопасности на уровне измерений в SSAS. Вот что я сделал - 1. Определил роль в SSAS и применил безопасность на уровне измерения (снятие отметки с измерений куба, для которых я не хочу, чтобы эта роль осуществляла доступ, и настройка «Разрешенные и запрещенные наборы»). 2. Протестировано с использованием Cube Browser, все работало нормально. 3. Протестировано с использованием SSRS, без изменений, я все еще смог запросить измерения и получить результаты, которые мне не нужны.

Вопрос. Можно ли распространять безопасность, которую я определяю на уровне куба, на SSRS? Я хотел бы верить, что да, это так.

Если да, то вот что мне нужно -

  1. Пользователи будут входить в диспетчер отчетов с использованием удостоверения Windows (встроенная проверка подлинности в IIS включена -done)
  2. Захватите эту идентификацию, чтобы узнать роль SSAS, к которой они принадлежат - я думаю, что это будет через запрос, не похоже, что он работает автоматически (Как это сделать?)
  3. Пользователь работает в рамках ограничений этой роли в SSRS (защита на основе ролей, применяемая на уровне SSAS), т. Е. Если измерение X недоступно для пользователя, он / она не должен иметь возможность запрашивать его. (Как это сделать?)

Я упомянул немало блогов на эту тему и даже нашел один - http://www.sqlmag.com/Article/ArticleID/96763/sql_server_96763.html

но этот, похоже, содержит больше информации о том, как настроить его в SSAS, а не как использовать его в SSRS.

Любой, кто работал над этим подходом ИЛИ имеет понимание этого, пожалуйста, дайте мне знать.

Ответы [ 3 ]

3 голосов
/ 21 февраля 2009

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

2 голосов
/ 04 марта 2009

Все, что вам нужно сделать, это:

В источнике данных в отчете SSRS укажите имя роли, созданное в базе данных SSAS, например:

Источник данных = LOCALHOST; Начальный каталог = XXXXX; Роли = RoleName

Спасибо Самир

0 голосов
/ 21 февраля 2009

Я не делал этого в SSAS, но я сделал это в движке. У Джеремии Пешки есть блог о настройке безопасности на основе строк , и если вы собираетесь сделать это с помощью встроенной безопасности Windows, то вы можете использовать функцию user_name (), чтобы получить имя текущего логина. Вы будете использовать таблицу поиска для каждого измерения со строкой для каждой строки измерения плюс имя пользователя. При запросе присоединитесь к таблице безопасности измерений следующим образом:

FROM dbo.Customers cs
INNER JOIN dbo.CustomersSecurity css ON cs.CustomerId = css.CustomerId AND css.UserName = User_Name()

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

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

...