Фильтрация строк на основе ролей приложения Power BI

Я настроил локальную табличную модель с использованием ролей для фильтрации данных по строкам. При локальном входе в систему и использовании Excel это отлично работает и фильтрует как задумано. Затем я использую соединитель служб Power BI Analysis Services в качестве служебной шины для доступа к моей модели в приложении Power BI (https://app.powerbi.com). Когда я вхожу в систему с той же учетной записью, что и в сценарии Excel, мой фильтр не работает, и возвращаются все строки. Пользователь имеет доступ ко всему серверу SSAS, а не только к указанным моделям.

Я использую Active Directory для аутентификации пользователей и синхронизации между Azure AD и локальной AD.

Пользователь, с которым я тестирую, не является администратором.

Я попытался посмотреть настройки коннектора, но это довольно просто, и я не вижу, что я сделал не так. Соединитель использует учетную запись службы с правами пользователя на чтение и обработку.

Почему приложение Power BI не использует фильтрацию из моей табличной модели?


person Espen    schedule 10.07.2015    source источник


Ответы (1)


  1. «Соединитель использует учетную запись службы с правами пользователя на чтение и обработку». Учетная запись службы соединителя служб Analysis Services должна быть администратором служб Analysis Services. В противном случае он не сможет использовать EffectiveUserName для олицетворения пользователя, вошедшего в Power BI.

  2. Войдите на сервер как пользователь, с которым вы вошли на app.powerbi.com. Затем откройте командную строку и запустите: Whoami / upn. Если это не возвращает точный адрес электронной почты, вы входите в Power BI, и это проблема.

  3. Какой подход вы используете к безопасности табличной модели. У вас есть роль с выражением фильтра строк, в которой отдельные пользователи указаны в качестве членов роли? Или группы AD в качестве участников ролей? Или вы выполняете динамическую безопасность с помощью функции DAX USERNAME ()? Можете выложить подробности?

  4. Можете ли вы проверить, что пользователь Power BI не является администратором служб Analysis Services, поскольку он может видеть все данные?

  5. Можете ли вы импортировать табличную модель в SSDT-BI с сервера (чтобы убедиться, что члены роли обновлены в SSDT-BI) и запустить этот помощник BIDS функция. Он расширит группы и расскажет вам о любых проблемах с членством. Может быть, ваш пользователь выполняет несколько ролей?

person GregGalloway    schedule 12.07.2015
comment
Спасибо, что ответили, и извините за поздний ответ. 1. Да, это учетная запись администратора. 2. Компьютер пользователя не входит в домен только с помощью приложения Power BI. 3. USERNAME () динамическая безопасность, но я пробовал отдельных пользователей. Что касается AD, это локальная синхронизация AD с Azure AD. БД MS-SQL 2012 - person Espen; 01.08.2015
comment
Я запустил профилировщик, и эффективный пользователь правильный, но фильтр ролей не срабатывает при использовании приложения power bi, только при использовании Excel. - person Espen; 01.08.2015
comment
Отредактировал свой ответ, добавив еще несколько вещей, которые нужно проверить - person GregGalloway; 01.08.2015
comment
Пользователь (ы) не является администратором или частью какой-либо группы администраторов. Моя проблема не с одним пользователем, а со всеми пользователями. Каждый может видеть все данные при использовании приложения Power BI. Спасибо за совет BIDS Helper выглядит как отличный инструмент. При запуске отчета не могу найти никаких проблем. Еще раз спасибо за помощь, очень признателен. - person Espen; 01.08.2015
comment
Хм. Может, это просто ошибка SSAS. Можете ли вы убедиться, что используете последний пакет обновления для SQL Server? В противном случае может потребоваться обращение в службу поддержки. - person GregGalloway; 01.08.2015
comment
Табличная модель принимает все соединения от коннектора. Выдача себя за другое лицо вообще не работает. Пользователю даже не нужен доступ к модели, если он работает через Power BI SSAS Connector. - person Espen; 15.08.2015
comment
Если вы посмотрите на соединение внутри Profiler на одном из ранних событий, таких как Session Initialize (я забыл, какое событие), вы получите список ролей, в которых находится пользователь. Например, Sales, Marketing означает, что пользователь находится в эти две роли. Но *, Sales, Marketing со звездочкой и перечислением всех ролей означает, что пользователь является администратором базы данных или сервера SSAS. Вы видите звездочку в списке, когда обычный пользователь подключается через Power BI? Что насчет того, когда этот пользователь подключается из Excel? - person GregGalloway; 15.08.2015
comment
Спасибо, Грег. Вы правы, я получаю звездочку * при использовании коннектора. Я проверил, дважды проверил и trippel проверил, что пользователь не является администратором домена / сервера или табличной модели / экземпляра. Я даже попытался создать нового пользователя AD и только добавил его в группу пользователей домена. Еще получил такой же *. Когда пользователи подключаются из Excel, они входят в домен, а не в соединитель. Тогда я получаю только правильную роль, а не *. - person Espen; 16.08.2015
comment
Первоначально, когда был выпущен соединитель AS Connector, если пользователь user1 построил отчет на веб-сайте Power BI, а затем поделился отчетом с пользователем user2, соединитель AS Connector продолжал бы подключаться как user1, даже если пользователь user2 просматривал общий отчет. Однако несколько недель назад, я считаю, это изменилось. Я не понимаю, имеет ли это изменение обратную силу для ранее опубликованных отчетов. Итак, кто создает отчет на веб-сайте Power BI? Я надеюсь, что новый пользователь AD, которого вы тестируете, является создателем отчета, и что вы не публикуете отчет, созданный ранее администратором SSAS. - person GregGalloway; 16.08.2015
comment
Можете ли вы также описать, как вы создаете отчет на веб-сайте Power BI? Вы загружаете книгу Excel, которая была подключена в реальном времени к SSAS Tabular? Или вы выполняете Get Data и выбираете AS Connector, а не загружаете книгу? - person GregGalloway; 16.08.2015
comment
Я пробовал все вышеперечисленное :) В настоящее время использую Get data - затем Connector и создаю новый отчет при входе в систему как тестовый пользователь. - person Espen; 16.08.2015