Безопасность между микросервисами

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

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам