【.com快译】随着微服务流程和系统部署在DevOps实践中的广泛应用,DevOps工程师在软件开发项目中对安全的责任越来越大。我们需要用一个好的DevSecOps流程来保证应用的部署、运行和服务监控,同时通过容器和微服务来增强安全性。在设计新的分布式系统,或者将单体应用重构和增强为微服务时,人们通常会考虑每个微服务与其他微服务通信的业务应用和流程。那么在与客户和其他开发伙伴合作的过程中,我们需要采用微服务级别的身份。这样的身份可以给我们带来以下好处:由于身份通常不会经常改变,因此有助于我们理解分布式应用程序的处理过程。我们可以充分利用容器编排的敏捷性,因为我们不需要限制某些微服务来提供各种节点。无论是容器还是虚拟机,因为它们的宿主身份都可以抽象为一个身份来表示,我们可以据此进行平台化。跨云、跨域、跨主机、跨应用负载在微服务的实际应用中,最大的问题之一是:跨多域环境、计算类型、混合云的身份传递问题。一般来说,由于分布式系统跨越不同的安全域和身份域,我们很难针对不同的复杂环境实现可用性管理和动态扩展。研究表明,各类组织中的大多数数据泄露都是由误解引起的。这些误解体现在:各种云服务和系统的安全配置策略是云服务提供商的责任,还是应用所有者的职能。DevOps团队应确保在部署微服务之前将适当的安全策略配置到云环境中。针对以上需求,我们可以采取的方法是:在所有环境中使用单一的证书颁发机构作为CA(证书颁发机构)。比如ServiceMesh,它是一个开源工具,在越来越多的项目中可以作为CA中心。虽然各种服务网格系统的配置过程可能非常繁琐,但它们可以作为非常有用的安全和操作控制点。在实现上,我们可以在Kubernetes的多个集群中配置Istio(译者注:一种微服务系统管理工具)。通过向Istio添加非Kubernetes服务,进一步扩展Istio的信任范围。当然,这也增加了配置的复杂性,最终取决于每个项目所有者他们想如何限制他们的控制。总的来说,考虑到可操作的微服务的复杂性,随着应用的迭代和操作控制的加强,这将带来以下好处:更快地完成代码编写和部署。可重复的开发-安全-操作过程。使用QA和安全扫描工具来提高安全性。增加用户使用的可用性。实施软件级故障转移(稳健性)。快速或动态地实现可伸缩性。当然,部分用户也可以选择只使用内部身份表示,只使用简单的在线证书,然后在分布式微服务的不同CA处同步两者。由于此类设置的复杂性,它仅被在微服务开发、安全和运营管理方面具有丰富经验的DecSecOps流程和团队采用。此外,我建议大家在对自己的业务流程和计算架构的成熟度进行全面评估的基础上,酌情采用。有了前面的基础,用户对多个不同实体进行身份管理(包括:识别、控制、构建、保护、配置、监控、信任传递)就容易多了。通常,微服务的信任建立过程是一套DevSecOps流程和架构。它们定义了如何在新的分布式系统环境(有或没有Kubernetes)中验证微服务。同时,我们需要通过成功实施DevOps来实现基于身份的云服务负载。也就是说,为了保护微服务,我们需要自动化定义、创建、管理和保护各种工作负载以及微服务实体的身份,并促进无摩擦的零流程安全。DevSecOps中的安全细节在这里。我们给出的一种解决方案是:搭建一个平台,通过CI/CD管道为每个微服务创建一个身份,保证这个嵌入的身份可以密码绑定设置在内存中。然后,当微服务被发布到生产环境中时,可以自动创建该身份并使用相关策略进行保护。相应地,我们不仅可以保护生产环境免受攻击和泄漏,还可以确保微服务只与那些已经被识别和认证的微服务通信。这样的方案实际上充当了一个自动化的安全层。它将CI/CD无缝添加到DevSecOps的实施中。此外,为了保护CI/CD以外的负载,我们也可以借用Cyber??Armor(见--http://www.cyberarmor.io/)平台自动创建身份作为CI/CD的一部分,以及在部署过程中继续实施保护。在Kubernetes中,由于认证服务适用于整个集群的各种默认账户,所以在实践中,除非我们需要对账户的身份进行特殊配置,否则通常不会用于微服务认证的身份。这就是Istio的服务测量控制发挥作用的地方。它可以用作微服务的标识,并集成到DevOps流程和过程中。用户身份和服务身份已经从单体式发展到基于微服务。应用所在的环境越来越复杂,并行运行的软件也越来越多。就安全性而言,每个组件都为服务架构提供了一个攻击面。因此,无论是用户还是微服务,都应该在服务架构上进行充分的验证,以保证合理的安全态势。在以往的单体应用中,应用只需要在内部完成对一个用户的身份识别和验证,就可以确定用户的访问权限。如今,用户需要在前端微服务提供自己的身份,而每个微服务使用JSONWebtoken,结合AUTH0等框架,在整个信任链中根据用户传递的身份信息,对用户的身份进行认证权限,然后判断是否可以获取某些敏感数据。运维管理中的微服务安全:工具与流程有时候,针对微服务的攻击并非来自某个用户,而是针对应用运行环境中的某些程序逻辑漏洞。因此,我们需要不断地扫描和比较已建立的构建和配置状态,并通过自动发现和应用程序映射来做出相应的安全调整,以防止各种潜在的攻击。而且,当检测到攻击时,我们可以使用Grafana(译者注:一个开源的分析和监控平台)通过查看图表来深入了解攻击的类型和其他具体信息。此外,我们可以使用应用配置管理工具Radware来保护基于微服务的应用。例如,当一个应用发生变化时,Radware会根据配置策略将变化信息反馈给SecOps进行评估和处理。也就是说,一旦发现变化,此类工具会进一步检查容器的注册表,Kubernetes也会将其与之前状态的配置镜像进行比较,通过记录发现的变化,然后在所有不同的DevOps团队之间共享有关这些更改的信息,以便可以实施补救措施。【原标题】DevSecOpsUsingContainerandMicroservicesSecurity,作者:LarryGordon
