Как защитить трафик базы данных наоборот, то есть от клиента к серверу - PullRequest
1 голос
/ 15 февраля 2011

Мой сценарий:

Я пытаюсь разработать службу, которая будет запрашивать различные базы данных.

Чтобы очистить вышеприведенное утверждение:

  1. Я использую службу слов в самом широком смысле: программный компонент, который обеспечит некоторую ценность для владельца базы данных.

  2. Эти базы данных никоим образом не будут находиться под моим контролем, поскольку они будут принадлежать различным компаниям.Они не будут известны заранее, и должны поддерживаться несколько поставщиков: Oracle, MS (SQL Server), MySql, PostgreSQL.Также будут поддерживаться соединения OLE DB и ODBC.

Проблема : безопасность учетных данных базы данных и общего трафика является серьезной проблемой, но усилия по настройке должны быть сокращены как минимум.В идеале все проблемы безопасности должны решаться программно в реализации службы и не требовать никаких усилий по настройке для владельца базы данных, кроме как предоставить допустимую строку подключения.

Обычно поддержка SSL в базе данных осуществляется через сертификаты сервера, которые мне нужныизбегать, так как это обременительно для клиента (владельца базы данных).Я пытался понять, как это сделать, но безрезультатно.Надеемся, что это может быть сделано с openssl, SSPI, клиентским SSL-сертификатом или любой формой туннелирования;или, может быть, это просто невозможно.Некоторые советы будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Мне трудно понять, как эта служба будет работать, не будучи слишком громоздкой для владельца базы данных, даже до того, как вы попытаетесь защитить трафик с базой данных.

В частности, рассмотрим Oracle (хотя я предполагаю, что с другими базами данных будут аналогичные проблемы). Чтобы ваша служба имела доступ к базе данных Oracle, владелец базы данных должен был бы открыть дыру в своем брандмауэре, чтобы позволить вашим серверам получать доступ к базе данных на определенном порту, чтобы они могли знать IP-адреса. ваших серверов, и есть большая вероятность, что им потребуется настроить службу, которая выполняет все свои коммуникации на одном порту (по умолчанию прослушиватель Oracle будет часто перенаправлять клиента на другой порт для фактического взаимодействия с базой данных ). Если они вообще заботятся о безопасности, им придется установить Oracle Connection Manager на отдельном компьютере, чтобы прокси-соединение между вашим сервером и базой данных, а не выставлять базу данных непосредственно в Интернет. Это довольно большая работа по настройке, которая потребовалась бы для внутреннего использования, и при этом предполагается, что учетная запись базы данных уже существует с соответствующими привилегиями и что все подписывают соглашение о предоставлении доступа к базе данных извне брандмауэра.

Если вы хотите зашифровать связь с базой данных, вам нужно либо установить VPN-соединение с сетью владельца базы данных (что потенциально может устранить некоторые проблемы с брандмауэром), либо вам нужно использовать что-то вроде Oracle Advanced Security для шифрования связи между вашими серверами. Создание VPN-подключений ко многим различным сетям клиентов потребует потенциально огромных усилий по настройке и может потребовать, чтобы у вас был один сервер на каждого клиента, потому что разные клиенты будут иметь разные требования к программному обеспечению VPN, которые могут быть взаимно несовместимы. Опция Advanced Security - это дополнительная цена лицензии на лицензию Oracle для корпоративного выпуска, которую клиент должен будет купить и купить (и это будет недешево). Вы получите беспокойство о получении соответствующего сертификата SSL только после того, как все эти другие обходы пройдены. Обмен SSL-сертификатами кажется самой простой частью всего процесса.

И это только для поддержки Oracle. Поддержка других баз данных будет включать в себя аналогичную последовательность шагов, но точный процесс будет немного отличаться.

Я бы предпочел ожидать, что вам будет лучше, в зависимости от бизнес-проблемы, которую вы пытаетесь решить, создать продукт, который ваши клиенты смогут установить на свои собственные серверы в своей сети и подключить к базе данных. и будет иметь интерфейс, который будет либо отправлять данные на ваш центральный сервер через что-то вроде HTTPS POST-вызовов, либо прослушивать HTTPS-запросы, которые могут быть отправлены в базу данных, а результаты возвращаться через HTTP.

0 голосов
/ 15 февраля 2011

SSL очень важен для обеспечения безопасности клиентской базы данных.Но это не только это.Вы должны убедиться, что каждая учетная запись базы данных заблокирована.Каждый клиент должен иметь доступ только к своей базе данных.Более того, каждая база данных имеет другие непривлекательные привилегии.Например, MySQL имеет FILE_PRIV, что позволяет учетной записи для чтения / записи файлов.MS-SQL имеет xp_cmdshell, что позволяет пользователю получить доступ к cmd.exe из sql (зачем ему это делать ??).PostgreSQL позволяет вам писать хранимые процедуры на любом языке, и оттуда вы можете вызывать все виды неприятных функций.

Тогда есть другие проблемы.Неверно сформированный запрос может вызвать переполнение буфера, что даст злоумышленнику ключи от королевства.Вы должны убедиться, что все ваши базы данных обновлены, а затем молиться, чтобы никто не отбрасывал 0 дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...