关于kubernetes:DevSecOps-需要知道的十大-K8s-安全风险及建议

54次阅读

共计 2791 个字符,预计需要花费 7 分钟才能阅读完成。

Kubernetes(K8s)是古代云原生世界中的容器治理平台。它实现了灵便、可扩大地开发、部署和治理微服务。K8s 可能与各种云提供商、容器运行时接口、身份验证提供商和可扩大集成点一起工作。然而 K8s 的集成办法能够在任何基础设施上运行任何容器化应用程序,这使得围绕 K8s 和其上的应用程序堆栈创立整体安全性面临挑战。依据 Red Hat 的 2022 年 K8s 平安报告,在过来 12 个月的过程中,简直所有参加钻研的 K8s 用户都经验过至多一次安全事件。因而,能够说 K8s 环境在默认状况下并不平安,并且容易面临危险。
 

本文将探讨 10 大 K8s 平安危险,并就如何防止这些危险给出提醒。
 

1. K8s Secret

Secret 是 K8s 的外围构建块之一,用于存储明码、证书或令牌等敏感数据,并在容器内应用它们。与 K8s Secret 相干的三个关键问题:

  • Secrets 将敏感数据存储为 base-64 编码字符串,但默认状况下不加密。K8s 的确提供了存储资源的加密,但用户须要对其进行配置。此外,对于秘密的最大威逼是同一命名空间中的任何 pod,以及在 pod 内运行的任何应用程序都能够拜访和读取它们。
  • 基于角色的访问控制(RBAC)管制谁有权拜访 K8s 资源。用户须要正确配置 RBAC 规定,以便只有相干人员和应用程序能力拜访秘密。
  • Secrets 和 ConfigMaps 是将数据传递给正在运行的容器的两种办法。如果有旧的和未应用的 Secrets 或 ConfigMap 资源,会造成凌乱并透露易受攻击的数据。例如,如果用户删除了后端应用程序部署但遗记删除蕴含的数据库明码的秘密,那么未来任何歹意 pod 都能够应用这些敏感数据。
     

2. 存在破绽的容器镜像

K8s 是一个容器编排平台,在工作节点上散发和运行容器。然而它不会查看容器的内容是否存在安全漏洞或裸露。因而,须要在部署前对镜像进行扫描,以确保只有来自可信镜像仓库且没有重大破绽(如近程代码执行)的镜像才会在集群上运行。容器镜像扫描也应该集成到 CI/CD 零碎中,以实现自动化和更早地检测问题和缺点。
 

3. 运行时威逼

K8s 工作负载(即容器)在工作节点上运行,容器在运行时由主机操作系统管制。如果存在宽松政策或存在破绽的容器镜像,可能会为整个集群关上后门。因而,须要操作系统级别的运行时爱护来增强运行时的安全性,而针对运行时威逼和破绽的最重要的爱护,在整个 K8s 中实现最小特权准则
 

4. 集群谬误配置和默认配置

K8s API 及其组件由一组简单的资源定义和配置选项组成。因而,K8s 为其大部分配置参数提供了默认值,并试图打消创立长 YAML 文件的累赘。然而,用户须要留神与集群和资源配置相干的三个关键问题:

  • 尽管默认的 K8s 配置很实用,因为能够进步应用的灵活性和敏捷性,但它们 并不总是最平安的抉择
  • K8s 资源的在线示例有助于入门,但在参考时须要查看这些示例资源定义将部署到集群的内容。
  • 在集群上工作时,通常应用“kubectl edit”命令更改 K8s 资源。但如果用户遗记更新源文件,更改将在下一次部署中被笼罩,并且未跟踪的批改可能会埋下安全隐患。
     

5. K8s 中的 RBAC 策略

RBAC 治理和管制 K8s 资源受权形式。因而,配置和保护 RBAC 策略对于爱护集群防止不必要的拜访至关重要。应用 RBAC 策略时须要思考两个关键点。首先,一些 RBAC 策略过于宽松,比方 cluster_admin 角色,它根本领有集群中的所有权限。这些角色被调配给个别开发人员,使他们可能麻利实现开发人。但如果呈现安全漏洞,攻击者能够应用 cluster_admin 疾速取得对集群的高级拜访权限。为防止这种状况,用户须要为特定资源配置 RBAC 策略并将全线调配给特定的用户组
 

另外,软件开发生命周期中存在各种环境,如开发、测试、预公布和生产。此外,还有开发人员、测试人员、经营人员和云管理员等多个侧重点不同的团队。应为每个组和每个环境正确调配 RBAC 策略。
 

6. 网络接入

在 K8s 中,一个 pod 能够连贯到集群内部的其余 pod 和内部地址;默认状况下,其他人能够从集群外部连贯到此 pod。网络策略用于治理和限度 pod、命名空间和 IP Blocks 之间的网络拜访。网络策略能够与 pod 上的标签一起应用,而 标签的不当应用可能会导致不必要的拜访。此外,当集群位于云提供商处时,集群网络应该与虚构公有云 (VPC) 的其余部分隔离。
 

7. 整体监控和审计日志

当用户将应用程序部署到 K8s 集群时,仅依附监控应用程序指标是不够的。还 必须察看 K8s 集群的状态、云基础设施和云控制器,以全面理解整个堆栈。监督破绽和检测异样也很重要,因为歹意攻击者会测试从每个可能的闭口来拜访集群。K8s 为集群中与平安相干的事件提供开箱即用的审计日志。即便如此,用户仍旧须要从各种应用程序收集记录并在一个核心地位监控集群健康状况。
 

8. K8s API

K8s API 是整个零碎的外围,所有外部和内部客户端都与 K8s 进行连贯和通信。如果用户在外部部署和治理 K8s 组件则须要更加小心,因为 K8s API 服务器及其组件是具备潜在和理论破绽的开源工具。因而用户应该应用最新的稳固版本的 K8s 并尽早修复集群。
 

如果应用云提供商,K8s 控制面板由提供商管制,云基础设施会自动更新和打补丁。然而在大多数状况下用户须要自行负责降级工作节点。因而,用户能够应用自动化和资源供给工具轻松升级节点或更换新节点。
 

9. K8s 资源申请和限度

除了调度和运行容器,K8s 还能够在 CPU 和内存方面限度容器的资源应用。资源申请和限度至关重要,起因有两点:

  • 安全性:当 pod 和命名空间不受限制时,即便是具备安全漏洞的单个容器也能够拜访集群内的敏感数据。
  • 老本:当申请的资源超过理论使用量时,节点将耗尽可用资源。如果启用主动缩放,这将导致节点池减少,新节点将不可避免地减少您的云费用。
     

当资源申请被正确计算和调配时,整个集群在 CPU 和内存方面高效工作。此外,当设置资源限度时,故障应用程序和歹意攻击者都将在资源应用方面受到限制。如果没有资源限度,歹意容器可能会耗费节点中简直所有的资源并使应用程序无奈应用。
 

10. 数据与存储

K8s 让有状态的容器化应用程序可扩大且牢靠地运行成为可能。借助 StatefulSet 资源,用户能够疾速将数据库、数据分析工具和机器学习应用程序部署到 K8s 中。这些数据将作为连贯到容器的卷供 Pod 拜访。

通过策略和标签限度拜访来防止集群中其余 pod 进行不必要的拜访至关重要。此外,K8s 中的存储是由内部零碎提供的,因而用户应该思考对集群中的要害数据进行加密。如果用户治理存储插件,还应该查看平安参数以确保它们已启用。
 

参考链接:
https://www.darkreading.com/d…
https://www.redhat.com/en/blo…
https://K8s.io/docs/concepts/…

正文完
 0