云原生安全和Kubernetes官网翻译

Cloud Native Security and Kubernetes | Kubernetes

术语

零信任体系

零信任体系规定了一种完全消除信任的IT系统的设计方法。核心的原则是,从不信任,始终验证,设备或系统本身,在与系统其他组件通信时,始终要对自身进行验证。在今天的许多网络中,在公司的网络中,系统和设备内部可以自由通信,因为它们在公司网络周边的可信边界内。零信任体系采用了相反的方法尽管在网路外围内,但系统内部的组件在进行任何通信之前都必须通过验证。

解决的问题

在传统的基于信任的方法中,假设存在于企业网络边界内的系统和设备之间存在信任,因此就认为没有问题。然而零信任体系认为这是一个漏洞。当攻击者获取了可信任设备的访问权限时,取决于信任等级和给设备的权限,系统现在很容易受到攻击,因为攻击者在受信任的网络内部,能够在整个系统中横向移动。再零信任体系中,信任被移除了,因此减少了攻击面,攻击者现在被迫在整个系统中进行进一步的验证。

如何帮助

使用零信任体系带来的主要效益是通过减少攻击面来增加安全,从公司系统中移除信任,现在增加了攻击者必须通过安全门的数量和强度才能访问系统的其他区域。

混沌工程

混沌工厂或CE是一门在生产中分布式系统上进行的实验学科,在生成中建立系统性能承动荡和意外条件能力的信心。

解决的问题

SRE和Devops实践侧重于提高产品的弹性和可靠性。系统确保足够的服务质量的同时容忍故障的能力通常是软件开发的需求。有几个方面可能导致程序中断,比如基础设施,平台,基于微服务的应用程序的其他组成部分。在生产环境中频繁部署新功能可能导致停机和重大事故的可能性很高,从而对业务产生重大影响。

如何帮助

混沌工程是一门满足弹性要求的技术。他用于实现对基础设施、平台和应用程序的故障恢复能力,混沌工厂使用混沌实验主动注入随机故障,以验证应用程序,基础设施或者平台能够自动修复,故障不会明显影响用户。混沌实验旨在发现盲点(例如检测或自动缩放技术)同时在重大事件中改善与团队之间的沟通。这种方法有助于提高弹性和团队对复杂系统尤其是生产环境。

安全混工程

安全混沌工程SCE是基于混沌工程的一门学科。SCE在分布式系统上执行主动安全实验,已建立对系统低于动荡和恶意条件的能力和信心。安全混沌工厂使用科学方式实现这些包括稳态、假设、持续验证、经验教训和缓解措施实施

解决的问题

SRE工程师和网络安全工程师的主要优先事项是恢复服务快速发现实现零停机和最小化业务影响。SRE和网络安全工程师处理故障前和故障后的情况。大多数安全问题都很难快速发现和修补,从而响程序系统功能。此外,在开发阶段安全事件通常难以发现。

如何帮助

安全混沌工程是围绕着客观测下和网络弹性实践构建的。它旨在揭示“未知的未知”并建立对系统的信心,增加网络弹性并提高客观测性。

工程团队将会逐步改进提高理解对于复杂基础设施、平台和分布式系统重中的安全问题的理解。SCE提高了整个系统的网络弹性,发现隐藏的安全问题,暴露经典盲点,并为团队准备关键边缘案例。这个方式帮助了sre,devops和devsreops工程师对系统建立信心,增强网络弹性和增加客观测性。

开发生命周期阶段

Kubernetes基于云原生架构,并借鉴了CNCF关于个更好实践云原生信息安全的建议

  • 确保开发环境的完整性
  • 按照适合的环境良好的信息安全实践设计应用系统程序
  • 将最终用户安全作为设计方案的一部分

为了实现这些,你可以

  1. 采用一些架构比如零信任,这可以最小化攻击面,即时是内部威胁。
  2. 定义一个考虑安全问题的代码审查过程
  3. 建立系统或应用程序的威胁模型,已确定信任边界。用它来模拟以识别风险,并帮助找到处理这些风险的方法。
  4. 在合理的情况下。采用先进的安全自动化,比如fuzzing和安全混沌工厂,

分发生命周期

  • 确保容器映像的供应链安全
  • 确保集群和应用程序的其他组件供应链的安全,另一个组件的示例可能是云原生应用程序用于持久性的外部数据库。

