云原生安全系列3:5个 Kubernetes API 网络安全访问最佳实践

news2025/1/21 13:06:20

Kubernetes 中的 API 访问控制会经历三个步骤。首先,对请求进行身份验证,然后检查请求的有效授权,然后执行请求准入控制,最后授予访问权限。但在身份验证过程开始之前,确保正确配置网络访问控制和 TLS 连接应该是首要任务。以下是保护对 Kubernetes API(控制平面)的直接网络访问的五种最佳实践

配置并使用 TLS

3c5da963587a43eb490b1bd07e3064ff.jpeg

与 API 服务器的连接,控制平面内的通信,以及控制平面和 Kubelet 之间的通信,应该只被配置为可使用 TLS 连接到达。尽管 API 服务器可以通过向 kube-apiserver 提供 -tls-cert-file=[file]和-tls-private-key-file=[file]标志来轻松配置为使用 TLS,但考虑到 Kubernetes 能够根据需要快速扩大或缩小规模,在集群内配置连续的TLS证书管理是具有挑战性的。为了解决这个问题,Kubernetes 引入了TLS引导功能,它允许在 Kubernetes 集群内部自动进行证书签署和 TLS 配置。

强化全局 TLS 连接配置

7048947b33837097ae9f63a1d086ca45.jpeg

配置 kube-apiserver 支持的 TLS 相关标志。

  • -secure-port 用于与 kube-apiserver 进行 HTTPS 连接的网络端口。默认的端口是 6443。你也可以通过使用 -secure-portflag 提供所需的端口号来改变默认安全端口(6443)。

  • --tls-cert-file, --tls-private-key-file 这些标志为 HTTPS 连接配置了 x509 证书和私钥。

  • --cert-dir 配置TLS证书和密钥文件目录。--tls-cert-file 和 --tls-private-key-file 标志将优先于该目录下的证书。--cert-dir 的默认位置是在 /var/run/kubernetes。

  • --tls-cipher-suites 配置TLS的首选密码套件。如果不提供这个标志,kube-apiserver 将使用 Golang 提供的默认密码套件运行。

  • --tls-min-version 配置最小支持的 TLS 版本。值可以是。VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13。

  • --tls-sni-cert-key 配置服务器名称指示(SNI)为一对值 --tls-sni-cert-key=testdomain.crt,testdomain.key。

  • --strict-transport-security-directives 配置HTTP严格传输安全(HSTS)。

  • --requestheader-client-ca-file, --proxy-client-cert-file, --proxy-client-key-file Kubernetes 允许使用聚合层来扩展 kube-apiserver 的自定义 API。聚合层让你建立自己的API服务器( kube-apiserver 的扩展)。为了确保 kube-apiserver 和自定义 API 服务器之间的通信安全,这些标志可以让你配置 x509 证书,以实现安全和可信的通信。

加固 API Server 和 kubelet 之间的 TLS 连接

1dc78cd5bc0b767974fb92e237825359.jpeg

--kubelet-certificate-authority, --kubelet-client-certificate, --kubelet-client-key 这些标志让你为 Kubernetes API 服务器和 Kubelet 之间的 TLS 配置配置 CA、客户端证书和客户端私钥。

API Server 和 Etcd 之间的 TLS 连接

--etcd-cafile, --etcd-certfile, --etcd-keyfile

05e90790c00cfe100d0de928544d03cc.jpeg

