Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИОСУ лекции (мои).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.74 Mб
Скачать

15. Защита от несанкционированного доступа

Безопасность данных (data security) — концепция защиты программ и данных от случайного либо умышленного изменения, уничтожения, разглашения, а также несанкционированного использования.

Безопасность базы данных заключается в защите базы данных от несанкционированного доступа со стороны пользователей. Без привлечения соответствующих мер безопасности интегрированные в БД данные становятся более уязвимыми, чем данные в файловой системе. Однако интеграция позволяет определить требуемую систему безопасности базы данных, а СУБД привести ее в действие.

Защита данных от несанкционированного доступа предполагает:

  • предотвращение несанкционированного доступа к базе данных (обеспечение парольного входа в систему: регистрация пользователей, назначение и изменение паролей);

  • обеспечение защиты конкретных данных: определение прав доступа групп пользователей и отдельных пользователей, определение допустимых операций над данными для отдельных пользователей, выбор/создание программно-технологических средств защиты данных, шифрование информации в целях защиты данных от несанкционированного использования;

  • фиксация попыток несанкционированного доступа к информации;

  • аудит действий пользователей в базе данных;

  • исследование возникающих случаев нарушения защиты данных и проведение мероприятий по их предотвращению.

Безопасность базы данных можно разделить на две части:

1) Безопасность системы, которая охватывает доступ к базе данных на системном уровне. Безопасность системы включает в себя:

  • проверка правильности комбинации имени и пароля пользователя;

  • контроль системных операций, которые пользователю разрешено выполнять.

2) Безопасность данных включает механизмы, которые управляют доступом к объектам базы данных. Безопасность данных определяет:

  • к каким объектам базы данных имеет доступ пользователь;

  • какие действия пользователь может выполнять с объектами базы данных (извлечение, вставка, обновление, удаление).

Защита может выполняться на разных уровнях:

1. Защита от непосредственного доступа к базе данных. Применяются следующие методы:

1) Использование закрытого (сложного для чтения, уникального) формата данных.

2) Шифрование данных. Могут шифроваться как файлы целиком, так и отдельные поля.

Методика введения полного шифрования – шифрование в конце, расшифровка в начале программы.

Важнейшими характеристиками алгоритмов шифрования являются криптостойкость, длина ключа и скорость шифрования.

В криптографии обычно рассматриваются два типа криптографических алгоритмов. Это классические криптографические алгоритмы, основанные на использовании секретных ключей, и новые криптографические алгоритмы с открытым ключом, основанные на использовании ключей двух типов: секретного (закрытого) и открытого, так называемые двухключевые алгоритмы.

3) Самый популярный метод защиты – перенос базы на защищенный носитель (защищённый сервер).

2. Защита на уровне субд

Сервер баз данных управляет секретностью базы данных, используя различные средства:

  • управление пользователями базы данных;

  • управление привилегиями и ролями;

  • аудит базы данных;

  • шифрование хранимых программных единиц.

Распознавание пользователя предполагает:

  • идентификацию пользователя – пользователь указывает свой идентификатор (не секретный – логин);

  • аутентификацию – проверка соответствия реального пользователя указанному идентификатору (подтверждение подлинности пользователя). К настоящему времени разработано множество методов аутентификации, включая различные схемы паролей, использование признаков и ключей, а также физических характеристик (например, отпечатки пальцев и образцы голоса).

После распознавания пользователя система производит следующие действия:

  • выделяет соответствующие пользователю ресурсы (трафик, расписание доступа, выделение памяти и т.д.);

  • устанавливает права доступа пользователя.

  • выполняет мониторинг (оперативное наблюдение) и аудит (подведение итогов, определение статистики) за пользователем;

Основное средство защиты – контроль доступа – использует два основных подхода:

  • обязательный;

  • избирательный.

Избирательный подход – дает меньшую степень защиты, но более просто реализуется. Дл этого пользователям назначаются привилегии.

Привилегия – право на выполнение некоторой операции. Разделяются на системные и объектные привилегии.

Системные (командные) привилегии – разрешают пользователю выполнять конкретную операцию с базой данных. Используются для выполнения административных задач (создание или удаление таблиц, представлений, хранимых процедур, ввод учетных записей пользователей и т.д.). Эта группа привилегий никак не стандартизирована и реализуется в разных системах с разным набором привилегий.

Объектные привилегии – разрешают выполнять действия над заданным объектом базы данных (таблицей, представлением и т.д.). Стандартизированы в 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 – в нее автоматически зачисляются все пользователи; этой группе определяют минимальные права).

Второй вариант, который в настоящее время чаще используется – управление привилегиями через роли. Роль – именованная группа привилегий, которая может быть предоставлена пользователю. Использование ролей позволяет группировать привилегии, необходимые для разных категорий пользователей и динамически управлять привилегиями (например, достаточно переопределить привилегии, назначенные роли, что немедленно отобразится на всех пользователях, которым назначена эта роль). Администратор базы данных создает роль, определяет набор привилегий для роли и присваивает роль пользователям:

Разница данных вариантов группирования в том, что назначение в группы является статическим. Создание ролей позволяет сделать динамически управление.

Обязательный подход

Реализует жесткое разделение информации по уровням. При этом используются метки секретности. Для объектов задаются классы секретности, для субъектов – уровни секретности. Классы и уровни относятся к одному набору, например: несекретно, для служебного пользования, секретно, совершенно секретно.

При попытке доступа уровень субъекта сравнивается с классом объекта. Учитываются ограничения:

  • пользователь может читать данные объектов своего уровня и нижних;

  • пользователь может записывать данные в объекты своего уровня и более высокого.

Такая модель называется моделью Белла-Лападула.

В простой реализации модели метки назначаются записям.

Более полный вариант – задание меток для отдельных полей, так как отдельные ячейки таблицы могут быть засекречены.

В получаемых моделях секретные и несекретные данные хранятся в общих таблицах. При выводе засекреченные данные не предъявляются, если уровень секретности субъекта это не поддерживает. При этом возможна косвенная утечка информации, в зависимости от способа маскирования данных. Используются следующие варианты маскирования:

  • прямое маскирование полей – информация секретных полей не выводится; ввод в засекреченные поля блокируется. Но в этом случае можно догадаться, что в скрытом поле что-то спрятано;

  • использование легенды для секретных данных. Для каждой ячейки хранится основной вариант и легенда. С легендой можно делать все что угодно. Например, данные "Иванов" и "бухгалтер" являются легендами соответствующих данных.

ФИО г.р. должность

С Иванов Н 1940 С бухгалтер

Д. Бонд агент 007

Но в этом случае все равно остается косвенный канал утечки информации, т.к. пользователь может модифицировать данные, но удаление запрещенных данных блокируется.

  • использование многозначных картежей. Допускается умышленное нарушение реляционных принципов: каждый пользователь работает со своей копией. Данный вариант является наиболее надежным.