Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

Изменение/удаление профиля безопасности

SQL оператор alter profile изменяет некоторые характеристики существующего профиля. Одновременно можно поменять несколько характеристик профиля. Каждый профиль имеет уникальное имя, которое, естественно, менять нельзя.

Формат вызова:

alter profile Имя_профиля   [logtime Время_регистрации]   [sessions Количество_сессий]   [maxtime Время_сеансов];

Пример. Изменить профиль с именем prof1. Дать разрешение для регистрации с 8.00 до 24.00 в будний день:

alter profile prof1 logtime '0000FFFFFFFF-0000FFFFFFFF-0000FFFFFFFF-0000FFFFFFFF-000FFFFFFFF-000000000000-000000000000';

SQL оператор drop profile удаляет существующий профиль. Удаляемый профиль задается своим именем.

Формат вызова:

drop profile Имя_профиля [cascade | restrict];

Аргументы:

Аргумент

Значение

Имя_профиля

Задает имя профиля. Профиль с указанным именем должен быть создан оператором create profile.

cascade

Если задано ключевое слово cascade, то при удалении профиля удалятся и все пользователи, использующие этот профиль.

restrict

Если указано ключевое слово restrict и есть пользователи, которые используют удаляемый профиль, то операция завершится с ошибкой.

Создание/удаление роли

Роль – набор привилегий, т.е. прав совершать определенные действия над указанными объектами. Этот набор привилегий можно будет передавать другим ролям или пользователям. Роль содержит как привилегии, которые переданы роли непосредственно, так и привилегии других ролей.

Оператор create role создает роль.

Формат вызова:

create role Имя_роли;

Аргументы:

Аргумент

Значение

Имя_роли

Задает имя роли. Имя роли должно содержать буквы и цифры, должно начинаться с буквы и должно быть не длиннее 31 символа. Имена ролей должны быть уникальными и не должны совпадать с зарезервированными словами и с именами пользователей.

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

  • Пользователь является администратором базы данных;

  • Пользователь получил право на создание пользователей (привилегия create role) с помощью оператора grant create role.

Перед созданием роли и после него вызываются триггеры, установленные оператором:

create trigger Имя_триггера for admin {before | after} create role...

В триггере create role переменная new (см. раздел 4.7 «Работа с триггерами») имеет следующую структуру:

Имя поля

Тип поля

Назначение

NAME

char(32)

Имя роли.

Пример:

Создать роль с именем ROLE_SKLAD:

create role ROLE_SKLAD;

Для удаления роли используется SQL оператор drop role.

Формат вызова:

drop user Имя_роли;

Назначение права пользователю или роли

Оператор grant предоставляет указанным одному или нескольким пользователям (ролям) привилегии – права совершать действия с перечисленными объектами. Привилегии могут относиться к конкретному объекту или ко всем объектам указанного типа.

Формат вызова:

grant Привилегия,... on Объект   to {Пользователь1,... | public}   [with grant option];

grant Обшая_привилегия,...   to { Пользователь1,... | public}   [with grant option];

Привилегия ::=   {all privileges |     {select | delete | insert | update | usage | trigger | index | diff | alter}   }

Объект ::=   [table] {Имя_таблицы | Имя_встроенного_представления} |   procedure Имя_процедуры |   datasource Имя_внешнего_источника_данных |   function Имя_встроенной_функции

Общая_привилегия ::=   create datasource |   create procedure |   create profile |   create role |   create table |   create user

Аргументы:

Аргумент

Значение

 Пользователь

 Имя пользователя или роли, которой передаются указанные права.

 public

 Указанные права передаются всем пользователям – как существующим, так и тем, которые будут созданы в будущем.

 with grant option

 Пользователь, который получает права, сможет передать полученные права другим пользователям

all privileges

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

select

Передается право получать результаты выполнения поискового запроса по указанной таблице или представлению.

delete

Передается право удалять записи из указанной таблицы.

 insert

 Передается право добавлять записи в указанную таблицу.

update

Передается право изменять записи в указанной таблице.

 usage

 Передается право использовать указанный объект. Эта привилегия используется только для процедур,  внешних источников данных и некоторых встроенных функций.

trigger

Передается право создавать, изменять или удалять триггера для указанной таблицы.

index

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

diff

Передается право удалять переменную часть таблицы.

alter

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

 create datasource

 Передается право создавать или удалять источники данных или изменять их характеристики.

 create procedure

 Передается право создавать или удалять хранимые процедуры.

 create profile

 Передается право создавать или удалять профили пользователей.

 create role

 Передается право создавать или удалять роли или управлять назначением ролей.

create table

Передается право создавать или удалять постоянные таблицы.

create user

Передается право создавать или удалять пользователей или изменять их характеристики.

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

  • Пользователь является администратором базы данных;

  • Пользователь имеет право, которое он передает;

  • Пользователь получил право с атрибутом with grant option или пользователь передает право на объект, собственником которого является.

Примеры.

Назначить пользователю USER1 право на select, insert, update в таблице TAB1 с возможностью передачи данного права другим пользователям.

grant select, insert, update on TAB1 to USER1 with grant option;

Назначить пользователю USER1 право на создание таблиц.

grant create table to USER1;

Назначить пользователю USER1 все права на таблицу TAB1, которыми обладает текущий пользователь.

grant all privileges on TAB1 to USER1;