一些云原生开源安全工具介绍

news2024/11/27 21:00:03

本博客地址:https://security.blog.csdn.net/article/details/130789465

一、Kubernetes安全监测工具kube-bench

kube-bench是一个用Golang开发的、由Aqua Security发布的自动化Kubernetes基准测试工具,它运行CIS Kubernetes基准中的测试项目。这些测试项目是用YAML语言编写的,方便后续根据CIS基准测试的标准来进行扩展。

互联网安全中心(CIS)是一个全球性的非营利组织,其任务是确定、开发、验证、升级和维持针对网络防御的最佳解决方案。CIS发布了Kubernetes的基准测试,集群管理员可以使用该基准测试来确保集群遵循推荐的安全配置。

kube-bench可以使用kube-bench bin文件直接在节点上运行:

kube-bench node --benchmark cis-1.6
kubectl logs kube-bench-xxxxx

运行kube-bench后,通过查看kube-bench pod的运行日志获取基准测试的汇总结果。需要重点关注的是FAIL项,另外没有完全通过的条目也需要关注,对这些条目进行分析,获知未通过项所带来的风险,根据风险项的影响制定风险缓解计划。

参考文献:https://blog.51cto.com/u_15966109/6171398

二、Kubernetes安全策略配置工具kube-psp-advisor

kube-psp-advisor是一个实用的Kubernetes安全配置工具,通过它可以方便地根据实时运行的Kubernetes环境或者依据用来生成Pod的yaml文件来创建Pod安全策略。

Kubernetes Pod安全策略是一种集群级资源,用于控制Pod的安全规则、限制Pod的访问权限。通过Pod安全策略可以对以下功能和特性进行限制:

● 运行特权容器。
● 容器运行的用户。
● 访问主机进程或网络命名空间。
● 访问主机文件系统。
● Linux功能、Seccomp或SELinux配置文件。

kube-psp-advisor有2个子命令:

kube-psp-advisor inspect:用于检查Kubernetes集群和对Pod声明文件进行检查。inspect指令连接到API Server,扫描给定命名空间或整个集群工作负载的安全上下文,并根据安全上下文生成Pod安全策略;
kube-psp-advisor convert:Convert指令不需要连接API Server即可工作,读取包含具有Pod规范的对象的单个yaml声明文件并基于该文件生成Pod安全策略;

安装和运行kube-psp-advisor:

git clone https://github.com/sysdiglabs/kube-psp-advisor.git
cd kube-psp-advisor && make build
./kube-psp-advisor --namespace=psp-test

kube-psp-advisor运行完成后,会在stdout中生成Pod安全策略配置文件,接下来只需要应用这个Pod安全策略配置文件即可:

./kube-psp-advisor --namespace psp-test > psp-test.yaml && cat psp-test.yaml
kubectl apply -f psp-test.yaml

三、Kubernetes渗透测试工具kube-hunter

前因:Kubernetes的安全建议和安全公告发布在https://kubernetes.io/docs/reference/issues-security/security/,通过订阅安全公告来跟踪Kubernetes中发现的新安全漏洞,在有新的安全隐患报告后,能够及时进行堵漏。为了避免漏掉重要的安全漏洞公告,可以通过定期检查集群是否有任何已知CVE来获知当前环境的漏洞情况。

后果:Aqua开发和维护了开源的kube-hunter工具,可帮助识别Kubernetes集群中的已知安全问题。

安装和运行kube-hunter:

git clone https://github.com/aquasecurity/kube-hunter.git
./kubectl create -f job.yaml
./kubectl get pods

kube-hunter安全漏洞报告中出现的漏洞问题通常来说都是十分紧急的安全问题,需要立即有针对性地修复。

四、系统平台信息扫描和检索工具Osquery

Osquery可以高效地检查操作系统的信息,生成操作系统的数据,通过对这些数据进行分析来对系统安全问题进行分析和监控。

