Права доступа в Oracle. Часть 2 💥
Друзья, всем привет!
В продолжение поста Кости про права.
Один из подписчиков, к слову сказать, наш студент, обучавшийся на курсе по PL/SQL, правильно подметил, что в Oracle 12c появился новый объектный грант - READ.
Что это за грант такой и в чем отличие от SELECT?
Мы привыкли, что если нужен доступ к объекту, то достаточно выдать грант SELECT:
Однако SELECT позволяет выполнять, в том числе, операцию блокировки строки - SELECT ... FOR UPDATE. Всегда ли это нужно? Хороший вопрос.
Видимо, проблема назрела, и Oracle сделали новый грант - READ, который позволяет выполнять выборку из таблицы, но без возможности блокировки:
❌ Так уже не напишешь
Документация Oracle 12.2c
Коллеги, очень классно, что вы делитесь такими особенностями - не всегда они попадают в поле зрения 👍🏻
Всем хорошего дня ☀️
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет!
В продолжение поста Кости про права.
Один из подписчиков, к слову сказать, наш студент, обучавшийся на курсе по PL/SQL, правильно подметил, что в Oracle 12c появился новый объектный грант - READ.
Что это за грант такой и в чем отличие от SELECT?
Мы привыкли, что если нужен доступ к объекту, то достаточно выдать грант SELECT:
grant select on some_table to some_user;
Однако SELECT позволяет выполнять, в том числе, операцию блокировки строки - SELECT ... FOR UPDATE. Всегда ли это нужно? Хороший вопрос.
Видимо, проблема назрела, и Oracle сделали новый грант - READ, который позволяет выполнять выборку из таблицы, но без возможности блокировки:
grant read on some_table to some_user;
❌ Так уже не напишешь
select * from some_table where ... for update;
Документация Oracle 12.2c
Коллеги, очень классно, что вы делитесь такими особенностями - не всегда они попадают в поле зрения 👍🏻
Всем хорошего дня ☀️
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍26❤3🆒1
🔐 Роли в Oracle
Друзья, всем привет! 👋🏻
В личку мне начали задавать вопросы, мол, Денис, было бы неплохо рассказать чуть больше про роли - что это, зачем, как использовать и т.п.
Почему бы и нет? Материал рассчитан на Junior-разработчиков.
Роли в Oracle - инструмент, который часто недооценивают, но который может здорово упростить жизнь администратору и разработчику 🚀
Что это такое?
Роль - это контейнер для набора привилегий. Вместо того чтобы выдавать пользователю десятки прав по отдельности, мы создаём роль, наделяем её нужными правами и назначаем пользователю.
Пример использования
1️⃣ Создаём роль:
2️⃣ Даём привилегии:
3️⃣ Назначаем роль пользователю:
Теперь Иван получает доступ ко всем объектам, указанным в роли, без индивидуальной раздачи прав.
Профит для пользователя
💡 Меньше хаоса в правах.
💡 Легко добавлять/удалять доступ.
💡 Быстро подключать новых сотрудников/приложения к проекту.
Как посмотреть, что внутри роли?
Для своих ролей:
Для анализа, какие привилегии входят в роли:
Для полной картины (только DBA): DBA_ROLE_PRIVS, DBA_ROLES.
Роли можно наследовать
Например, роль SELECT_CATALOG_ROLE содержит в себе роль HS_ADMIN_SELECT_ROLE.
Представления для просмотра иерархии ролей - ROLE_ROLE_PRIVS.
Особенности использования ролей
▫️ Если роль слишком “широкая”, можно случайно открыть доступ лишним пользователям.
▫️ Роли можно наследовать от других ролей - может быть сложновато понять, откуда ноги растут.
▫️ Есть особенности работы с ролями в PL/SQL-модулях и правами на объекты. Например, если вы дали роли select на таблицу и она используется в PL/SQL-процедуре, то пользователь столкнется с ошибкой отсутствия доступа к таблице 🤷🏻♂️ При этом выполнение того же select вне PL/SQL-кода будет без ошибок.
Если интересно ставь палец вверх и мы расскажем об этом в одном из следующих постов 👍🏻
Всем хорошей трудовой недели 👨🏻💻
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет! 👋🏻
В личку мне начали задавать вопросы, мол, Денис, было бы неплохо рассказать чуть больше про роли - что это, зачем, как использовать и т.п.
Почему бы и нет? Материал рассчитан на Junior-разработчиков.
Роли в Oracle - инструмент, который часто недооценивают, но который может здорово упростить жизнь администратору и разработчику 🚀
Что это такое?
Роль - это контейнер для набора привилегий. Вместо того чтобы выдавать пользователю десятки прав по отдельности, мы создаём роль, наделяем её нужными правами и назначаем пользователю.
Пример использования
1️⃣ Создаём роль:
CREATE ROLE analyst_role;
2️⃣ Даём привилегии:
GRANT SELECT ON sales TO analyst_role;
GRANT SELECT, UPDATE ON customers TO analyst_role;
3️⃣ Назначаем роль пользователю:
GRANT analyst_role TO ivan;
Теперь Иван получает доступ ко всем объектам, указанным в роли, без индивидуальной раздачи прав.
Профит для пользователя
💡 Меньше хаоса в правах.
💡 Легко добавлять/удалять доступ.
💡 Быстро подключать новых сотрудников/приложения к проекту.
Как посмотреть, что внутри роли?
Для своих ролей:
SELECT * FROM USER_ROLE_PRIVS;
Для анализа, какие привилегии входят в роли:
SELECT * FROM ROLE_SYS_PRIVS;
SELECT * FROM ROLE_TAB_PRIVS;
Для полной картины (только DBA): DBA_ROLE_PRIVS, DBA_ROLES.
Роли можно наследовать
Например, роль SELECT_CATALOG_ROLE содержит в себе роль HS_ADMIN_SELECT_ROLE.
Представления для просмотра иерархии ролей - ROLE_ROLE_PRIVS.
Особенности использования ролей
▫️ Если роль слишком “широкая”, можно случайно открыть доступ лишним пользователям.
▫️ Роли можно наследовать от других ролей - может быть сложновато понять, откуда ноги растут.
▫️ Есть особенности работы с ролями в PL/SQL-модулях и правами на объекты. Например, если вы дали роли select на таблицу и она используется в PL/SQL-процедуре, то пользователь столкнется с ошибкой отсутствия доступа к таблице 🤷🏻♂️ При этом выполнение того же select вне PL/SQL-кода будет без ошибок.
Если интересно ставь палец вверх и мы расскажем об этом в одном из следующих постов 👍🏻
Всем хорошей трудовой недели 👨🏻💻
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍15