powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Автоматическая раздача прав процедурам и триггерам
28 сообщений из 28, показаны все 2 страниц
Автоматическая раздача прав процедурам и триггерам
    #37596541
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не появилось ли в языке кляузы типа autogrant?

А то может я зря поезда под откос пускаю.

PS про ибэксперт знаю, про вычисление зависимостей из системных таблиц тоже.

Модератор: Edited. Прошу в этом форуме не применять олбанский.
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37597025
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorНе появилось ли в языке кляузы типа autogrant?

Нет автоматического создания процедур -> нет автоматической раздачи им прав. По-моему логично.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37597246
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovpastorНе появилось ли в языке кляузы типа autogrant?

Нет автоматического создания процедур -> нет автоматической раздачи им прав. По-моему логично.


Отчего ж?

Создаю процедуру.
Зависимости у сервера есть. Он же ее и компилит.
Если я бы добавил бы кляузу - "еще и права", мог бы и создать.

Ну нет, так и нет.
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37597285
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorСоздаю процедуру.
А вот раз ты её создаёшь, так это твои проблемы. Если бы процедуру сервер создавал по
собственной инициативе...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598395
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovpastorСоздаю процедуру.
А вот раз ты её создаёшь, так это твои проблемы. Если бы процедуру сервер создавал по
собственной инициативе...


вот даю, я, скажем, серверу команду: "сервер! создать процедуру! раз! два!"

а он мне такой - "исполнено, хозяин"

а я ему: "присвоить процедуре внеочередное звание и пожизненные права!"

а он мне - "слушаю и повинуюсь".

и все одним оператором.

насчет моих проблем - ~400 шт на каждый проект. сделать при сборке базы - еще можно, а вот у клиента при апдейте - уже гемор.
на все что в базе есть права давать не надо.
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598419
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

Тем, кому насрать на секьюрити, сидят под сисдба мастеркеевичем и не парятся насчет пустых грантов паблику. И часто в такой связке еще крутится самопальная авторизация, оторванная от учетных записей сервера.
Или вам не огульная демократия в базе нужна?
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598511
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorнасчет моих проблем - ~400 шт на каждый проект. сделать при сборке базы - еще можно, а вот у клиента при апдейте - уже гемор.
на все что в базе есть права давать не надо.Доступ к списку пользователей БД, хранящихся в security2.fdb, невозможен. Но доступ к ролям, которые в каждой базе в таблице rdb$roles, - открыт.
Если пользователям БД грантованы роли, то сделайте сначала своё обновление 100500 процедур, а затем запустите execute block, обрабатывающий в цикле rdb$procedures и создающий строки- выражения вида 'grant execute procedure '||..., а затем сразу выполняющий каждое такое выражение.
Примерно так:
DDL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
set term ^;
create or alter procedure p1 as begin end^
create or alter procedure p2 as begin end^
create or alter procedure p3 as begin end^
create or alter procedure p4 as begin end^
create or alter procedure p5 as begin end^
set term ;^
commit;
-- у меня была только одна роль, rdb$admin; создаю новую:
create role common_user;
commit;

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
set term ^;
execute block returns(grant_expr varchar(80))as
  declare v_proc varchar(31);
begin
  for
    select 'grant execute on procedure '||trim(p.rdb$procedure_name)
           ||' to '
           ||trim(r.rdb$role_name)||';'
    from rdb$procedures p
    join rdb$roles r on r.rdb$system_flag=0
    where p.rdb$system_flag=0
    into grant_expr
  do begin
    execute statement (grant_expr);
    suspend;
  end
end^
set term ;^
commit;

Проверяем результат:
Код: sql
1.
2.
3.
4.
select u.rdb$user,u.rdb$privilege,u.rdb$relation_name
from rdb$user_privileges u
where u.rdb$privilege='X'
and u.rdb$user<>'SYSDBA'

RDB$USERRDB$PRIVILEGERDB$RELATION_NAMECOMMON_USERXP1COMMON_USERXP2COMMON_USERXP3COMMON_USERXP4COMMON_USERXP5
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598525
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arnipastor,

Тем, кому насрать на секьюрити, сидят под сисдба мастеркеевичем и не парятся насчет пустых грантов паблику. И часто в такой связке еще крутится самопальная авторизация, оторванная от учетных записей сервера.
Или вам не огульная демократия в базе нужна?

а?

про кляузу autogrant выборочно не читаем?
стал бы при демократии правами всяких меньшинств заморачиваться.
у нас тоталитаризьмъ (с)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598547
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

погодь, так тебе нужны не права юзеров на вызов процедур, а права самих процедур на используемые в тексте этих процедур объекты? и чтобы эти права выдавались автоматом в момент компляции?
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598561
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arnipastor,

