Доступ к данным в BusinessObjects через группы Active Directory

У меня разные группы Active Directory и одна вселенная BO. Разные группы активных каталогов должны иметь разный ограниченный доступ к данным в юниверсе. Как я могу это реализовать? (К сожалению, я не нашел соответствующего учебного пособия или документации в сети.) Если существует несколько способов реализации доступа к данным, что является наилучшей практикой? Благодарю.

1 ответ

Решение

Существует два основных способа обеспечения безопасности на уровне строк в юниверсе. Один через профиль безопасности; другой через @variable('BOUSER'),

Если безопасность должна применяться на уровне группы (то есть ко всем членам группы должно применяться одно и то же условие), тогда подходит профиль безопасности. Это описано в главе 17 Руководства пользователя IDT. На высоком уровне, шаги:

  • Из IDT запустите редактор безопасности
  • Выберите юниверс и создайте либо профиль безопасности данных, либо профиль безопасности бизнеса (ознакомьтесь с документацией о различиях между ними, но, во-первых, с DSP вы напишите условие WHERE; с BSP вы выберете объекты и определить условие)
  • После создания профиля безопасности выберите группу или группы, к которым он должен применяться.
  • Повторите вышеуказанное для каждой группы, к которой должно применяться ограничение

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

user_id  region
-------  ------
U123     NE
U123     SE
U321     W

и ваша таблица фактов выглядит так:

pk   region   value
__   ______   _____
 1       NE       3
 2        W       4

Вы можете применить защиту таким образом, чтобы пользователь U123 видел только строку "NE", а пользователь U321 видит только строку "W". Вы бы присоединились к двум таблицам по региону (security.region=fact.region), затем создайте новый обязательный фильтр security.user_id=@variable('BOUSER'), Это заставит фильтр применяться ко всем запросам.

Обратите внимание, что оба вышеупомянутых метода работают путем добавления условий в условие WHERE запроса. Если ваши пользователи имеют разрешение на просмотр и редактирование SQL-запроса, они будут выше, чтобы переопределить логику фильтрации. Для обеспечения безопасности пользователям должно быть отказано в этом праве.

Другие вопросы по тегам