Лабораторная работа №5. Управление пользователями. Роли. Синонимы. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №5. Управление пользователями. Роли. Синонимы.



Цель работы: познакомиться с механизмами управления безопасностью БД ORACLE и объектами БД синонимами.

Для обеспечения защиты в СУБД Oracle используется система избирательного управления доступом. Это означает, что администратор БД создает пользователей БД и управляет их полномочиями на выполнение конкретных операций с конкретными объектами БД.

Чтобы предоставить кому-либо доступ к данным, администратор должен обеспечить глобальную доступность БД, создать в БД соответствующего пользователя, определив его учетную запись, и предоставить новому пользователю определенный набор полномочий по доступу к объектам БД. Обеспечение правомерности доступа пользователя реализуется средствами аутентификации, простейшим из которых является использование имени и пароля, подтверждающего подлинность пользователя. Как правило, администратор старается выбрать осмысленные имена пользователей (например, объединяя имя и фамилию или должность) и не несущие никакого смысла пароли.

Для создания в БД ORACLE нового пользователя применяется следующая команда:

create user ИМЯ_ПОЛЬЗОВТЕЛЯ identified by ПАРОЛЬ;

create user student identified by istas default tablespace users quota unlimited on users.

Для удаления пользователя используется команда DROP:

drop user ИМЯ_ПОЛЬЗОВТЕЛЯ;

drop user student.

Новый пользователь по умолчанию не имеет никаких прав на выполнение операций с объектами БД, например, при попытке получить доступ к системе по команде CONNECT система отвергнет попытку доступа, выдав сообщение об отсутствии необходимых прав доступа у данного пользователя. Для дальнейшей работы новому пользователю необходимо дать определенные права или привилегии.

Привилегия (privilege) — это разрешение на выполнение в БД определенного действия. Не имея соответствующей привилегии, пользователь не может получить доступ к данным или выполнить какое-либо действие. В СУБД Oracle реализована поддержка принципа "безопасности по умолчанию" или принципа "наименьших привилегий". Суть этих принципов состоит в том, что пользователь может получить доступ к объекту БД (например, таблице или представлению) или выполнить определенные действия в системе (например, создать нового пользователя), только если ему это явно разрешено администратором или пользователем с соответствующими полномочиями.

СУБД поддерживает для каждого пользователя БД набор привилегий. Любому пользователю можно назначить новые привилегии либо отменить существующие. Все привилегии могут быть разделены на два класса:

1. системные привилегии (system privelege):

2. привилегии доступа к объектам

(object privelege).

Системная привилегия — это привилегия, которая дает пользователю право на выполнение какой-либо операции в масштабе своей схемы или всей БД. Например, пользователь с системной привилегией SELECT ANY TABLE может выполнять выборку из любой таблицы БД. Перечислим наиболее востребованные системные привилегии:

Таблица 1. Системные привилегии

Системная привилегия Назначение
CREATE (ALTER, DROP) ANY TABLE Разрешает пользователю создавать (изменять, удалять) любую таблицу в БД
CREATE TABLE Разрешает пользователю создавать таблицу в своей схеме
INSERT (UPDATE, DELETE, SELECT) ANY TABLE Разрешает пользователю добавлять (обновлять, удалять, получать) данные в любую таблицу БД
CREATE (DROP) ANY VIEW Разрешает пользователю создавать (удалять) любое представление в БД
CREATE VIEW Разрешает пользователю создавать (удалять) любое представление в своей схеме
CREATE (DROP, ALTER, EXECUTE) ANY PROCEDURE Разрешает пользователю создавать (изменять, удалять, выполнять) любую ХП или функцию в БД
CREATE (DROP, ALTER) ANY TRIGGER Разрешает пользователю создавать (изменять, удалять) любой триггер в БД
CREATE TRIGGER Разрешает пользователю создавать триггер в своей схеме
CREATE (DROP, ALTER, BECOME) USER Разрешает пользователю создавать (удалять, изменять и регистрироваться в системе как другой пользователь) пользователей в БД
CREATE (DROP, ALTER, SELECT) ANY SEQUENCE Разрешает пользователю создавать (удалять, изменять, получать значение) последовательность в БД
CREATE SEQUENCE Разрешает пользователю создавать последовательность в своей схеме
CREATE (DROP) ANY SYNONYM Разрешает пользователю создавать (удалять) синонимы в БД
CREATE (DROP) PUBLIC SYNONYM Разрешает пользователю создавать (удалять) синонимы в БД, доступные всем пользователям
CREATE SYNONYM Разрешает пользователю создавать (удалять) синонимы в своей схеме
CREATE ROLE Разрешает пользователю создавать роли
GRANT (DROP, ALTER) ANY ROLE Разрешает пользователю присваивать (удалять, изменять) роли в БД