确保 API Server 的网络访问安全

  • 在生产中不要启用 localhost 端口。默认情况下,Kubernetes API在两个端口提供HTTP服务:localhost 和安全端口。localhost 端口不需要 TLS,对这个端口的请求可以绕过认证和授权模块。因此,确保在 Kubernetes 集群的测试设置之外不启用这个端口。

  • 使用 Kubectl Proxy 来管理安全客户端访问。安全通信(认证、传输)需要在客户端和服务器上进行仔细的秘密管理。如果你的团队是分布式的,那么 kubectl 有可能被来自不同地点的多个用户使用,增加了凭证(cert文件、令牌)泄露的机会。你可以配置一个跳板服务器,在这个服务器上配置 kubectl 代理,使用户向这个跳板服务器发送HTTPS请求,kubectl 代理转发(有必要的凭证)到API服务器。这样,就可以确保安全的客户端凭证永远不会离开安全加固的 跳板服务器。这种方法也可以用来防止用户通过网络访问直接到达 API 服务器。

  • 了解并保护 API 服务器代理功能。Kubernetes 有一个内置的跳板服务器(API服务器内部),可以代理访问集群上运行的服务。对服务的访问可以通过 URL 方案达到,如http://kubernetes_master_address/api/v1/namespaces/namespace-name/services/service-name[:port_name]/proxy 例如,如果弹性搜索-logging 服务在集群内部运行,可以通过URL方案https://ClusterIPOrDomain/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy 这个功能的主要目的是允许访问那些可能无法从外部网络直接访问的内部服务。虽然这个功能对于管理目的可能很有用,但恶意的用户也可以访问内部服务,否则可能无法通过分配的角色授权。如果你想允许对 API 服务器的管理访问,但想阻止对内部服务的访问,使用HTTP代理或WAF来阻止对这些端点的请求。

  • 使用HTTP代理、负载均衡器和网络防火墙。添加一个简单的HTTP代理服务器(例如,用 Nginx 代理)可以帮助在 Kubernetes API 前快速应用 URL 和安全规则。为了最终的安全,在 Kubernetes API 服务器前投资一个负载平衡器(如AWS ELB、谷歌云负载平衡器)和网络防火墙,以控制对 Kubernetes API 服务器的直接访问。

关于HummerRisk

HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题,核心能力包括混合云的安全治理和K8S容器云安全检测。

c743c3b0e42cc399311f4358065e7e8c.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SuperMap iPortal 对接postgis业务数据库(一):使用nodejs连接数据库并通过接口返回数据

前言 最近有很多人问SuperMap iPortal怎样对接自己的业务数据库,而目前SuperMap iPortal还没办法直接对接,但是可以通过11版本新增的低代码编辑器绕行实现.大致实现步骤如下: 1. 使用nodejs连接数据库并通过接口返回数据 2. 在大屏中请求接口数据并在图…

华为云解锁云原生数据库发展新动能

摘要:如流水般源源不断的数据都存放在哪里?云原生数据库到底是什么?企业基于云原生数据库如何随取随用,实现从 “上好云” 到 “用好云” 的跨越发展?本文分享自华为云社区《探秘・云新知丨华为云解锁云原生数据库发展…

地统计插值学习心得(一)

引言 当我们尝试使用克里金方法插值数据时,最常见的问题之一就是数据中存在极值或者说是异常值。极值是指与其他数据相比非常大或非常小的数据值。通常是由于监测设备故障或数据输入失误造成的,比如不小心删除了数据中的小数点。在进行插值之前,应手动纠正或删除这些错误数据…

非零基础自学Golang 第12章 接口与类型 12.4 空接口

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.4 空接口12.4.1 将值保存到空接口12.4.2 从空接口取值12.4.3 空接口的常见使用第12章 接口与类型 12.4 空接口 12.4.1 将值保存到空接口 空接口(interface{})是Go语言中最特殊的接…

MD5算法:利用python进行md5 hash值的获取

MD5基本概念 MD5,即信息摘要算法,英文为MD5 Message-Digest Algorithm,是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),也叫散列值&…

Live800:不做背锅侠,在线客服系统有帮助

一个公司最牛的部门是哪个? 不同的公司可能有不同的答案,但要说公司哪个部门最憋屈,承接客户的炮火最多,那一定是客服部。因为无论是产品的质量、物流、使用出了问题,消费者的负向反馈都会轰向客服,而当客…

中低压分布式电源并网方案(RCL0923群调群控协同控制终端/RCL0923A分布式光伏逆变器数据采集器)方案

中低压分布式电源并网方案(RCL0923群调群控协同控制终端/RCL0923A分布式光伏逆变器数据采集器)方案 中低压分布式电源并网方案(RCL0923群调群控协同控制终端/分布式光伏逆变器数据采集器)方案 RCL0923分布式光伏电源群调群控协调控制终端/分布式光伏逆变器数据采集器 方案一…

Kotlin基本的语法学习

1.变量 在Kotlin中定义变量的方式和Java区别很大,在Java中如果想要定义一个变量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表示b是一个字符串变量。而Kotlin中定义一个变量,只允许在…

