Система безопасности в базах данных Лекция 6 План лекции Система безопасности MS SQL Server Аутентификация пользователя Роли сервера Доступ к базе данных Управление пользователями баз данных Разрешения пользователя 2 Система безопасности MS SQL Server 3 Система безопасности MS SQL Server Любая система хранения информации должна быть максимально защищена как от случайного, так и от намеренного повреждения или искажения данных При планировании базы данных необходимо четко определять полномочия каждого пользователя системы 4 Система безопасности MS SQL Server В MS SQL Server предусмотрено четыре уровня безопасности: аутентификация при регистрации роли сервера разрешение на доступ к базе данных, поддерживаемой сервером полномочия (разрешения) пользователя 5 Аутентификация пользователя 6 Аутентификация пользователя Аутентификация пользователя – это процесс, при котором пользователь в зависимости от указанного имени пользователя (login) и пароля допускается или нет к установлению соединения c MS SQL Server 7 Аутентификация пользователя MS SQL Server может работать в двух режимах аутентификации пользователей: режим аутентификации Windows NT (Windows Authentication) режим аутентификации средствами MS SQL Server (SQL-Server Authentication) 8 Аутентификация пользователя При аутентификации средствами MS SQL Server учетную запись и пароль создает администратор баз данных MS SQL Server При аутентификации средствами Windows NT учетную запись и пароль создает системный администратор сети 9 Аутентификация пользователя При установке MS SQL Server создается лишь одна учетная запись пользователя для входа – sa (system administrator – системный администратор) 10 Аутентификация пользователя Учетная запись sa предназначена для выполнения функций администрирования сервера и имеет полные права на доступ ко всем объектам всех баз данных сервера 11 Аутентификация пользователя Существует несколько правил безопасности, которые следует соблюдать: одно имя (login) на одного пользователя ограничение по времени действия пароля ограничения на минимальную длину и сложность пароля ограничения на максимальное количество попыток входа в систему 12 Роли сервера 13 Роли сервера Роль – это определенные права на выполнение операторов и работу с объектами базы данных Роли объединяют нескольких пользователей в группу, наделенную определенными правами Одному пользователю может быть назначено несколько ролей 14 Роли сервера Существует 7 постоянных ролей сервера, которые предоставляют административные привилегии на уровне сервера: sysadmin – может выполнять любые действия на MS SQL Server setupadmin – управляет связанными серверами (linked servers) и процедурами, которые выполняются вместе с запуском сервера 15 Роли сервера Постоянные роли сервера: securityadmin – может создавать и управлять логинами, читать журнал ошибок и создавать БД processadmin – обладает правами управления процессами внутри MS SQL Server dbcreator – разрешено создание и изменение баз данных 16 Роли сервера Постоянные роли сервера: diskadmin – управляет файлами баз данных: назначает файлы в группы, присоединяет/отсоединяет базы данных bulkadmin – позволяет выполнять команду BULK INSERT для вставки сразу большого количества записей в таблицу 17 Доступ к базе данных 18 Доступ к базе данных Доступ к базе данных предоставляется пользователю базы данных (не путать с именем входа в MS SQL Server), наделенному определенными правами, которые определяются принадлежностью пользователя к роли базы данных 19 Доступ к базе данных Роли баз данных предоставляют наборы административных привилегий на уровне базы данных: db_owner – включает в себя права все других ролей базы данных. Пользователь получает права владельца базы 20 Доступ к базе данных Роли баз данных: db_accessadmin – похожа на серверную роль securityadmin, за исключением того, что ограничена одной базой данных. Она не позволяет создавать новые логины MS SQL Server, но разрешает добавлять новых пользователей в базу данных 21 Доступ к базе данных Роли баз данных: db_datareader – разрешает выполнение оператора SELECT для всех таблиц базы данных db_datawriter – разрешает выполнять INSERT, UPDATE и DELETE для всех таблиц БД db_ddladmin – позволяет добавлять, удалять и изменять объекты в БД 22 Доступ к базе данных Роли баз данных: db_securityadmin – еще одна роль похожая на серверную роль securityadmin. В отличие от db_accessadmin, она не разрешает создавать новых пользователей в базе, но позволяет управлять ролями и членством в ролях, а также правами на доступ к объектам базы данных 23 Доступ к базе данных Роли баз данных: db_backupoperator – позволяет создавать резервные копии базы данных db_denydatareader – запрещает выполнение SELECT для всех таблиц базы данных db_denydatawriter – запрещает выполнение INSERT, UPDATE и DELETE для всех таблиц базы данных 24 Доступ к базе данных Просмотр информации о ролях баз данных (как встроенных, так и определенных пользователем) осуществляется с помощью процедуры sp_helprole Просмотр членов ролей баз данных – sp_helprolemember 25 Управление пользователями баз данных 26 Управление пользователями баз данных По умолчанию MS SQL Server имеет специальную учетную запись пользователя в базе данных: владелец БД (dbo – data base owner) Владелец базы данных имеет полную власть над БД, им автоматически становится тот, кто создал эту базу данных 27 Управление пользователями баз данных Для создания пользователя БД используют процедуры: sp_adduser sp_grantdbaccess 28 Управление пользователями баз данных sp_adduser [@loginame=] ‘учетная запись для входа’ [, [@name_in_db=] ‘имя пользователя’] [, [@grpname=] ‘роль’] 29 Управление пользователями баз данных sp_grantdbaccess [@loginame=] ‘учетная запись для входа’ [, [@name_in_db=] ‘имя пользователя’] 30 Управление пользователями баз данных Вместо рассмотренных процедур рекомендуется использовать конструкцию CREATE USER 31 Управление пользователями баз данных CREATE USER user_name [ { { FOR | FROM } { LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name } | WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ] 32 Управление пользователями баз данных Отображение списка пользователей осуществляется в результате выполнения процедуры sp_helpuser 33 Управление пользователями баз данных Для удаления пользователя БД используются процедура: sp_dropuser @name_in_db=] ‘имя пользователя’ 34 Управление пользователями баз данных Вместо процедуры sp_dropuser рекомендуется использовать следующую конструкцию: DROP USER ‘имя пользователя’ 35 Управление пользователями баз данных Присвоение пользователю определенной роли осуществляется процедурой: sp_addrolemember [@rolename=] ‘роль’, [@membername=] ‘пользователь’ 36 Управление пользователями баз данных Отмена присвоенной пользователю роли может быть выполнена с помощью процедуры: sp_droprolemember [@rolename=] ‘роль’, [@membername=] ‘пользователь’ 37 Управление пользователями баз данных С целью упрощения администрирования системы безопасности сервера администратор имеет возможность создавать пользовательские роли баз данных и наделять их определенным набором полномочий 38 Управление пользователями баз данных Для этого используется хранимая процедура sp_addrole [@rolename=] ‘роль’ Для удаления, созданной ранее роли: sp_droprole [@rolename=] ‘роль’ 39 Разрешения пользователя 40 Разрешения пользователя Выполнение операторов языка Transact- SQL и действий в системе может быть выполнено только после успешной аутентификации пользователя При получении оператора от пользователя сервер проверяет, имеет ли право пользователь на выполнение соответствующих действий 41 Разрешения пользователя Действия, которые могут быть выполнены пользователем, определяются правами, выданными ему непосредственно, или роли, в которой он состоит Таким образом, пользователь должен иметь соответствующие разрешения на выполнение тех или иных действий 42 Разрешения пользователя Права в MS SQL Server можно разделить на три категории: разрешения для объектов разрешения для команд Transact-SQL неявные разрешения 43 Разрешения пользователя Для различных объектов применяются следующие наборы разрешений: SELECT – выполнение запросов INSERT – добавление данных в таблицы UPDATE – изменение данных в таблице DELETE – удаление данных из таблицы ALL – любые разрешения 44 Разрешения пользователя Управление разрешениями пользователя на доступ к объектам базы данных осуществляется с помощью команды GRANT 45 Разрешения пользователя GRANT { разрешение [,...n] }{ ON таблица | представление [(поле[,...n])] | ON [хранимая процедура[,…n] } TO учетная запись[,...n][WITH GRANT OPTION] 46 Разрешения пользователя Примеры: GRANT select, update on AdventureWorks..Production.WorkOrder to TestUser GRANT select on AdventureWorks..Production.Product (Name, ListPrice) to Andy 47 Разрешения пользователя Для запрещения пользователю доступа к объектам базы данных используется команда DENY 48 Разрешения пользователя DENY { разрешение [,...n] }{ ON таблица | представление [(поле[,...n])] | ON [хранимая процедура[,…n] } TO учетная запись[,...n][CASCADE] 49 Разрешения пользователя Неявное отклонение подобно запрещению доступа с тем отличием, что оно действует только на том уровне, на котором определено Если пользователю на определенном уровне доступ отклонен, то он может его получить на другом уровне, например, через членство в роли, имеющей на это право 50 Разрешения пользователя По умолчанию доступ пользователя к данным неявно отклонен Для неявного отклонения доступа к данным используется команда REVOKE 51 Разрешения пользователя REVOKE [GRANT OPTION FOR] { разрешение [,...n] }{ ON таблица | представление [(поле[,...n])] | ON [хранимая процедура[,…n] } TO учетная запись[,...n][CASCADE] 52 Разрешения пользователя Необходимо помнить следующий принцип: разрешение имеет самый низкий приоритет, а запрещение – самый высокий Доступ к данным может быть получен только явным его предоставлением при отсутствии запрещения доступа на любом другом уровне Если доступ явно не предоставлен, пользователь не может работать с данными 53