etcd负责保存Kubernetes Cluster的配置信息和各种资源的状态信息。当数据发生变化时,etcd会快速地通知Kubernetes相关组件。 Pod要能够相互通信,Kubernetes Cluster必须部署Pod网络,flannel是其中一个可选方案。
Kubernetes 近期爆出两个中级安全漏洞: CVE-2020-8551 CVE-2020-8552 以下为Kubernetes 安全漏洞的说明。 ? Kubernetes上述漏洞在CVSS评级为中等级别,安全风险为DoS攻击。 “未来五年,是kubernetes的黄金五年。” 在这个黄金五年,CNCF组织依托kubernetes等开源项目推进现代云原生的发展,构建现代软件开发技术栈。 ? CVE-2020-8552 说明 攻击者方通过授权的API请求对Kubernetes API Server服务进行拒绝服务攻击。 /kubernetes/issues/89377 [3] https://github.com/kubernetes/kubernetes/issues/89378
• K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都 支持插件方式,通过API Server配置来启用插件。 /pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key -config=ca-config.json -profile=kubernetes zpj-csr.json kubernetes.io/service-account.uid: fdf94e5a-5b5f-4d40-95d9-4cb5d2409991 Type: kubernetes.io/service-account-token .U4NEeAg1hg0hkCcZrfA4nFPfqNGUlEKIcIEMSrXuxoOIi2wrFJadohzpipmAb0DUItx-K0QPprQ7V0EYJlZbDnKExp2uqJqFsG_TmcZ4T741OUpkTRX9sy0AqC_XkB -2GUj9KHRhi_2M_QMYif4XfB9kS_EpEfMUg9l8K97LnHSMo2ZFbCk2XcpCUe21uNegOtFqVka7RbtiikqVc4sJEPJuA0nwmtqehaJZB7obBHTmACzYMU2WlILzv0QJdL2b
所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计 的。 若无法正常加载, 请点击查看 PDF 网页版本: Kubernetes 集群安全 - 机制说明.pdf 2. 默认挂载目录: /run/secrets/kubernetes.io/serivceaccount 总结 若无法正常加载, 请点击查看 PDF 网页版本: Kubernetes 集群安全 - 认证 实践:创建一个用户只能管理 dev 空间 若无法正常加载, 请点击查看 PDF 网页版本: Kubernetes 集群安全 - 鉴权.pdf 4. 若无法正常加载, 请点击查看 PDF 网页版本: Kubernetes 集群安全 - 准入控制.pdf
这两天在梳理Kubernetes集群的安全配置,涉及到各个组件的配置,最终决定画一个图来展现,应该会更清晰。 name: my-context current-context: my-context ``` kube-scheduler kube-scheduler访问apiserver的安全配置同 /serviceaccount/token /var/run/secrets/kubernetes.io/serviceaccount/ca.crt /var/run/secrets/kubernetes.io apiserver了: - 添加kubectl proxy container,示例见[kubectl-container](https://github.com/kubernetes/kubernetes [example](https://github.com/kubernetes/client-go/blob/master/examples/in-cluster/main.go) 4.
Kubernetes 安全机制解读 在 k8s 中,所有资源的访问和变更都是围绕 APIServer 展开的。 比如说 kubectl 命令、客户端 HTTP RESTFUL 请求,都是去 call APIServer 的 API 进行的,本文就重点解读 k8s 为了集群安全,都做了些什么。 ? 授权机制目前有 4 种模式:RBAC、ABAC、Node、Webhook。下面对这 4 种模式分别做分析。 值得一提的是,Kubernetes 已经内置了很多个为系统保留的 ClusterRole,它们的名字都以 system: 开头。 这一层安全检查的意义在于,检查该请求是否达到系统的门槛,即是否满足系统的默认设置,并添加默认参数。
一、访问控制概述 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。 二、认证管理 Kubernetes集群安全的最关键点在于如何识别并认证客户端身份,它提供了3种客户端身份认证方式: HTTP Base认证:通过用户名+密码的方式认证 这种认证方式是把“用户名 HTTPS证书认证:基于CA根证书签名的双向数字证书认证方式 这种认证方式是安全性最高的一种方式,但是同时也是操作起来最麻烦的一种方式。 RESTARTS AGE nginx-deployment-66cb59b984-8wp2k 1/1 Running 0 4d1h -thfck 1/1 Running 0 4d1h # 为了不影响后面的学习,切回admin账户 [root@k8s-master01 pki]#
一旦装好了kubernetes,登录master之后就有了足够的权限 如果想在worker节点上运行并查看集群状态怎么办? kubectl get csr NAME AGE SIGNERNAME REQUESTOR CONDITION john 27s kubernetes.io /legacy-unknown kubernetes-admin Pending [root@vms61 xx]# kubectl get csr NAME AGE SIGNERNAME REQUESTOR CONDITION john 37s kubernetes.io/legacy-unknown kubernetes-admin /legacy-unknown kubernetes-admin Approved,Issued 一旦审批之后,k8s暂且还没有提供任何撤销这个功能 图片7.png [root@vms61
Kubernetes的网络模型要求每一个Pod都拥有一个扁平化共享网络命名空间的IP,称为PodIP,Pod能够直接通过PodIP跨网络与其他物理机和Pod进行通信。 要实现Kubernetes的网络模型,需要在Kubernetes的集群中创建一个覆盖网络,联通各个节点。在此,选择的是Flannel。 Flannel是CoreOS团队设计开发的一个覆盖网络工具。
1、部署手册 代码仓库:github.com/kubernetes-… 参考文档:kubespray.io/#/ 2、k8s master机器配置 3、k8s 集群安装步骤 step1: 设置主机间的免密登录 /kubernetes-dashboard-amd64:v1.10.0 docker push 106.14.219.69:5000/google_containers/kubernetes-dashboard-amd64 :v1.10.0 4) 更改镜像地址并修改Docker配置 在inventory/testcluster/group_vars/k8s-cluster/k8s-cluster.yml文件中添加如下配置: zhuanlan.zhihu.com/p/37230013) 2) 网络插件列表 网络插件列表如下,我们的技术选型是calico,注意:选择某种网络插件,可能需要一个或多个容器镜像,其镜像版本也可能不同 3.6 高可用方案 step4: -… xdatk.github.io/2018/04/16/… jicki.me/kubernetes/…
Kubernetes v1.0发布于2015年7月21日。 虽然到今天才只有4岁,但Kubernetes的影响力在IT技术领域完全算得上空前绝后,目前,一众大小公司都在使用或正筹划使用这一IT技术发展史上可能最为成功的开源项目。 Kubernetes 一直在积极探索边缘计算场景应用,k3s,kubeedge等,下文有详细介绍。先来用一则漫画理解一下Kubernetes。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 原文链接:https://cloud.google.com/kubernetes-engine/kubernetes-comic/ Kubernetes 在边缘计算场景探索应用 ? K3S 是 Rancher 开源的一个自己裁剪的 Kubernetes 发行版,K3S 名字来源于 K8s – 5,这里的“5”指的是 K3S 比 Kubernetes 更轻量使得它能更好地适配 CI,
由上图可以看出,核心章节主要对Kubernetes认证、授权、容器镜像安全、容器运行时安全、密钥管理、编排工具自身安全这六部分进行了详细说明,最后一章针对Kubernetes生态中涉及的监控、告警、审计等安全部分也进行了相应介绍 图4 RBAC 「view」角色权限 由上图可看出「view」这个Cluster Role可对Pod资源进行get,list,watch操作,完全满足上述需求,但它同时也满足其它Service、Deployment 可看到访问pods资源没有问题,service资源由于RBAC未设置访问权限因此访问失败 4容器镜像安全防护 作者在容器镜像安全防护上也提出了自己的观点,除了常规型的镜像扫描、镜像漏洞打补丁、镜像签名、 stack》【4】提出了容器运行时防护需要建立安全边界的概念,如下图所示: ? /docs/concepts/containers/images/ [4].https://cloud.google.com/blog/products/gcp/exploring-container-security-isolation-at-different-layers-of-the-kubernetes-stack
前言 对于大部分 Kubernetes 用户来说,安全是无关紧要的,或者说没那么紧要,就算考虑到了,也只是敷衍一下,草草了事。 实际上 Kubernetes 提供了非常多的选项可以大大提高应用的安全性,只要用好了这些选项,就可以将绝大部分的攻击抵挡在门外。 spec: securityContext: + runAsUser: <UID higher than 1000> + runAsGroup: <UID higher than 3000> 4. 对于 Kubernetes 来说,大多数容器运行时都提供一组允许或不允许的默认系统调用。 通过使用 runtime/default 注释或将 Pod 或容器的安全上下文中的 seccomp 类型设置为 RuntimeDefault,可以轻松地在 Kubernetes 中应用默认值。
前言 对于大部分 Kubernetes 用户来说,安全是无关紧要的,或者说没那么紧要,就算考虑到了,也只是敷衍一下,草草了事。 实际上 Kubernetes 提供了非常多的选项可以大大提高应用的安全性,只要用好了这些选项,就可以将绝大部分的攻击抵挡在门外。 对于 Kubernetes 来说,大多数容器运行时都提供一组允许或不允许的默认系统调用。 通过使用 runtime/default 注释或将 Pod 或容器的安全上下文中的 seccomp 类型设置为 RuntimeDefault,可以轻松地在 Kubernetes 中应用默认值。 提供了非常多的选项来增强集群的安全性,没有一个放之四海而皆准的解决方案,所以需要对这些选项非常熟悉,以及了解它们是如何增强应用程序的安全性,才能使集群更加稳定安全。
实施 DevSecOps的工程团队实践和自动化安全工具将更早发现安全风险,节省开发人员时间,加快发布周期,并交付更安全和合规的代码。 在美国,平均数据泄露给企业造成 905 万美元的损失, Log4j 零日漏洞正在影响数亿个应用程序和设备, 数据隐私法规导致罚款 8.88 亿美元(美元). 摆脱这种模式实际上代表了安全团队的重大转变,安全团队习惯于强迫开发人员遵守他们的流程和工具。 cloud-security-devsecops-automation/ https://www.ibm.com/reports/data-breach https://www.deepfactor.io/log4j-vulnerability-the-latest-information-your-software-developers-need-to-know-about-log4shell / https://www.deepfactor.io/log4j-vulnerability-the-latest-information-your-software-developers-need-to-know-about-log4shell
但是Kubernetes是一个大型、复杂的平台;在规模扩大以后,Kubernetes平台自身身的安全问题如何解决?应该采取什么策略来保证应用的安全部署?下面我从四个方面说明如何缓解这些挑战。 功能丰富的Kubernetes平台可能会认为默认该功能具有挑战性,但是弄清楚默认功能是必不可少的。 组织可以使用安全性基准来增强Kubernetes的安全性。 例如,Internet安全中心提供了配置指南,以加强包括Kubernetes在内的系统以抵抗不断发展的网络威胁。 列举出来Kubernetes集群面临的威胁有哪些? 如果您没有人力或时间独自加强Kubernetes安全性。 另外在做安全性方面的考虑时,应该尽可能使用和参考随时可用的工具和技术,而不是闷头造车;比如Kubernetes社区给我门提供了RBAC、pod安全策略、网络策略、服务网格、operators等安全性方案
常见的 Kubernetes 配置错误以及如何避免它们 由于配置错误、工具差距或培训不足导致的安全能力“紧张”,不良的安全态势会影响您响应新出现的威胁的能力。 保护控制平面和 API 访问 一种经常被忽视的 Kubernetes 安全措施是保护控制平面,它通常在托管 Kubernetes 服务中公开。 Kubernetes 姿势中的其他安全措施增强了事件检测和响应能力。 为容器运行时安全性使用准入控制器 并非所有 KSPM 解决方案都提供准入控制,但它对于 Kubernetes 部署中的安全性至关重要。 保护您的东西向流量 虽然 Kubernetes 集群是一个安全边界,但将其视为对主机和网络拓扑的抽象至关重要。
对于跨云和本地环境在分布式系统上管理和部署工作负载,Kubernetes很快变得不可或缺。 虽然现在大多数人都熟悉如何使用Kubernetes,但很少有人知道其背后的“为什么”? 为什么Kubernetes API看起来是这样的?为什么Kubernetes组件仅通过Kubernetes API相互交互? 为了回答这些问题并帮助您对Kubernetes进行更深入的了解,本讲座将揭示支撑Kubernetes设计的原理。 原则1. 这就引入了Kubernetes的第一个设计原则: Kubernetes APIs 是声明性的而非命令性的 ( Kubernetes APIs are declarative rather then imperative 于是这就引入了kubernetes设计的第四个原则: 可移植的工作负载 ( Workload portability ) 原则4.
在使用 Kube Bench 的过程中注意到,其指导依据来自于 CIS Benchmark,于是顺藤摸瓜,下载了 CIS Kubernetes Be nchmark 的 PDF 版本,全文有两百多页,阅读量还蛮大的 二级:仅建议在非常强调安全性的系统中使用,可能对系统有副作用。 另外还将具体的检测结果分为计分和不计分两种结果。 以上两个维度可以用来对系统进行现状评估,也有助于读者选择性地采纳加固措施。
然后,再深入探讨 Kubernetes 安全的“4C”框架,并介绍一些主动解决安全漏洞的策略。 因此,可以在 Kubernetes 安全性的 4C 上下文中考虑安全性:云、集群、容器和代码。 Kubernetes 安全 4C 的最佳实践 在这四个层中有两个主要领域需要保护:可配置的集群组件和在集群中运行的应用程序。 4、定期运行 Kube-bench 以符合 CIS Kubernetes 基准。 监控和日志在安全中的作用 很难快速实施所有这些建议。密切关注 Kubernetes 和 4C 级别的默认设置需要不断增加的考虑事项列表。