我正在构建一个由几个容器化服务组成的Web服务。一些服务是用Go语言自己编写的,因此我可以自由地让它们相互通信。
我有一个服务A,它可以读写MongoDB。它提供了一些被AJAX浏览器请求击中的端点。
首先,我添加了一个反向代理,它也充当负载平衡器。我的问题是,对于零信任环境中的最佳实践,单跳是否足够?我的意思是,我还可以在代理和服务A之间添加另一个服务,它接收传入的连接并进行额外的检查。
我想避免添加太多不必要的跳数,但我不喜欢用户直接访问具有读/写访问权限的服务/应用的端点,尽管端点中有一个身份验证层。任何帮助是高度赞赏!
1条答案
按热度按时间xpcnnkqh1#
TL;DR
只要您遵循了加密、身份验证和授权的实践,就应该可以了。
数据库注意事项
确保您与数据库的连接是加密的,MongoDB支持in-transit encryption和at-rest encryption,尽管后者仅在企业订阅中支持,但您可以通过一些基础设施预防措施来实现它,请参阅下面的部分。
应用注意事项
确保清理参数查询并使用不易受攻击的JS库。关于这一点,有很多解决方案可以静态检查代码并捕捉缺陷。无论要部署多少微服务,都要确保在一个点上进行身份验证/授权。
基础架构注意事项
一般来说,在基础设施中添加跳并不会为系统增加更多的安全性,假设没有软件是没有错误的,所以我的总体想法是选择一些服务,但要正确配置。你的交通流量越是可预测和精益,你就越少会有麻烦。假设你在Kubernetes上部署了你的基础设施(给定你添加的标签),你可以通过以不同的方式配置你的入口控制器来“玩”不同级别的安全性,例如,你可以将IP的CIDR列入白名单,甚至可以根据你正在使用的Kubernetes(AKS,EKS等)添加DDOS保护。