Безопасность баз данных MS SQL Server: Аутентификация и разрешения

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