【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

9 项你不得不知道的 Kubernetes 安全最佳实践

  • 2020-04-23
  • 本文字数:2312 字

    阅读完需:约 8 分钟

9项你不得不知道的Kubernetes安全最佳实践

上个月,全球最受欢迎的容器编排引擎 Kubernetes,被爆出首个严重的安全漏洞,使得整个 Kubernetes 生态发生震荡。该漏洞(CVE-2018-1002105)使攻击者能够通过 Kubernetes API 服务器破坏集群,允许他们运行代码来执行一些恶意活动,比如安装恶意软件等。


今年年初,由于 Kubernetes 控制台中的配置错误,特斯拉被一个恶意挖掘加密货币的软件所感染。攻击者利用了特定 Kubernetes 控制台没有密码保护的这一漏洞,访问其中一个包含特斯拉大型 AWS 环境访问凭据的 pod。


随着越来越多的企业开始使用容器以及容器编排引擎,他们需要采取必要的措施来保护计算机基础架构中的这一关键部分。为了帮助您完成这项工作,本文将为您介绍 9 项 Kubernetes 安全最佳实践。

01 升级到最新版本

每一季度的更新都会添加新的安全相关功能,而不仅仅是修复 bug,为了充分利用这些安全特性,我们建议您始终保持运行最新的稳定版本。

02 启用基于角色的访问控制(RBAC)

控制谁可以访问 Kubernetes API 以及他们对基于角色的访问控制(RBAC)的权限。默认情况下,RBAC 通常在 Kubernetes 1.6 及更高版本中启用,但如果您从那时起进行了升级并且没有更改配置,则需要仔细检查您的设置。由于 Kubernetes 授权控制器的组合方式,您必须同时启用 RBAC 并禁用传统的基于属性的访问控制(ABAC)。


启用 RBAC 之后,您还需要有效地使用它。为了特定命名空间的许可,您通常需要避免集群范围的权限。即便是为了调试,也应避免给予任何集群管理员权限,而是仅在需要的情况下根据具体情况授予访问权限,以提高安全性。


您可以使用 kubectl get clusterrolebinding 或 kubectl get rolebinding -all-namespaces 来探索集群角色和角色。同时,快速检查谁被授予了特殊的“cluster-admin”角色,在这个例子中,它是“master”组:



如果您的应用程序需要访问 Kubernetes API,请单独创建服务帐户,并为每个使用站点提供所需的最小权限集。这优于为命名空间的默认帐户授予过宽的权限。


大多数应用程序根本不需要访问 API, 对于这一情况,可以将 automountServiceAccountToken 设置为“false”。

03 使用命名空间建立安全边界

创建单独的命名空间是组件之间重要的第一层隔离。当不同类型的工作负载部署在不同的命名空间中时,我们发现应用安全控制(如网络策略)要容易得多。


您的团队有在高效地使用命名空间吗?检查一下那些非默认命名空间,即可确认了:


04 将敏感工作负载彼此分开

为了将潜在的破坏影响力限制在最小值,最好在一组专用计算机上运行敏感工作负载。此方法降低了通过共享容器运行时或主机的安全性较低的应用程序访问敏感应用程序的风险。例如,受损节点的 kubelet 凭证通常只有在安装到该节点上安排的 pod 中时才能访问机密内容,如果重要机密被安排到整个集群中的许多节点上,则攻击者将有更多机会窃取它们。


您可以使用节点池(在云或本地)和 Kubernetes 命名空间、污点(taints)、容差(tolerations)和其他控件来实现此分离。


05 安全的云元数据访问

敏感元数据(例如 kubelet 管理员凭据)有时会被盗或被滥用来升级集群中的权限。最近 Shopify 的赏金细节泄露 bug 就是一例。这说明了用户能够通过将微服务混淆为云提供商的元数据服务泄露信息来升级权限。GKE 的元数据隐藏功能可以更改群集部署机制以避免此暴露,我们建议您在找到另一个永久的替代解决方案之前,一直使用这一功能。在其他环境中可能也需要类似的对策。

06 创建和定义集群网络策略

网络策略允许您控制进出容器化应用程序的网络访问。要使用它们,您需要确保拥有支持此资源的网络提供程序,对于一些托管的 Kubernetes 提供商,例如 Google Kubernetes Engine(GKE),您需要选择加入。(如果您的集群已存在,则在 GKE 中启用网络策略需要进行简短的滚动升级。)一旦到位,请从一些基本的默认网络策略开始,例如默认阻止来自其他命名空间的流量。


如果您在 GKE 中运行,则可以检查集群是否在启用了策略支持的情况下运行:


07 运行集群范围的 Pod 安全策略

