Felhasználói eszközök

Eszközök a webhelyen


mysql:my-11

11. Деякі можливості адміністрування в MySQL

Шифрування. Функції MySQL для шифрування

В MySQL можна використати надійні механізми шифрування даних. Для цього використовують функції:

  • ENCODE(string, key) і DECODE(string, key)
  • AES_ENCRYPT(string, key) — шифрування AES
  • AES_DECRYPT(string, key) — розшифровка AES
  • COMPRESS() — повернення результату у бінарному виді
  • DES_ENCRYPT(string, key) — шифрування DES
  • DES_DECRYPT(string, key) — дешифровка DES
  • ENCODE() — шифрування рядка паролем
  • DECODE() — розшифровка тексту, обробленого функцією ENCODE()
  • ENCRYPT() — шифрування за допомогою Uniх-системного виклику crypt()
  • MD5() — хеширування даних алгоритмом MD-5
  • SHA1() або SHA() — хеширування даних алгоритмом SHA-1 (160-біт)

Алгоритм AES використовує 128-бітний ключ шифрування (в MySQL 5.7 256-бітовий ключ). Ключ задається явно, як один з параметрів функції.

  • Функція ENCRYPT() може бути використана тільки в ОС сімейства Unix – вона шифрує дані за допомогою системного функції crypt().

Пр. INSERT INTO table VALUES ( 1, AES_ENCRYPT( 'text', 'password' ) ); Запит записує в таблицю table значення “text”, яке зашифроване на ключі “password”.
Формат поля, в яке записується зашифроване значення, повинен відповідати обмеженям, які накладаються крипто-алгоритмом. В даному випадку, тип повинен бути двійковим (наприклад, типу VARBINARY) і пропонувати вирівнювання згідно з 128-бітним розміром блоку алгоритму AES.

Найчастіше використовують функції AES_ENCRYPT() або DES_ENCRYPT(), які забезпечують високий рівень безпеки. Їх рекомендується використовувати для покращення стійкості додатків до злому.

 Пр.  INSERT INTO t VALUES (1, AES_ENCRYPT('text','password'));
 Пр. SELECT AES_DECRYPT(AES_ENCRYPT('текст для шифрования', 'ключ'), 'ключ') as encryption;

Результатом є текст для шифрования.

Рівні захисту інформації:

  • парольний захист;
  • захист полів і записів таблиць БД.
  • встановлення прав доступу до об'єктів БД;
  • шифрування даних і програм;

Реалізація захисту даних в РhpMyAdmin
РhpMyAdmin – програма для управління сервером MySQL через Web-додатки. phpMyAdmin підтримує операції MySQL (управління БД, таблицями, полями, зв'язка, індексами, користувачами, правами,…). Одночасно можна безпосередньо виконати будь-який SQL запит.
Забезпечення інформациійної безпеки проекту реалізується на різних рівнях.

  • На вході в систему «phpMyAdmin» ( вводяться логін і пароль).
  • На вході СУБД MySQL (визначаються права доступу).

Можливості шифруванння даних в MySQL 5.7
Шифрування даних в MySQL 5.7 має переваги:

  • Надійне шифрування AES-256 для таблиць InnoDB
  • Прозорість для додатків. Відсутність коду для додатків, схем. Немає потреби змінювати тип даних;
  • Прозорість для админістраторів БД. Ключі не управляються админістраторами БД;
  • Управління ключами. Ключі можна безпечно зберігати окремо від даних, а зміна ключів є простою;

Використання logs журналів (протоколів) в MySQL

Основні журнали в MySQL:
1. бінарний лог (binary log)
2. лог помилок (error log)
3. лог повільних запитів (slow query log)
4. лог запитів (general query log)
5. лог реплікацій (relay log)

Бінарний лог в MySQL 5.7
Використовуєтьтся для реплікацій – копіювання даних з одного джерела на інші.

  • Лог містить всі зміни в БД
  • Не зберігає виборки (select, show).
  • При виконанні транзакцій (InnoDB) запис в лог виконується після команди COMMIT.
  • Для лога можна вказати список БД, які потрібно «логувати» і список БД, які не потрібно «логувати».

Для бінарного логу можна виконати backup, а також використати для відновлення даних.

Використання бінарного логу знижує продуктивність БД, але є корисним, тому не рекомендується його відключати.
Бінарний лог рекомендується захищати паролем, тому що може містити дані про паролі користувачів. При досягнені максимально допустимого розміру (по замовчуванню 1 Гб) створюється наступний файл. Кожний новий файл має наступний порядковий номер.

Для прогляду бінарного логу використовується утілита mysqlbinlog.
При інтенсивній роботі з базами на MySQL необхідно слідкувати за логами.
Наприклад, бінарний лог за сутки може набрати один гигабайт, а розмір пам'яті на серверному диску обмежений. Логи періодично потрібно чистити для того, щоб файли не займали дуже багато дискового прострору.

Настройки в файлі конфігурацій my.cnf для бінарного логу в MySQL 5.7
) log_bin = /var/log/mysql/mysql-bin.log – місце розташування лога
max_binlog_size= 500M – максимальний розмір (по замовчуванню 1 Гб)
expire_logs_days = 3 – зберігати днів

Основні команди
mysqlbinlog log_file | mysql -h server_name; – повторення дій після операції відновлення
PURGE BINARY LOGS TO 'mysql-bin.000'; – видалення логів до певного файлу
PURGE BINARY LOGS BEFORE 'YYYY-MM-DD hh:mm:ss'; – видалення логів до певної дати

Лог помилок (error log) в MySQL 5.7

Лог містить інформацію про зупинки, запуски сервера, і про критичні помилки.
Може містити повідомлення з попередженням warnings. Корисний у випадку збоїв.
Основні настройки в my.cnf:
log_error = /var/log/mysql/mysql.err – Місце розташування лога
log_warnings = 1 – Флаг, який вказує, що потрібно записувати в лог попередження, чи ні (якщо значення >0, то записується)

Основні команди
shell> mysqladmin flush-logs – Перехід до нового файлу лога
shell> mv host_name.err-old backup-directory – Копіювання «старої» частини логу (це потрібно, тому що у випадку повторного виконання fluch він буде видалий)

Лог повільних запитів (slow query log)

Якщо додаток працює повільно (запити до БД не ефективні), то потрібно перевірити лог повільних запитів.
У випадку оптимізації запитів цей лог допомагае вияснити, що необхідимо оптимізувати в першу чергу.
Основні настройки в my.cnf
log_slow_queries = /var/log/mysql/mysql_slow.log – Місце знаходження лога
long_query_time = 15 – Після якої секунди виконання запиту вважається повільним. Мінімальне значення = 1 секунда, (по замовчуванню 10 секунд)
log-queries-not-using-indexes – потрібно враховувати запити, які не використовують індекси
log-slow-admin-statements – потрібно вести лог повільних запитів для OPTIMIZE TABLE, ANALYZE TABLE и ALTER TABLE

mysql/my-11.txt · Utolsó módosítás: 2021/08/14 19:08 szerkesztette: holovacs