操作系统:用C语言模拟先进先出的算法(FIFO)、最久未使用算法(LRU)、改进的Clock置换算法的命中率。

2.1 实验目的 通过请求页面式存储管理中页面置换算法设计,了解存储技术的特点,掌握请求页式存储管理的页面置换算法。 2.2 实验内容 用程序实现生产者——消费者问题,将指令序列转换为用户虚存中的请求调用页面流。 具体要求: …

以太坊的ecrecover预编译合约

1. 引言 前序博客: ECDSA VS Schnorr signature VS BLS signature ECDSA,全称为Elliptic curve Digital Signature Algorithm,采用Elliptic curve cryptography来实现的数字签名算法。 公私钥对(pk,P)(pk,P)(pk,P),其中公钥Pp…

阿里云-数据仓库-全链路大数据开发治理平台-DataWorks的数字世界

一、前言 上文我讲到 阿里云-数据仓库-数据分析开发神器-ODPS ,今天我带领大家一起走进神器的成长环境及它的数据世界。 二、 DataWorks是什么 DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大数据引擎,为数据仓库、数据湖、湖仓一体等…

大数据-压缩与打包

一、gzip命令 1、选项参数 参数作用-c(compress)将压缩的数据输出到标准输出(stdout)上-d(decompress)解压缩-t(test)可以用来检验一个压缩文件的一致性,看看文件有无错…

艾美捷甘油比色测定试剂盒-简单,敏感,高效

艾美捷甘油比色测定试剂盒,利用双酶联反应系统来检测血清和血浆中的甘油的含量.最后用酶标仪在540nm处测吸光度值即可. 甘油是甘油三酯的骨架,是参与氧化和合成过程的能量代谢的重要中间体。甘油和游离脂肪酸循环水平的测量被认为反映了脂肪分解&#xf…

快应用的优势与劣势对比

2018年,“快应用”标准正式推出。快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验。 快应用框架深度集成进各厂商手机系统中,可以在操作系统层面实现用户需求与应用…

艾美捷甘油比色测定试剂盒基本参数和相关文献说明

背景: 哺乳动物中,甘油三脂主要储存在脂肪组织中,作为主要的能量储存仓库.当禁食阶段,存储在肝脏和脂肪组织中的甘油三酯被脂肪酶分解形成脂肪酸和甘油. 艾美捷甘油比色测定试剂盒基本参数: 中文名称:甘油…

dpdk中的librte_malloc库

dpdk中的librte_malloc库提供了能够分配任意大小内存的API。 该库的目标是提供类似malloc的函数从hugepage中分配内存,以及帮助应用程序移植。 通常情况下,这种类型的分配不应该在数据平面处理,因为其比基于内存池的分配更慢, …

网站被反诈中心DNS劫持解决教程

如果你的网站部分地区用户访问反馈访问不了,测试域名DNS被劫持到了127.0.0.1 或 0.0.0.0 可能是域名被墙了,或则被反诈中心拦截了,如果遇到该问题,需要检测单单被运营商拦截还是也有被反诈中心拦截。 排查过程: 可以把问题域名通过…

H5 雪碧图 移动的机器猫

精灵图(英语:Sprite),又被称为雪碧图或拼合图。在计算机图形学中,当一张二维图像 集成进场景中,成为整个显示图像的一部分时,这张图就称为精灵图。 本文中用的就是这张,来自爱给网。…

Python:Flask简介与实践

文章目录简介一、简单使用二、调试模式三、路由四、路径变量五、构造URL六、HTTP方法七、静态文件八、模板生成九、日志输出十、处理请求1. Request 对象十一、文件上传十二、Cookies十三、重定向和错误十四、响应处理十五、Sessions十六、模板简介1. 模板标签2. 继承3. 控制流…

超高精度PID控制器的特殊功能(2)——远程操作软件及其安装使用

摘要:远程控制软件是高级PID调节器随机配备的一种计算机软件,可在计算机上远程进行调节器的所有操作,并还具有过程曲线显示和存储功能。本文主要针对VPC 2021系列超高精度PID控制器,介绍了随机配备的控制软件的安装和一些最基本的…