Базы данных AlterOffice-cloud — различия между версиями
м (→Создание учетной записи на сервере MariaDB) |
|||
Строка 16: | Строка 16: | ||
Запустите в консоли сервера команду: | Запустите в консоли сервера команду: | ||
mysql -u root -p | mysql -u root -p | ||
+ | # введите пароль | ||
Ваша учетная запись, и это утверждение применимо к любой учетной записи, могла быть добавлена только с доступом к локальному хосту, что рекомендуется. | Ваша учетная запись, и это утверждение применимо к любой учетной записи, могла быть добавлена только с доступом к локальному хосту, что рекомендуется. |
Версия 13:45, 21 сентября 2023
Вам не нужно что-то настраивать дополнительно, если AlterOffice-cloud установлен на одном сервере.
Содержание
- 1 SQLite
- 2 MariaDB
- 2.1 Установка MariaDB
- 2.2 Создание учетной записи на сервере MariaDB
- 2.3 Безопасное соединение с MariaDB
- 2.3.1 Улучшение безопасности установки
- 2.3.2 Сертификаты
- 2.3.3 Создание CA/корневого сертификата
- 2.3.4 Создание сертификата сервера
- 2.3.5 Создание сертификата клиента
- 2.3.6 Как проверить сертификаты?
- 2.3.7 Настройка сервер MariaDB для использования SSL
- 2.3.8 Настройка клиент MariaDB для использования SSL
- 2.3.9 Проверка
- 3 PostgreSQL
- 4 Oracle
SQLite
SQLite в основном поддерживается для тестовых установок и не рекомендуется для производственных серверов.
MariaDB
MariaDB/MySQL — канонический выбор для AlterOffice-cloud.
Установка MariaDB
Установка в общем виде:
sudo yum install mariadb-server mariadb
Установка инсталлятором для AlterOffice-cloud:
sudo yum install MariaDB-server MariaDB-client
Создание учетной записи на сервере MariaDB
Запустите в консоли сервера команду:
mysql -u root -p # введите пароль
Ваша учетная запись, и это утверждение применимо к любой учетной записи, могла быть добавлена только с доступом к локальному хосту, что рекомендуется.
Вы можете проверить это с помощью:
SELECT host FROM mysql.user WHERE User = 'alteroffice_user';
Если вы видите результаты только с localhost и 127.0.0.1, вы не можете подключиться из внешнего источника. Если вы видите другие IP-адреса, а не тот, с которого подключаетесь — это тоже показатель.
Вам нужно будет добавить IP-адрес каждой системы, к которой вы хотите предоставить доступ, а затем предоставить привилегии:
CREATE USER 'alteroffice_user'@'client_ip_address' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'alteroffice_user'@'client_ip_address';
Если вы видите %, то это совсем другая проблема: любой удаленный источник. Однако если вы хотите, чтобы какие-либо/все системы подключались через alteroffice_user, используйте подстановочный знак % для предоставления доступа:
CREATE USER 'alteroffice_user'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'alteroffice_user'@'%';
Наконец, перезагрузите разрешения, и вы сможете иметь удаленный доступ:
FLUSH PRIVILEGES;
Безопасное соединение с MariaDB
Для настроек необходимо, чтобы администрир баз данных был sudoers, т. е. в группе wheel. Чтобы добавить пользователя в группу:
usermod -aG wheel username
Чтобы удалить пользователя из группы, используйте команду gpasswd с опцией -d следующим образом:
gpasswd -d wheel username
Улучшение безопасности установки
mysql_secure_installation
Эта программа позволяет вам повысить безопасность вашей установки MariaDB следующими способами:
- Вы можете установить пароль для учетных записей root.
- Вы можете удалить учетные записи root, доступные за пределами локального хоста.
- Вы можете удалить учетные записи анонимных пользователей.
- Вы можете удалить тестовую базу данных, к которой по умолчанию имеют доступ анонимные пользователи.
Сертификаты
Создайте каталог для сертификатов:
sudo -i mkdir -p /etc/my.cnf.d/ssl/{private,certs} cd /etc/my.cnf.d/ssl
При создании сертификатов необходимо корректно заполнить поля, в часности поле CN/Common Name/Общее имя:
- имя корневого сертификата: MariaDB_CA
- имя сервера сертификата: MariaDB_server
- имя клиента сертификата: MariaDB_client
Создание CA/корневого сертификата
# MariaDB_CA sudo -i /usr/bin/openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/my.cnf.d/ssl/private/MariaDB_CA.key -out /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt
Создание сертификата сервера
Для создания ключа сервера, выполните:
# MariaDB_server sudo -i /usr/bin/openssl req -newkey rsa:4096 -days 365 -nodes -keyout /etc/my.cnf.d/ssl/private/MariaDB_server.key -out /etc/my.cnf.d/ssl/private/MariaDB_server_req.key
Затем обработайте ключ RSA сервера, для этого введите:
sudo -i /usr/bin/openssl rsa -in /etc/my.cnf.d/ssl/private/MariaDB_server.key -out /etc/my.cnf.d/ssl/private/MariaDB_server.key # Вывод: writing RSA key
Наконец, подпишите сертификат сервера, для этого запустите:
sudo -i /usr/bin/openssl x509 -req -in /etc/my.cnf.d/ssl/private/MariaDB_server_req.key -days 365 -CA /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt -CAkey /etc/my.cnf.d/ssl/private/MariaDB_CA.key -set_serial 01 -out /etc/my.cnf.d/ssl/certs/MariaDB_server.crt
Теперь у вас должны появиться дополнительные файлы:
- /etc/my.cnf.d/ssl/certs/MariaDB_server.crt – MariaDB файл сертификата сервера.
- /etc/my.cnf.d/ssl/private/MariaDB_server.key – MariaDB файл ключа сервера.
Вы должны использовать не менее двух файлов на сервере MariaDB и любых других узлах, которые вы собираетесь использовать для трафика кластера/репликации. Эти два файла будут защищать связь на стороне сервера.
Создание сертификата клиента
Клиент mysql, и приложение PHP/Python/Perl/Ruby будет использовать сертификат клиента для защиты соединения клиента. Вы должны установить следующие файлы на всех ваших клиентах, включая веб-сервер. Чтобы создать клиентский ключ, запустите:
# MariaDB_client sudo -i /usr/bin/openssl req -newkey rsa:4096 -days 365 -nodes -keyout /etc/my.cnf.d/ssl/private/MariaDB_client.key -out /etc/my.cnf.d/ssl/private/MariaDB_client_req.key
Затем обработайте ключ клиента RSA, для этого введите
sudo -i /usr/bin/openssl rsa -in /etc/my.cnf.d/ssl/private/MariaDB_client.key -out /etc/my.cnf.d/ssl/private/MariaDB_client.key # Вывод: writing RSA key
Наконец, подпишите сертификат клиента, для этого запустите:
sudo -i /usr/bin/openssl x509 -req -in /etc/my.cnf.d/ssl/private/MariaDB_client_req.key -days 365 -CA /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt -CAkey /etc/my.cnf.d/ssl/private/MariaDB_CA.key -set_serial 01 -out /etc/my.cnf.d/ssl/certs/MariaDB_client.crt
Как проверить сертификаты?
Введите следующую команду для проверки сертификатов, чтобы убедиться, что все было сделано правильно:
/usr/bin/openssl verify -CAfile /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt /etc/my.cnf.d/ssl/certs/MariaDB_server.crt /etc/my.cnf.d/ssl/certs/MariaDB_client.crt # Примеры возможных выводов данных, когда нет ошибок: # /etc/my.cnf.d/ssl/certs/MariaDB_server.crt: OK # /etc/my.cnf.d/ssl/certs/MariaDB_client.crt: OK
Настройка сервер MariaDB для использования SSL
Отредактируйте файл vi /etc/my.cnf.d/server.cnf следующим образом:
sudo -i vi /etc/my.cnf.d/server.cnf
Нажмите клавишу "i" и вставьте в секцию [mysqld] следующие настройки:
### MySQL Server ###
## Защита базы данных с помощью SSL и сертификатов ##
## Нет контроля над используемым уровнем протокола. ##
## mariadb будет использовать TLSv1.0 или более позднюю версию. ##
ssl
ssl-ca=/etc/my.cnf.d/ssl/certs/MariaDB_CA.crt
ssl-cert=/etc/my.cnf.d/ssl/certs/MariaDB_server.crt
sl-key=/etc/my.cnf.d/ssl/private/MariaDB_server.key
bind-address=0.0.0.0
Сохраните и закройте файл, нажав три клавиши по очереди ":wq". Вы можете перезапустить mariadb следующим образом:
sudo -i systemctl restart mariadb systemctl status mariadb --no-pager --full
Настройка клиент MariaDB для использования SSL
Для использования SSL отредактируйте /etc/my.cnf.d/mysql-clients.cnf:
sudo -i vi /etc/my.cnf.d/mysql-clients.cnf
Добавьте в раздел [mysql]:
## MySQL Client Configuration ##
ssl-ca=/etc/my.cnf.d/ssl/certs/MariaDB_CA.crt
ssl-cert=/etc/my.cnf.d/ssl/certs/MariaDB_client.crt
ssl-key=/etc/my.cnf.d/ssl/private/MariaDB_client.key
### This option is disabled by default ###
### ssl-verify-server-cert ###
Сохраните и закройте файл.
Проверка
На клиентском сервере удалим возможные сертификаты и ключи
sudo -i rm -rf /etc/my.cnf.d/ssl/{private,certs} sudo -i mkdir /etc/my.cnf.d/ssl/{private,certs}
и получим действующие сертификаты и ключ
sudo -i rsync -arv user@MariaDB_server:/etc/my.cnf.d/ssl/private/MariaDB_client.key /etc/my.cnf.d/ssl/private/MariaDB_client.key sudo -i rsync -arv user@MariaDB_server:/etc/my.cnf.d/ssl/certs/MariaDB_client.crt /etc/my.cnf.d/ssl/certs/MariaDB_client.crt sudo -i rsync -arv user@MariaDB_server:/etc/my.cnf.d/ssl/certs/MariaDB_CA.crt /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt
PostgreSQL
PostgreSQL обеспечивает более высокую производительность и в целом имеет меньше особенностей по сравнению с MariaDB/MySQL.
Oracle
В списке поддерживаемых баз данных также есть база данных Oracle. Этот продукт здесь не будет рассмотрен.