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

advertisement
Лабораторная работа 4. Разработка системы пользователей базы данных.
Требования к программному обеспечению:
1.
2.
3.
Компьютер с установленным на нем приложением Borland SQL Explorer.
Компьютер с установленный на нем СУБД MS SQL Server версии 7.0/2000/2003, и с установленной
учебной базой CIS.
СУБД MS SQL Server должна иметь запись о пользователе user (пароль-user) с привилегиями db_owner для
всех объектов в рабочем пространстве CIS.
Теоретические сведения:
1. Система безопасности СУБД
Система безопасности СУБД основывается на таких понятиях как учетная запись, роль, группа, пользователь.
Каждый пользователь проходит два этапа проверки системы безопасности при попытке доступа к данным:
- Этап 1 – аутентификация,
- Этап 2 – получение доступа к данным
Первый этап относится к уровню работы всего сервера СУБД. На первом этапе пользователь идентифицирует себя
с помощью логического имени (login) и пароля (password).
Логическое имя и пароль хранятся на сервере СУБД в виде учетной записи (account).
Если данные были введены правильно, то считается, что процедура аутентификации пройдена, и данный сервер
СУБД разрешает попытку доступа к конкретной базе данных.
Однако сама по себе аутентификация не дает пользователю права доступа к каким бы то ни было данным. Для
получения доступа к данным необходимо, чтобы учетной записи пользователя соответствовал некоторый
пользователь базы данных (database user).
Пользователь базы данных – совокупность разрешений и запретов на работу с данными в конкретной
базе данных.
На втором этапе учетная запись пользователя отображается в пользователя базы данных, и получает все
привилегии, соответствующие этому пользователю базы данных. Второй этап задействует систему безопасности
конкретной базы данных, а не всего сервера СУБД.
В разных базах данных одной и той же учетной записи могут соответствовать одинаковые или разные имена
пользователя базы данных с разными правами доступа.
В том случае, когда учетная запись пользователя не отображается в пользователя базы данных, клиент все же
может получить доступ к базе данных под гостевым именем guest (если оно не запрещено администратором БД).
Гостевой вход позволяет минимальный доступ к данным только в режиме чтения.
Пользователи баз данных могут объединяться в роли (иногда – группы) для упрощения управления системой
безопасности.
Роли базы данных объединяют нескольких пользователей в административную единицу и позволяют
назначать права доступа к объектам базы данных для роли, наделяя этими правами всех участников этой
роли.
Различают пользовательские и встроенные роли. Встроенные роли создаются автоматически при установке
сервера СУБД (и не могут меняться). Различают встроенные роли уровня СУБД и уровня конкретной базы данных.
Так, например, в SQL Server 2000 есть такие роли сервера:
Встроенная роль сервера
Sysadmin
Serveradmin
Setupadmin
Securityadmin
Processadmin
Dbcreator
Назначение
Может выполнять любые действия в SQL Server
Выполняет конфигурирование и выключение сервера
Управляет связанными серверами и процедурами,
автоматически запускающимися при запуске SQL
Server
Управляет учетными записями и правами на создание
базы данных, также может читать журнал ошибок.
Управляет процессами, запущенными в SQL Server
Может создавать и модифицировать базы данных
Diskadmin
Bukladmin
Управляет файлами SQL Server
Может вставлять данные с использованием средств
массового копирования, не имея непосредственного
доступа в таблицам.
SQL Server 2000 поддерживает такие встроенные роли уровня базы данных:
Встроенная роль сервера
Db_owner
Db_accessadmin
Db_securityadmin
Db_ddladmin
Db_backupoperator
Db_datareader
Db_datawriter
Db_denydatareader
Db_denydatawriter
Назначение
Имеет все права в базе данных
Может добавлять или удалять пользователей
Управляет всеми разрешениями, объектами, ролями и
членами ролей
Может выполнять любые команды DDL, кроме
GRANT, DENY, REVOKE
Может выполнять команды DBCC, CHECKPOINT,
BACKUP
Может просматривать любые данные в любой таблице
Может модифицировать любые данные в любой
таблице
Запрещается просматривать данные в любой таблице
Запрещается модифицировать данные в любой
таблице
Кроме указанных ролей существует еще одна, неудаляемая роль – public. Участниками этой роли являются все
пользователи, имеющие доступ к базе данных. Нельзя явно указать участников этой роли, т.к. все пользователи
уже включены в нее.
2. Манипулирование элементами системы безопасности СУБД
2.1 Создание учетной записи
Для создания учетной записи в MS SQL Server 2000 используется системная хранимая процедура sp_addlogin:
Ее формат таков:
sp_addlogin [@loginname=] login
[, [@passwd=] password]
[, [@defdb=] database]
[, [@deflanguage=] language]
[, [@sid=] SID]
[, [@encryptopt=] encryption_option]
где:
login
- логическое имя (login)
password
- пароль, который будет ассоциироваться с данной учетной записью
database
- база данных по умолчанию. Сразу же после установления соединения с сервером пользователь
будет работать в этой базе данных
language
- язык сообщений, выдаваемых сервером СУБД пользователю
SID
- двоичное число, которое будет являться идентификатором безопасности создаваемой
учетной записи. Используя эту возможность, можно создавать на разных серверах СУБД создавать
учетные записи с одинаковыми идентификаторами безопасности
encryption_option - определяет, будет ли шифроваться пароль данной учетной записи. По умолчанию пароль
шифруется.
Пример 1.
Добавить учетную запись teacher к базе данных CIS.
EXEC sp_addlogin teacher, 123, CIS
2.2 Создание пользователя базы данных
Для создания пользователя базы данных в MS SQL Server 2000 используется системная хранимая процедура
sp_grantdbaccess (ранее - sp_adduser):
Ее формат таков:
sp_grantdbaccess [@loginame=] login
[,[@name_in_db=] user [OUTPUT]]
Использование параметра OUTPUT заставляет хранимую процедуру поместить значение параметра user
созданного пользователя в некоторую переменную, для дальнейшей обработки.
Формат процедуры sp_adduser таков:
sp_adduser [@loginname=] login
[, [@name_in_db=] user]
[, [@grpname=] role]
где:
login
user
role
- логическое имя (login)которое необходимо связать с создаваемым пользователем
- имя создаваемого пользователя базы данных, с которым будет ассоциироваться данная
учетная запись. В базе данных не должно быть пользователя с таким именем.
- роль, в которую данный пользователь будет включен.
Пример 2.
Добавить нового пользователя teacher_adb к базе данных CIS.
EXEC sp_adduser teacher, teacher_adb, db_owner
2.3 Создание роли базы данных
Для создания роли базы данных в MS SQL Server 2000 используется системная хранимая процедура sp_addrole:
Ее формат таков:
sp_addrole [@rolename=] role
[, [@ownername=] owner]
где:
role
owner
- имя создаваемой роли. Должно быть уникальным в пределах БД
- имя владельца роли. Владельцем может быть только роль или пользователь из этой базы
данных. По умолчанию, владелец - dbo
Эта процедура не может быть запущена как часть транзакции, определенной пользователем. Исполнять эту
процедуру могут только участники роли сервера sysadmin, либо участники ролей db_securityadmin, db_owner.
Пример 3.
Добавление роли Managers.
EXEC sp_addrole Managers
2.4 Добавление пользователя в роль
Используется процедура sp_addrolemember вида:
sp_addrolemember [@rolename=] role,
[@membername=] security_account]
где:
role
- имя роли в которую добавляется пользователь.
security_account – пользователь базы данных, также – роль, что позволяет создавать иерархию ролей
Пример 4.
Добавление пользователя teacher_abd в роль Managers.
EXEC sp_addrolemember Managers, teacher_abd
2.5 Удаление ролей, учетных записей.
Перечислим в той очередности, которая разрешается в SQL Server 2000, процедуры удаления пользователей и
ролей из базы данных.
Процедура sp_droprolemember вычеркивает участника из роли:
sp_droprolemember [@rolename = ] role ,
[@membername = ] security_account
Процедура sp_droprole удаляет роль (в том случае, если предварительно из роли были удалены все участники):
sp_droprole [@rolename=] role
Процедура sp_revokedbaccess (и ее устаревший аналог sp_dropuser) удаляет пользователя базы данных:
sp_revokedbaccess [@name_in_db =] name
Процедура sp_droplogin удаляет учетную запись из реестра сервера СУБД:
sp_droplogin [@loginame=] login
2.6 Просмотр информации об учетных записях, ролях, привилегиях.
Для просмотра информации о текущих назначениях пользователей, ролей используются хранимые процедуры
sp_helpuser, sp_helplogins, sp_helprole, sp_helprolemember.
Параметры их вызовов таковы:
sp_helpuser [[@name_in_db=] security_account]
sp_helplogins [[@LoginNamePattern=] login]
sp_helprole [[@rolename=] role]
sp_helprolemember [[@rolename=] role]
3. Условие лабораторной работы
1. Для работы с базой данных будут использованы две роли – studentABD_XX и teacherABD_XX (XX –
номер компьютера, за которым сидит исполнитель работы). Назначить роли teacher_XX полный доступ ко
всем объектам базы данных на просмотр таблиц и выполнение запросов SELECT, но не на создание новых
таблиц и не на изменение данных в таблицах. Назначить роли studentABD_XX доступ владельца базы
данных, т.е. полный доступ на чтение и на изменение любых объектов базы данных. Составьте план
выполнения необходимых хранимых процедур для того, чтобы выполнить такие действия, на бумаге.
2. Пусть к данной базе данных будут иметь доступ два пользователя роли teacherABD_XX (teachABD1_XX,
teachABD2_XX) и один пользователь роли studentABD_XX (studABD1_XX). Составьте план выполнения
необходимых хранимых процедур для того, чтобы выполнить такие действия, на бумаге.
3. Задайте от одной до трех учетных записей для доступа к серверу. Составьте план выполнения
необходимых хранимых процедур для того, чтобы выполнить такие действия, на бумаге.
4. Откройте CIS в приложении Borland SQL Explorer.
5. В окне запросов ввести по очереди все запросы на создание системы пользователей и учетных записей для
доступа к БД. Выполнить эти запросы.
6. Пригласить преподавателя для просмотра результатов.
Download