容器化编程安全问题包含哪些
容器化技术是程序员在开发软件的时候需要重点掌握的一个编程技术,下面我们就通过案例分析来了解一下,容器化编程安全问题包含哪些。 基础设施安全性:配置错误 容器编配器比较复杂,特别是Kubernetes。到目前为止,它都没有兑现DevOps的承诺。我认为,我们离成为不需要太多运维开销的主流解决方案还有一两个抽象层的距离。 每一个复杂的平台都很容易出现配置错误,而这正是你需要关注的部分。 你必须对基础设施进行威胁建模,确保它不会被攻击。这个特殊的威胁模型应该关注每一个参与者,但受损的容器除外(我们将在下面讨论这个问题)。 这里我就不详细讲了,因为这取决于你运行的是什么平台。对于Kubernetes,建立威胁模型的一个着手点是这样的。 此外,如果你还没有这么做,可以考虑使用托管平台:如果你可以利用(受信任的)供应商提供的模型,复杂性就会降低。 基础设施安全性:横向移动 接下来,我们来讨论当一个容器被破坏时会发生什么。 你想要小化攻击者横向移动的能力,专注于以下两个层: 网络层 身份和访问管理层(IAM) 网络不应该是平的。你可以先把所有东西分配到子网络,然后建立起完整的服务网络。 在IAM层,为每个容器使用单一的标识,以此来优化授权。这在多租户平台中尤其重要:如果没有细粒度的身份标识,就不可能获得小权限。 后,由于它们是不可变的,所以好是减少容器可以运行的时间:攻击者横向移动并获得持久性机会窗口等于容器运行生命周期。所以,持续关闭和滚动重启你的容器。 运行时安全性 后一个是工作负载的安全性。到这个时候,大部分的强化工作都已完成,我们将进入反应性安全控制领域,也就是故障后(post-fail)。 这个阶段的目标:将受损容器的攻击影响降至低。 探测和事故响应 控制攻击影响面好的办法是尽量缩短从入侵开始到安全团队收到警报之间的时间。 探测正在发生的漏洞是供应商们争相寻找解决方案的另一个领域。现在有很多方法,其中大多数都需要使用边车或守护进程来主动监控Pod流量和系统调用。 大多数解决方案都会提供一些价值,但我的建议是从简单的开始,并进行迭代:使用现有的SIEM,摄取来自平台、应用程序和审计系统的日志。