Методические указания к лабораторной работе №4
по курсу "Базы данных"
CИСТЕМА БЕЗОПАСНОСТИ Firebird
В этой методичке кратко описываются основные понятия системы безопасности СУБД Firebird 1.5.
Определения:
Пользователь – это регистрационная запись на сервере, состоящая из имени пользователя (username) и пароля (password). Имя пользователя состоит из латинских букв (большие и маленькие не различаются) и цифр, длиной до 31 символа. Пароль состоит из латинских букв и цифр (большие и маленькие буквы различаются), длиной до 8 символов (теоретически длина до 32 символов, однако используются первые 8, остальные игнорируются).
Есть один стандартный пользователь с именем SYSDBA и паролем (при установке сервера) masterkey, точнее masterke. Это системный администратор СУБД. Его нельзя удалить или понизить его права, можно только сменить пароль.
Понятие "пользователь" было задумано, чтобы каждый человек, работающий с базой данных, имел персональный username и пароль. Когда сотрудник увольняется, удаляется соответствующий "пользователь", и далее он уже не может работать с базой.
Вся информация о пользователях хранится в системной базе данных isc4.gdb. Создавать новых пользователей через IB Expert нельзя. Для этого имеется утилита gsec.exe (лежит в каталоге BIN директории, где установлен Firebird). Опишем работу с ней.
1. Запустите cmd.exe
2. В консоли перейдите в каталог Firebird\bin. Запустите с командной строки команду
C:\Program Files\Firebird\bin>gsec.exe –user sysdba –password masterkey
Если пароль masterkey был сменен, указывается текущий пароль пользователя SYSDBA.
3. Программа gsec перейдет в интерактивный режим – появится приглашение
GSEC>
после которого можно вводить любые команды:
quit – выйти из программы;
help – вывести справку по командам;
display – вывести список всех зарегистрированных пользователей;
display имя_пользователя – вывести информацию о пользователе;
delete имя_пользователя – удалить пользователя;
add имя_пользователя параметры – добавить нового пользователя;
modify имя_пользователя параметры – изменить настройки пользователя;
в последних двух командах параметры могут указываться такие:
–pw пароль
–fname first_имя
–mname middle_имя
–lname last_имя
–uid значение_uid
–gid значение_gid
Например, для регистрации пользователя с ником IVAN, именем Ivan Fedorov и паролем 123 вводится команда
GSEC> add ivan –pw 123 –fname Ivan –lname Fedorov
Роли (ROLE), или категории пользователей – это группы пользователей, обладающих одинаковыми правами на доступ к данным. Обычно заводят столько ролей, сколько должностей в организации. Сотрудники с одинаковыми ролями (должностями) имеют доступ к одному и тому же ограниченному набору данных. Когда приходит новый сотрудник, его username включают в роль, соответствующую его должности, и уровню "секретности".
Роли действуют в пределах своей базы данных.
Существует две стандартных роли: PUBLIC (роль с минимальными правами доступа, в нее автоматически входят все новые пользователи) и OWNER (создатель базы данных, максимальные права).
Новая роль создается SQL-командой
CREATE ROLE ИмяРоли
Или роли можно создавать в IB Expert, щелкая на вкладке ROLES (New Role…).
Каждый пользователь (username) в базе данных может сопоставляться с одной или несколькими ролями, при подключении к БД он выбирает нужную роль. Присвоить роль пользователю можно SQL-командой
GRANT Имя_роли TO Имя_пользователя;
Права (permissions) – это разрешение пользователям или ролям осуществлять какое-то действие над таблицей, представлением или хранимой процедурой. Регламентируются следующие действия:
1. Для таблиц целиком и отдельных столбцов таблиц:
SELECT – право читать данные, INSERT – право добавлять строки; UPDATE – модификация данных; DELETE – право удалять строки; REFERENCES – право создавать Foreign Key, ссылающийся на эту таблицу.
2. Для представлений (view) и их столбцов: SELECT,
Права на изменение данных в представлениях (INSERT, UPDATE, DELETE) фактически относятся либо к триггерам, которые делают представление модифицируемым, либо к таблицам, на которых основано представление.
3. Для хранимых процедур: EXECUTE – право на выполнение процедуры.
Если пользователю выдаются права на объекты, которые ссылаются на другие объекты, то аналогичные права должны быть выданы и на ссылочные объекты. Например, если какой-то роли выдано право на запуск хранимой процедуры, вставляющей строки в какую-то таблицу, то роль должна обладать правом INSERT на эту таблицу.
Права выдаются SQL-оператором
GRANT список_прав ON Имя_объекта TO Имя_пользователя или роли
Можно использовать вместо списка прав слово ALL – выдать все права.
Например, для роли TEACHER выдаются права на просмотр строк в таблице Students и модификацию столбца (Diploma_Theme):
GRANT SELECT ON Students TO TEACHER;
GRANT UPDATE ON Students(Diploma_Theme) TO TEACHER;
Выдавать права можно с помощью IB Expert.
Права можно выдавать как отдельным пользователям, так и ролям. Использование ролей упрощает администрирование. Вместо того, чтобы выдавать одинаковые права каждому пользователю в отдельности, достаточно создать роль, выдать на нее права и включить пользователя в эту роль.