Добавить в корзинуПозвонить
Найти в Дзене
Oracle Developer

🔐 Роли в Oracle

🔐 Роли в Oracle Друзья, всем привет! 👋🏻 В личку мне начали задавать вопросы, мол, Денис, было бы неплохо рассказать чуть больше про роли - что это, зачем, как использовать и т.п. Почему бы и нет? Материал рассчитан на 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; Теперь Иван получает доступ ко всем объектам, указанным в роли, без индивидуальной раздачи прав. Профит для пользователя 💡 Меньше хаоса в правах. 💡 Легко добавлять/удалять доступ

🔐 Роли в Oracle

Друзья, всем привет! 👋🏻

В личку мне начали задавать вопросы, мол, Денис, было бы неплохо рассказать чуть больше про роли - что это, зачем, как использовать и т.п.

Почему бы и нет? Материал рассчитан на 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 | Чатик 💬

Мини-курс Оптимизация: Быстрый старт 🚀