|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
Не отключить на время работы процедуры, а игнорировать, что-ли, я не знаю. Чтобы "вокруг - суббота, а у меня - четверг", как в старом еврейском анекдоте? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:12 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster, оно? https://sqlundercover.com/2018/05/02/digitally-signing-a-stored-procedure-to-allow-it-to-run-with-elevated-permissions/ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:00 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
komrad, Нет :-( Речь об этом: https://docs.microsoft.com/ru-ru/sql/relational-databases/security/row-level-security?view=sql-server-ver15 Есть ли возможность не выключать ее, а игнорировать, как будто бы ее вообще нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:40 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster, Самое простое - в RLS-функции проверять наличие временной таблицы с определенным именем. Ну или да, подписать процедуру и в RLS-функции проверять наличие определенного сертификата в sys.user_token ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:43 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
invm, Все равно оно при Select эту функцию миллиард раз вызовет, причем нестед лупом :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 18:16 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster, Можно еще через SESSION_CONTEXT ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 19:16 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
invm, Да, я понимаю. Сделать так, чтобы секьюрити фанкшн всегда выдавала 1 - просто. Дело не в этом. Дело в том, что она всё равно вызывается. Причем всегда нестед лупом с ограничиваемой таблицей. И это радикально меняет планы запросов, и вообще - жутко тормозит на сколь-нибудь значительных объемах. Ну, от 100 миллионов записей в таблице - точно. Короче, очередная игрушка ниочем, типа InMemory OLTP. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 07:50 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster invm, Да, я понимаю. Сделать так, чтобы секьюрити фанкшн всегда выдавала 1 - просто. Дело не в этом. Дело в том, что она всё равно вызывается. Причем всегда нестед лупом с ограничиваемой таблицей. И это радикально меняет планы запросов, и вообще - жутко тормозит на сколь-нибудь значительных объемах. Ну, от 100 миллионов записей в таблице - точно. Короче, очередная игрушка ниочем, типа InMemory OLTP. Просто некоторые не умеют думать ее готовить. Тебе ж правильно предлагали - надо все - запустись под тем, кому доступно все. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 10:38 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
aleks222, оно встраивается в план выполнения, пока RLS включена она всегда будет срабатывать на проверку не зависимо от твоих прав, хоть ты миллион раз sysadmin. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 22:05 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
felix_ff aleks222, оно встраивается в план выполнения, пока RLS включена она всегда будет срабатывать на проверку не зависимо от твоих прав, хоть ты миллион раз sysadmin. Ну ты открыл америку. Никто не обещал "не будет срабатывать". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 08:43 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
aleks222 felix_ff aleks222, оно встраивается в план выполнения, пока RLS включена она всегда будет срабатывать на проверку не зависимо от твоих прав, хоть ты миллион раз sysadmin. Ну ты открыл америку. Никто не обещал "не будет срабатывать". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 08:51 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
aleks222 felix_ff aleks222, оно встраивается в план выполнения, пока RLS включена она всегда будет срабатывать на проверку не зависимо от твоих прав, хоть ты миллион раз sysadmin. Ну ты открыл америку. Никто не обещал "не будет срабатывать". Вопрос был, собственно в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:25 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
Ээээ... "Разрешение ALTER ANY SECURITY POLICY предназначено для пользователей с высоким уровнем привилегий (например, для администратора политик безопасности). Администратору политик безопасности не требуется разрешение SELECT для защищаемых политиками таблиц." Оригинал не смотрел, возмоно что очень корявый перевод... или "Темпоральные таблицы. Темпоральные таблицы совместимы с безопасностью на уровне строк. Тем не менее предикаты безопасности в текущей таблице не реплицируются автоматически в прежнюю таблицу. Чтобы применить политику безопасности для текущей и прежней таблиц, необходимо по отдельности добавить предикат безопасности в каждую таблицу." - выкачать колонки разово во временную таблицу и с ней работать. Правда тогда нахрена вообще использовать механизм.... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2021, 02:33 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
SIMPLicity_ Правда тогда нахрена вообще использовать механизм.... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2021, 11:21 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
alexeyvg SIMPLicity_ Правда тогда нахрена вообще использовать механизм.... Идея Row-Level Security на многомиллионно-строчных таблицах может родится только в больном сознании. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2021, 13:01 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster, авторВопрос был, собственно в этом. А как же повторяемость результата? Не может быть выключено в принципе, иначе нарушите этот принцип. Не тем путём пошли, видимо. Бизнес очень любит "частные решения", но в БД закон должен быть для всех един. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2021, 13:30 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
aleks222 alexeyvg пропущено... Идея ТС, наверное, в том, что при обращении пользователей использовать механизм Row-Level Security, а для объёмных перерасчётов не использовать, и не нести соотв. накладных расходов. Идея Row-Level Security на многомиллионно-строчных таблицах может родится только в больном сознании. Мне кажется, что Вы излишне категоричны. Возможно что при высоком уровне параллелелизма итоговый выигрыш "встроенного" решения может перекрыть затраты на "железо". PS Я тоже с ним поигрался, но до реального применения,- в силу специфики работы, увы,- не дошло :( ... А так чо,- есть типа такой механизм,- ну и норм. Ни чем не хуже "нативной" поддержки xml-я ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 02:15 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
Собственно, это альтернатива настроенным по ролям представлениям или функциям, зависимым от пользователей. Извлечение данных из витрин операционных отчетов, "прозрачное" использование общей таблицы для персональных настроек и тому подобное. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 12:57 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
Владислав Колосов Собственно, это альтернатива настроенным по ролям представлениям или функциям, зависимым от пользователей. Извлечение данных из витрин операционных отчетов, "прозрачное" использование общей таблицы для персональных настроек и тому подобное. Зри в корень! Это, тупо, возможность ввести разделение доступа в системах, где штатно это не предусмотрено. Во всех прочих случаях - никто не мешает фильтровать самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 16:37 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
aleks222 alexeyvg пропущено... Идея ТС, наверное, в том, что при обращении пользователей использовать механизм Row-Level Security, а для объёмных перерасчётов не использовать, и не нести соотв. накладных расходов. Идея Row-Level Security на многомиллионно-строчных таблицах может родится только в больном сознании. Ну, оно без особых проблем работает на миллиарде записей. Таблицы, конечно, секционированы, и секьюрити фанкшн, конечно, построена с учетом исключения секций. Засада начитается тогда, когда нужно посчитать оперативную статистику по всем таблицам. Из-за того, что секьюрити фанкшн всегда соединяется с таблицей nested loop'ом, серверу не удается построить адекватный план. И если без ров левел такие отчеты отрабатывают за пару минут, то с ней - за несколько часов. Разумеется, из под записи с полными привилегиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2021, 08:09 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster aleks222 пропущено... Идея Row-Level Security на многомиллионно-строчных таблицах может родится только в больном сознании. Ну, оно без особых проблем работает на миллиарде записей. Таблицы, конечно, секционированы, и секьюрити фанкшн, конечно, построена с учетом исключения секций. Засада начитается тогда, когда нужно посчитать оперативную статистику по всем таблицам. Из-за того, что секьюрити фанкшн всегда соединяется с таблицей nested loop'ом, серверу не удается построить адекватный план. И если без ров левел такие отчеты отрабатывают за пару минут, то с ней - за несколько часов. Разумеется, из под записи с полными привилегиями. Что-то у вас концы с концами не сходятся: >>Ну, оно без особых проблем работает на миллиарде записей. >>И если без ров левел такие отчеты отрабатывают за пару минут, то с ней - за несколько часов. Надо обуться на обе ноги... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2021, 09:02 |
|
Можно ли как-нибудь отключить Row-Level Security внутри хранимой процедуры?
|
|||
---|---|---|---|
#18+
uaggster Из-за того, что секьюрити фанкшн всегда соединяется с таблицей nested loop'ом NL можно убрать, обернув эти обращения в скалярную функцию. Но даже без этого можно существенно ускорить псевдоотключением RLS Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134.
descrlast_worker_timeRLS off55381RLS on, rls_off__flag = 1, scalar function88058RLS on, rls_off__flag = 1, subquery174615RLS on, rls_off__flag = 0, subquery12005265RLS on, rls_off__flag = 0, scalar function13025128 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2021, 09:48 |
|
|
start [/forum/topic.php?fid=46&msg=40086969&tid=1684448]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
127ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 473ms |
0 / 0 |