写点什么

9 个人人须知的 Kubernetes 最佳安全实践

  • 2019-01-19
  • 本文字数:2328 字

    阅读完需:约 8 分钟

9个人人须知的Kubernetes最佳安全实践

上个月,Kubernetes 被曝首个重大安全漏洞,动摇了 Kubernetes 的生态系统。这个漏洞允许攻击者通过 Kubernetes API 服务器攻击集群,使其运行代码执行安装恶意软件等行为。


今年早些时候,特斯拉遭遇了一场复杂的加密货币挖矿恶意软件感染,起因是 Kubernetes 控制台配置错误。Kubernetes 控制台没有密码保护,攻击这利用这一点访问了其中的一个 pod,这里面有特斯拉在 AWS 环境中的访问凭证。


随着容器和容器编排器的采用率不断增加,组织需要采取必要的措施来保护关键的计算基础设施。可以参考以下 9 个客户反馈的 Kubernetes 最佳安全实践来保护你的基础设施。

1. 升级到最新版本

除了修复 bug,Kubernetes 每个季度的更新都会新增一些安全特性。为了用好这些特性,我们建议你运行最新的稳定版本。最好的方法是使用运行最新的版本(带有最新的补丁),特别是在发现上个月的漏洞爆发之后。你的版本越旧,升级和支持会变得越来越困难,所以你应该计划每个季度至少升级一次。使用托管的 Kubernetes 服务可以使升级变得非常容易。

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

控制访问 Kubernetes API 的访问者,以及他们对 RBAC 有哪些权限。RBAC 通常在 Kubernetes 1.6 或更高版本中默认启用(之后会针对某些托管服务),但是如果你从 1.6 版本就开始升级,并且没有更改配置,则需要再次检查设置。由于 Kubernetes 授权控制器的组合方式,你必须同时启用 RBAC 和禁用遗留授权(ABAC)。


RBAC 被强制执行后,你仍然需要有效地使用它。为了支持特定命名空间的访问权限,通常应该避免集群级别的访问权限。避免给任何人集群管理的权限,即使是调试权限——仅在需要时根据具体情况授予访问权限要安全得多。


你可以使用“kubectl get clusterrolebinding”或“kubectl get rolebinding -all-namespaces”来研究集群角色。快速检查谁被授予特殊的“集群管理员”角色;在这个例子中,它只是“masters”:



如果你的应用程序需要访问 Kubernetes API,请单独创建服务账户,并在每个使用站点为它们提供所需的最小权限集。这比为命名空间的默认账户授予不受限制的权限要好。大多数应用程序根本不需要访问 API;’ automountServiceAccountToken '可以设置为“false”。

3. 使用命名空间来建立安全边界

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


你的团队是否在有效地使用命名空间?可以通过检查非默认命名空间来看看情况:


4. 分离的敏感负载

为了减少被盗用的影响,最好在一组专用计算机上运行敏感的工作负载。这种方法降低了共享容器运行时或主机访问安全性较差的应用程序时的风险。例如,一个被破坏的节点的 kubelet 凭证只有被放到调度节点的 pod 上,才能访问 secret 的内容——如果重要的 secret 被调度到集群中的许多节点上,那么对手将有更多的机会窃取它们。


可以使用节点池(云中或本地)和 Kubernetes 的命名空间、taint、容忍和其他控件来实现这种分离。


5. 安全的云端元数据访问

敏感的元数据,例如 kubelet 管理凭证,有时会被窃取或误用来升级集群中的特权。例如,最近 Shopify 披露的漏洞报告奖励里详细说明了用户如何通过混淆微服务使用特权进而从云提供商的元数据服务里泄露信息。GKE 的元数据隐藏特性改变了集群部署机制,我们建议使用它来避免这种暴露,直到永久解决方案出现替代它。在其他环境中可能需要类似的对策。

6. 创建和定义集群网络策略

网络策略允许用户控制对容器化应用程序的网络访问。要使用它们,需要确保有一个支持该资源的网络提供商;对于一些 Kubernetes 托管商,如谷歌 Kubernetes 引擎(GKE),你需要进行选择。(如果集群已经存在,那么在 GKE 中启用网络策略需要进行简单的滚动升级。)设置好之后,从一些基本的默认网络策略开始,比如默认情况下阻塞来自其他名称空间的流量。


如果在谷歌容器引擎中运行,可以检查集群是否在启用策略支持的情况下运行:


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

Pod 安全策略可以设置集群中工作负载的默认运行方式。考虑定义一个策略并启用 Pod 安全策略允许控制器——根据云提供商或部署模型的不同,指令也不同。可以要求放弃 NET_RAW 功能的部署,以防止某些类型的网络欺骗攻击。

