Приглашаем на вебинар "Инструменты миграции: подходы к переносу данных" (четверг 10 октября 2024 г. в 12:00)
Вебинар проведут Роман Лавринчук и Александр Любушкин. Программа и регистрация: https://forsd.ru/migration_webcast_october
Вебинар проведут Роман Лавринчук и Александр Любушкин. Программа и регистрация: https://forsd.ru/migration_webcast_october
Приглашаем на вебинар "Обзор продуктов компании Axiom " (четверг 24 октября 2024 г. в 12:00).
Тема: импортозамещение в области корпоративной Java-разработки: JDK, сервер приложений, контейнеры Docker
Докладчик: Иван Диканев. Программа вебинара и регистрация: https://forsd.ru/axiom_24web
Тема: импортозамещение в области корпоративной Java-разработки: JDK, сервер приложений, контейнеры Docker
Докладчик: Иван Диканев. Программа вебинара и регистрация: https://forsd.ru/axiom_24web
information schema и applicable_roles
Re: information schema и applicable_roles
Спасибо еще раз. mysql работает так же.
А вот в последней версии PostgreSQL стало не так. Фиксируется кто именно включил одну роль в другую. И только тот кто включил может исключить. В том числе и поэтому (есть и другие особенности) в словаре будет хранится две строки для этого примера и оба пользователя admin1 и admin2 должны выполнить REVOKE чтобы окончательно исключить bob из alice.
Это не хорошо и не плохо. Просто такая особенность. Хотелось посмотреть как в других СУБД реализовано.
А вот в последней версии PostgreSQL стало не так. Фиксируется кто именно включил одну роль в другую. И только тот кто включил может исключить. В том числе и поэтому (есть и другие особенности) в словаре будет хранится две строки для этого примера и оба пользователя admin1 и admin2 должны выполнить REVOKE чтобы окончательно исключить bob из alice.
Это не хорошо и не плохо. Просто такая особенность. Хотелось посмотреть как в других СУБД реализовано.
Re: information schema и applicable_roles
Вполне может быть, что такое поведение правильно и логично?!
Поразмышляем...
Пользователи admin1 и admin2 предоставили роль BOB роли ALICE.
Они выполнили сооттветствующие команды
Код: Выделить всё
-- as admin1
GRANT bob TO alice;
-- as admin2
GRANT bob TO alice WITH ADMIN OPTION;
У роли ALICE теперь есть роль BOB.
И тут пришел совсем другой администратор SYSTEM и выполнил команду:
Код: Выделить всё
-- as SYSTEM
REVOKE bob FROM alice;
1) удалить обе записи? (Отобрать роль BOB у роли ALICE )
2) Удалить одну запись? (первую попавшуюся, например, появившуюся от команды ADMIN1)
3) Выдать ошибку вида: "SYSTEM, ты роль BOB роли ALICE не давал, не тебе её и отзывать"?
4) Сделать что-то другое?
Re: information schema и applicable_roles
То есть роль отозвана не будет и будет выдано об этом предупреждение?!
Приведите, пожалуйста, его текст.
Очень интересно посмотреть, как предупреждают.
Приведите, пожалуйста, его текст.
Очень интересно посмотреть, как предупреждают.
Re: information schema и applicable_roles
Стандарт SQL бесплатно не раздается, но вот нашлась такая ссылка:Naeel Maqsudov писал(а): ↑Пн сен 04, 2023 8:06 pmМожете точнее указать, где конкретно «в стандарте» это описано?В стандарте SQL словарь данных описан в виде...
http://web.cecs.pdx.edu/~len/sql1999.pdf
Описание информационной схемы на стр. 751
Re: information schema и applicable_roles
\drg это команда psql (аналог sqlplus) для просмотра кто куда входит:
Код: Выделить всё
\drg bob
List of role grants
Role name | Member of | Options | Grantor
-----------+-----------+---------------------+---------
bob | alice | INHERIT, SET | admin1
bob | alice | ADMIN, INHERIT, SET | admin2
(2 rows)
Код: Выделить всё
select current_user;
current_user
--------------
postgres
Код: Выделить всё
revoke bob from alice;
WARNING: role "alice" has not been granted membership in role "bob" by role "postgres"
Re: information schema и applicable_roles
А может пользователь postgres дать привилегию доступа к любому чужому объекту?
Например:
Пользователь ADMIN1 создал таблицу
, а пользователь postgres предоставил право выборки из нее пользователю ADMIN2:
Например:
Пользователь ADMIN1 создал таблицу
Код: Выделить всё
-- as user ADMIN1
CREATE TABLE my_tab(txt NUMERIC);
Код: Выделить всё
-- as user postgres
GRANT SELECT ON ADMIN1.my_tab TO ADMIN2;
Последний раз редактировалось SQL*Plus Ср сен 06, 2023 11:22 am, всего редактировалось 1 раз.
Re: information schema и applicable_roles
ну что же, продолжаем погружаться в мир PostgreSQL
В системном каталоге (словарь данных по оракловому) будет записано, что привилегию выдал не postgres, а владелец таблицы, т.е. admin1.
Хороший вопрос. Конечно может. Но!
В системном каталоге (словарь данных по оракловому) будет записано, что привилегию выдал не postgres, а владелец таблицы, т.е. admin1.
Re: information schema и applicable_roles
В Oracle Database сделали аналогично:
Привилегированный пользователь (SYSTEM) дает права
на объект другого пользователя-владельца схемы (SCOTT)
третьему пользователю (ADMIN2).
При этом в словаре данных записывается, что права юзеру ADMIN2 на свой объект предоставил сам SCOTT.
До этого нововведения права на объекты своей схемы мог предоставлять только владелец.
Это часто было очень неудобно.
Предполагаю, что данное изменение было сделано в Oracle 12c R1 (2013 год).
Если кто-то знает это более точно, напишите.
Код: Выделить всё
SQL> SELECT grantee, owner, table_name, grantor, privilege, grantable
2 FROM dba_tab_privs WHERE owner = 'SCOTT';
no rows selected
SQL> GRANT SELECT ON scott.emp TO admin2;
Grant succeeded.
SQL> SELECT grantee, owner, table_name, grantor, privilege, grantable
2 FROM dba_tab_privs WHERE owner = 'SCOTT';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE
------- ------- ---------- ------- --------- ---------
ADMIN2 SCOTT EMP SCOTT SELECT NO
на объект другого пользователя-владельца схемы (SCOTT)
третьему пользователю (ADMIN2).
При этом в словаре данных записывается, что права юзеру ADMIN2 на свой объект предоставил сам SCOTT.
До этого нововведения права на объекты своей схемы мог предоставлять только владелец.
Это часто было очень неудобно.
Предполагаю, что данное изменение было сделано в Oracle 12c R1 (2013 год).
Если кто-то знает это более точно, напишите.
Re: information schema и applicable_roles
Да, пользователь, получивший право на чужой объект "WITH GRANT OPTION",Naeel Maqsudov писал(а): ↑Чт сен 14, 2023 9:14 pmИли пользователь, которому дали права на объект с опцией «with admin option».Привилегированный пользователь (SYSTEM) дает права…
Т.е. разрешили ему распоряжаться правами на этот объект, хотя он не является owner-ом.
мог передать это право другому пользователю или роли.
Но изначально объектную привилегию, в том числе "with grant option", мог предоставить только владелец объекта.