Безопасность на уровне строк с табличным интерактивным соединением SSAS в Power BI

Tags: Power BI, SSAS

Вы можете определить безопасность на уровне строк в самой Power BI, однако иногда вы используете QL Server Analysis Services Tabular в качестве источника для Power BI через соединение Live или DirectQuery. SSAS Tabular позволяет создавать тот же тип защиты на уровне строк. Поэтому было бы намного лучше использовать Row Level Security, определенную в Tabular из Power BI, а не дублировать ее в Power BI. В этом посте мы покажем вам комплексное решение, которое содержит следующие элементы ниже:

  • Power BI Live подключается к SSAS Tabular через корпоративный шлюз
  • Конфигурация безопасности на уровне строк в SSAS Tabular
  • Просмотр результатов, отфильтрованных по RLS в Power BI

Обратите внимание, что этот метод отличается от определения безопасности на уровне строк в Power BI Desktop. На самом деле мы не будем использовать этот метод. Если вы хотите узнать больше об этом методе, прочитайте этот блог.

Необходимое условие

Для этой демонстрации мы будем использовать демонстрационную машину, которая имеет SSAS Tabular и Enterprise Gateway. Вы также должны иметь пример базы данных SSAS Tabular AW Sales Tabular Model 2014, получить который можно здесь.

Установите и настройте Enterprise Gateway

Назначение шлюзов в Power BI - создать соединение из облачной службы Power BI с локальными источниками данных. Есть два типа шлюзов: Enterprise и Personal. Названия этих шлюзов немного вводят в заблуждение. Личное не означает, что вы должны устанавливать шлюз только на своем ноутбуке, а Enterprise - не только для организаций. Есть еще отличия, о которых мы расскажем в другом посте. В целом Enterprise создан для большего количества активных соединений, особенно с Analysis Services, а Personal - для импорта данных из многих источников данных. Давайте пока оставим детали. В этом примере мы будем использовать Enterprise Gateway, потому что мы хотим подключиться к SSAS Tabular локально через соединение Live/DirectQuery.

 

Вы можете загрузить последнюю версию Enterprise Gateway с веб-сайта PowerBI.Microsoft.Com по ссылке «Загрузки».

 

Затем на странице загрузки шлюзов выберите Enterprise gateway и загрузите его.

 

Установка Enterprise Gateway просто следует за мастером, поэтому продолжайте до конца мастера, где он запрашивает вход в Power BI. Войдите в свою учетную запись Power BI:

 

После входа в систему настройте Power BI Gateway, указав имя и ключ, и тогда все будет хорошо. Если вы видите зеленый флажок и Connected, значит, ваша конфигурация прошла успешно.

 

Как вы можете видеть после успешной настройки, вы можете закрыть шлюз (не волнуйтесь, он работает за кулисами как служба) и добавить источник данных к этому шлюзу в Power BI Service.

Или же вы можете перейти непосредственно на веб-сайт Power BI, после входа перейдите к настройке меню и выберите Manage Gateways.

 

В окне управления шлюзом вы можете увидеть все настроенные вами шлюзы. Наш шлюз здесь называется BIRADACAD, и я вижу, что он успешно подключен.

 

Создать источник данных

Теперь давайте создадим источники данных. Вы можете подумать, что одного шлюза достаточно для подключения ко всем источникам данных в домене. Это абсолютно правильно, однако вам все равно нужно добавить источник данных под этим шлюзом для каждого источника. каждый источник может быть базой данных SQL Server, базой данных служб Analysis Services и т. д. Для этого примера мы строим источник данных для табличного SQL Server Analysis. Прежде чем пройти этот шаг, мы установили AW Internet Tabular Model 2014 на свой SSAS Tabular и хотим подключиться к нему. Если у вас нет этой базы данных, следуйте инструкциям в обязательном разделе.

Чтобы создать источник данных, нажмите Add Data Source в окне управления шлюзами (сначала необходимо выбрать правильный шлюз).

 

Затем введите данные для источника данных. Мы назвали этот источник данных AW Table Sales Table 2014, ввели имя своего сервера и имя базы данных. Затем мы используем аутентификацию Windows с нашим пользователем домена <domain> \ username и паролем. Вы должны увидеть успешное сообщение после нажатия на кнопку Apply. Доменное имя, которое мы используем - BIRADACAD (табличный домен SSAS), а пользователь - PBIgateway, который является пользователем домена BIRADACAD (имя пользователя: BIRADACAD \ PBIgateway) и является администратором для SSAS Tabular (объясняется в следующих нескольких параграфах) ,

 

Обратите внимание, что используемая здесь учетная запись пользователя должна соответствовать следующим условиям:

  • это должен быть пользователь домена
  • пользователь домена должен быть администратором в SSAS Tabular.

Вы можете установить администратора для SSAS Tabular, щелкнув правой кнопкой мыши на экземпляре SSAS Tabular в SSMS и в окне свойств.

 

В настройках безопасности добавьте пользователя в список администраторов.

 

 

Эффективное имя пользователя

Учетная запись шлюза, используемая для доступа к облачной службе Power BI к локальной системе SSAS Tabular. Однако этой учетной записи недостаточно для поиска данных. Затем шлюз передает EffectiveUserName из Power BI в локальную Таблицу SSAS, и результат запроса будет возвращен на основании доступа учетной записи EffectiveUserName к базе данных и модели SSAS Tabular.

