Как мне защитить SOA с помощью межсервисной связи между центрами обработки данных?

StackOverflow https://stackoverflow.com/questions/2249661

Вопрос

Для моего любимого проекта я выбрал архитектуру на основе сервисов (да, модное слово SOA), потому что я могу масштабировать каждый сервис независимо от других, распределять их географически, где они будут использоваться чаще, чем другие сервисы, и т. д.

Хитрость в том, что некоторым сервисам необходимо взаимодействовать друг с другом конфиденциально (и публично с конечными пользователями).Эти сервисы будут расположены в отдельных центрах обработки данных без какого-либо встроенного частного канала между ними (я думаю, что у SoftLayer такой есть).

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

Варианты такого межсервисного общения, как я их вижу:

  • HTTP с TLS
  • TCP/IP (некоторый собственный протокол) с TLS
  • Spread Toolkit (здесь не уверен насчет шифрования)
  • HTTP или собственный TCP/IP через SSH-туннель
  • создать VPN между дата-центрами
  • клиентские сертификаты?взаимная проверка сертификатов?

Видно, у меня в голове куча всякой ерунды.Помощь!

Что вы думаете?Вы делали это раньше?Каковы ваши впечатления?Что «хорошо работает»?

Если вы выберете VPN, какую систему VPN вы порекомендуете?ОпенВПН?Как такие системы VPN обрабатывают временные сетевые разделы?Они автоматически восстанавливаются/переподключаются?

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

Спасибо за ваш совет.

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top