Система
безопасности
в базах данных
Лекция 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