Задача: Поступила задача от Web-разработчика/курирующего приложения компании, «скажи, можно ли дать доступ к БД дилерс с сервера кастомайзера?»
С чего сперва следует начинать выполнение задачи – а перекладывания ответственности конечно же:
qip (09:05:51 22/04/2022)
Под твою ответственность, восстанавливать все будешь сам
qip (09:05:54 22/04/2022)
?
Сивков Владимир (09:06:22 22/04/2022)
может, с отдельным пользователем с правами только на чтение?
Вот это уже другой разговор и правильное уточнение поставленной задачи.
Портал customizer
крутится на Ubuntu 18.04 Server
я его вынес в свое время из Docker
в полностью настроенное окружение, как это было сделано есть заметка "Адаптация работы портала dealers on Ubuntu 18.04 Server"
. Пробежав по ней глазами у меня созрели шаги реализации задачи:
Шаг №1:
Создаю на портале dealers
отдельного пользователя с правами на чтение и под ним можно зайти только с портала кастомайзера:
sudo mysql -u root -pPASSWORD -e "grant select on db_dealers.* to 'us_custom'@'999.999.999.999' identified by 'Aa1234567aA';"
Шаг №2:
Проверяю на каком интерфейсе ожидает взаимодействие сервис mysql:
sudo netstat -tulpn | grep mysqld tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 4477/mysqld
Подключение к сервису mysql
возможны только на локальной системе, не подходит.
Шаг №3:
Изменяю подключение к сервису mysql
ото всюду
нужно изменить работу mysqld
на адресе 0.0.0.0:3306
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf bind-address = 0.0.0.0 sudo systemctl restart nginx php7.3-fpm mysql sudo netstat -tulpn | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 11666/mysqld
Шаг №4:
Т.к. у меня на портале dealers
используется надстройка над правилами iptables
, а именно firewalld
, то создаю новую зону, открываю возможность подключение к порту 3306/tcp
и с указанного IP
адреса сервиса кастомайзера:
sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --permanent --zone=mysqlzone --add-source=999.999.999.999/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd –-reload
Шаг №5:
Вывожу на консоль текущие правила для зоны public
и зоны mysqlzone:
Это текущие правила для зоны public
sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="5.100.250.72/32" service name="ftp" accept rule family="ipv4" source address="5.100.250.72/32" port port="49152-65534" protocol="tcp" accept rule family="ipv4" source address="95.181.250.248/32" service name="ssh" accept rule family="ipv4" source address="79.171.250.176/29" port port="22" protocol="tcp" accept rule family="ipv4" source address="79.171.250.144/30" port port="22" protocol="tcp" accept rule family="ipv4" source address="79.171.250.176/29" port port="587" protocol="tcp" accept rule family="ipv4" source address="79.171.250.144/30" port port="587" protocol="tcp" accept rule family="ipv4" source address="79.171.250.176/29" port port="49152-65534" protocol="tcp" accept rule family="ipv4" source address="79.171.250.144/30" port port="49152-65534" protocol="tcp" accept rule family="ipv4" source address="79.171.250.176/29" service name="ftp" accept rule family="ipv4" source address="79.171.250.144/30" service name="ftp" accept rule family="ipv4" source address="2.57.250.62/32" port port="22" protocol="tcp" log prefix="openvpn2" accept
А это текущие правила для созданной зоны mysql:
sudo firewall-cmd --zone=mysqlzone --list-all mysqlzone (active) target: default icmp-block-inversion: no interfaces: sources: 999.999.999.999/32 services: ports: 3306/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Шаг №6:
Проверяю подключение с портала customizer
к сервису dealers
под созданными учетные данными и правами:
sudo mysql -u us_custom -pAa1234567aA -h dealers.ekzorchik.ru db_dealers -e "show tables" mysql: [Warning] Using a password on the command line interface can be insecure. +-----------------------------------------+ | Tables_in_db_dealers | +-----------------------------------------+ | agregator | | atribut2item | | balans | | barrs
Подключение проходит успешно и делается вывод из все проделанного, что цель поставленной задачи достигнута. Параметры доступа высланы коллеге в корпоративный мессенджер qip
который работает на базе протокола Jabber
сервиса Openfire
. Как развернуть все что есть у меня в организации где я сейчас работаю, прошу сюда
.
На заметку: для рабочего сервиса customizer.ekzorchik.ru
на работе команды создания пользователя под базу с доступом отовсюду, хотя доступ ограничен IP-адресом посредством надстройки над iptables: firewall-cmd
sudo mysql -u root -pPASSWORD -e "create user 'us_custom'@'%' identified by '612mbddr@';" sudo mysql -u root -pPASSWORD -e "use production; ALTER USER 'us_custom'@'%' IDENTIFIED WITH mysql_native_password BY '612mbddr@'" sudo mysql -u root -pPASSWORD -e "grant select on production.* to 'us_custom'@'%';" ekzorchik@customizer:~$ sudo mysql -u root -pPASSWORD -e "use mysql;select user,host from mysql.user" mysql: [Warning] Using a password on the command line interface can be insecure. +------------------+-----------+ | user | host | +------------------+-----------+ | us_custom | % | | 1cconnector | localhost | | amigo | localhost | | amigo_service | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ ekzorchik@customizer:~$
Итого, заметка полностью работоспособна и для себя оформлена и опубликована на портале https://lin.ekzorchik.ru
. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.