Защита на уровне СУБД
Сервер баз данных управляет секретностью базы данных, используя различные средства:
─ управление пользователями базы данных;
─ управление привилегиями и ролями;
─ аудит базы данных;
─ шифрование хранимых программных единиц.
Распознавание пользователя предполагает:
─ идентификацию пользователя – пользователь указывает свой идентификатор (не секретный – логин);
─ аутентификацию – проверка соответствия реального пользователя указанному идентификатору (подтверждение подлинности пользователя). К настоящему времени разработано множество методов аутентификации, включая различные схемы паролей, использование признаков и ключей, а также физических характеристик (например, отпечатки пальцев и образцы голоса).
После распознавания пользователя система производит следующие действия:
─ выделяет соответствующие пользователю ресурсы (трафик, расписание доступа, выделение памяти и т.д.);
─ устанавливает права доступа пользователя.
─ выполняет мониторинг (оперативное наблюдение) и аудит (подведение итогов, определение статистики) за пользователем;
Основное средство защиты – контроль доступа – использует два основных подхода:
─ обязательный;
─ избирательный.
Избирательный подход – дает меньшую степень защиты, но более просто реализуется. Дл этого пользователям назначаются привилегии.
Привилегия – право на выполнение некоторой операции. Разделяются на системные и объектные привилегии.
Системные (командные) привилегии – разрешают пользователю выполнять конкретную операцию с базой данных. Используются для выполнения административных задач (создание или удаление таблиц, представлений, хранимых процедур, ввод учетных записей пользователей и т.д.). Эта группа привилегий никак не стандартизирована и реализуется в разных системах с разным набором привилегий.
Объектные привилегии – разрешают выполнять действия над заданным объектом базы данных (таблицей, представлением и т.д.). Стандартизированы в SQL системах.
Основные объектные привилегии для внешних пользователей:
ALTER – разрешает изменение определения заданных таблиц, представлений
DELETE – разрешает удаление строк из заданных таблиц, представлений
EXECUTE – разрешает выполнение заданных хранимых процедур, функций, пакетов
INSERT – разрешает вставка строк в заданные таблицы, представления
SELECT – разрешает чтение данных из заданных таблиц, представлений
UPDATE – разрешает изменение данных в заданных таблицах, представлениях
При назначении привилегий различают субъект – (то, что выполняет действие – может быть пользователь или программа) и объект (то, над чем выполняется действие – может быть информационный объект или программа).
Для задания привилегий заполняется матрица доступа:
Привелегии (права) задаются с помощью команды:
GRANT <привилегия[, привилегия …] | ALL> ON <Объект> TO <Субъект>
("ALL" предоставляет все привилегии на объект)
Например, чтобы позволить пользователю Ivanov выполнять запросы к таблице Sotrudnik, нужно ввести команду
GRANT SELECT ON Sotrudnik TO Ivanov;
Привилегии, объекты и субъекты можно задавать списком.
Привилегии может назначать администратор, владелец объекта или уполномоченное (доверенное) лицо – тот, кому поручили перераспределение привилегий.
Доверенное лицо получает разрешение на выдачу привилегий добавлением GRANT опции:
GRANT <привилегия> ON <Объект> TO <Субъект> WITH GRANT OPTION
При этом конструкция "WITH ADMIN OPTION" разрешает предоставлять полученную привилегию другим пользователям
Напрмер, команда
“GRANT SELECT ON Sotrudnik TO Ivanov WITH GRANT OPTION”
предоставляет возможность пользователю Ivanov передавать право назначать привилегии работы с таблицей Sotrudnik другим пользователям.
Для отмены привилегии используется оператор
“REVOKE <привилегия> ON <объект> FROM <субъект>”.
Привилегию может снять только субъект, ее назначивший; снятие привилегии выполняется каскадно.
Одна из первых привилегий, которая должна быть определена - это привилегия создателей таблиц. Если все пользователи будут иметь возможность создавать в системе базовые таблицы, это может привести к избыточности данных, их несогласованности и, как следствие, к неэффективности системы. Пользователь, создавший таблицу, является ее владельцем. Это означает, что пользователь имеет все привилегии в созданной им таблице и может передавать привилегии другим пользователям в этой таблице.
Каждый пользователь в среде SQL имеет специальное идентификационное имя (или номер).
Для пользователя таблицы могут быть назначены следующие типы привилегий:
─ SELECT - разрешение выполнять запросы в таблице.
─ INSERT - разрешение выполнять оператор INSERT (вставка новой строки) в таблице.
─ UPDATE - разрешение выполнять оператор UPDATE (обновление значений полей) в таблице. Можно ограничить эту привилегию для определенных столбцов таблицы.
─ DELETE - разрешение выполнять оператор DELETE (удаление записей) в таблице.
─ REFERENCES - разрешение определить внешний ключ.
Недостатки избирательного подхода:
─ сложность назначения привилегий;
─ ошибки нарушения конфиденциальности из-за путаницы.
Для упрощения и большей наглядности назначений может быть реализовано группирование. Существуют две формы: пользователи объединяются в группы, привилегии в роли.
В первых системах создавались группы пользователей. При этом объявляются группы, пользователи причисляются к группам. Привилегии назначаются как отдельным пользователям, так и отдельным группам. Обычно существуют предопределенные группы (например, PUBLIC – в нее автоматически зачисляются все пользователи; этой группе определяют минимальные права).
Второй вариант, который в настоящее время чаще используется – управление привилегиями через роли. Роль – именованная группа привилегий, которая может быть предоставлена пользователю. Использование ролей позволяет группировать привилегии, необходимые для разных категорий пользователей и динамически управлять привилегиями (например, достаточно переопределить привилегии, назначенные роли, что немедленно отобразится на всех пользователях, которым назначена эта роль). Администратор базы данных создает роль, определяет набор привилегий для роли и присваивает роль пользователям:
Разница данных вариантов группирования в том, что назначение в группы является статическим. Создание ролей позволяет сделать динамически управление.
Дата добавления: 2016-12-27; просмотров: 1383;