它的具体逻辑是将操作系统中的信息扫描生成关系型数据库表,然后对数据库中保存的操作系统信息进行SQL查询以分析操作系统数据。在Osquery中,SQL table代表操作系统中的一些抽象概念,例如正在运行的进程、加载的内核模块、打开的网络连接、浏览器插件、硬件事件或文件散列值等。

Osquery的安装:

curl -L https://pkg.osquery.io/rpm/GPG | tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
yum-config-manager --enable osquery-s3-rpm
yum install osquery

Osquery的使用:

# 进入使用状态
osqueryi
# 输入查询命令,例如查询所有用户信息
> SELECT * from users;

参考文献:https://blog.csdn.net/UbuntuTouch/article/details/124464826

五、数据脱敏方案ShardingSphere

ShardingSphere是一整套开源的分布式数据库中间件解决方案,它由Sharding-JDBCSharding-ProxySharding-Sidecar这3款相互独立,却又能够混合部署配合使用的产品构成。它们均能够提供标准化的数据分片、分布式事务和分布式治理功能,可适用于如单机JVM和云原生环境等多种应用场景。

数据脱敏模块属于ShardingSphere分布式治理这一核心功能下的子功能模块。它能够对用户输入的SQL进行自动解析,并依据配置好的脱敏规则对SQL进行改写,从而实现对原文数据进行脱敏或加密。并将原文数据及密文数据同时存储到底层数据库,也可以配置只存储脱敏后的数据而忽略原文数据。在用户查询数据时,它又从数据库中取出密文数据,并对其解密,最终将解密后的原始数据返回给用户。

ShardingSphere分布式数据库中间件自动化和透明化了数据脱敏过程,让用户无须关注数据脱敏的实现细节,像使用普通数据那样使用脱敏数据。此外,无论是已在线业务进行脱敏改造,还是新上线业务使用脱敏功能,ShardingSphere都有针对性地提供了一套相对完善的解决方案。

ShardingSphere提供的Encrypt-JDBC和业务代码部署在一起。业务方通过Encrypt-JDBC访问数据库。Encrypt-JDBC实现了所有JDBC标准接口,所以对业务代码不会带来影响,业务代码无须做额外改造即可兼容使用。

通过Encrypt-JDBC接入后,业务代码所有与数据库的交互行为转换为由Encrypt-JDBC来负责处理,在应用层只需要配置好脱敏规则即可。作为业务代码与底层数据库中间的桥梁,通过Encrypt-JDBC可以拦截用户行为,并在数据库交互的过程中嵌入执行流程,改造数据请求行为。

参考文献:https://blog.csdn.net/qq_43843037/article/details/112741161

六、云原生持续交付模型GitOps

GitOps是一种适用于云原生架构的持续交付模型,它在传统的CI/CD模型上针对云原生应用的特点进行了规范及功能性扩展,它的一个重要思想是:基础设施即代码(IaC)。IaC把软件运行的基础环境也进行声明式的定义,包括应用运行所需要的组件,如消息代理、数据库定义、网络定义和监控运维方式定义等。

IaC是把应用程序本身和应用运行所依赖的基础设施通过源代码的方式进行编辑和定义,并存放在Git库中。Git库本身就有代码版本管理的能力,通过将应用程序全部的相关信息都以代码的方式存储在版本库中,实现了基础设施版本化。GitOps通过自动比对当前运行环境的版本与目标定义的运行环境版本之间的差异,采用自动化的方式来纠正差异,以声明式的方式对基础设施进行管理。

GitOps有三条基本的原则:

● 任何能够被描述的内容都必须存储在Git库中,通过检查比较实际环境的状态与代码库上的状态是否一致,来决定如何更新环境。
● 对环境和应用程序的所有操作都是由配置库更新而自动触发的,GitOps的触发机制是Pull模式(相对于Push的概念)。
● 调用Kubernetes的API接口或者控制器应该遵循Operator模式。

GitOps流程如图:

在这里插入图片描述

