Доступ к данным в 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-запроса, они будут выше, чтобы переопределить логику фильтрации. Для обеспечения безопасности пользователям должно быть отказано в этом праве.