По умолчанию EffectiveUserName - это имя пользователя, вошедшего в Power BI, или, другими словами, EffectiveUserName - это учетная запись Power BI. Это означает, что ваша учетная запись Power BI должна иметь достаточный доступ к табличной базе данных SSAS для получения необходимых данных. Если учетная запись Power BI является учетной записью из того же домена, что и SSAS Tabular, то проблем не возникает, и настройку безопасности можно настроить в SSAS Tabular (будет объяснено далее в этом посте). Однако, если домены разные, то вам нужно сделать сопоставление UPN.

 

UPN Mapping

Табличка SSAS является частью домена (так и должно быть, потому что именно так работает Live-соединение), и этот домен может быть доменом, к которому относится ваша учетная запись пользователя Power BI. Если вы используете того же пользователя домена для учетной записи Power BI, этот шаг можно пропустить. Если у вас есть отдельная учетная запись пользователя Power BI, отличная от учетной записи домена для SSAS Tabular, необходимо настроить UPN Mapping UPN.

 

UPN Mapping сопоставит учетные записи Power BI с локальными локальными учетными записями в табличном домене SSAS. Поскольку в моем примере мы не используем ту же учетную запись домена для своей учетной записи Power BI, мы настроили UPN следующим образом:

 

Затем на панели Mapping мы создаем новое сопоставление, которое сопоставляет нашу учетную запись пользователя Power BI с reza@biradacad.com, который является нашим локальным доменом для табличного сервера SSAS.

 

Теперь с этим сопоставлением имени пользователя reza@biradacad.com будет передаваться как EffectiveUserName в SSAS Tabular.

Настройка безопасности на уровне строк в табличном SSAS

В SSAS Tabular, открытом в SSMS, разверните AW Internet Sales Tabular Model 2014 и создайте новую роль

 

Мы хотим создать роль для пользователей, которые не имеют доступа к продажам велосипедов в базе данных. поэтому давайте назовем роль No Bike Sales Manager, эта роль имеет доступ на чтение к базе данных.

 

В разделе членства вы можете добавить пользователей к этой роли. Пользователи должны быть пользователями домена, которые вы получаете через EffectiveUserName от Power BI (если учетные записи Power BI не являются пользователями домена, создайте для них сопоставление UPN, как описано выше в разделе сопоставления UPN). Мы добавляем пользователя BIRADACAD\Reza здесь. (Обратите внимание, что мы создали сопоставление имени участника-пользователя для этого пользователя. Поэтому каждый раз, когда пользователь Power BI, связанный с этим, входит в систему, эта учетная запись домена будет передаваться через EffectiveUserName в SSAS Tabular).

 

Теперь давайте определим фильтры строк с помощью основного фильтра для категории продукта, как показано ниже:

='Product Category'[Product Category Name]<>'Bikes'

 

Теперь, когда мы определили безопасность на уровне строк в SSAS Tabular, давайте создадим простой отчет для его проверки.

Создать образец отчета

В нашем примере отчета будет показана только круговая диаграмма продаж по категориям товаров. Поэтому создайте Live-соединение с SSAS Tabular из Power BI Desktop.

 

Затем выберите модель

 

После создания подключения в правом нижнем углу вы увидите статус Live Connection: Connected в Power BI Desktop.

Создайте простую круговую диаграмму с Product Category Name (из таблицы Product Category) в качестве Legend и  Sales Amount (из таблицы Internet Sales ) в качестве Values.

 

Сохраните файл Power BI, например, как вкладка SSAS Live Ent DB.pbix, и опубликуйте его. Помните, что не следует настраивать безопасность на уровне строк в самой Power BI. Потому что мы будем использовать конфигурацию RLS из соединения Live Tabular.

Проверьте результат

В веб-сайте или службе Power BI при входе в систему и обновлении отчета SSAS на вкладке Live Ent DB. вы не увидите продаж от Bikes. Вы увидите только продажи одежды и аксессуаров.

 

Почему это не работает?

Здесь произошло то, что наша учетная запись Power BI была сопоставлена ​​с пользователем домена reza@biradacad.com, и этот пользователь домена прошел через корпоративный шлюз в качестве EffectiveUserName для локальной таблицы SSAS. Табличка SSAS определила, что у этого пользователя есть только одна роль - менеджер по продажам без велосипедов, и эта роль имеет ограниченное представление о продажах для всех, кроме велосипеда. Таким образом, данные, возвращаемые из отчета SSAS Tabular в Power BI, не содержат продаж Bike.

Резюме

Табличка SSAS в качестве источника подключения Live для Power BI используется во многих корпоративных решениях для Power BI. Этому есть разные причины:

  • В некоторых организациях уже есть готовые модели таблиц SSAS, и они используют их для своих локальных отчетов и анализа данных. Поэтому они хотят использовать один и тот же источник правды.
  • Масштаб данных больше, чем вписывается в модель Power BI. .
  • и многие другие причины.

В этом посте вы увидели, как защита на уровне строк, определенная в SSAS Tabular, будет передаваться через EffectiveUserName в учетные записи Power BI. Этот метод позволит пользователям просматривать только часть данных, которые им разрешено просматривать.

No Comments

Add a Comment