上图是GitOps从代码提交到应用部署上线的流水线过程,可以看到整个流程都是围绕Git库工作的。Git库有两个,分别是代码库和配置库。

具体的流程是:

● 开发人员将更新的代码推送到Git代码库,CI工具获取更改并最终构建容器镜像;
● Config Updater(配置更新器)检测到有新的镜像产生时,就从存储库中提取新镜像,然后在Git配置库中更新其声明文件;
● Deploy Operator会检测到集群状态未更新(实际运行的状态与配置库中的状态有差别),最终的状态是以Git配置库中的为准;
● 于是GitOps从配置库中提取已更改的配置清单,根据配置清单来执行更新操作,最终将新镜像部署到生产集群中。

七、渗透测试与代码扫描工具ZAP

ZAP的全称是OWASP Zed Attack Proxy,是一款开源的、跨平台的、支持对Web应用程序进行集成渗透测试的工具。主要覆盖了安全性测试里的渗透测试,它通过对系统进行模拟攻击和分析来确定系统是否存在安全漏洞以及存在什么安全漏洞。ZAP以代理的形式来实现渗透性测试,它将自己作为浏览器与应用之间交互的一个中间人,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析和扫描。

ZAP提供了两种扫描模式:Automated Scan(自动扫描)和Manual Explore(手动扫描)。在通常情况下,是将ZAP集成进DevSecOps全流程,在每次有新功能并入时,自动触发编译构建和部署运行,然后基于ZAP对运行的业务进行安全测试。具体的集成方法我在另一篇博客中已经有所提及了:https://security.blog.csdn.net/article/details/130734964

八、软件包扫描工具D-check

Dependency-Check用于识别项目依赖项并检查这些依赖项中是否存在任何已知和公开披露的漏洞。它的核心功能是通过其包含的一系列分析器来探测项目的依赖,收集依赖的各类信息,通过这些信息来确认其CPE(通用平台软件依赖信息),一旦CPE确认,就可以罗列出CVE。收集有关依赖项的信息后,将其与本地的CPE库数据进行对比,如果检查发现扫描的组件存在已知的、易受攻击的漏洞则标识,最后生成报告进行展示。

Dependency-Check提供命令行界面、Maven插件、Ant任务和Jenkins插件,可以嵌入流水线中执行。核心引擎包含一系列分析器,用于检查项目依赖项、收集有关依赖项的信息片段(称为证据)。然后使用证据来识别给定的依赖项,在报告中列出相关的常见漏洞CVE条目。

九、开源API网关Kong

Kong是云原生社区最为主流的开源网关组件之一,它是基于OpenResty编写的高可用、易扩展的开源API网关项目。Kong提供了易于使用的RESTful API来操作和配置API管理系统,社区还有与Kong相配合的Konga前端项目,提升易用性。Kong在可扩展能力方面也十分突出,它可以水平扩展多个Kong服务实例,通过前置的负载均衡配置把请求均匀地分发到各服务实例,来应对大并发情况下的网络请求。

Kong网关工作模型如图:

在这里插入图片描述

原生的Kong主要有三个组件:

● Kong Server:基于Nginx的服务器,用来接收API请求。
● Apache Cassandra/PostgreSQL:用来存储操作数据,在测试环境,也可以不用数据库存储,可采用将配置存储在文件系统中的方式。
● Kong Dashboard:官方推荐UI管理工具,也可以使用开源的Konga平台。

Kong的一大优势是支持采用插件机制来进行功能定制,原生的Kong本身已经具备了安全、限流、日志、认证、数据映射等基础插件能力,同时也可以很方便地通过Lua脚本定制自己的插件。插件可以以动态插拔的模式,实现Kong网关能力的扩展。Kong社区提供了多种认证插件,如下所示:

插件名功能说明
基本认证使用用户名和密码保护向服务或路由添加基本身份验证。该插件检查Proxy-AuthorizationAuthorization字段中的凭据来进行基本认证
HMAC认证将HMAC签名认证添加到服务或路由以建立传入请求。该插件验证在Proxy-Authorization或Authorization字段中发送的数字签名
JWT认证验证包含HS256或RS256签名的JSON Web令牌(符合RFC 7519) 的请求。客户端拥有JWT凭据(公钥和私),使用这些凭据对其JWT进行签名
密钥认证将密钥身份验证添加到请求体中,服务消费方在查询字符串参数或字段中添加密钥来验证请求。其中API密钥是以加密格式存储在API网关数据库中
LDAP认证将LDAP绑定身份验证添加到具有用户名和密码的请求体中,该插件通过检查Proxy-Authori-zation和Authorization字段中的凭据来进行认证
OAuh 2.0认证添加Authorization Code Grant、Client Credentials、Implicit Grant信息并完成OAuth认证
会话管理插件Kong会话插件用于管理通过Kong API网关代理的API浏览器会话,为会话数据的存储、加密、更新、到期及发送浏览器cookie提供配置和管理

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

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

相关文章

在 uniapp 中通过 Intent 的方式启动其他APP并且传参

文章目录 前言一、其他软件调用文档中的安卓原生代码二、在uniAPP中实现上述方式三、总结四、感谢 前言 由于业务需求需要,我方研发的安卓APP需要调用其他安卓APP,并且将保存返回的文件存储路径进行读取后操作。对方软件公司提供了对接文档和一个测试调…

docker安装华为gaussdb数据库

docker安装gaussdb docker镜像: http://docker.hub.com/ 这里我们使用docker hub镜像下载,该镜像下载较慢,可能有时访问不同,可以使用阿里云镜像下载,阿里云镜像配置参考《docker国内阿里云镜像加速》 拉取镜像 下载…

程序翻译的过程,linux环境下处理,生成 .i、.s、.o 文件(预处理、编译、汇编、链接)

1. 程序翻译的过程有四个步骤,预处理->编译->汇编->链接。 那么每个步骤是干什么? 预处理阶段:处理-> 头文件、宏替换、条件编译等等,我用 linux 环境查看一下,如下: 首先写一个简单的 .c 文…

【iptables 防火墙设置】

目录 一、iptables概述1、netfilter/iptables 关系 二、四表五链2.1、四表:2.2、五链: 三、规则链之间的匹配顺序四、规则链内的匹配顺序五、iptables的安装配置5.1、安装iptables5.2、配置iptables1、常用的管理选项2、常用的参数3、常用的控制类型4、iptables语法…

ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD

ThinkPHP6 模型层的模型属性,表映射关系,以及模型层的CRUD及如何在控制层中使用模型层 1. model 模型层的默认映射规则 模型,即mvc模式中的model层,model层用来对接数据库,操作数据库的增删改查。 在tp6中&#xff…

springboot整合sharding-jdbc实现分库分表详解

目录 一、为什么需要分库分表 1.1 分库分表的优势 二、分库分表基本概念 2.1 垂直分表 2.2 水平分表 2.3 垂直分库 2.4 水平分库 三、分库分表带来的问题 3.1 分布式事务问题 3.2 跨节点关联查询问题 3.3 跨节点分页、排序问题 3.4 主键避重问题 四、分库分表常用…

Java --- 云尚办公之菜单管理模块

