-1

У меня есть два микросервиса, например, A и B. Микросервис B имеет остальную точку доступа, которая должна быть доступна только из микросервиса A. Как ограничить доступ между микросервисами? Какова наилучшая практика, если это вообще возможно?Безопасность между микросервисами

Я использую весеннее облако безопасности (oauth2, jwt).

+0

Я бы рекомендовал не позволять microservices использовать синхронную связь при всех (использование обмена сообщениями и паб/суб вместо). –

+0

Не думаю, что этот вопрос имеет какое-либо отношение к синхронности? Синхронные вызовы также отлично действуют в микросервисах, например, платежи – ExoticChimp

ответ

0

Это проблема с сетью. Просто ограничьте доступ к микросервису B на сетевом уровне. Это можно легко сделать, если использовать Docker, например. Вы бы просто не публично выставляли соответствующий порт для микросервиса B, а выставляли его в определенной сети, а затем подключались к этой сети.

Если вы хотите добавить дополнительную безопасность, вы можете использовать общедоступные/закрытые ключи. В качестве альтернативы, было бы проще создать JWT для приложения A и проверить его в микросервере B, но по мере добавления дополнительных микросервисов это будет иметь дополнительные накладные расходы на управление.

В качестве альтернативы, вы должны смотреть в API шлюза, который может обрабатывать доступ API для вас

+0

Возможно ли это в чем-то вроде Kubernetes/Swarm? (Я планирую использовать их для построения моей архитектуры) Например, если я хочу ограничить сервис 'A' только доступ к службам 'C' и' E', а не 'B' и' D', можно ли сделать что-то подобное? –

+0

Я думаю, что это автоматически обеспечит мою внутреннюю сеть, не так ли? И так как я все отстаю от API Gateway, внешняя безопасность обрабатывается автоматически –

0

Имейте еще один микросервис, который не так ответственен за бизнес-проблему, но за нефункциональную деловую проблему: безопасность.

Этот микросервис логичен (поскольку все микросервисы должны быть логически ответственны за деловую проблему) и не развертывается самостоятельно, а скорее развертывается с другими микросервисами. Затем создайте надлежащий API, который и микросервис A и B знают и обязательны для выполнения, прежде чем принимать вызовы или выполнять вызовы.

Где другие микросервисы должны быть частью какой-либо связанной с бизнесом границы (ограниченный контекст, если хотите), микросервис безопасности находится в пределах нефункционального требования. Вы могли бы назвать это IT/Ops или Devops или что-то еще.

Смежные вопросы