Исходный код вики Настройка фильтров безопасности на уровне строк
Версия 7.1 от Ирина Сафонова на 29.02.2024, 00:44
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
![]() |
3.1 | 1 | {{box cssClass="floatinginfobox" title="**Содержание**"}} |
2 | {{toc/}} | ||
3 | {{/box}} | ||
4 | |||
5 | (% data-xwiki-non-generated-content="java.util.List" %) | ||
6 | ((( | ||
7 | = Создание правила = | ||
8 | ))) | ||
9 | |||
![]() |
4.1 | 10 | ---- |
![]() |
3.1 | 11 | |
![]() |
1.1 | 12 | При необходимости в пункте меню **Безопасность на уровне строк **создайте правила, которые назначаются конкретной БД и набору ролей. |
13 | |||
14 | ~1. Нажмите на кнопку **Правило**. | ||
15 | |||
![]() |
7.1 | 16 | [[image:Кнопка добавления правила.PNG||data-xwiki-image-style-border="true" height="301" width="1200"]] |
![]() |
1.1 | 17 | |
18 | 2. В открывшемся окне заполните поля. Обязательные поля отмечены звездочкой. | ||
19 | |||
20 | (% class="table-bordered" style="width:535px" %) | ||
![]() |
2.1 | 21 | (% class="active" %)|(% style="width:257px" %)**Поле**|(% style="width:274px" %)**Комментарий** |
![]() |
1.1 | 22 | |(% style="width:257px" %)**Название правила**|(% style="width:274px" %)Введите наименование. |
23 | |(% style="width:257px" %)**Тип фильтра**|(% style="width:274px" %)Регулярные фильтры добавляют операторы {{code language="none"}}where{{/code}} к запросам, если пользователь принадлежит к роли, на которую ссылается фильтр. | ||
24 | \\Базовые фильтры применяют фильтры ко всем запросам, кроме ролей, определенных в фильтре. Базовые фильтры используются для определения того, что пользователи могут видеть, если к ним не применяются фильтры RLS в группе фильтров. | ||
25 | |(% style="width:257px" %)**Датасеты**|(% style="width:274px" %)Выберите один или несколько [[датасетов>>doc:Big Data.Сервис Cloud BI.2\. Инструкция.02\. Руководство администратора.K\. Создание и настройка источников данных.WebHome]] из списка. | ||
26 | |(% style="width:257px" %)**Роли**|(% style="width:274px" %)Выберите одну или несколько из списка. | ||
27 | Для регулярных фильтров это роли, к которым применяются данный фильтр. Для базовых фильтров это роли, к которым фильтр НЕ применяется, например, Администратор, если администратор должен видеть всю информацию. | ||
28 | |(% style="width:257px" %)**Групповой ключ**|(% style="width:274px" %)Фильтры с тем же групповым ключом объединяются операцией {{code language="none"}}OR{{/code}} внутри группы, в то время как разные группы фильтров — операцией {{code language="none"}}AND{{/code}}. Неопределенные групповые ключи считаются уникальными группами, то есть не объединяются вместе. Например, если в таблице три фильтра, из которых два относятся к отделам {{code language="none"}}Finance{{/code}} и {{code language="none"}}Marketing{{/code}} (групповый ключ = 'department'), а один — к региону {{code language="none"}}Europe{{/code}} (групповый ключ = 'region'), условие фильтра применяет фильтр (department = 'Finance' ИЛИ department = 'Marketing') И (region = 'Europe'). | ||
29 | |(% style="width:257px" %)**Групповой ключ**|(% style="width:274px" %)Фильтры с тем же групповым ключом объединяются операцией {{code language="none"}}OR{{/code}} внутри группы, в то время как разные группы фильтров — операцией {{code language="none"}}AND{{/code}}. Неопределенные групповые ключи считаются уникальными группами, то есть не объединяются вместе. Например, если в таблице три фильтра, из которых два относятся к отделам {{code language="none"}}Finance{{/code}} и {{code language="none"}}Marketing{{/code}} (групповый ключ = 'department'), а один — к региону {{code language="none"}}Europe{{/code}} (групповый ключ = 'region'), условие применяет фильтр (department = 'Finance' OR department = 'Marketing') И (region = 'Europe'). | ||
30 | |(% style="width:257px" %)**Оператор**|(% style="width:274px" %)Условие, которое добавляется к оператору {{code language="none"}}WHERE{{/code}}. Например, чтобы возвращать строки только для определенного клиента, определите обычный фильтр с условием `client_id = 9`. Чтобы не отображать строки, если пользователь не принадлежит к роли фильтра RLS, создайте базовый фильтр с предложением `1 = 0` (всегда false). | ||
31 | |||
![]() |
5.1 | 32 | 3. Сохраните правило. |
![]() |
1.1 | 33 | |
![]() |
6.1 | 34 | [[image:Кнопка сохранения в карточке правила.PNG||data-xwiki-image-style-border="true" height="719" width="500"]] |
35 | |||
![]() |
3.1 | 36 | = Фильтрация в реестре правил = |
![]() |
1.1 | 37 | |
![]() |
3.1 | 38 | ---- |
![]() |
1.1 | 39 | |
40 | В реестре доступна фильтрация по: | ||
41 | |||
42 | * имени, | ||
43 | * типу фильтра, | ||
44 | * групповому ключу. | ||
45 | |||
![]() |
7.1 | 46 | [[image:Фильтрация правил.PNG||data-xwiki-image-style-border="true" height="301" width="1200"]] |
47 | |||
![]() |
3.1 | 48 | = Прочие действия = |
![]() |
1.1 | 49 | |
![]() |
3.1 | 50 | ---- |
51 | |||
![]() |
1.1 | 52 | Доступно: |
53 | |||
54 | * удаление и редактирование правил, | ||
55 | * множественный выбор правил. | ||
56 | |||
![]() |
3.1 | 57 | = Пример настройки = |
![]() |
1.1 | 58 | |
![]() |
3.1 | 59 | ---- |
60 | |||
![]() |
1.1 | 61 | Используя фильтры безопасности на уровне строк в меню пункте меню **Безопасность**, при необходимости создайте фильтры, которые назначаются конкретной таблице и набору ролей. Если хотите, чтобы члены финансовой группы имели доступ только к строкам, в которых {{code language="none"}}department = "finance"{{/code}}, сделайте следующее: |
62 | ~1. Создайте фильтр безопасности на уровне строк с {{code language="none"}}department = "finance"{{/code}}. | ||
63 | 2. Назначьте предложение роли **Финансы** и таблице, к которой оно применяется. | ||
64 | 3. Поле предложения, которое может содержать произвольный текст, добавьте к предложению {{code language="none"}}WHERE{{/code}} сгенерированного оператора SQL. Таким образом, вы даже можете настроить фильтр //За последние 30 дней// и применить его к определенной роли с таким предложением, как {{code language="none"}}date_field > DATE_SUB(NOW(), INTERVAL 30 DAY){{/code}}. Фильтр поддерживает несколько условий: {{code language="none"}}client_id = 6{{/code}} И {{code language="none"}}advertiser="foo"{{/code}} и так далее. | ||
65 | |||
66 | Все соответствующие фильтры безопасности на уровне строк объединяются вместе — внутри различные предложения SQL объединяются с помощью операторов AND. Это означает, что можно создать ситуацию, когда две роли конфликтуют таким образом, что подмножество таблиц может быть пустым. Например, фильтры** **{{code language="none"}}client_id=4{{/code}} и {{code language="none"}}client_id=5{{/code}}, примененные к роли, приведут к тому, что пользователи этой роли будут иметь {{code language="none"}}client_id=4{{/code}} и {{code language="none"}}client_id=5{{/code}}, добавленные к их запросу, что никогда не может быть истиной. |