一、菜单管理 数据库表: CREATE TABLE sys_menu (id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 编号,parent_id BIGINT(20) NOT NULL DEFAULT 0 COMMENT 所属上级,name VARCHAR(20) NOT NULL DEFAULT COMMENT 名称,type TINYINT(3) NOT NULL DEFAULT 0 COMMEN…

LSTM预测汇率涨跌分析

前言 本文主要是采用lstm对汇率涨跌进行预测,是一个二分类的预测问题。 步骤解析 数据构造 原始数据是单变量数据 import pandas as pdfile_path r"./huilv.csv" data pd.read_csv(file_path, usecols[1],encodinggbk) data[level] -1 美元 l…

打造高效接口自动化框架,YAML测试用例封装技巧大揭秘!

目录 前言: 一、框架介绍 本框架包含两个部分: 本框架的构建目标是: 二、框架目录结构 三、规范YAML测试用例封装步骤 四、框架使用 五、总结 前言: 本文介绍了一个基于Python和PyTest的接口自动化框架封装项目实战&#…

最佳实践,高效编写Web自动化测试强制交互方法封装技巧

目录 前言: 一、Web自动化测试的基本原理 二、封装强制交互方法 1、输入框强制交互 2、其他强制交互 三、封装基础类方法 四、总结 前言: Web自动化测试是现代软件开发中必不可少的部分。Web自动化测试可以帮助测试人员快速地验证页面功能并发现潜…

Fiddler 抓包工具下载安装基本使用(详)

在做软件测试或者Bug定位的时候会用到一些抓包工具,当然抓包工具还要一些其他用途可以做一些API的抓取,那么本篇内容就来讲 Fiddler 抓包工具的下载安装以及如何来实际的应用。讲了这些可能有的读者还不知道这个"Fiddler"怎么读呢?…

详解flutter刷新流程,让你的应用更流畅

本文已授权公众号【缦图技术团队】发布 详解flutter刷新流程,让你的应用更流畅 一、概述 Flutter 是谷歌推出的高性能、跨端UI框架,可以通过一套代码,支持 iOS、Android、Windows/MAC/Linux 等多个平台,且能达到原生性能。Flutte…

pthread_getspecific和pthread_setspecific详解

写在前面 在Linux系统中使用C/C进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来…

【CV】Yolov8:ultralytics目标检测、关键点检测、语义分割

note Yolov8提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求骨干网络和 Neck 部分可能参…

KVM(一)Linux部署KVM及新建虚拟机

目录 一、准备工作 1.1 防火墙、SElinux 二、安装KVM 2.1 yum源 2.2 安装工具包 2.3 安装KVM组件 2.4 查看磁盘/新建目录 2.5 安装Linux GUI可视化界面 三、KVM桌面版新建虚拟机 3.1 挂载目录 3.2 新建raw/qcow2文件 3.3 新建虚拟机 3.4 KVM命令行新建虚拟机 一、…

Linux rootfs

前言 通过《initrd&init进程》我们知道rootfs 是文件系统的根目录,其包含了操作系统所需的所有文件和目录,包括程序、库文件、配置文件、设备文件等,它是系统启动时必须加载的文件系统之一。当系统启动后,内核会首先挂载 roo…

本地Jrebel 许可服务器搭建

一、下载 下载 JrebelLicenseServer.zip 二、解压 解压后进入 bin 目录 三、服务安装|启动|停止|删除|... 安装服务:JrebelLicenseServer.bat install启动服务:JrebelLicenseServer.bat start停止服务:JrebelLicenseServer.bat stop删除服…

【Three.js】第一、二章 入门指南和基础知识

01.介绍 Three.js 非常庞大,你可以用它做无数的事情。 在第一章中,我们将学习所有基础知识,例如创建第一个场景、渲染、添加对象、选择正确的材料、添加纹理、为所有内容制作动画,甚至将其放到网上。有些人可能会觉得这部分有点…

如何轻松掌握接口测试——POST请求和COOKIE使用技巧?

目录 引言 请求方法: POST请求方法:添加资源(对服务端已存在的资源也可以做修改和删除操作) 实战练习 实战练习2 COOKIE: Status Code:协议状态码 接口文档 结语 引言 对于初学者或者没有接口测试…

[笔记]渗透测试工具Burpsuit《一》Burpsuit介绍

文章目录 前言一、安装配置1.1 环境1.2 安装过程1.3 科技过程 二、常用功能2.1 Manual penetration testing features2.2 Advanced/custom automated attacks2.3 Automated scanning for vulnerabilities2.4 Productivity tools2.5 Extensions 三、拓展功能 前言 Burp Suite(b…