内部SOA服务是否需要授权?

时间:2016-01-15 01:51:40

标签: soa

想象一个架构,其中public API服务作为外部世界和内部服务网之间的门而存在。因此,处理用户查询的唯一方法是通过public API

以下所有服务在内部边界内相互通信。所有内部服务都在防火墙之后,因此只能通过public API或内部人员访问。

public API是否应该传播授权会话然后让内部服务使用它(他们需要在每个请求上验证会话),或者内部请求是否在没有auth会话的情况下工作,因为它们是内部的并且不可访问用户?

2 个答案:

答案 0 :(得分:1)

也可以在内部使用auth。

您永远不知道何时(a)内​​部服务需要在外部进行,或者(b)您公司内部的某人(或外部黑客)弄清楚如何直接连接到内部服务并将所有内容搞砸。

这不是一个要求,只是一个好的做法。

答案 1 :(得分:1)

这不是一项要求,正如克里斯指出的那样 - 拥有它是好的,但与所有与安全相关的事项一样,你必须小心不要过度。如果您不关心内部人员访问服务,可能会证明您的外部安全性是多余的。

您可以尝试将身份验证/授权传播到通信链中最深层次,但请记住,这不是很现实,因为它意味着您的所有系统(无论是遗产还是第三方,还是某些系统) COTS)内置了一些auth机制。最后,您可能会使用某个第三方系统,该系统使用的特定API根本无法理解您的外部授权。它可能使用自己的身份验证形式。此时,您必须切换安全上下文以保持端到端的安全性。

此外,这肯定会是:

  • 一些性能开销,
  • 当有人为特定服务开发新的消费者时,必须遵守身份验证规则。
  • 实时debbuging将会有点困难,因为您需要冒充外部用户才能调试内部服务。

现在,以上所有并不是说没有安全性更好,只要记住缺点。根据我的经验,通常在内部使用IP限制,这在安全性方面就足够了。

另外请记住,您总会有一些员工必须能够访问所有内容,因此无论如何都无法获得100%的安全性。

所以,考虑一下Chris给出的优点,考虑我所做的缺点,并确定在你的具体案例中最好的是什么。

希望这有帮助!