погодь, так тебе нужны не права юзеров на вызов процедур, а права самих процедур на используемые в тексте этих процедур объекты? и чтобы эти права выдавались автоматом в момент компляции?

меня можно было понять как-то иначе?
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598575
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

Из текста не особенно понятно. Пока в тайтл не вчитался ...
Таблоида жалко: такой пример набрать не поленился, а тоже видимо не проснулся еще.
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598577
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

э, нет. это я сделаю сам, руками.

ща делается так:


select case when max(d.RDB$DEPENDED_ON_TYPE) = 0 then cast('grant all on ' as varchar(40))
when max(d.RDB$DEPENDED_ON_TYPE) = 5 then cast('grant execute on procedure ' as varchar(40)) end||
d.RDB$DEPENDED_ON_NAME || ' to ' || max(pt.OBJ_TYPE) || ' ' || d.RDB$DEPENDENT_NAME || ' ^'
from RDB$DEPENDENCIES d
join (select p.RDB$PROCEDURE_NAME, cast('procedure' as varchar(10)), null
from RDB$PROCEDURES p
union all
select t.RDB$TRIGGER_NAME, cast('trigger' as varchar(10)), t.RDB$RELATION_NAME
from RDB$TRIGGERS t
where t.RDB$SYSTEM_FLAG = 0) as pt(NAME, OBJ_TYPE, OWNER) on pt.NAME = d.RDB$DEPENDENT_NAME
where d.RDB$DEPENDED_ON_NAME not in ('WIN1251', 'PXW_CYRL', 'OCTETS')
and d.RDB$DEPENDED_ON_TYPE in (0, 5)
and (pt.OWNER <> d.RDB$DEPENDED_ON_NAME or pt.OWNER is null)
and not exists ( select *
from RDB$USER_PRIVILEGES up
join (select p.RDB$PROCEDURE_NAME
from RDB$PROCEDURES p
union all
select t.RDB$TRIGGER_NAME
from RDB$TRIGGERS t) as OBJ_USERS(NAME) on OBJ_USERS.NAME = up.RDB$USER
where up.RDB$USER = d.RDB$DEPENDENT_NAME
and up.RDB$RELATION_NAME = d.RDB$DEPENDED_ON_NAME)
-- and not exists (select * from RDB$USER_PRIVILEGES where RDB$USER = 'PUBLIC' and RDB$RELATION_NAME = d.RDB$DEPENDED_ON_NAME)
and d.RDB$DEPENDED_ON_NAME not starting 'RDB$'
group by d.RDB$DEPENDENT_NAME, d.RDB$DEPENDED_ON_NAME
order by 1


два НО.

- это делается при создании БД
- даются ВСЕ права, хотя в большинстве случаеd нужно SELECT
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598582
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arnipastor,

Из текста не особенно понятно. Пока в тайтл не вчитался ...
Таблоида жалко: такой пример набрать не поленился, а тоже видимо не проснулся еще.

если у него не будет выхлопа, его порвет :)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598598
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

надо на каком-то конкретном примере (скрипте) сформулировать задачу; я не понимаю, чего требуется.
Выстроить полное дерево зависимостей объект "Х", т.е. найти все объекты, от которых он зависит как напрямую, так и опосредованно, - можно, рекурсивным запросом. Пример, хоть на другую тему и с извратом, см. тут .
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598601
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorесли у него не будет выхлопа, его порвет :)у меня через пару часов встреча с юзерами, там и оторвусь по полной :-)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598684
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидpastor,

надо на каком-то конкретном примере (скрипте) сформулировать задачу; я не понимаю, чего требуется.
Выстроить полное дерево зависимостей объект "Х", т.е. найти все объекты, от которых он зависит как напрямую, так и опосредованно, - можно, рекурсивным запросом. Пример, хоть на другую тему и с извратом, см. тут .

не нада дерева.

надо знать, что Х пользует Y на select, Z на update.
сервер это знает, но никому не говорит.

IBExpert, кажется, парсит исходники.

Исходников в базе заказчика нет. Точнее, они появляются на краткий миг апдейта.
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598693
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorнадо знать, что Х пользует Y на select, Z на update.
сервер это знает, но никому не говорит. А никто не спрашивает :)

pastorIBExpert, кажется, парсит исходники.Да

pastorИсходников в базе заказчика нет. Точнее, они появляются на краткий миг апдейта.Ну так в чём проблема в апдейт-скрипте выдать соотв. гранты, подготовленные дома с помощью того же IBE ?
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598712
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpastorнадо знать, что Х пользует Y на select, Z на update.
сервер это знает, но никому не говорит. А никто не спрашивает :)

pastorIBExpert, кажется, парсит исходники.Да

