Как применить динамическую безопасность на уровне строк на основе имени пользователя и местоположения? - PullRequest
0 голосов
/ 27 сентября 2018

Это связано с безопасностью на уровне строк в Power BI.Вот фиктивная таблица, на которой я хочу реализовать этот RLS.

Please check this table link

Формула RLS, которую я сейчас использую, -

[location] = LOOKUPVALUE([location],[login],USERPRINCIPALNAME()) 

Мой конецТребуется, чтобы эта RLS работала в том случае, когда, если пользователь входит в систему, он должен видеть данные, если он находится в этом месте, а также должен видеть других пользователей, которые находятся в том же месте.

Но поиск выдает ошибку:

Была предоставлена ​​таблица с несколькими значениями, где ожидалось одно значение

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

Как мне достичь этого уровня защиты на уровне строк, используя Lookup или любым другим возможным способом?

1 Ответ

0 голосов
/ 27 сентября 2018

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

на рабочем столе

  1. Power BIРабочий стол позволяет создавать роли. Нажмите «Управление ролями», а затем нажмите кнопку «Создать новую роль».
  2. Вам потребуется создать роли на основе местоположения здесь.
  3. Например Создайте правило, называемое какРасположение A и нажмите на таблицу и дайте формулу для фильтров на этой таблице.Например, [Location] = "A".

Итак, вы можете создать 'n' количество ролей, подобных этой, а затем опубликовать панель управления.

App.PowerBI.Com

  1. Теперь откройте app.powerbi.com, затем перейдите к соответствующему набору данных и щелкните правой кнопкой мыши по нему, выберите безопасность - вы найдете группы там.

  2. В группах введите адреса электронной почты, которые должны иметь к нему доступ.Вы можете добавить человека в несколько групп, что позволит ему видеть более одной группы.

Тестирование

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

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

Самый эффективный метод

Это лучший метод, и я думаю, что это тот, о котором вы спрашиваетеfor,

[login] = username() 

Функция username () автоматически получает адрес электронной почты пользователя, который вошел в систему.

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

Но если все они принадлежат к определенной группе в организации, и ваша команда Office-365 правильно настроила вашу серверную часть, вам нужно будет только войти в группу.

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

Изменить модель данных

Для выполнения ваших требований вы такжеВам нужно изменить модель данных.

Сначала вам понадобится две таблицы.

Таблица значений - у вас может быть много столбцов, таких как имя и все, но это не имеет значения.

Actual_Table

Таблица адресов электронной почты для местоположения в качестве вашей второй таблицы.

Access_Table

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

Final_Table

Теперь создайте RLS для этой таблицы.Он должен работать.

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

...