写点什么

蚂蚁集团针对 K8s 中 Secret 安全防护的实践与探索

  • 2020-08-11
  • 本文字数:2008 字

    阅读完需:约 7 分钟

蚂蚁集团针对K8s中Secret安全防护的实践与探索

在 K8s 中,Secret 非常重要。因为它是 K8s 中存储所有敏感信息的对象。据悉,这些敏感信息包含密码、集群的证书、OAuth token、ssh key 以及其他用户自定义的敏感文件等。因此,一旦 K8s 中 Secret 出现安全问题,后果将非常严重。此外,虽然社区提供了一定的安全防护方案,但是依然存在诸多问题。


K8s Secret 面临着哪些安全问题?这些安全问题会带来什么影响?社区提供的解决方案存在哪些不足?…针对这些问题,InfoQ 记者采访了蚂蚁集团高级工程师秦凯伦,他专注于可信计算、系统安全和虚拟化等领域,对 K8s Secret 有着深入的研究和探索。

K8s Secret 的安全问题

根据 K8ss 文档,Secret 是 K8s 中存储所有敏感信息的对象。事实上,如果敏感信息直接存放于 K8s 的 pod spec 或镜像中,不仅管控困难,而且存在较大的安全隐患。因此,K8s 通过创建、管理、应用 Secret 对象,可以更好地控制敏感信息的用途,并降低其意外暴露的风险。


秦凯伦称,虽然引入 K8s Secret 对象,这在一定程度上降低了意外泄露的风险(更多地是通过集中式的管理),但是 K8s Secret 对象自身的安全性,“社区默认方案中仍存在许多安全问题”。


一般来说,K8s 中,Secret 数据以纯文本的方式存储在 etcd 中,默认只有 base64 编码,未经加密。同时,共享该文件或将其检入代码库,密码容易泄露。

社区解决方案的不足

针对此问题,K8s 社区提供了基于 KMS 的 K8s Secret 加密方案,谷歌云、AWS 和 Azure 均支持该方案。他说,“这虽然解决了 etcd 中 Secret 明文存储问题,但依然有一些问题。”


  • Secret、加密 Secret 的密钥在内存中明文存放、易被攻破;

  • 攻击者可以假冒合法用户,调用解密接口,窃取密钥。


密钥一旦泄露,将导致所有数据的泄露,从而引起用户对整个系统的信任崩溃。“为此,社区和一些公司尝试为该方案中的 Plugin 加上基于硬件的安全保护,从而提升攻击难度。但对某些特定用户来说,保护的覆盖面和程度依然不够”。实际上,我们可以从 K8s Secret 的整个生命周期来看:



  • Secret 的生成及访问 Secret 的身份证书明文存放在用户侧内存中,用户侧环境复杂,容易被攻击者攻破;

  • 加密 Secret 的密钥的生成、cache 等在 K8s API server 中明文存放在内存中,安全根易被窃取或破坏;

  • 与 KMS 交互的 Plugin 的加解密接口无法防止攻击者假冒,存在泄漏风险;

  • Secret 在 Node 中消费,依然明文内存存放,暴露出一定攻击面。


在秦凯伦看来,理想中,对 K8s 中 Secret 的保护程度应该考虑其整个生命周期的安全、可信,做到端到端的安全防护。

蚂蚁集团的探索

为此,他们基于 TEE 技术,将 K8s Secret 整个生命周期和端到端使用过程中的关键组件、步骤保护起来。整体方案大致如下:



  • 将 API Server 端与 KMS 交互的 KMS Plugin 用 TEE 保护,在保障了 Plugin 中根密钥(安全根)、数据加密密钥无泄漏风险的前提下,降低了性能开销;

  • 将 API Server 端的 KMS provider 用 TEE 保护,避免数据密钥及 Secret 在任何时候明文直接暴露在内存中;同时,通过 TEE 的本地证明机制能够认证解密数据密钥接口的调用者,防止攻击者假冒,确保密钥的安全;

  • 将用户端的 kubectl、kubeconfig 等使用 TEE 保护,一方面 kubeconfig 不落盘同时被硬件保护,提升了安全水位;另一方面,用户的 Secret 通过安全信道直通到 TEE 中进行处理,避免了直接暴露在内存中,规避了被恶意窃取的风险,且用户对 API Server 进行 TEE 远程证明,可以帮助用户确信他正在把自己的 Secret 托付给可信的软件实体(没有含有故意泄露用户秘密的恶意逻辑),建立对 API Server 的信任;

  • 将 Node 端的 kubelet 中 Secret 的消费过程用 TEE 保护,进一步避免了 Secret 直接暴露在内存中,规避了被恶意窃取的风险。


秦凯伦向 InfoQ 记者指出,“这种方案是基于 TEE 的端到端 K8s Secret 保护,还引入 LibOS 技术,实现 TEE 保护对用户、开发者和运维团队完全透明。”


