TOP10-k8s-安全措施

2024-06-03 01:52

本文主要是介绍TOP10-k8s-安全措施,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TOP 1、镜像安全

        镜像中存在什么?

        镜像中存在打包后的code以及base image、tools

        安全建议:

        1、代码中非必须不使用任何多余的tools或者库。

        2、尽量使用小而精且签名的base image.

        3、推送到私有仓库前扫描 docker image.(可以集成在CI/CD的流水线中)

        4、定期对存储在石私有仓库的docker image 镜像进行扫描。

       

Top 2、禁止使用root用户运行

        在编写docker file以及在pod构建时添加安全上下文,不允许使用root用户。

        1、 在编写docker file时创建一个用户专门来跑app.

        2、在配置pod时添加安全上下文,禁止使用root用户运行以及使用userid为1000的普通用户来运行。

Top3、管理用户以及应用程序的权限

        1、针对于人类用户-访问集群资源-debug

                1、使用RBAC

                2、先针对不同角色创建想要可以访问的资源或者动作清单。

                3、通过RBAC创建想要的客户端证书下发到最终用户。

        2、针对于非人类用户-应用程序访问api-server

                1、Service Accout

                2、同样创建想要可以访问的资源或者动作清单。

                3、将权限绑定到相应的Service Account.

        **都使用最小权限原则。

Top4、Network Policy

        1、不是所有pod都需要互相访问

        2、哪怕同一个app都 前端-后端-数据库 也不需要都运行访问

                例如:前段不需要访问数据库,而数据库只允许特定的后段进行访问。

        解决办法:

        1、使用Network Policy限定访问对象以及命名空间。    

        2、使用istio这类服务网格产品的网络边车来解决微服务以及应用层面的网络策略。

Top 5、TLS加密

        一般情况下k8s集群内的应用程序是明文传输,攻击者可以很方便看到集群内部的信息。

        解决办法:

        1、需要访问的服务之间使用TLS加密通信数据。

Top6、加密k8s集群内部的secret

        默认k8s集群内部的secret是base64编码而不是加密。

         解决办法:   

  1. 限制访问:使用 Kubernetes 的 RBAC(Role-Based Access Control)来限制哪些用户和服务可以访问你的 Secret。你应该只允许需要这些 Secret 的服务访问它们。

  2. 加密 etcd:Kubernetes 的所有数据,包括 Secret,都存储在 etcd 中。你应该配置 Kubernetes API 服务器来对 etcd 中的数据进行加密。

  3. 使用外部密钥管理系统:如果可能的话,你应该考虑使用外部的密钥管理系统,如 HashiCorp Vault 或 AWS KMS,来存储你的敏感数据。这些系统提供了更强大的安全性和更细粒度的访问控制。

  4. 定期轮换 Secret:你应该定期更改你的 Secret,并确保旧的 Secret 在被替换后立即失效。

Top7、etcd

        etcd保存着整个k8s集群的几乎所有资源信息,攻击者可以访问etcd那么可以说几乎拥有无限制对于k8s集群的访问权限。

        解决办法:

  1. 限制网络访问:etcd 应该只能被 Kubernetes API 服务器访问,不应该对外部网络开放。你可以使用防火墙规则或网络策略来限制对 etcd 的访问。

  2. 启用 TLS:你应该为 etcd 启用 TLS,以加密所有的通信。这包括 etcd 的客户端到服务器的通信(例如,API 服务器到 etcd 的通信),以及 etcd 集群内部的服务器到服务器的通信。

  3. 使用强密码:如果你启用了 etcd 的身份验证功能,你应该为每个 etcd 用户设置一个强密码。

  4. 定期备份:你应该定期备份 etcd 的数据,以防止数据丢失。你也应该定期测试你的备份恢复流程,以确保它能够正常工作。

  5. 启用审计日志:你应该启用 etcd 的审计日志功能,以记录所有的请求。这可以帮助你检测任何未授权的访问尝试,以及跟踪问题的来源。

  6. 定期更新和打补丁:你应该定期更新 etcd 到最新版本,并及时应用任何安全补丁。这可以帮助你防止已知的安全漏洞。

  7. 使用专用的物理或虚拟机:etcd 应该运行在专用的物理或虚拟机上,不应该与其他应用共享主机。这可以减少 etcd 被其他应用的漏洞所利用的风险。

  8. 限制 etcd 的资源访问:你应该限制 etcd 进程的资源访问,例如文件系统、内核参数等。这可以通过使用 Linux 的安全模块,如 SELinux 或 AppArmor 来实现。

