我正在使用一组 docker 容器中的微服务架构模式构建一个 Web 应用程序,我想知道保护应用程序和微服务之间通信的重要性。
应用程序和微服务将使用该--link
选项在集群中链接在一起,并且微服务不会暴露任何端口。应用程序和微服务之间的通信将通过 HTTP。该应用程序将仅公开端口 80。
我已经考虑过如果应用程序被入侵会发生什么——在我看来,如果发生这种情况,对微服务 API 进行的任何调用的细节都将掌握在攻击者手中(包括任何密钥,如果实施的话——请参阅下面讨论的方案),因此他们将有权访问可以通过这些 API 调用获得的任何数据,但他们无法访问数据库或任何其他由微服务专门使用的资源。但无论 API 调用是否通过上面给出的方法进行身份验证,这都是正确的。
这有多安全?我是否需要向 API 调用添加额外的身份验证层?
我正在考虑这种身份验证方案:Designing a Secure REST (Web) API without OAuth
基本上,这个想法是应用程序和服务有一个共享的秘密,用于加密消息内容,以确定消息是否来自授权来源以及是否已被篡改。目前,API 将仅对应用程序可用,尽管在未来的某个时候,将一些微服务 API 提供给其他应用程序可能会有所帮助,可能不会在 docker 容器中运行,而且我知道一个健壮的身份验证方案将那时需要 -上面讨论的方案是否足够?