pastorИсходников в базе заказчика нет. Точнее, они появляются на краткий миг апдейта.Ну так в чём проблема в апдейт-скрипте выдать соотв. гранты, подготовленные дома с помощью того же IBE ?

0. IBE мы не покупали для коммерческой разработки
1. вероятность ошибки при ручной раздаче прав, особенно при правке
2. цена ошибки
3. это все равно есть в сервере. пуркуа бы и не па?
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598736
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorhvladНу так в чём проблема в апдейт-скрипте выдать соотв. гранты, подготовленные дома с помощью того же IBE ?

0. IBE мы не покупали для коммерческой разработки
1. вероятность ошибки при ручной раздаче прав, особенно при правке
2. цена ошибки
3. это все равно есть в сервере. пуркуа бы и не па?0. Гм. А вы не в России разве ? :)
3. Оно-то, теоритически, есть, но на практике - не совсем :)

Зависимости строятся при парсинге BLR, в частности при создании\альтере процедуры.
Но там, iirc, нет нужных для грантов операций - только факт наличия зависимости.

Вот при препарировании запроса перед выполнением - там, да, проверяются права и строится более подробный список зависимостей.
Но это уже совсем другой момент времени, не связанный с ДДЛ процедуры\триггера.

Конечно - нет нерешаемых задач, но ...
:)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598740
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, pastor!
You wrote on 29 декабря 2011 г. 12:03:04:

pastorэто все равно есть в сервере.нету этого в сервере.
pastorпуркуа бы и не па?продолжай хотеть.

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598753
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpastorпропущено...


0. IBE мы не покупали для коммерческой разработки
1. вероятность ошибки при ручной раздаче прав, особенно при правке
2. цена ошибки
3. это все равно есть в сервере. пуркуа бы и не па?0. Гм. А вы не в России разве ? :)
3. Оно-то, теоритически, есть, но на практике - не совсем :)

Зависимости строятся при парсинге BLR, в частности при создании\альтере процедуры.
Но там, iirc, нет нужных для грантов операций - только факт наличия зависимости.

Вот при препарировании запроса перед выполнением - там, да, проверяются права и строится более подробный список зависимостей.
Но это уже совсем другой момент времени, не связанный с ДДЛ процедуры\триггера.

Конечно - нет нерешаемых задач, но ...
:)

0. таки в РФ. и что? продукт коммерческий? значит надо платить.
0.+ в ночной билд вкрячивать еще и эксперт не хочется.
3+. Что хочет сервер за оператор вида
Код: sql
1.
alter { procedure | trigger } autogrant ?

;)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598766
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor0. таки в РФ. и что? продукт коммерческий? значит надо платить.Ну так у него лицензия отдельная вроде (не вникал в детали вокруг слова "коммерческий").

pastor0.+ в ночной билд вкрячивать еще и эксперт не хочется.Вот - с этого нужно было начинать :)

pastor3+. Что хочет сервер за оператор вида
Код: sql
1.
alter { procedure | trigger } autogrant ?


;)<Стоимость коммерческой лицензии IBE> * N, N > 1
;)

Если серьёзно - трекер вроде не закрыт и функционирует. Правда, в общем порядке :)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37598788
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpastor3+. Что хочет сервер за оператор вида
Код: sql
1.
alter { procedure | trigger } autogrant ?


;)<Стоимость коммерческой лицензии IBE> * N, N > 1
;)

Если серьёзно - трекер вроде не закрыт и функционирует. Правда, в общем порядке :)

и в трекер напишу. и будущему президенту!
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #37609626
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕсли серьёзно - трекер вроде не закрыт и функционирует. Правда, в общем порядке :)

http://tracker.firebirdsql.org/browse/CORE-3725
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Автоматическая раздача прав процедурам и триггерам
    #39142292
debose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошая идея. Не появилось ли какого обходного пути как такое раеализовать (получить список зависимых объектов для процедур и триггеров, например)?
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #39142308
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debose,

а мне кажется что более верным было бы решение задавать с какими привилегиями выполняется ХП: владельца или вызывающего

Код: sql
1.
2.
3.
CREATE PROCEDURE <procedure_name>
[AUTHID OWNER|CALLER]
...



deboseполучить список зависимых объектов для процедур и триггеров, например

также как и всегда через rdb$dependeces
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #39142361
Фотография artemana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpastorнадо знать, что Х пользует Y на select, Z на update.
сервер это знает, но никому не говорит. А никто не спрашивает :)


мог бы сервер отвечать, нашлись бы желающие ;)
...
Рейтинг: 0 / 0
Автоматическая раздача прав процедурам и триггерам
    #39142515
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
также как и всегда через rdb$dependeces

Извиняйте : RDB$DEPENDENCIES
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Автоматическая раздача прав процедурам и триггерам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]