← Cloudflare One / cloudflare-one / tutorials
Доступ к базе данных MySQL и её защита с помощью Cloudflare Tunnel и сетевых политик
С помощью частных сетей Cloudflare Tunnel пользователи могут подключаться к произвольным TCP/UDP-приложениям, не работающим через браузер, например к базам данных. Вы можете настроить сетевые политики, реализующие элементы управления Zero Trust, чтобы определить, кто и что может получать доступ к этим приложениям через Cloudflare One Client.
К концу этого руководства пользователи, прошедшие проверку сетевых политик, смогут получить доступ к удаленной базе данных MySQL, доступной через Cloudflare Tunnel на TCP-порту 3306.
Перед началом работы
Убедитесь, что у вас есть:
- База данных MySQL, принимающая удаленные подключения и настроенная с пользователями, которые могут подключаться удаленно
- (Необязательно)Резолвера политики включена в вашем аккаунте
Создайте Cloudflare Tunnel
Установка cloudflared на сервере в вашей частной сети. У этого сервера должно быть подключение к базе данных MySQL.
-
Войдите в панель управления Cloudflare и перейдите в Сеть > Tunnels.
Перейдите в Tunnels ↗ -
Выберите Создать туннель.
-
Введите имя туннеля. Рекомендуем выбрать имя, отражающее тип ресурсов, которые вы хотите подключить через этот туннель (например,
enterprise-VPC-01). -
Выберите Create Tunnel.
-
Выберите операционную систему, затем скопируйте команду установки и выполните её в терминале на вашем исходном сервере.
-
Дождитесь подключения туннеля. После установления соединения выберите Продолжение.
Добавить маршруты частной сети
-
В панели управления Cloudflare перейдите в Сеть > Маршруты.
Перейдите в Маршруты ↗ -
Выберите Создать маршрут > Tunnel CIDR. Выберите только что созданный туннель, введите приватный IP-адрес/CIDR вашего сервера MySQL (например,
10.128.0.175/32), и выберите Создать маршрут. -
(Необязательно) Повторите эти действия, чтобы создать второй маршрут для приватного IP-адреса или CIDR вашего внутреннего DNS-сервера.
Приложение и (необязательный) DNS-сервер теперь подключены к Cloudflare.
Создайте сетевую политику Gateway
- Перейдите в Политики трафика > Сетевые политики.
- Добавьте политика Network который нацелен на частный IP-адрес и порт базы данных MySQL (порт 3306 по умолчанию). Следующий пример разрешает доступ к базе данных пользователям, которые зарегистрировались в Cloudflare One Client с помощью
@example.comадрес электронной почты. Сетевые политики также могут учитывать проверки состояния устройства.
| Селектор | Оператор | Значение | Логика | Действие |
|---|---|---|---|---|
| IP-адрес назначения | in | 10.128.0.175 |
И | Allow |
| Порт назначения | in | 3306 |
И | |
| User Email | matches regex | .*example.com |
Помимо указанного выше правила Allow, Cloudflare рекомендует добавить catch-all-политика блокировки в конец списка сетевых политик, чтобы обеспечить модель запрета по умолчанию.
Теперь разрешённые пользователи Cloudflare One Client могут подключаться к серверу MySQL по адресу 10.128.0.175 с помощью любого клиента MySQL по своему выбору.
(Необязательно) Создайте политику резолвера Gateway
Чтобы пользователи могли обращаться к базе данных MySQL по внутреннему имени хоста вместо приватного IP-адреса, настройте политику резолвера Gateway.
-
Перейдите в Политики трафика > Резолвера политики.
-
Выберите Добавление политики.
-
Создайте выражение для сопоставления с приватным домен или имя хоста приложения, как в следующем примере:
Селектор Оператор Значение Домен in internalrecord.com -
В Выберите DNS-резолвер, выберите Настройте пользовательские DNS-резолверы.
-
Введите приватный IP-адрес вашего DNS-сервера.
-
В раскрывающемся меню выберите
<IP-address> - Private. -
(Необязательно) Введите пользовательский порт.
-
Выберите Создать политику.
Если на вашем внутреннем DNS-сервере есть A запись для базы данных MySQL, пользователи могут подключаться к серверу с помощью этой записи. Например, предположим, что сервер BIND содержит запись:
mysql IN A 10.128.0.175
Разрешённые пользователи Cloudflare One Client могут подключаться к базе данных MySQL по адресу mysql.internalrecord.com с помощью любого клиента MySQL по своему выбору.