category
Kubernetes基于云原生架构,并借鉴了CNCF关于云原生信息安全良好实践的建议。
继续阅读本页,了解Kubernetes是如何帮助您部署安全的云原生平台的。
云原生信息安全
- CNCF关于云原生安全的白皮书定义了适用于不同生命周期阶段的安全控制和实践。
开发生命周期阶段
- 确保开发环境的完整性。
- 根据适合您的环境的良好信息安全实践设计应用程序。
- 将最终用户安全性视为解决方案设计的一部分。
要实现这一点,您可以:
- 采用零信任体系结构,即使对于内部威胁,也能最大限度地减少攻击面。
- 定义一个考虑安全问题的代码审查过程。
- 建立系统或应用程序的威胁模型,以确定信任边界。用它来建模以识别风险,并帮助找到处理这些风险的方法。
- 在合理的情况下,结合先进的安全自动化,如模糊化和安全混沌工程。
分发生命周期阶段
- 确保您执行的容器映像的供应链安全。
- 确保集群和执行应用程序的其他组件的供应链的安全性。另一个组件的示例可能是云原生应用程序用于持久性的外部数据库。
要实现这一点,您可以:
- 扫描容器图像和其他工件以查找已知的漏洞。
- 确保软件分发在传输过程中使用加密,并建立软件源的信任链。
- 当更新可用时,尤其是在响应安全公告时,采用并遵循更新依赖关系的流程。
- 使用数字证书等验证机制进行供应链保证。
- 订阅订阅源和其他机制,提醒您注意安全风险。
- 限制对工件的访问。将容器映像放在只允许授权客户端提取映像的专用注册表中。
部署生命周期阶段
- 确保对可以部署的内容、可以部署的人员以及可以部署到的位置进行适当的限制。您可以从分发阶段强制执行措施,例如验证容器映像项目的加密身份。
- 当您部署Kubernetes时,您还为应用程序的运行时环境奠定了基础:一个Kubernete集群(或多个集群)。IT基础架构必须提供更高层所期望的安全保障。
运行时生命周期阶段
运行时阶段包括三个关键领域:计算、访问和存储。
运行时保护:访问
Kubernetes API使您的集群工作。保护这个API是提供有效集群安全的关键。
Kubernetes文档中的其他页面提供了有关如何设置访问控制的特定方面的更多详细信息。安全检查表为您的集群提供了一组建议的基本检查。
除此之外,确保集群安全意味着为API访问实现有效的身份验证和授权。使用ServiceAccounts为工作负载和集群组件提供和管理安全标识。
Kubernetes使用TLS来保护API流量;确保使用TLS部署集群(包括节点和控制平面之间的流量),并保护加密密钥。如果您使用Kubernetes自己的API进行CertificateSigningRequest,请特别注意限制滥用。
运行时保护:计算
容器提供了两个功能:不同应用程序之间的隔离,以及将这些隔离的应用程序组合在同一台主机上运行的机制。隔离和聚合这两个方面意味着运行时安全性涉及权衡和找到适当的平衡。
Kubernetes依靠容器运行时来实际设置和运行容器。Kubernetes项目不建议使用特定的容器运行时,您应该确保您选择的运行时满足您的信息安全需求。
为了在运行时保护您的计算,您可以:
- 对应用程序强制执行Pod安全标准,以帮助确保它们只使用必要的权限运行。
- 在节点上运行专门为运行容器化工作负载而设计的专用操作系统。这通常基于只读操作系统(不可变映像),该操作系统仅提供运行容器所必需的服务。
- 特定于容器的操作系统有助于隔离系统组件,并在容器逃逸的情况下减少攻击面。
- 定义ResourceQuotas以公平分配共享资源,并使用LimitRanges等机制确保Pod指定其资源需求。
- 跨不同节点对工作负载进行分区。使用来自Kubernetes本身或生态系统的节点隔离机制,以确保具有不同信任上下文的Pod在不同的节点集上运行。
- 使用提供安全限制的容器运行时。
- 在Linux节点上,使用Linux安全模块,如AppArmor或seccomp。
运行时保护:存储
要保护群集的存储以及在其中运行的应用程序,您可以:
- 将您的集群与外部存储插件集成,该插件为卷提供静态加密。
- 为API对象启用静态加密。
- 使用备份保护数据的持久性。验证您是否可以在需要时恢复这些。
- 对群集节点和它们所依赖的任何网络存储之间的连接进行身份验证。
- 在您自己的应用程序中实现数据加密。
对于加密密钥,在专用硬件中生成这些密钥可以提供最佳的保护,防止泄露风险。硬件安全模块可以让您执行加密操作,而不允许将安全密钥复制到其他位置。
网络和安全
- 您还应该考虑网络安全措施,例如NetworkPolicy或服务网格。Kubernetes的一些网络插件使用虚拟专用网络(VPN)覆盖等技术为您的集群网络提供加密。根据设计,Kubernetes允许您为集群使用自己的网络插件(如果您使用托管Kubernets,则管理集群的人员或组织可能已经为您选择了网络插件)。
- 您选择的网络插件及其集成方式会对传输中的信息安全产生重大影响。
可观察性和运行时安全性
Kubernetes允许您使用额外的工具来扩展集群。您可以设置第三方解决方案来帮助您监视或排除应用程序及其运行的集群的故障。您还可以在Kubernetes本身中获得一些基本的可观察性特性。在容器中运行的代码可以生成日志、发布度量或提供其他可观察性数据;在部署时,您需要确保集群在那里提供适当级别的保护。
如果您设置了度量仪表板或类似的东西,请查看将数据填充到该仪表板中的组件链,以及仪表板本身。确保整个链的设计具有足够的弹性和足够的完整性保护,即使在集群可能降级的事件中,您也可以依赖它。
在适当的情况下,部署低于Kubernetes本身级别的安全措施,如加密测量的引导或经过身份验证的时间分布(这有助于确保日志和审计记录的保真度)。
对于高保证环境,部署加密保护以确保日志不可篡改且机密。
接下来是什么
云原生安全
- CNCF white paper on cloud native security.
- CNCF white paper on good practices for securing a software supply chain.
- Fixing the Kubernetes clusterf**k: Understanding security from the kernel up (FOSDEM 2020)
- Kubernetes Security Best Practices (Kubernetes Forum Seoul 2019)
- Towards Measured Boot Out of the Box (Linux Security Summit 2016)
Kubernetes and information security
- 登录 发表评论
- 10 次浏览
Tags
最新内容
- 1 day 11 hours ago
- 1 day 14 hours ago
- 1 day 14 hours ago
- 4 days 6 hours ago
- 4 days 13 hours ago
- 4 days 14 hours ago
- 4 days 14 hours ago
- 4 days 14 hours ago
- 1 week 1 day ago
- 1 week 1 day ago