以Docker+K8s为代表的容器技术得到了越来越广泛的应用,从安全攻防的角度,攻击者已经不再满足于容器逃逸,进而攻击整个容器编排平台,如果可以拿下集群管理员权限,其效果不亚于域控失陷。
在云原生安全攻防的场景下,甲乙攻防双方对于安全工具的关注点也不一样。本文试图收集一些开源的云原生安全工具,带你一起去了解云原生安全。
1、云原生攻防靶场
Metarget 是一个脆弱基础设施自动化构建框架,主要用于快速、自动化搭建从简单到复杂的脆弱云原生场景。
github项目地址:
http://github.com/Metarget/metarget
2、容器漏洞利用工具
CDK 是一个开源的容器渗透工具包,旨在在不依赖任何操作系统的情况下在不同的精简容器中提供稳定的利用。它带有有用的网络工具和许多强大的 PoCs/EXPs,可以帮助你轻松地逃离容器并接管 K8s 集群。
github项目地址:
http://github.com/cdk-team/CDK
3、容器逃逸检测工具
用于检测Docker 容器逃逸方式,目前支持15种容易逃逸场景的检测。
http://github.com/teamssix/container-escape-check
4、容器安全检测工具
容器安全扫描工具,支持检测容器/镜像的恶意文件、弱口令、漏洞后门、逃逸风险等功能。
github项目地址:
http://github.com/chaitin/veinmind-tools
5、容器漏洞分析工具
Clair 是一个容器漏洞分析服务,用于对容器镜像中的漏洞进行静态分析。
github项目地址:
http://github.com/quay/clair
6、容器安全扫描
Trivy 是一个全面的多功能安全扫描器,支持在容器镜像、Kubernetes、代码存储库、AWS中查找漏洞、错误配置、敏感信息和密钥、SBOM等。
github项目地址:
http://github.com/aquasecurity/trivy
7、容器镜像扫描
Syft 用于从容器镜像生成SBOM,Grype 用于容器镜像扫描,两者通常一起使用。
github项目地址:
http://github.com/anchore/grype
github项目地址:
http://github.com/anchore/syft
8、K8S漏洞扫描
kube-hunter 寻找 Kubernetes 集群中的安全漏洞。
github项目地址:
http://github.com/aquasecurity/kube-hunter
9、K8S基线核查
kube-bench 是一种工具,可通过运行CIS Kubernetes Benchmark中记录的检查来检查 Kubernetes 是否已安全部署。
github项目地址:
http://github.com/aquasecurity/kube-bench
10、云原生安全平台
NeuVector 是唯一提供完整容器安全性的 kubernetes 原生容器安全平台。
github项目地址:
http://github.com/neuvector/neuvector
ArrayList的实现原理就是大学数据结构书本中的动态数组原理,初始化一个Object数组,然后对Object数组进行插入,扩容,查找,删除等操作。所以可以看出java引用类型所占内存大小是一样的,Object数组类似于c语言中的void*指针数组,每个指针在64位机器上都占8字节,在hotspotjvm中java引用类型也是占8字节。所以ArrayList无法存放基本类型,只能存放引用类型。以下分析ArrayList最基础,最常用的操作。首先看ArrayList类关系图Collection接口继承Iterable接口,所以所有实现了Collection接口的类都支持foreach遍历,List接口继承Collection接口,AbstractCollection接口实现了Collection接口,AbstractList继承AbstractCollection,提供了一些基础操作,如果我们自定义自己的List可以扩展AbstractList抽象类,ArrayList继承AbstractList,并且实现了List接口。这里再引出一个问题,为啥AbstractList实现了Lis
效果虽然PPT可以绘制大多数的图像,但对于这类图像绘制,用PPT则会有些吃力,而在matlab中则能够比较方便的解决,源码先放源码,后面分析。[x,y]=meshgrid(1:0.1:10); z=peaks(91); figure(1); surf(x,y,z); colorbar figure(2); pcolor(x,y,z); colorbar复制代码分析meshgrid:生成网格矩阵。 peaks:本质是一个二元高斯分布的概率密度函数,函数表达式为: surf:生成三维曲面图 pcolor:生成二维热力图 colorbar:生成颜色条 拓展: surfc:生成三维曲面图(带投影线)颜色调节matlab的figure窗口中自带了很多属性的条件方式。 在这里可以调节成图示颜色。 更多拓展看到2019年美赛E题优秀论文有这图: 可以尝试更改函数与配色进行模仿。
【GiantPandaCV导语】针对DeepfakeVideo检测任务上的时空不一致问题,提出了三种模块对时间信息、空间信息、时间差异进行建模,能够灵活地即插即用到2DCNN中。 1前言在本次工作中,我们将时空不一致学习引入到DeepfakeVideo检测任务上。我们分别提出了三种模块。SpatialInconsistencyModule(SIM)TemporalInconsistencyModule(TIM)InformationSupplementModule(ISM)具体来说,我们在TIM模块中,利用相邻视频帧在水平,垂直方向时间差异来进行建模。ISM模块则分别利用TIM模块的时间信息,SIM的空间信息,建立更全面的时空表示。上述这三个模块构成的STILBlock是一个灵活的插件模块,可以灵活地插入到2dCNN中。仓库地址:https://github.com/Holmes-GU/MM-2021(目前暂时是空的,作者后续应该会更新)论文地址:http://arxiv.org/pdf/2109.01860v12概览我们将Deepfake视频检测视为一种二分类问题,给定一段输入视频序
如何将20GB的CSV文件放入16GB的RAM中。如果你对Pandas有一些经验,并且你知道它最大的问题——它不容易扩展。有解决办法吗?是的-DaskDataFrames。大多数DaskAPI与Pandas相同,但是Dask可以在所有CPU内核上并行运行。它甚至可以在集群上运行,但这是另一个话题。今天你将看到Dask在处理20GBCSV文件时比Pandas快多少。运行时值将因PC而异,所以我们将比较相对值。郑重声明,我使用的是MBP16”8核i9,16GB内存。本文的结构如下:数据集生成处理单个CSV文件处理多个CSV文件结论数据集生成我们可以在线下载数据集,但这不是本文的重点。我们只对数据集大小感兴趣,而不是里面的东西。因此,我们将创建一个有6列的虚拟数据集。第一列是一个时间戳——以一秒的间隔采样的整个年份,其他5列是随机整数值。为了让事情更复杂,我们将创建20个文件,从2000年到2020年,每年一个。在开始之前,请确保在笔记本所在的位置创建一个数据文件夹。下面是创建CSV文件的代码片段:importnumpyasnp importpandasaspd importdask.dat
在上一篇文章中,我们详细的介绍了Java类文件结构,那么这些Class文件是如何被加载到内存,由虚拟机来直接使用的呢?这就是本篇博客将要介绍的——类加载过程。1、类的生命周期 类从被加载到虚拟机内存开始,到卸载出内存为止,其声明周期流程如下: 上图中红色的5个部分(加载、验证、准备、初始化、卸载)顺序是确定的,也就是说,类的加载过程必须按照这种顺序按部就班的开始。这里的“开始”不是按部就班的“进行”或者“完成”,因为这些阶段通常是互相交叉混合的进行的,通常会在一个阶段执行过程中调用另一个阶段。2、加载 “加载”阶段是“类加载”生命周期的第一个阶段。在加载阶段,虚拟机要完成下面三件事: ①、通过一个类的全限定名来获取定义此类的二进制字节流。 ②、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 ③、在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。 PS:类的全限定名可以理解为这个类存放的绝对路径。方法区是JDK1.7以前定义的运行时数据区,而在JDK1.8以后改为元数据区(Metaspace),主要用于存
1.EXPLAIN简介使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤通过EXPLAIN,我们可以分析出以下结果:表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询➤使用方式如下:EXPLAIN+SQL语句EXPLAINSELECT*FROMt1复制执行计划包含的信息 2.执行计划各字段含义2.1idselect查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 id的结果共有3中情况id相同,执行顺序由上至下 [总结]加载表的顺序如上图table列所示:t1t3t2 id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行 id相同不同,同时存在 如上图所示,在id为1时,table显示的是<derived2>,这里指的是指向id为2的表,即t3表的衍生表。2.2select_type常见和常用的值有如下几种: 分别用来表示查询的类型,主要是用于区别普通查询、联合查询、子查询
在做前端界面开发的时候,遇到需要改变颜色的需求,就需要使用颜色选择器。 针对这个问题,第一想法,自然是H5提供了inputcolor,可以实现。但不出意外的,IE并不支持。而且,chrome的实现方式和firefox也不太一样,见下图: 左图是chrome的,浏览器自身实现的一个颜色选择器控件;右图是firefox的,引入的是操作系统自带的颜色选择器控件。 鉴于这些差异性,就很有必要实现一个统一的颜色选择器组件,譬如我们来实现一个类似chrome浏览器自带的这种选择器。 要做这个组件,首先需要了解的一个知识点,就是颜色模型。 颜色模型 我们前端开发,最常见的颜色模型就是RGB,即红绿蓝三基色模型,而前端浏览器能支持颜色显示的颜色模型只有两种:RGB和HSL。 其中,RGB模型是以三色的值在0-255以内的范围内,混合成一种颜色,对机器较友好,但并不太适合人直观的进行颜色选择。所以,通常的颜色选择器一般会使用另外两种更面向视觉感知的模型:HSV和HSL。关于颜色模型的详细知识,可见颜色模型的基础知识。 而chrome浏览器自带的颜色选择器,就是基于HSV的。 HSV与HSL的区别 HS
importos fromPILimportImage fromreportlab.pdfgenimportcanvas defimage_resize(img,width,height): """ 图片缩放 :paramimg:图片路径 :paramwidth:宽 :paramheight:高 :return:宽高 """ image=Image.open(img) image.resize((width,height),Image.ANTIALIAS).save(img,quality=95,dpi=(72,72)) returnwidth,height defimage_to_pdf(img,pdf_path=None,resize=True): """ 图片转PDF :paramimg:图片路径 :parampdf_path:生成的PDF路径 :paramresize:是否缩放图片至A4大小 :return:None """ pix_x,pix_y=595,842#分辨率为72像素时的A4纸大小 ifnotpdf_path: pdf_path=f'{os.path.s
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7572174.html 前言 这里相信大部分玩家之前现在都应该有过使用定时器的时候或者需求,例如什么定时发送邮件通知,定时筛选取消客户下单未支付的订单,定时数据备份或者归档清洗什么的诸如此类的需求,都是定时的作用的地方,类似比如:windows的计划任务、数据库的计划任务都是同样体现,那么相关于这方面的轮子或者发动机就孕育而生了,也有一直一来没怎么人使用的微软框架自带5种Timer系列等等...... 额,关于今天要说的这个定时器框架,相信无论是java还是.net开发者都肯定听说过了,当然这个定时器有些年生了是个老字号了并不表示它就真的老了哦,去github:https://github.com/quartznet/quartznet看了才知道,虽然是移植过来的但是作者是一个人在维护呀,还很积极在commit和解答issues,这里还是佩服一下作者的勇气和那份责任,顺手Star一下加加油,而且最新的3.x也正在开发基于.net标准的做新的nugetpackagehttps://www
乱码的问题比较常见,确保各地方的编码格式均统一是保证不出现乱码的必要条件,但还是常会有编码都统一了仍然出现乱码的情况。 第一步: 确认JSP页面头部是否有: <%@pagecontentType="text/html;charset=UTF-8"%>复制 第二步: 在表单不多的情况的可以偷懒的方式考虑: Stringparam=newString(request.getParameter("param").getBytes("ISO-8859-1"),"UTF-8");复制 如果表单太多,建议做统一的转码处理,添加过滤器: 首先,添加一个filter类 packagecom.test.commons.work; importjava.io.IOException; importjavax.servlet.Filter; importjavax.servlet.FilterChain; importjavax.servlet.FilterConfig; importjavax.servlet.ServletExcep
人力资源管理系统测试功能(最后阶段) 登录网址:http://148.70.99.41:8080/hrmsys/index.jsp(登录账户已发邮件) 一、登录界面及验证码测试: 测试过程:测试验证码是否能够正常刷新,以及错误输入验证码时,测试是否报错 测试结果:验证码正常刷新,错误输入及时报错,正常输入用户名,密码及验证码后成功登录,登录首页: 二、人力资源管理功能测试 由于时间仓促,本系统只实现了以下功能: 以下将分别测试其主要功能的实现情况: 1、部门管理: (1)信息管理: (2)职位管理: 2、奖惩管理功能: 2、薪资管理功能: (1)员工工资录入功能
1. 强引用 强引用就是指在程序代码之中普遍存在的,指创建一个对象并把这个对象赋给一个引用变量,并没有像其它三种引用一样有一个就具体的类来描述。对于强引用对象,即使内存不足,JVM宁愿抛出OutOfMemoryError(OOM)错误也不会回收这种对象。例如: Objectobject=newObject();Stringstr="hello"; 如果想中断强引用和某个对象之间的关联,可以显示地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。比如各种集合的移除方法。 2.软引用 SoftReference<People>aSoftRef=newSoftReference<People>(obj) 软引用是用来描述一些还有用但并非必需的对象。只使用SoftReference类修饰的对象就是一个软引用对象(软可到达对象),如果一个对象只具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。 常常用于缓存操作,把某个对象标记为软引用
与JS对比 优点: 1ts是js的一个超集,兼容js,可以载入JS代码然后运行。 2 加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销。 3 通过类型注解提供编译时的静态类型检查。 4 ts最大的特点就是类型化,因此才叫做TypeScript。比起弱类型的js,类型化的TypeScript显得更加容易维护 语法特点: 1.声明变量类型 通过var关键字变量名后面+冒号+数据类型来指定复制 varname:string="bob";复制 varlist:number[]=[1,2,3]; varname:string[]=["阿龙","阿猫","阿狗"];复制 vararr:Array=[1,2,3,"a","b","c"];//任意类型数组复制 varlist:any[]=[1,true,"free"];复制 2.enum enumColor{ Red, //枚举元素列表 Green, Blue }; varc:Color=Color.Green;复制 3.函数 可选参数:在参数名后面,冒
遇到的问题 1、pymysql.err.ProgrammingError:execute()first 2、File"D:\xxx\python3.8\lib\site-packages\pymysql\connections.py",line729,in_read_bytes self._sock.settimeout(self._read_timeout) AttributeError:'NoneType'objecthasnoattribute'settimeout' 原因 封装的pymysql方法,是针对单线程访问,查询等查找,并设置共享连接和游标,多个线程创建数据库连接时,就会出现问题 importpymysql defconnect(self): self.db=pymysql.connect(**self.sql_config) self.cursor=self.db.cursor()复制 封装的单线程的pymysql的游标,设置为类的实例变量,可以共享,在其它线程已经执行了关闭,所以再次关闭时,就会出现问题,提示已经关闭 解决 使用支持多线程的D
异地部署(地理分布式) 完成了上述架构建设之后,我们的系统是否就已经足够强大了呢?答案当然是否定的哈,优化是无极限的。Web系统虽然表面上看,似乎比较强大了,但是给予用户的体验却不一定是最好的。因为东北的同学,访问深圳的一个网站服务,他还是会感到一些网络距离上的慢。这个时候,我们就需要做异地部署,让Web系统离用户更近。 一、核心集中与节点分散 有玩过大型网游的同学都会知道,网游是有很多个区的,一般都是按照地域来分,例如广东专区,北京专区。如果一个在广东的玩家,去北京专区玩,那么他会感觉明显比在广东专区卡。实际上,这些大区的名称就已经说明了,它的服务器所在地,所以,广东的玩家去连接地处北京的服务器,网络当然会比较慢。 当一个系统和服务足够大的时候,就必须开始考虑异地部署的问题了。让你的服务,尽可能离用户更近。我们前面已经提到了Web的静态资源,可以存放在CDN上,然后通过DNS/GSLB的方式,让静态资源的分散“全国各地”。但是,CDN只解决的静态资源的问题,没有解决后端庞大的系统服务还只集中在某个固定城市的问题。 这个时候,异地部署就开始了。异地部署一般遵循:核心集中,节点分散。
centos最小化安装没有ifconfig命令,可以使用 ipaddr 查看网络信息,习惯ifconfig的用户,则使用 yum-yinstallnet-tools 即可; 如果yum不能安装,就需要修改配置文件: 修改配置文件: vi/etc/sysconfig/network-scripts/ifcfg-eth0 cd/etc/sysconfig/network-scripts cd/etc/sysconfig/network-scripts viifcfg-ens33这里可能你的文件名不是这个,但是找前面是ifcfg-ens的就是了 将文件里的ONBOOT=no,改为ONBOOT=yes,复制 在linux下输入sshlocalhost如果出现这句话说明你的虚拟机没有安装ssh服务 ssh:connecttohostlocalhostport22:Connectionrefused 输入如下命令进行安装 yuminstallopenssh-server复制
Javascript多线程引擎(八) Javascript多线程项目,做到现在已经快3个月了(加上前期准备编译原理和必要的文档),该项目(js-engine)已经快进入尾声了,现在该引擎的特性包括如下: 1.全C语言代码(适合嵌入式) 2.没有正则表达式(不能算是好的特性,以后有机会可以添加) 3.没有Unicon支持(也不是好特性,只是支持Ascii) 4.没有lablewith语句了(相信大家在Javascript编程中用这两个特性把) 5.解析器报错(可以调试语法是否发生错误,具体的参数在JsParser.h的几个宏) 6.内置了几个基本类型[Object,Function,String,Boolean,Number,Array,Thread,Global] 7.支持异常系统(该特性可以大大的减少return之后,对函数判断的语句^_^,并且支持Stack打印,保证你能追踪到错误,最后也用来释放非托管资源) 8.支持多线程:synchronzied关键字,可
目录查询优化器什么是查询优化器查询优化器的两种优化方式CBO是如何统计代价的能调整的代价模型的参数有哪些代价模型如何计算总结使用性能分析工具定位SQL执行慢数据库服务器的优化步骤使用慢查询定位执行慢的SQL如何使用EXPLAIN查看执行计划使用SHOWPROFILE查看SQL的具体执行成本总结数据库主从同步的作用为什么需要主从同步主从同步的原理是怎样的如何解决主从同步的数据一致性问题方法1:异步复制方法2:半同步复制方法3:组复制总结数据库没有备份,没有使用Binlog的情况下,如何恢复数据InnoDB存储引擎的表空间如果.ibd文件损坏了,数据如何找回InnoDB文件的损坏与恢复实例生成InnoDB数据表模拟损坏.ibd文件备份数据表删除旧表,改名新表关闭innodb_force_recovery,并重启数据库总结SQL注入SQL注入的原理一个SQL注入的实例搭建sqli-labs注入环境第一个SQL注入挑战判断查询语句的字段数获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中所有数据表查询heros数据表中所有字段名称使用SQLmap工具进行SQL注入检
首先使用vue-cli把环境搭建好。 介绍一下应用的界面。 App.vue根组件,就是整个应用的最外层 Toolbar.vue:最左边红色的区域,包括三个按钮,添加、收藏、删除。 NoteList.vue:中间蓝色区域,笔记列表。 Editor.vue:最右边紫色区域,编辑区域。 第一步安装vuex cnpminstallvuex-g--save-dev复制 Vuex是什么? Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到Vue的官方调试工具 devtoolsextension,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能。 为什么要用到Vuex? 以下是一个表示“单向数据流”理念的极简示意: 但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏: 多个视图依赖于同一状态。 来自不同视图的行为需要变更同一状态。 对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间
Djangorestframework应用解答 Django项目创建 #django-adminstartprojectassets//创建项目 #cdassets #pythonmanage.pystartapprestfm//创建应用app复制 pip安装对应的framework包 支持更好的前端交互,因此采用swagger #pipinstalldjango-rest-swagger==2.1.2 #pipinstalldjangorestframework==3.7.3复制 setting中配置加入framework应用 INSTALLED_APPS=[ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'assets_control', 'rest_framework', ]复制