Pod 安全策略设置了允许在集群中运行工作负载的默认值。考虑定义策略并启用 Pod 安全策略许可控制器,说明因云提供商或部署模型而异。首先,您可以要求部署放弃 NET_RAW 功能以抵御某些类型的网络欺骗攻击。

08 加强节点安全

您可以按照以下三个步骤来改进节点上的安全状态:


  • 确保主机安全且配置正确。 其中一种方法是根据 CIS 基准来检查您的配置,许多产品都有自动检查功能,可以自动评估配置是否与这些标准一致。

  • 控制对敏感端口的网络访问。 确保您的网络阻止访问 kubelet 使用的端口,包括 10250 和 10255。此外,还需限制对可信网络以外的 Kubernetes API 服务器的访问。因为恶意用户很有可能会滥用对这些端口的访问权限,以便在未配置并需要在 kubelet API 服务器上进行身份验证和授权的集群中运行加密货币挖掘程序。

  • 最小化对 Kubernetes 节点的管理访问。 通常应该限制对集群中节点的访问,因为调试和执行其他任务可以在不直接访问节点的情况下进行。

09 启用审核日志(Audit Logging)

请确保您已经启用审核日志,并监视他们是否存在异常或不需要的 API 调用,尤其是任何失败授权——这些日志条目将显示状态“Forbidden”。授权失败可能意味着攻击者试图滥用被盗凭据。托管 Kubernetes 提供程序(包括 GKE)可在其云控制台中访问此数据,并允许您设置授权失败警报。


遵循上文的 9 项建议,您可以获得更安全的 Kubernetes 集群。请记住,即便您已经完全按照以上步骤安全地配置了您的 Kubernetes 集群,您依然需要将安全性构建到容器配置的其他方面及其运行时操作中。当您提高技术堆栈的安全性时,需要寻找能够为容器部署提供中心治理点的工具,并为容器和云原生应用程序提供持续监控和保护。


2020-04-23 17:22632

评论

发布
暂无评论
发现更多内容

Programming abstractions in C阅读笔记:p132-p137

codists

快速测试Mybatis复杂sql,无需启动spring

java易二三

Java 编程 程序员 计算机 科技

数智化转型背景下的火山引擎大数据技术揭秘

字节跳动数据平台

数据库 大数据 数字化建设 企业号 8 月 PK 榜

活动回顾丨云原生技术实践营长沙站(含 PPT)

阿里巴巴云原生

阿里云 云原生

最强远程管理 Royal TSX for Mac激活+补丁教程

胖墩儿不胖y

远程办公 远程软件 Mac软件 远程工具

美团 Flink 资源调度优化实践

Apache Flink

大数据 flink 实时计算

深入解析CMS垃圾回收器

码农BookSea

Java JVM

WebGpu VS WebGL

3D建模设计

WebGL webgpu

对线面试官 - MQ之如何保证消息的顺序性及消息积压问题

派大星

MQ Java 面试题

可观测系统实践:基于海量数据的采集优化方案

博文视点Broadview

数字化转型与架构-架构设计篇|建模之数据模型

数字随行

数字化转型

01.崩溃捕获设计实践方案

杨充

深入解析ZGC垃圾回收器

码农BookSea

Java JVM

​ iOS加固保护新思路

iOS 架构RxSwift 重签名

百度垂类离线计算系统发展历程

百度Geek说

数据处理 计算引擎 架构优化 企业号 8 月 PK 榜 搜索架构

Apache RocketMQ 5.0 消息进阶:如何支撑复杂的业务消息场景?

阿里巴巴云原生

Apache 阿里云 RocketMQ 云原生

IPQ4019 IPQ4029 IPQ6010|IIOT|5G and WiFi 6:Application in Business and Industry

wallyslilly

IPQ4019 IPQ6010 ipq4029

R语言之基础绘图

timerring

R 语言

活动回顾丨阿里云 Serverless 技术实践营 Serverless+AI 专场

阿里巴巴云原生

阿里云 Serverless AI 云原生

如何实现AI的矢量数据库

3D建模设计

人工智能 机器学习 AI

802.11be-IPQ9574+IPQ9554 802.11ax-IPQ8074+IPQ8072 Support 8 data streams in 4 frequency bands, with a peak rate of 16Gbps

wifi6-yiyi

802.11AX 802.11be

SRE方法论之减少琐事

不思jo

SRE 运维‘ #运维

响应式编程——初识 Flux 和 Mono

java易二三

Java 程序员 计算机 程序

深入解析G1垃圾回收器

码农BookSea

Java JVM

生成式AI浪潮下,那些不可忽视的安全问题

网安云

AI安全 系统安全 开源治理 软件系统安全

量化交易策略系统搭建,合约跟单交易系统软件开发

V\TG【ch3nguang】

量化交易系统开发 合约跟单

9项你不得不知道的Kubernetes安全最佳实践_文化 & 方法_Rancher_InfoQ精选文章