Репликация БД. Управление правами доступа и безопасность приложений
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Администрирование баз данных
ЛЕКЦИЯ 5. УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ
МНОГОПОЛЬЗОВАТЕЛЬСКИХ БД. РЕПЛИКАЦИЯ БД.
СОДЕРЖАНИЕ ЛЕКЦИИ:
Репликация БД.
Управление правами доступа и безопасность приложений.
2
1. Репликация БД
Репликация
–
это
тиражирование
изменений
данных с главного сервера БД на одном или
нескольких зависимых серверах.
В процессе репликации главный сервер называют мастер,
а зависимые – реплики. Сервер реплика предоставляет
возможность выполнения операции SELECT.
Репликация осуществляется за счет выполнения на репликах
инструкций из бинарных логов (binlog), располагаемых на
мастере. Измененные данные с мастера не передаются!
3
Причины репликации МБД
1. Производительность и масштабируемость.
2. Отказоустойчивость.
3. Резервирование данных.
4. Отложенные вычисления.
4
Основы репликации:
Настройка
репликации
Настройки
мастера
Переносим
данные
mysql@master> SET GLOBAL read_only = OFF;
Добавляем
реплики
root@master# service mysqld restart
Объединяем
реплики
show master status
https://habrahabr.ru/post/56702/
5
Термины репликации МБД в SQL Server
Master сервер называется издателем. Информация, которая подвергается
репликации называется публикация.
Одна публикация – это один
согласованный набор данных.
В состав публикации входят статьи, которые могут быть:
- целой таблицей или ее частью;
- хранимой процедурой или представлением;
- пользовательской функцией.
Серверы реплики называются подписчиками. Агенты, обеспечивающие
постоянную репликацию называются распространителями.
Волк В.К. Проектирование, программирование, управление
и администрирование БД
6
Типы репликации
репликация
моментальных
снимков
репликация
слиянием
репликация
транзакций
7
Применение репликации снимков
К типам приложений, которым может помочь применение репликации
снимков, можно отнести:
Списки цен, которые распространяются на удаленные хранилища.
Обычно вполне достаточно обновлять цены один раз в сутки.
Поисковые таблицы, которые не требуют частого обновления.
Поисковые таблицы обычно имеют относительно статичные данные.
8
2. Общие принципы обеспечения безопасности СУБД.
Поставить СУБД под защиту брандмауэра, но планировать меры безопасности в
предположении, что брандмауэр был
обойден.
Своевременно устанавливать пакеты исправлений операционной системы и СУБД.
Использовать как можно меньше функций:
- свести к минимуму число поддерживаемых сетевых протоколов;
- удалить системные хранимые процедуры, которые не нужны или не используются;
- по возможности запретить вход в систему по умолчанию и с гостевыми правами;
- не позволять пользователям работать с СУБД в интерактивном режиме (если в этом нет
насущной
необходимости).
Защита компьютера, на котором работает СУБД:
- не позволять никому из пользователей работать за компьютером, на котором работает СУБД;
- компьютер, на котором располагается СУБД, должен находиться в помещении, запираемом
на замок;
- все визиты в помещение, где находится компьютер с работающей СУБД, должны
записываться в журнал.
9
Управление учетными записями и паролями:
- использовать для СУБД учетную запись операционной системы
наименьшими возможными привилегиями;
- защищать учетные записи базы данных сильными паролями;
- отслеживать неудачные попытки входа в систему;
- регулярно проверять членство в группах и роли;
- проверять учетные записи без паролей;
- назначать учетным записями наименьшие возможные привилегии;
- ограничивать привилегии учетной записи администратора базы данных.
с
Планирование:
- разработать план защитных мер для предотвращения и обнаружения проблем в
системе безопасности;
- разработать процедуры на случай взлома системы и следовать им.
10
MySQL Администрирование:
CREATE USER
Оператор CREATE USER создает учетную запись базы данных, которая
позволяет вам входить в базу данных
DROP USER
Изменить пароль
пользователя
Переименовать
пользователя
Найти пользователя в
MySQL
Поиск пользователей в
MySQL
используется для удаления пользователя из базы данных
Показывать гранты для
пользователя
используется для отображения всех грантов для пользователя базы
данных
GRANT/REVOKE
примилегии
Используется для предоставления или отмены привилегий
пользователям на таблицы, функции или процедуры
используется для изменения пароля пользователя в базе данных
используется для переименования пользователя в базе данных
используется для определения пользователей в базе данных
используется для определения пользователей, которые в настоящее
время вошли (залогинились) в базу данных
11
CREATE USER
CREATE USER
user_name IDENTIFIED BY [ PASSWORD ] ‘password_value’;
Изменить пароль пользователя
SET PASSWORD [ FOR user_name ] =
{
PASSWORD(‘text_password1’)
| OLD_PASSWORD(‘text_password2’)
| ‘encrypted_password’
};
И.В. Ананченко, И.В. Козлов. Администрирование Microsoft
SQL Server
12
Переименовать пользователя
RENAME USER
user_name TO new_name;
DROP USER
DROP USER user_name;
Найти пользователя в MySQL
SELECT User
FROM mysql.user;
13
Таблица mysql.user содержит следующие столбцы:
Столбец
Host
Описание
Хост пользователя (то есть: localhost,% и т. д.)
User
Имя пользователя (например: root, admin и т. д.)
Password
Пароль хранится как хешированное значение
Select_priv
Y или N (показывает, была ли привилегия назначена пользователю)
Insert_priv
Y или N (показывает, была ли привилегия назначена пользователю)
Update_priv
Y или N (показывает, была ли привилегия назначена пользователю)
Delete_priv
Y или N (показывает, была ли привилегия назначена пользователю)
Create_priv
Y или N (показывает, была ли привилегия назначена пользователю)
……………..
……………………………………………………………………………
14
Поиск пользователей вошедших в MySQL
SELECT SUBSTRING_INDEX(host, ':', 1) AS host_short,
GROUP_CONCAT(DISTINCT user) AS users,
COUNT(*) AS threads
FROM information_schema.processlist
Таблица information_schema.processlist
GROUP BY host_short
содержит следующие столбцы:
ORDER BY COUNT(*), host_short;
Столбцы
ID
Описание
Уникальный идентификатор
USER
Имя пользователя (например: root, admin и т. д.)
HOST
Хост для пользователя
DB
База данных, в которой работает поток
COMMAND
Выполняется команда (т.е. Query, Sleep и т. д.).
TIME
Количество секунд, в течение которых поток был запущен (т.е.: 3, 12, 353)
STATE
Состояние потока (т.е.: выполнение)
INFO
Отображает информацию о потоке. (т.е. если COMMAND = ‘Query’ и STATE =
‘executing’, будет отображаться SQL, который выполняется пользователем)
15
Показывать гранты для пользователя в MySQL
SHOW GRANTS [ FOR username ]
Если не указываете хост для имени пользователя, MySQL
принимает в качестве хоста %
Использование оператора GRANT
(MS SQL)
GRANT SELECT ON
<имя_табл.> TO <пользователь>;
GO
Разрешение выборок из таблицы для
GRANT SELECT, UPDATE ON
<имя_табл.> TO
<пользователь>;
GO
Разрешение выборок и изменений
роли
в таблице для роли
16
GRANT privileges ON object TO user;
privileges — это может быть любое из следующих значений:
Привилегии
Описание
SELECT
Возможность выполнения операторов SELECT для таблицы.
INSERT
Возможность выполнения операторов INSERT для таблицы.
UPDATE
Возможность выполнения операторов UPDATE для таблицы.
DELETE
Возможность выполнения операторов DELETE для таблицы.
INDEX
Возможность создания индекса в существующей таблице.
CREATE
Возможность выполнять оператор CREATE TABLE.
Возможность выполнять оператор ALTER TABLE для изменения
определения таблицы.
Возможность выполнения операторов DROP TABLE.
Позволяет предоставлять права, которыми вы обладаете для
других пользователей.
ALTER
DROP
GRANT OPTION
ALL
Предоставляет все разрешения, кроме GRANT OPTION.
17
Синтаксис для отмены привилегии на функцию или
процедуру в MySQL:
REVOKE EXECUTE ON [ PROCEDURE | FUNCTION ] object FROM user;
EXECUTE — возможность выполнять функцию или процедуру отменяется.
PROCEDURE — используется, когда отменяется привилегия для процедуры в
MySQL.
FUNCTION — используется, когда отменяется привилегия для функции в MySQL.
object — имя объекта базы данных, для которого отменяете привилегии. В случае
отмены привилегий EXECUTE для функции или процедуры это будет имя
функции или имя процедуры.
user — имя пользователя, которому будут отменены привилегии EXECUTE.
18
3. Проблемы безопасности
Внедрение SQL, в зависимости от типа используемой СУБД и условий
внедрения, может дать возможность атакующему выполнить
произвольный запрос к базе данных (например, прочитать содержимое
любых таблиц, удалить, изменить или добавить данные), получить
возможность чтения и/или записи локальных файлов и выполнения
произвольных команд на атакуемом сервере.
Атака типа внедрения SQL может быть возможна из-за некорректной
обработки входных данных, используемых в SQL-запросах.
Разработчик прикладных программ, работающих с базами данных,
должен знать о таких уязвимостях и принимать меры противодействия
внедрению SQL
19
Методы защиты
Параметризованный запрос с плейсхолдерами – запрос с
переменными, которые жестко прописаны в скрипте с кодом и
не меняются в зависимости от данных.
Escaping
–
функция,
заложенная
в
языки
программирования, которая заменит потенциально опасные
SQL символы на безопасные escape- последовательности.
https://habr.com/post/114661/
20