|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Доброго времени, Всем! Разъясните, почему после отзыва прав на исполнение функции у пользователя, он все равно может ее выполнить? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 14:20 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Guzya, При создании любой функции, право на её выполнение выдается на public. Потому и может. Сделайте: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 14:23 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Спасибо, делаю шаблон для бд с закрытием всех доступов и пропустил Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 14:46 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Не пойму, в шаблоне выполнил Код: 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.
Почему в бд созданной из этого шаблона, на новую функцию появляется доступ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 15:02 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Guzya, 1)для начала объясните чего вы хотите добиться через REVOKE ALL ON ALL TABLES IN SCHEMA pg_catalog FROM PUBLIC ; потому что это не работает и работать не может и не будет.... как база должна проверять права доступа если они в pg_catalog лежат т.е. на RO pg_catalog всегда и всем будет доступен. 2)покажите что показывает \df+ test_fun особенно в части Owner и Access privileges 3)покажите как вы эту функцию создавали и от кого -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 17:36 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Идея в том, что бы запретить всем, кроме тех кому явно разрешено, любые действия в бд. В том числе просмотр списка объектов бд. Код: 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. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255.
Вопрос, почему для вновь создаваемых функций не отрабатывает политика по умолчанию? ALTER DEFAULT PRIVILEGES IN SCHEMA PUBLIC REVOKE ALL ON functions FROM PUBLIC ; ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 20:43 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
GuzyaВопрос, почему для вновь создаваемых функций не отрабатывает политика по умолчанию? ALTER DEFAULT PRIVILEGES IN SCHEMA PUBLIC REVOKE ALL ON functions FROM PUBLIC ; Причина в указании конкретной схемы: IN SCHEMA PUBLIC. Посмотрите примеры в документации на ALTER DEFAULT PRIVILEGES : Лишение роли public права на выполнение (EXECUTE), которое обычно даётся для функций (для всех функций, которые будут созданы ролью admin): ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; Однако заметьте, что этого же эффекта нельзя добиться с помощью команды, ограниченной одной схемой . Эта команда будет действовать, только если ей предшествовала соответствующая команда GRANT: ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; Это объясняется тем, что на уровне схемы можно только назначить права по умолчанию, которые добавятся к назначенным глобально, но нельзя отозвать последние. В вашем случае указание схемы PUBLIC нужно убрать, ведь если я правильно понял, для функций в других схемах должно действовать такое же ограничение. FOR ROLE тоже не указываем, чтобы функции любых пользователей не были доступны на исполнение для PUBLIC: Код: sql 1.
И не лишним будет сразу убедится, что привилегии по умолчанию записаны в системный каталог: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 23:10 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Павел ЛузановFOR ROLE тоже не указываем, чтобы функции любых пользователей не были доступны на исполнение для PUBLIC Вот тут я ошибся, если FOR ROLE не указываем, то действие команды распространяется только на функции созданные текущим пользователем (у меня это был postgres). Если предполагается, что функции могут создавать разные пользователи, то для каждого из них нужно выполнять вот такую ALTER DEFAULT PRIVILEGES. В следующем примере три роли u1, u2, u3. Для роли u1 выполнили ALTER DEFAULT PRIVILEGES, поэтому её функции роль u3 не может выполнять. Для роли u2 привилегии по умолчанию не устанавливали, поэтому u3 спокойно выполняет функцию пользователя u2. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 00:02 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Есть ли какие-нибудь методики\идеи на тему, есть один сервер на нем несколько бд, у каждой бд свой пользователь. 1. нужно ограничить возможность пользователей лазить не в своей бд. 2. иногда надо предоставлять доступ к чужой бд. 3. минимизировать количество "ручных" телодвижений(шагов), выполняемых каждый раз для достижения цели. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 10:58 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Guzya, У псевдороли PUBLIC есть привилегия CONNECT на базу данных. Т.е. по умолчанию любой пользователь может подключаться к любой БД. Вот эту привилегию точно можно отобрать в шаблонной БД и потом с неё остальные клонировать. Если кому-то потребуется доступ к чужой бд, то суперпользователь или владелец "чужой" бд могут выдать GRANT CONNECT ON DATABASE .. TO кому_надо. Вроде это решает поставленную задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 11:09 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
А вот об этом я вообще не подумал. Спасибо, сейчас буду проверять! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 11:31 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Оказалось нельзя отобрать connect на все бд, т.е. при вызове revoke надо указать конкретную бд. Т.е. в шаблоне делаю Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 11:39 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Guzya, Действительно, привилегии доступа к бд не наследуются при клонировании. Значит нужно отбирать сразу после создания бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 13:17 |
|
Почему после revoke ALL on FUNCTION функция выполняется?
|
|||
---|---|---|---|
#18+
Павел Лузанов Guzya, Действительно, привилегии доступа к бд не наследуются при клонировании. Значит нужно отбирать сразу после создания бд. Думал сделать процедуру или функцию, создает бд и настраивает права. Оказалось create database нельзя выполнять из функции\процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 13:48 |
|
|
start [/forum/topic.php?fid=53&fpage=17&tid=1994242]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 298ms |
total: | 420ms |
0 / 0 |