为了实现这些,你可以

  1. 扫描容器镜像和其他构建,以查找已知的漏洞
  2. 确保软件分发过程使用加密传输,并建立软件信任源
  3. 当更新可用时,采用和遵循流程更新依赖,尤其是在响应安全公告时。
  4. 使用数字证书等机制进行供应链的保证
  5. 限制访问构建,将容器镜像放在私有注册表中只通过授权的客户端拉取镜像

部署生命周期

确保可以对部署的内容进行适当的限制,谁可以部署它,以及它可以部署到哪里。你可以在分发阶段执行强制措施,比如验证容器映像工件的加密身份。

当你部署了Kubernetes,你还为应用程序的运行环境设置了基础:一个Kubernetes集群(或多个集群)。这些安全基础设施必须提供更高层所期望的安全保障。

运行时生命周期

Kubernetes API使你的集群能够工作。保护此API是提供有效集群安全性的关键。

Kubernetes文档中其他页面提供了有关于如何设置控制访问的特定方面的更多详细信息。安全检查表为你的集群提供了一组推荐的基本检查。

此外保护你集群意味着实行有效的API访问验证与授权,使用Service Account为工作负载和集群组件提供和管理安全标识

Kubernetes使用TLS来保护API通信;确保部署的集群使用TLS(包括节点和控制平面之间的流量。)并保护加密秘钥。如果你想使用Kubernetes自己的API进行证书和证书前面请求,请特别注意限制和滥用。

运行时保护:计算

容器提供俩种功能:隔离俩个不同的应用和将这些隔离的应用程序组合在同一台主机电脑上运行的机制。隔离和聚合这俩个方面,意味着运行时安全涉及权衡和找到适当的平衡。

Kubernetes依赖容器运行时来实际设置和运行容器。Kubernetes项目不建议使用特定的容器运行时,你必须确定你选择的运行时满足你信息安全的需求。

为了在运行时保护你的计算,你可以

  1. 保证应用pod安全性标准,以帮助确保它们仅以必要的权限运行。
  2. 在节点上运行专门为运行容器设计的操作系统。这通常基于只读操作系统(不可变镜像)他仅提供运行容器锁必要的服务。
    特定的容器的操作系统有助于隔离系统组件,在容器逃逸的情况下减小攻击面。
  3. 定义资源配额以公平分配共享资源,并使用诸如limitRanges之类的机制来确保Pod指定其资源需求。
  4. 将工作负载分布到不同的节点上。使用节点隔离机器,要么来自Kubernetes本身要么来自于生态系统,以确保具有不同上下文的pod在不同的节点集上运行.
  5. 使用容器运行时提供安全管制
  6. 在linux节点上使用linux安全模块比如 AppArmor or seccomp.

运行时保护:存储

为你的集群和集群运行的应用程序保护存储,你可以

  1. 将您的集群与提供卷静态加密的外部存储插件进行集成。
  2. 给api对象启动静态加密
  3. 使用备份保护数据的持久性。验证是否可以在需要时恢复他们。
  4. 对集群节点之间的连接和任何他们所依赖的网络存储就行验证。
  5. 在你自己的应用中实现数据加密

针对秘钥,生成他们在特殊的硬件能够最好的保护他们防止泄露风险。硬件安全模块可以让你执行加密操作,而不允许秘钥被复制到其他地方。

网络和安全

你还应该考虑网络安全措施,比如网络策略和服务网格。一些Kubernetes的网络插件提供cluter网络加密它使用了虚拟专用网络(VPN)覆盖等技术。根据设计Kubernetes允许您为集群使用自己的网络插件(如果你使用托管Kubernetes,个人或者机构管理你的Cluster可能已经为您选择了网络插件)

你选择的网络插件以及集成方式会对传输中的信息安全产生重大影响。

客观测性与运行时安全

Kubernetes允许你使用额外的工具扩展集群。你可以设置第三方解决方案以帮助你监控或者排除应用程序及其运行集群的故障。你还可以在Kubernetes本身中获得一些客观测的特性。在容器中运行的代码可以生成日志发布指标或者提供他们客观测数据;在部署时,您需要确保您的集群在那里提供适当级别的保护。

如果您设置了追踪仪表盘或类似的东西,查看将数据填充到该仪表盘中的组件链,以及仪表盘本身。确认他们完整的联调设计的足够弹性和足够完整保护即使在集群可能降级的事件中,你也可以依赖它。

在适当情况下,部署低于Kubernetes本身级别的安全措施,例如加密测量引导或经过身份验证的时间分发。(这有助于确保日志审计记录的保真度)

对于高保证环境,部署加密保护以确保日志不可篡改且机密。

Last modification:May 8, 2024
如果觉得我的文章对你有用,请随意赞赏