Сигурността е един от най-важните аспекти на работата на база данни. Независимо дали сте разработчик или DBA, ако управлявате базата данни, ваша отговорност е да защитите данните си и да ги защитите от всякакъв вид неоторизиран достъп. Неприятният факт е, че много организации не защитават своите данни, както видяхме от новата вълна атаки на MongoDB ransomware през септември 2017 г. По-рано публикувахме блог за това как да защитим базите данни на MongoDB.
В тази публикация в блога ще разгледаме как да защитите вашите бази данни с помощта на ClusterControl. Всички описани тук функции са налични във версия 1.5.1 на ClusterControl (издадена на 23 декември 2017 г.). Моля, имайте предвид, че някои функции са налични само за определени типове бази данни.
Резервно шифроване
ClusterControl 1.5.1 въведе нова функция, наречена архивиране на криптиране. Всички криптирани архиви са маркирани с икона на заключване до тях:
Можете да използвате тази функция за всички методи за архивиране (mysqldump, xtrabackup, mongodump, pg_dump), поддържани от ClusterControl. За да активирате криптирането, просто включете превключвателя „Активиране на шифроването“, когато планирате или създавате резервно копие. ClusterControl автоматично генерира ключ за криптиране на архива. Той използва алгоритъм за криптиране AES-256 (CBC) и извършва криптирането в движение на целевия сървър. Следната команда показва пример за това как ClusterControl извършва архивиране на mysqldump:
$ mysqldump --defaults-file=/etc/my.cnf --flush-privileges --hex-blob --opt --no-create-info --no-data --triggers --routines --events --single-transaction --skip-comments --skip-lock-tables --skip-add-locks --databases db1 | gzip -6 -c | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-094508-e0bc6ad658e88d93.tmp | socat - TCP4:192.168.55.170:9999'
Ще видите следната грешка, ако се опитате да декомпресирате криптирано архивно копие, без първо да го декриптирате с правилния ключ:
$ gunzip mysqldump_2018-01-03_175727_data.sql.gz
gzip: mysqldump_2018-01-03_175727_data.sql.gz: not in gzip format
Ключът се съхранява в базата данни на ClusterControl и може да бъде извлечен от файла cmon_backup.metadata за конкретен набор от архиви. Той ще се използва от ClusterControl при извършване на възстановяване. Криптирането на архивни копия е силно препоръчително, особено когато искате да защитите резервните си копия извън сайта, като например да ги архивирате в облака.
Криптиране на MySQL/PostgreSQL клиент-сървър
Освен че следвате препоръчаните стъпки за сигурност по време на внедряването, можете да увеличите надеждността на вашата услуга за база данни, като използвате клиент-сървър SSL криптиране. Използвайки ClusterControl, можете да извършите тази операция с просто посочване и щракване:
След това можете да извлечете генерираните ключове и сертификати директно от хоста на ClusterControl под
Шифроване на репликация на база данни
Трафикът за репликация в рамките на клъстер Galera може да бъде активиран само с едно щракване. ClusterControl използва 2048-битов ключ по подразбиране и сертификат, генерирани на възела ClusterControl, който се прехвърля към всички възли на Galera:
Необходимо е рестартиране на клъстера. ClusterControl ще извърши подвижна операция за рестартиране, като взема един възел в даден момент. Ще видите зелена икона на заключване до сървъра на базата данни (Galera показва криптиране на Galera Replication, докато SSL показва криптиране клиент-сървър) в мрежата Hosts на страницата Преглед, след като криптирането е активирано:
Всички ключове и сертификати могат да се управляват директно от Key Management, както е описано по-долу.
Управление на ключове
Всички генерирани ключове и сертификати могат да се управляват директно от потребителския интерфейс на ClusterControl. Управлението на ключовете ви позволява да управлявате SSL сертификати и ключове, които могат да бъдат предоставени на вашите клъстери:
Ако сертификатът е изтекъл, можете просто да използвате потребителския интерфейс, за да генерирате нов сертификат с подходящ ключ и сертифициращ орган (CA) или да импортирате съществуващ ключ и сертификат в хост на ClusterControl.
Съветници по сигурността
Съветниците са мини-програми, които се изпълняват в ClusterControl. Те изпълняват конкретни задачи и дават съвети как да се справят с проблеми в области като производителност, сигурност, управление на регистрационни файлове, конфигурация, пространство за съхранение и други. Всеки съветник може да бъде планиран като работа на cron и да се изпълнява като самостоятелен изпълним файл в потребителския интерфейс на ClusterControl. Може да се изпълнява и чрез клиента на командния ред ClusterControl 's9s'.
ClusterControl позволява два съветника за сигурност за базирани на MySQL системи:
- Достъп от всеки хост ('%') - Идентифицира всички потребители, които използват заместващ хост от системната таблица на mysql и ви позволява да имате повече контрол върху това кои хостове могат да се свързват със сървърите.
- Проверка на броя акаунти без парола – Идентифицира всички потребители, които нямат парола в системната таблица на mysql.
За MongoDB имаме следните съветници:
- Удостоверяването на MongoDB е активирано – Проверете дали екземплярът на MongoDB работи с активиран режим на удостоверяване.
- Проверка за упълномощаване – Проверете дали потребителите на MongoDB са оторизирани с твърде разрешителна роля за контрол на достъпа.
За повече подробности относно това как ClusterControl извършва проверките за сигурност, можете да разгледате изходния код, подобен на JavaScript, на съветника под
Много мрежови интерфейса
Наличието на множество NIC на хостовете на базата данни ви позволява да разделите трафика на базата данни от трафика за управление. Една мрежа се използва от възлите на базата данни, за да комуникират помежду си и тази мрежа не е изложена на никаква публична мрежа. Другата мрежа се използва от ClusterControl за целите на управлението. ClusterControl е в състояние да разгърне такава многомрежова настройка. Помислете за следната архитектурна диаграма:
За да импортирате горния клъстер на базата данни в ClusterControl, трябва да посочите първичния IP адрес на хостовете на базата данни. След това е възможно да изберете мрежата за управление, както и мрежата за данни:
ClusterControl може да работи и в среда без достъп до Интернет, като базите данни са напълно изолирани от публичната мрежа. Повечето от функциите ще работят добре. Ако хостът ClusterControl е конфигуриран с Интернет, той също може да клонира хранилището на доставчика на база данни за сървърите на база данни без интернет. Просто отидете на
Дублирането може да отнеме около 10 до 20 минути в зависимост от интернет връзката, по-късно ще видите новия елемент в списъка. След това можете да изберете това хранилище, когато мащабирате или разгръщате нов клъстер, без да е необходимо хостовете на базата данни да имат интернет връзка (обърнете внимание, че офлайн хранилището на операционната система също трябва да е на място).
Управление на потребителите на MySQL
Системата за привилегии на MySQL гарантира, че всички потребители могат да извършват само операциите, които им е позволено. Предоставянето е от решаващо значение, тъй като не искате да давате на всички потребители пълен достъп до вашата база данни, но трябва потребителите да имат необходимите разрешения за изпълнение на заявки и ежедневни задачи.
ClusterControl предоставя интерактивен потребителски интерфейс за управление на схемите и привилегиите на базата данни. Той обединява акаунтите на всички MySQL сървъри в клъстера и опростява процеса на предоставяне. Можете лесно да визуализирате потребителите на базата данни, за да избегнете грешки.
Както можете да видите на горната екранна снимка, ClusterControl затъмни ненужните привилегии, ако искате само да предоставите на потребител на база данни (shopdb). „Изискване на SSL?“ е активирано само ако клиент/сървър SSL криптиране е активирано, докато квадратчетата за отметка за административни привилегии са напълно забранени, ако е дефинирана конкретна база данни. Можете също да проверите генерирания оператор GRANT в долната част на съветника, за да видите изявлението, което ClusterControl ще изпълни, за да създаде този потребител. Този помощник изглежда доста прост, но създаването на потребители и предоставянето на привилегии може да бъде податливо на грешки.
ClusterControl също така предоставя списък с неактивни потребители за всички възли на базата данни в клъстера, показвайки акаунтите, които не са били използвани от последното рестартиране на сървъра:
Това предупреждава администратора за съществуващи ненужни акаунти и които потенциално могат да навредят на сървъра. Следващата стъпка е да проверите дали акаунтите вече не са активни и можете просто да използвате опцията „Изтриване на избрания потребител“, за да ги премахнете. Уверете се, че имате достатъчно активност на базата данни, за да сте сигурни, че списъкът, генериран от ClusterControl, е точен. Колкото по-дълго е времето на работа на сървъра, толкова по-добре.
Винаги бъдете актуални
За производствена употреба е силно препоръчително да инсталирате свързаните с базата данни пакети от хранилището на доставчика. Не разчитайте на хранилището на операционната система по подразбиране, където пакетите обикновено са остарели. Ако работите в клъстерна среда като Galera Cluster или дори MySQL Replication, винаги имате избор да коригирате системата с минимално време на престой.
ClusterControl поддържа автоматично надграждане на второстепенна версия за MySQL/MariaDB с едно щракване. Просто отидете на
Надстройките на основните версии (например от MySQL 5.6 до MySQL 5.7) не са умишлено автоматизирани. Основните надстройки обикновено изискват деинсталиране на съществуващите пакети, което е рискована задача за автоматизиране. За подобен вид надстройки са необходими внимателно планиране и тестване.
Защитата на базата данни е важен аспект от работата на вашата база данни в производството. От всички инциденти, за които често четем в новините (и вероятно има много други, които не се разгласяват), става ясно, че има групи, заети с лоши намерения. Така че, уверете се, че вашите бази данни са добре защитени.