Для предоставления системных привилегий пользователю в соответствии с требованиями стандарта используется команда GRANT:

GRANT системная_ПРИВИЛЕГИЯ [,СИСТЕМНАЯ ПРИВИЛЕГИЯ,…] TO ПОЛЬЗОВАТЕЛЬ | PUBLIC [WITH ADMIN OPTION].

Параметр PUBLIC, который используется вместо имени конкретного пользователя, позволяет предоставить системную привилегию всем зарегистрированным пользователям БД. Для передачи некоторой системной привилегии с правом наследования используется параметр WITH ADMIN OPTION. Если системная привилегия передана с этим параметром, получивший ее пользователь имеет право передавать данную привилегию другим пользователям.

GRANT CREATE ANY TABLE TO STUDENT;

grant create any procedure, execute any procedure, drop any procedure to PUBLIC with admin option.

Привилегия доступа к объекту — это разрешение пользователю на выполнение определенной операции над конкретным объектом БД, например выполнение выборки из некоторой таблицы. При этом пользователь может формировать любые запросы к данной таблице, но не имеет права модифицировать данные этой таблицы или формировать какой-либо запрос к другой таблице.

В своей схеме (с объектами, владельцем которых является данный пользователь) пользователю разрешены любые операции. Если привилегий оказалось достаточно, чтобы создать объекты, то даже после отмены привилегий пользователь по-прежнему сможет производить любые действия с уже существующими объектами. Рассмотрим привилегии на типовые объекты БД.

Таблица 2. Привилегии доступа к объектам

Тип объекта Привилегии Назначение
Таблица SELECT, INSERT, UPDATE, DELETE Получение (добавление, изменение, удаление) записей из таблицы
Представление SELECT, INSERT, UPDATE, DELETE Получение (добавление, изменение, удаление) записей из представления
Последовательность SELECT Получение значений последовательности
ХП и функции EXECUTE Выполнение модуля

Для предоставления привилегии для доступа к объекту используется несколько измененная команда GRANT:

GRANT ПРИВИЛЕГИЯ | ALL PRIVILEGES ON ОБЪЕКТ TO ПОЛЬЗОВАТЕЛЬ | PUBLIC [WITH ADMIN OPTION].

Параметр ALL PRIVILEGES позволяет задать пользователю все возможные привилегии для объекта.

GRANT SELECT, UPDATE ON JOBS TO STUDENT;

GRANT ALL PRIVILEGES ON EMPLOYESS

TO PUBLIC.

Большое число пользователей, работа которых требует множества различных привилегий для доступа к ресурсам БД, создает значительный объем рутинной работы администратору БД. СУБД Oracle предлагает языковое средство для автоматизации работы администратора по разграничению доступа. Данное средство поддерживается как объект БД, называемый ролью. Роль (ROLE) — это поименованный набор привилегий, который может быть предоставлен пользователю или другой роли. Роль не является объектом какой-либо схемы.

Описание привилегий, характерных для той или иной роли, готовится заранее. При регистрации нового пользователя в системе администратор выполняет только предоставление пользователю привилегий конкретной роли. При необходимости изменить привилегии конкретному приложению достаточно изменить только привилегии соответствующей роли. Все пользователи, отображенные на эту роль, автоматически получат измененные привилегии. В любой БД ORACLE по умолчанию присутствуют несколько предопределенных ролей, которые автоматически определяются при создании БД:

1. CONNECT (подключение);

2. RESOURCE (ресурсы);

3. DBA (администратор БД).

Для создания роли применяется команда CREATE ROLE, но для ее выполнения пользователь должен иметь необходимую системную привилегию:

CREATE ROLE ИМЯ_РОЛИ NOT IDENTIFIED | IDENTIFIED BY ПАРОЛЬ;

CREATE ROLE BUGH;

CREATE ROLE DIREKTOR IDENTIFIED BY RSADFE.

Параметр NOT IDENTIFIED указывает на то, что при использовании роли аутентификация при помощи пароля не производится. Параметр IDENTIFIED BY указывает, для использования роли необходима аутентификация при помощи пароля.

Для удаления роли применяется команда DROP ROLE:

DROP ROLE ИМЯ_РОЛИ;

DROP ROLE BUGH;

DROP ROLE DIREKTOR.

Чтобы присвоить права роли, в команде GRANT вместо имени пользователя необходимо написать имя роли.

GRANT SELECT, UPDATE ON JOBS TO BUGH;

GRANT ALL PRIVILEGES ON EMPLOYESS TO DIREKTOR.

Для присваивания пользователю роли также используется команда GRANT:

GRANT ИМЯ_РОЛИ TO ИМЯ_ПОЛЬЗОВАТЕЛЯ;

GRANT BUGH TO STUDENT.

