我正在用一组Micro (Spring服务)实现一种解决方案,该解决方案使用兔子MQ作为消息代理。边缘服务器使用基于OAuth的身份服务器进行身份验证。未授权或身份验证的内部微设备调用。
我的目标是使用身份验证和授权保护所有内部微服务。需要保护内部通信免受MiTM攻击或窃听。
我们可以做的一件事是将edge服务器的Auth令牌转发到内部。但是,如果有人捕获了Auth令牌,他们可以执行混乱的代理攻击(充当合法的Micro )。任何人都可以拦截或窃听Micro之间的通信。
如果你知道更好的解决办法,请告诉我。
提前谢谢。
发布于 2016-12-23 09:16:44
重用边缘标记是一个非常糟糕的想法,因为它只是提供了更多的机会,让它被拦截和错误使用。
你应该先找出任何风险界限。那么哪些服务/数据实际上需要额外的或单独的保护。然后您可以创建匹配的安全边界。一般情况下,您不应该试图独立地保护“所有”内部服务,因为这很难,而且成本很高。无论如何,它也不一定能提供很多额外的安全保障。分类系统和数据是一个无聊的痛苦,但是你能做的最重要的事情。
然后,每个边界都可以用任何最好的方法来保护。有些可能只需要受允许通过什么地址(防火墙)的限制,另一些则可能需要额外的令牌或基于证书的安全性。
在需要安全的环境中,边缘服务器通常被认为是不可信的(充其量是半可信的),因为这些服务器将是最公开的。
发布于 2016-12-23 11:57:44
我同意朱利安的回答,你需要首先了解风险,并对系统中的数据进行分类。
我恭敬地不同意使用边缘标记在任何情况下都是一个坏主意。如果令牌只是指定身份(调用者是谁),并将授权(调用方可以和不能做的事情)留给每个服务,则它提供了用户能够或不能执行某些任务的可审计保证。例如,如果edge令牌包含一个角色列表(通常作为声明),则每个微服务都可能允许或不允许基于角色的访问。
正如朱利安所说,这假设边缘用户是重要的。原始服务器(服务主体而不是用户主体)可能更重要,或者可能存在要求(例如存储数据的区域或服务器),需要不同的令牌。
我也同意对所有微服务进行身份验证并不重要。但是,我首先假设您正在进行身份验证,然后只在不需要的情况下删除需求。删除身份验证要比以后添加要容易得多。
https://security.stackexchange.com/questions/146154
复制相似问题