8. 强化节点安全

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


  • 确保主机安全并正确配置。一种方法是根据 CIS 基准检查配置;许多产品都有自动检查器,可以自动评估是否符合这些标准。

  • 控制对敏感端口的网络访问。确保你的网络阻止了对使用 kubelet 端口的访问,包括 10250 和 10255。除非来自受信任的网络,否则要考虑限制对 Kubernetes API 服务器的访问。恶意用户滥用对这些端口的访问,在集群中运行加密币挖矿机,这些集群没有设置成在 kubelet API 服务器上需要有身份验证和授权。

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

9. 打开审计日志

确保启用了审计日志,并且正在监视异常或不需要的 API 调用,特别是任何授权失败——这些日志条目将有一个状态消息“Forbidden”。授权失败可能意味着攻击者试图滥用窃取的凭证。Kubernetes 托管商(包括 GKE)在其云控制台中提供对这些数据的访问,并允许设置授权失败的警报。

展望未来

按照这些建议创建一个更安全的 Kubernetes 集群。请记住,即使按照这些提示安全地配置了 Kubernetes 集群,仍然需要将安全性构建到容器配置及其运行时操作的其他方面。在改进技术堆栈的安全性时,要找到为容器部署提供治理中心点并为容器和云本地应用程序提供持续监视和保护的工具。


原文链接:


https://www.cncf.io/blog/2019/01/14/9-kubernetes-security-best-practices-everyone-must-follow/


2019-01-19 10:337041
用户头像

发布了 124 篇内容, 共 46.2 次阅读, 收获喜欢 177 次。

关注

评论

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

测试面试 | 一道大厂算法面试真题,你能答上来吗?(附答案)

霍格沃兹测试开发学社

《低代码发展白皮书(2022年)》&《2022低代码·无代码应用案例汇编》,发布了

华为云开发者联盟

云计算 后端 低代码 开发

软件测试 | 测试开发 | 接口自动化测试之JSON Schema模式改如何使用?

测吧(北京)科技有限公司

JSON Schema

拔掉电源会怎样?GaussDB(for Redis)双活让你有备无患

科技怪咖

华为伙伴暨开发者大会之GaussDB高校行,产教融合持续赋能人才培养

科技怪咖

技术分享 | 软件测试入门必会-流程管理平台

霍格沃兹测试开发学社

干货 | Dubbo 接口测试原理及多种方法实践总结

霍格沃兹测试开发学社

3. Docker镜像详解

鱼书

c++ 8月月更

科普达人丨一图看懂镜像

阿里云弹性计算

镜像 ECS

给ShardingSphere提了个PR

艾小仙

Java GitHub 程序员 shardingsp

技术分享 | 一文带你了解测试流程的体系

霍格沃兹测试开发学社

GaussDB(for Cassandra)新特性发布:Lucene二级索引,让复杂查询更智能

科技怪咖

用GaussDB(for Redis)存画像,推荐业务轻松降本60%

科技怪咖

驭数有道,天翼云TeleDB系列产品全新升级

天翼云开发者社区

快速开始安装部署ArkID构建IDaaS,轻松拥有标准化用户身份体系

龙归科技

单点登录 Idaas ArkID

基于 JMeter 完成 Dubbo 接口的测试

霍格沃兹测试开发学社

DeFi+NFT质押置换挖矿系统开发技术方案详情

开发微hkkf5566

测试开发基础 | Python 算法与数据结构面试题系列一(附答案)

霍格沃兹测试开发学社

MobTech 短信验证使用说明与应用创建

MobTech袤博科技

App sdk 短信验证

STM32+M5311对接 OneNET 项目记录

矜辰所致

stm32 8月月更 M5311

运维理想和现实,你是?

嘉为蓝鲸

运维 AIOPS 故障处理 补丁

测试面试 | Python 算法与数据结构面试题系列二(附答案)

霍格沃兹测试开发学社

【CSM认证】9月17-18&24-25日在线周末班 | 全国招生

ShineScrum

CSM

【CSPO认证】国际Scrum联盟认证导师CST授课 | 全国招生

ShineScrum

CSPO认证

安全可信 | 首批!天翼云通过可信云安全云工作负载保护平台评估

天翼云开发者社区

DevSecOps 安全即代码基础指南

SEAL安全

DevOps DevSecOps 云安全 DevSecOps和敏捷

快应用与原生APP相比,都有哪些优势?

Speedoooo

小程序 移动开发 轻应用 快应用 移动框架

测试管理和领导力秘诀,12+ BAT 大厂测试经理的干货经验汇总

霍格沃兹测试开发学社

接口测试实战 | Android 高版本无法抓取 HTTPS,怎么办?

霍格沃兹测试开发学社

测试面试 | 某 BAT 大厂测试开发面试真题与重点解析

霍格沃兹测试开发学社

技术分享 | 做为测试,那些必须掌握的测试技术体系

霍格沃兹测试开发学社

9个人人须知的Kubernetes最佳安全实践_安全_Connor Gilbert_InfoQ精选文章