据悉,KMS Plugin 和 TEE-based KMS Plugin 没有标准和开源的社区实现,因此他们设计并开发了自己的 KMS Plugin,并在灰度发布、应急处理、监控管理等方面进行了生产增强。“在与 TEE 结合的过程中,我们为了应对 SGX 机型存在的性能问题,提供了 standalone 和服务化 KMS Plugin 两套方案”。


同样,TEE-based kubectl 也没有标准和开源的社区实现,他说:“我们基于 kubeproxy 开发了自己的安全 kubectl,实现了 kubeconfig 对用户透明、与用户身份绑定、不落盘并采用 TEE 保护内存安全等设计目标。”


此外,考虑到 TEE 保护的易用性、可靠性、可扩展性和可维护性等,他们在评估多套方案后,引入了由蚂蚁开源的 Occlum LibOS,屏蔽了 TEE 对用户、开发者和运维团队的影响,大大降低了 TEE 开发的门槛和成本。


在秦凯伦看来,K8s 作为蚂蚁大规模容器集群的管控根基,应用基于 TEE 的端到端 K8s Secret 保护防护方案,增强了其自身安全和可信,提升了蚂蚁核心管控平面的安全水位,“这对于金融场景下高标准的数据安全和隐私保护来说不可或缺”。


2020-08-11 08:002882
用户头像
万佳 前InfoQ编辑

发布了 681 篇内容, 共 393.9 次阅读, 收获喜欢 1805 次。

关注

评论

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

一文详解RocketMQ-Spring的源码解析与实战

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

品牌活动|行云创新出席“新工业·智物联”全国巡回 CEO 峰会

行云创新

行云创新 新工业 智物联 全国巡回CEO峰会珠海站

商业堡垒机是什么意思?有免费版的商业堡垒机吗?

行云管家

网络安全 堡垒机 运维审计

《人间失格》

后台技术汇

三周年连更 人间失格

超简单!Java 项目自动生成接口文档教程

Apifox

Java 接口文档 API 文档生成 自动生成

拿来吧你!保姆级Docker底层原理及源码实战手册,上线点赞破10W

Java Docker 容器

共享电单车生产厂家如何选择

共享电单车厂家

共享电动车厂家 共享电单车生产 共享电动车厂商 本铯智能共享电动车商家

华为云开源项目OpenTiny中TinyVue有什么优势?

英勇无比的消炎药

开源 Vue 组件库

JSF源码分析(一)

京东科技开发者

spring jsf 企业号 4 月 PK 榜

ThreadLocal源码分析

Java 源码 多线程 ThreadLocal

Java中的「接口」到底是什么?

海拥(haiyong.site)

三周年连更

Mybatis返回集合类型到底是空集合还是null?源码解读

Java 源码 mybatis

Typescript- 数据类型

格斗家不爱在外太空沉思

typescript 三周年连更

已献出膝盖!GitHub上的宝藏级SpringBoot核心宝典,讲得太清晰了

Java 架构 微服务 Spring Boot 框架

面试官:介绍一下什么是缓存雪崩、缓存击穿、缓存穿透?

Java你猿哥

redis 面试题 缓存穿透 缓存击穿 缓存雪崩

终于有人把动态规划、冒泡排序、二叉树、链表、栈全部讲清楚了

Java你猿哥

数据结构 算法 二叉树 排序 LeetCode算法

阿里p8强烈推荐这部《从零开始学架构》堪称GitHub最强!

Java你猿哥

Java 架构 ssm 架构设计

The Beacon链游NFT系统开发技术

薇電13242772558

NFT

超级详细|Linux系统下从0到1的玩法大全

浅羽技术

Linux unix 操作系统 命令 三周年连更

每个Java程序员都必须知道的四种负载均衡算法

Java 负载均衡 负载均衡算法

ARB链质押挖矿代币空投游戏dapp系统开发合约定制

开发微hkkf5566

我认真总结并分析了Spring事务失效的十种常见场景

Java spring Spring事务

python中对象引用 | python小知识

AIWeker

Python python小知识 三周年连更

如何用DataTester设计并创建可视化实验

字节跳动数据平台

AB testing实战 A/B测试 企业号 4 月 PK 榜

java 开发 SSM 框架整合之 MyBatis 动态 SQL

Java你猿哥

Java sql mybatis SSM框架 if

Android C++系列:C++11函数特殊特性

轻口味

c++ 三周年连更

掌握动态规划,从“什么问题适合用”及“解题思路”入手

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 4 月 PK 榜

基于STM32设计的音乐播放器

DS小龙哥

三周年连更

GitHub爆款!Java性能优化:轻松道破软件性能调优,不止搞定JVM

Java你猿哥

Java JVM Java性能优化

【堡垒机】免费堡垒机介绍以及下载看这里!

行云管家

堡垒机 运维审计 免费 小微企业

阿里“妈宝级”之作,Kubernetes原理剖析与实战应用手册,太全了

Java Kubernetes k8s

蚂蚁集团针对K8s中Secret安全防护的实践与探索_安全_万佳_InfoQ精选文章