Теперь при подключении пользователя STUDENT он кроме привилегий самого пользователя наследует и все привилегии роли BUGH.

Для отмены системных привилегий или привилегий доступа к объектам, предоставленных пользователю или роли, используется команда REVOKE. Для отмены системной привилегии или роли синтаксис команды выглядит следующим образом:

REVOKE СИСТЕМНАЯ_ПРИВИЛЕГИЯ |ИМЯ_РОЛИ;

FROM ПОЛЬЗОВАТЕЛЬ | PUBLIC;

REVOKE CREATE ANY TABLE FROM STUDENT;

REVOKE BUGH FROM STUDENT.

Для отмены привилегий доступа к объекту БД команда принимает вид:

REVOKE ПРИВИЛЕГИЯ | ALL PRIVILEGES ON ИМЯ_ОБЪЕКТА;

FROM ПОЛЬЗОВАТЕЛЬ | PUBLIC;

REVOKE UPDATE, DELETE ON JOBS

FROM STUDENT;

REVOKE ALL PRIVILEGES ON JOBS

FROM PUBLIC.

Синоним (SYNONYM) – объект БД, с помощью которого можно ссылаться на другие объекты БД (таблицы, ХП, последовательности и т.д.) по имени, отличному от их настоящего имени. Основное назначение синонимов – удобство работы. С помощью синонимов удобно организовывать работу с объектами БД, которые имеют длинные, трудновоспроизводимые имена. К тому же удобно создавать синонимы для объектов в схеме другого пользователя. В этом случае во всех запросах имя схемы пользователя можно будет опускать. Синоним создается следующей командой:

CREATE OR REPLACE [PUBLIC] SYNONYM ИМЯ_СИНОНИМА FOR ИМЯ_ОБЪЕКТА.

Если при создании синонима указан параметр PUBLIC, то такой синоним становится видимым для всех пользователей БД, в противном случае - только для текущего пользователя. Для удаления синонима применяется команда DROP:

DROP [PUBLIC] ИМЯ_СИНОНИМА.

Рассмотрим несколько примеров:

create public synonym DEPARTMENTS for hr.DEPARTMENTS;

create synonym JST for hr.JOB_HISTORY;

drop public synonym DEPARTMENTS;

drop synonym JST.

 

Задания для самостоятельной работы:

1. Подключитесь под учетной записью student. Создайте таблицу-перечень планет: ID (первичный ключ), наименование планеты (символьное, уникальное). Создайте последовательности и триггер для заполнения первичного ключа при вставке новой записи. Добавьте три записи в таблицу.

2. Создайте нового пользователя с любым именем и паролем, назначьте ему TABLESPACE USERS. Назначьте ему привилегию подключаться к БД (CONNECT).

3. Напишите запрос, который бы получал все записи из таблицы планет. Создайте хранимую процедуру, которая бы с помощью цикла выводила список планет, а после него – общее количество планет. Вызовите хранимую процедуру.

4. Отключитесь из-под пользователя student и подключитесь к учебной БД под новым пользователем. Попробуйте вызвать написанный запрос в п.3 и хранимую процедуру. Отключитесь из под нового пользователя.

5. Подключитесь под пользователем student. Дайте новому пользователю привилегии на выполнение запросов SELECT и INSERT к таблице планет. Дайте новому пользователю привилегию на выполнение созданной хранимой процедуры. Создайте общедоступный синоним для таблицы планет под произвольным именем

6. Подключитесь под новым пользователем. Получите все записи из таблицы планет. Получите все записи из таблицы планет, используя синоним. Добавьте одну запись в таблицу планет. Попробуйте удалить все записи из таблицы планет. Выполните хранимую процедуру.

7. Подключитесь под пользователем student. Удалите у нового пользователя все назначенные привилегии (включая подключение). Создайте еще одного нового пользователя. Создайте новую роль – администратор справочника планет. Присвойте новой роли привилегии на выполнение запросов SELECT, UPDATE, INSERT и DELETE к таблице планет. Присвойте двум новым пользователем новую роль.

8. Подключитесь к учебной БД под любым новым пользователем. Добавьте в таблицу планет одну запись. Удалите в таблице планет все записи. Попробуйте удалить таблицу планет.

9. Подключитесь к учебной БД под пользователем student. Присвойте роли администратора таблицы планет системные привилегии DROP ANY TABLE, DROP ANY PROCEDURE, DROP ANY SEQUENCE, DROP ANY TRIGGER.

10. Подключитесь к учебной БД под учетной записью одного из пользователей. Удалите синоним, хранимую процедуру, триггер, последовательность и таблицу планет. Подключитесь к учебной БД под учетной записью student. Удалите созданную роль и пользователей.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 292; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.67.251 (0.031 с.)