Top8 非基础设施数据库的用户、APP数据

        这个无需多言,最重要的就是数据。

        解决办法:

        1、建立完整的备份机制。(方案越贵越有效)

        2、完整的备份软件具有恢复功能。

        3、最好的办法是建立不可变备份且存储备份的位置要足够安全。

        4、保护数据库本身的同时保护备份!

Top 9 建立容器准入规则

        k8s集群一般由开发团队使用,但运维由云基础架构。怎么按开发人员遵从容器开发安全实践?

        解决办法:

        1、建立容器准入规则。例如OPA,Kubewarden 

        2、上面都工具都具备自动化检查创建和更新的Pod是否符合规则。

Top10  建立网上的容灾机制

        这个不必多说,任何运维人员都想自己的基础设施上跑的应用具备容灾能力。

        1、基础设施容灾

                1、计算资源不超过百分之70,留出余量假设某节点会Down.

                2、服务器双电源

                3、网络吞吐量富余1个物理接口的流量。

                4、所有网络设备均使用高可用方案-堆叠、M-lag

        2、数据容灾

                1、集群数据和用户数据定期备份并且数据备份的位置足够安全。本地1份、异地1份。

                2、备份软件足够可靠且授权足够。

                3、软件具备自动恢复能力。

        3、应用容灾

                1、前段3个副本起步且运行在不同主机上。

                2、后端分类型至少2个副本起步且运行在不同主机上。

                3、有状态集群服务使用亲和性或者逻辑拓扑域至少一个逻辑拓扑域不同的主机上运行。

                4、搭建专门的入口ingress集群.

        

        

        

这篇关于TOP10-k8s-安全措施的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025712

相关文章

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

云原生之高性能web服务器学习(持续更新中)

高性能web服务器 1 Web服务器的基础介绍1.1 Web服务介绍1.1.1 Apache介绍1.1.2 Nginx-高性能的 Web 服务端 2 Nginx架构与安装2.1 Nginx概述2.1.1 Nginx 功能介绍2.1.2 基础特性2.1.3 Web 服务相关的功能 2.2 Nginx 架构和进程2.2.1 架构2.2.2 Ngnix进程结构 2.3 Nginx 模块介绍2.4

用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群

3.6 Cri-O方式部署K8s集群 注意:基于Kubernetes基础环境 3.6.1 所有节点安装配置cri-o [root@k8s-all ~]# VERSION=1.28[root@k8s-all ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensu

培训第九周(部署k8s基础环境)

一、前期系统环境准备 1、关闭防火墙与selinux  [root@k8s-master ~]# systemctl stop firewalld[root@k8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.servi

k8s 存储(PV、PVC、SC、本地存储、NFS)

存储持久化相关三个概念: PersistentVolume (PV) 是对具体存储资源的描述,比如NFS、Ceph、GlusterFS等,通过PV可以访问到具体的存储资源;PersistentVolumeClaim (PVC) Pod想要使用具体的存储资源需要对接到PVC,PVC里会定义好Pod希望使用存储的属性,通过PVC再去申请合适的存储资源(PV),匹配到合适的资源后PVC和PV会进行绑定

k8s调度(pod亲和、反亲和、污点、容忍度)

pod亲和性 针对对象为Pod,目的是实现,新建Pod和目标Pod调度到一起,在同一个Node上。 示例: apiVersion: v1kind: Podmetadata:name: testpod01labels:app: myapp01env: test1spec:containers:- name: testpod01image: nginx:1.23.2---apiVersio

k8s API资源对象

API资源对象Deployment 最小的资源是pod,deployment是多个pod的集合(多个副本实现高可用、负载均衡等)。 使用yaml文件来配置、部署资源对象。 Deployment YAML示例: vi  ng-deploy.yaml apiVersion: apps/v1kind: Deploymentmetadata:labels:app: myngname: ng-de