|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Ariochsereginseregin5. Создать УНИВЕРСАЛЬНУЮ ФУНКЦИЮ, которая по ПРОМЕЖУТОЧНОЙ ТАБЛИЦЕ создает ВРЕМЕННОЕ ПРЕДСТАВЛЕНИЕ с уже встроенными ограничениями доступа к записям текущему пользователю возникает вопрос, не кажется ли вам что это называется 3-tier оно же applicaiton server ? зачем пинками заталкивать трехзвенку в SQL ? Сервер приложения - тормозная прокладка, но это не тема топика. Где Вам удобно, там процедуры и вызывайте. Использование Представления в SQL запросе планировщиком постгреса воспринимается прозрачно, Он подставляет в запрос таблицу напрямую, а условия отбора внутри Представления объединяет с условиями отбора запроса. Индексы выбирает исходя из совокупности условий выборки - выборка выполняется максимально быстро. RLS в постгресе данные фильтрует, но проблема в напиcании универсальных RLS для всех пользователей - они к тому же будут тормозить выборки. А у меня в представлениях ограничения индивидуальные для каждого пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 16:49 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов ДенисЕсли организовать так как ты хочешь данная фича была бы бесполезной потому что она не относится к безопасности, она относится к SELECT/VIEW и назыввать ее security - обман Dimitry SibiryakovНет, нарушением security как раз будет выброс ошибки, подтверждающей, что запись CLASS_ID=5 в природе существует. ого! ну тогда выброс ошибки нарушение PK unique constraint при insert с повторным ID - тоже нарушение безопасности, "подтверждающее, что запись ID=<<PK duplicate>> в природе существует." ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 17:02 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
МимопроходящийHello, Sereginseregin! You wrote on 26 октября 2016 г. 16:39:06: Sereginseregin> В Postgres простая команда CREATE TEMP VIEW, представление удаляется автоматически при закрытии сессии.а смысл? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 18:30 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Ariochпотому что она не относится к безопасности, она относится к SELECT/VIEW и назыввать ее security - обман ИМХО наоборот, важно не сообщать пользователю об ошибке по безопасности. Пользователю не положено (рискованно для безопасности системы) знать, что в БД существуют какие-то еще записи, которые ему недоступны. 1. Пользователь запросил данные - ему предоставили все доступные. Какие еще существуют записи в БД - ему знать не положено. 2. Пользователь решил добавить (изменить, удалить) данные в БД. Сохранились только те, которые ему положено сохранять. По остальным выдалось сообщение: "Данные с такими реквизитами в БД сохранить нельзя!" - о проблемах с безопасностью не должно быть ни слова! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 21:15 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Ariochпотому что она не относится к безопасности, она относится к SELECT/VIEW и назыввать ее security - обман ИМХО наоборот, важно не сообщать пользователю об ошибке по безопасности. Пользователю не положено (рискованно для безопасности системы) знать, что в БД существуют какие-то еще записи, которые ему недоступны. 1. Пользователь запросил данные - ему предоставили все доступные. Какие еще существуют записи в БД - ему знать не положено. 2. Пользователь решил добавить (изменить, удалить) данные в БД. Сохранились только те, которые ему положено сохранять. По остальным выдалось сообщение: "Данные с такими реквизитами в БД сохранить нельзя!" - о проблемах с безопасностью не должно быть ни слова! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 21:19 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
sereginsereginПользователь запросил данные - ему предоставили все доступные. Какие еще существуют записи в БД - ему знать не положено. пользователь вообще не должен запускать IBExpert, а должен работать с пользовательским приложением, которое и обеспечит формирование правильных запросов теми или иными способами (хоть через VIEW и SP, хоть как угодно) если же пользователь может создавать свои запросы ,то как проверить наличие невидимых данных он найдет - хоть через select count(*), хоть через update ... where ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:48 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Arioch,то как проверить наличие невидимых данных он найдет - хоть через select count(*), хоть через update ... where ... да неужели. count(*) уже работает с неявным фильтром. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:51 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
sereginsereginМимопроходящийHello, Sereginseregin! You wrote on 26 октября 2016 г. 16:39:06: пропущено... а смысл? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Как-то это стрёмно, делать временные метаданные Правильнее казалось бы делать постоянные GTT с привязанной инструкцией по заполнению их нужными данными при первом обращении CREATE GLOBAL TEMPORARY TABLE xxxx (......) on commit delete rows on first use ( insert into xxxxx select .... ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:51 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Arioch, в топку. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:52 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch,то как проверить наличие невидимых данных он найдет - хоть через select count(*), хоть через update ... where ... да неужели. count(*) уже работает с неявным фильтром. ....если про это не забыли в случае сервера, который count считает по индексамне троая саму таблицу - вполне могут забыть а если не забудут - вот и получили случай, когда row-level invisibility резщко замедляет работу ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:53 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, в топку. да GTT вообще в топку ни разу их не использовал - значит никому они и не нужны ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:54 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Arioch, что значит не забудут? Я тебе говорю по опыту. Мне помимо работы с Firebird, приходится одну прогу на Oracle поддерживать (не я её разрабатывал). Там используется RLS, поэтому я знаю о чём говорю. И кстати пару раз эта штука вынесла мне мозг, пока я не догадался, что у них на таблице политика стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:57 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Arioch, нет GTT вещь полезная сама по себе, а вот твоё решение не очень. Временные вьюхи тоже отстой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 14:59 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов Денис, вкусовщина ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:36 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов ДенисИ кстати пару раз эта штука вынесла мне мозг, пока я не догадался, что у них на таблице политика стоит просто прекрасный aргумент в пользу реализаций выборки данных через abuse системы безопасности ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:37 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
про аналогичную проверку через update ты, к слову, промолчал равно ты скоре всего не проводил сравнение на Оракле select count(*) c индексированной большой таблицей с политикой частичной невидимости по неиндексированному полю и без политик вообще ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:39 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
сравнение по скорости ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:40 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Arioch, тут дело опыта. Я тогда с ораклом мало знаком был. Теперь то в случае чего смотрю, а не висит ли на таблице политика. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:41 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
AriochКак-то это стрёмно, делать временные метаданные Правильнее казалось бы делать постоянные GTT с привязанной инструкцией по заполнению их нужными данными при первом обращении Симонов Денисвот твоё решение не очень ну например вот тут бы она могла пригодиться - http://www.sql.ru/forum/1236092/ другой вопрос что любую задачу можно решать разными инструментами, и не факт что по совокупности этот был бы лучший во всяком случай на мой взгляд это лучше, чем делать временный изменения метаданных Хотя..... Вы же в FB3 ввели разные неймспейсы, так ? Или я путаю ? Почему бы не ввести неймспейсы connection-local и transaction-local ? тогда вышеупомянутая фишка Постгресса будет повторена без создания специфических расширений SQL-комманд. Как для SET$CONTEXT есть области видимости "текущее соединение" кажется? и аналогично сделать с неймспейсами. create view CURRENT_CONNECTION.TEMPORARY_SELECT AS ..... при дисконнекте - само умирает вместе с неймспейсом ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:46 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, тут дело опыта. Я тогда с ораклом мало знаком был. Теперь то в случае чего смотрю, а не висит ли на таблице политика. Вот именно. Накапливая опыт с любым инструментом - изучаешь где в него заложили грабли. Но это не аргумент, что сами грабли - это благо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:48 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Arioch, AriochВы же в FB3 ввели разные неймспейсы, так ? Или я путаю ? кто мы? Я разработкой FB не занимаюсь. Если ты под неймспейсами подразумеваешь схемы, то нет их в FB 3.0. Дополнительный "неймспейс" сейчас только один - это пакеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:52 |
|
Row-Level Security, Row Security Policies
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, нет GTT вещь полезная сама по себе, а вот твоё решение не очень. Временные вьюхи тоже отстой. Временные представления мне самому не нравятся, это костыль. НО этот самый костыль позволяет делать самую быструю выборку с использованием индексов. Быстрее решения я не знаю! Постоянные представления аналогичны RLS, Для сотни ролей руками делать их сложно и работать они будут медленнее, потому что для каждой записи должны разжевать ограничения написанные на сотню ролей. А временное представление создается с минимальным набором ограничений индивидуально для конкретного пользователя в конкретной сессии. Может получится делать постоянные представления для каждого пользователя, но это надо схемы (пространства имен) под каждого пользователя плодить - в оракле вроде так и есть, посмотрю еще как дальше развивать решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:53 |
|
|
start [/forum/topic.php?fid=40&msg=39334650&tid=1561890]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 444ms |
0 / 0 |