一种云原生应用的安全评估方法与流程

文档序号:33400982发布日期:2023-03-08 16:53阅读:40来源:国知局
一种云原生应用的安全评估方法与流程

1.本发明涉及云原生技术领域,尤其涉及一种云原生应用的安全评估方法。


背景技术:

2.对云原生应用的安全加固涉及到对应用运行平台、应用所依赖的中间件、应用架构本身以及应用开发流程及应用安全审计等方面的综合性安全加固。
3.在实际应用中,需要对云原生应用的安全性进行评估。目前,领域内主要采用kube-bench和kube-scan对云原生应用进行安全性评估。这两种方式的不足在于缺乏对云原生应用的综合性安全评估能力,只是对云原生应用的某个领域进行安全性评估。
4.具体的,kube-bench是互联网安全中心(cis)发布的kubernetes的基准测试项目,集群管理员可以使用该基准测试来确保集群遵循推荐的安全配置。kube-bench基准测试文档涵盖了包括集群节点、api-server、controller-manager、rbac、scheduler、工作节点配置、kubelet配置、网络策略配置在内的完整kubernetes安全实践。运行kube-bench后,通过查看kube-bench pod的运行日志获取基准测试的汇总结果。其优点是测试项目是用ymal文件编写的,方便后续根据cis基准测试的标准来进行扩展,其不足在于仅能对云原生应用平台层进行安全评估。
5.在kubernetes中使用声明式api来定义工作负载,因为工作负载的灵活多变,这种定义的随意性是很大的,很容易因为复制粘贴或手工运维修改等原因给pod分配了不需要的特权,造成安全隐患。kube-scan支持对工作负载描述的安全性进行打分,从最安全的0分,到最危险的10分。kube-scan就是针对这种情况而出现的一个工具,它依据内置的几十个检查项目对集群进行动态安全检查。kube-scan所使用的计分项和算法,被称为kubernetes common configuration scoring system(kccss),是一套仿造cvss的kubernetes配置评分系统,它从完整性、可用性和保密性三个方面的威胁来评价安全漏洞。其仅能针对应用负载(pod)的安全防护配置进行评估,且kube-scan当前在启动时会扫描集群,并将每24小时重新扫描一次,为了获得最新的风险评分(例如在安装新应用后),每次需要重新启动kube-scan pod。
6.因此,如何提供一种更加完整、高效的云原生应用安全评估方法,成为亟待解决的技术问题。


技术实现要素:

7.有鉴于此,为了克服现有技术的不足,本发明提供一种云原生应用的安全评估方法。
8.本发明提供一种云原生应用的安全评估方法,包括:
9.步骤s1:从第一维度、第二维度、第三维度、第四维度和第五维度对云原生应用进行安全评估,获得每个维度对应的评估分数;
10.步骤s2:根据每个维度对应的评估分数及每个维度对应的权重值,采用加权求和
法计算云原生应用的评估总分;
11.步骤s3:根据评估总分对云原生应用的安全性进行判断。
12.进一步地,本发明云原生应用的安全评估方法的步骤s1包括:
13.步骤s11:从每个维度的多个子领域对云原生应用进行安全评估,获得每个子领域对应的评估分数;
14.步骤s12:获取每个子领域对应的权重值;
15.步骤s13:采用加权求和法根据每个子领域对应的评估分数及对应的权重值计算每个维度对应的评估分数。
16.进一步地,本发明云原生应用的安全评估方法的步骤s11包括:
17.步骤s111:根据每个子领域中的预定义检测项进行对应的安全检测;
18.步骤s112:根据每个子领域中预定义检测项的总数以及通过检测的预定义检测项的数量,计算所述子领域通过检测的预定义检测项的百分比;
19.步骤s113:将所述百分比与100的乘积作为每个子领域对应的评估分数。
20.进一步地,本发明云原生应用的安全评估方法中,第一维度为云原生平台安全维度,包括底层操作系统安全、容器层安全和kubernetes安全子领域,其中,底层操作系统安全子领域的预定义检测项包括底层linux操作系统是否禁用root用户登录、是否启用密码复杂度策略、是否启用密码强制更新策略、是否为关键文件启用suid和sgid权限、是否启用强制访问控制以及是否开启操作系统级防火墙;容器层安全子领域的预定义检测项包括容器运行时是否以非root身份运行、容器镜像仓库是否启用漏洞扫描、容器构建服务器是否采用堡垒机登录以及容器基础镜像是否采用精简策略;kubernetes安全子领域的预定义检测项包括kubernetes中的关键组件是否启用ca证书认证,kube-apiserver是否禁用匿名认证和调试模式,kube-apiserver是否开启rbac认证、alwayspullimages、podsecuritypolicy以及apiserver审计,kubelet程序是否禁用匿名访问、kubelet程序是否配置证书轮换、kubelet程序是否配置只允许kube-apiserver访问,etcd程序是否限制能够访问etcd服务的节点、etcd程序是否对存入etcd的数据配置数据加密机制。
21.进一步地,本发明云原生应用的安全评估方法中,kubernetes中的关键组件包括apiserver、etcd、controller-manager以及kube-scheduler组件。
22.进一步地,本发明云原生应用的安全评估方法中,第二维度为应用架构安全维度,包括微服务及web层安全和微服务通信安全子领域,其中,微服务及web层安全子领域的预定义检测项包括:是否存在跨站脚本攻击漏洞、是否存在跨站请求伪造防护漏洞、是否存在xml外部实体攻击漏洞、以及是否存在sql注入漏洞;微服务通信安全子领域的预定义检测项包括微服务间的调用流量是否启用tls加密、微服务是否启用限流机制、微服务否启用网络策略以及微服务是否利用服务网格进行流量可视化和流量监控。
23.进一步地,本发明云原生应用的安全评估方法中,第三维度为应用中间件安全维度,包括基础中间件和微服务中间件安全子领域,其中,基础中间件安全子领域的预定义检测项包括redis是否启用登录认证、redis是否启用访问限制、redis和mq服务是否使用启用流量加密以及redis是否禁用特权访问接口;微服务中间件安全子领域的预定义检测项包括配置中心是否启用配置加密、配置中心是否启用tls流量加密、注册中心是否启用tls流量加密以及配置中心和注册中心是否启用访问限制。
24.进一步地,本发明云原生应用的安全评估方法中,第四维度为应用生态安全维度,包括引用外部服务和对外发布服务子领域,其中,引用外部服务子领域的预定义检测项包括应用是否引用外部服务、是否检测外部服务密钥的合法性、是否采用外部服务调用审计以及是否启用外部服务调用限流机制;对外发布服务子领域的预定义检测项包括是否对外发布服务、是否启用访问限制、是否启用访问审计、是否启用和记录访问日志、是否对外部客户的访问进行限流以及是否采用流量加密。
25.进一步地,本发明云原生应用的安全评估方法中,第五维度为应用开发和生命周期管理维度,包括应用开发和应用生命周期安全管理子领域,其中应用开发安全子领域的预定义检测项包括持续集成阶段的应用开发流程中是否启用安全扫描流水线、安全扫描流水线中是否启用静态代码扫描、安全扫描流水线中是否启用镜像安全扫描;应用生命周期安全管理子领域的预定义检测项包括持续交付阶段是否启用持续交付安全扫描流水线、持续交付安全扫描流水线中是否启用静态应用安全测试以及持续交付安全扫描流水线中是否启用动态应用安全测试。
26.最后,本发明还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
27.本发明云原生应用的安全评估方法,具有以下有益效果:
28.1.通过多个维度以及每个维度内的多个子领域对云原生应用的安全性进行评价,实现对应用安全性更加全面和综合的评价。
29.2.有利于实现应用安全性评价更加综合的横向比较,使开发人员可以根据云原生应用安全性评分较低的项,针对性地进行补充加固,有助与提高云原生应用整体的安全能力。
附图说明
30.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
31.图1为本发明示例性第一实施例的云原生应用的安全评估方法的流程图。
32.图2为本发明示例性第二实施例的云原生应用的安全评估方法的流程图。
33.图3为本发明示例性第三实施例的云原生应用的安全评估方法的流程图。
具体实施方式
34.下面结合附图对本发明实施例进行详细描述。
35.需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
36.需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个
方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
37.以下各实施例中涉及的名词解释如下:
38.云原生应用:采用申明式定义、并通过容器化部署、运行在kubernetes平台上的应用,在开发模式上采用devops流程。
39.云原生平台:符合cncf(cloud native computing foundation,云原生计算组织)标准的集群化容器平台,常见的技术特征包括:oci(open container interface,开放容器接口标准)、cni(container network interface,容器网络接口)、csi(container storage interface,容器存储接口)和cri(container runtime interface,容器运行时接口);kubernetes是云原生平台层的事实标准实现。
40.kubernetes:kubernetes是cncf主推的主流容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。
41.suid权限:是linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有suid权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。
42.sgid权限:是linux文件权限的一位,当小写字母s出现在文件用户组的执行权限位上时,具有这种权限的文件会在其执行时使调用者暂时获得该文件所属组的权限。
43.kube-apiserver:kubernetes最重要的核心组件之一,主要提供以下的功能:提供集群管理的rest api接口,包括认证授权、数据校验以及集群状态变更等,是其他模块之间的数据交互和通信的枢纽。
44.rbac认证:role-based access control认证,即:基于角色的权限认证。通过角色关联用户,角色关联权限的方式间接赋予用户权限。
45.alwayspullimages:运行容器的时候,不直接使用本地节点缓存的容器镜像,而每次都是从中心镜像仓库中获取容器镜像,通过这种方式避免通过修改本地缓存镜像而引入的安全漏洞。
46.podsecuritypolicy:podsecuritypolicys的简称,kubernetes中一种集群级别的资源,它定义了用户能否在pod中使用各种安全相关的特性。
47.apiserver审计:是kube-apiservert的简称,kube-apiserver是kubernetes最重要的核心组件之一。由于apiserver是集群提供对外接口访问的入口,所以通常需要开通apiserver的审计日志。
48.etcd:是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作。
49.apiserver组件:是kube-apiservert的简称,kube-apiserver是kubernetes最重要的核心组件之一。
50.controller-manager组件:kube controller manager简称controller manager,它在pod工作流中作用是管理和控制整个集群,是kubernetes的大脑,它通过apiserver监控整个集群的状态,并确保集群处于预期的工作状态。
apiserver访问,etcd程序是否限制能够访问etcd服务的节点、etcd程序是否对存入etcd的数据配置数据加密机制。
68.本实施例方法中的kubernetes中的关键组件包括apiserver、etcd、controller-manager以及kube-scheduler组件。
69.本实施例方法中,应用架构安全维度包括微服务及web层安全和微服务通信安全子领域,其中,微服务及web层安全子领域的预定义检测项包括:是否存在跨站脚本攻击漏洞、是否存在跨站请求伪造防护漏洞、是否存在xml外部实体攻击漏洞、以及是否存在sql注入漏洞;微服务通信安全子领域的预定义检测项包括微服务间的调用流量是否启用tls加密、微服务是否启用限流机制、微服务否启用网络策略以及微服务是否利用服务网格进行流量可视化和流量监控。
70.本实施例方法中,应用中间件安全维度包括基础中间件和微服务中间件安全子领域,其中,基础中间件安全子领域的预定义检测项包括redis是否启用登录认证、redis是否启用访问限制、redis和mq服务是否使用启用流量加密以及redis是否禁用特权访问接口;微服务中间件安全子领域的预定义检测项包括配置中心是否启用配置加密、配置中心是否启用tls流量加密、注册中心是否启用tls流量加密以及配置中心和注册中心是否启用访问限制。
71.本实施例方法中,应用生态安全维度包括引用外部服务和对外发布服务子领域,其中,引用外部服务子领域的预定义检测项包括应用是否引用外部服务、是否检测外部服务密钥的合法性、是否采用外部服务调用审计以及是否启用外部服务调用限流机制;对外发布服务子领域的预定义检测项包括是否对外发布服务、是否启用访问限制、是否启用访问审计、是否启用和记录访问日志、是否对外部客户的访问进行限流以及是否采用流量加密。
72.本实施例方法中,应用开发和生命周期管理维度包括应用开发和应用生命周期安全管理子领域,其中应用开发安全子领域的预定义检测项包括持续集成阶段的应用开发流程中是否启用安全扫描流水线、安全扫描流水线中是否启用静态代码扫描、安全扫描流水线中是否启用镜像安全扫描;应用生命周期安全管理子领域的预定义检测项包括持续交付阶段是否启用持续交付安全扫描流水线、持续交付安全扫描流水线中是否启用静态应用安全测试以及持续交付安全扫描流水线中是否启用动态应用安全测试。
73.本发明示例性第五实施例提供一种云原生应用的安全评估方法,本实施例方式是图1所示方法的优选实施例。本实施例方法在实际应用中按以下方式实施。
74.本实施例方法从云原生平台安全、应用架构安全、应用中间件安全、应用生态安全以及应用开发和生命周期管理五个维度对云原生应用进行安全评估,每个维度对应的子领域及预定义检测项如表1所示。
75.表1
[0076][0077]
[0078][0079]
根据表1中每个子领域中的预定义检测项进行对应的安全检测;根据每个子领域中预定义检测项的总数以及通过检测的预定义检测项的数量,计算所述子领域通过检测的预定义检测项的百分比;将所述百分比与100的乘积作为每个子领域对应的评估分数。
[0080]
如表2所示,获取每个子领域对应的权重值;采用加权求和法根据每个子领域对应的评估分数及对应的权重值计算每个维度对应的评估分数。根据每个维度对应的评估分数及每个维度对应的权重值,采用加权求和法计算云原生应用的评估总分。
[0081]
表2
[0082][0083]
例如,针对应用平台安全评分权值为10、应用架构安全权值为5、应用中间件安全权值为2、应用生态加权值为0(没有对外发布服务、也没有利用外部的服务)、应用开发和生命周期管理的权值为5,则统计所得的云原生应用综合安全评分为:a*10+b*5+c*2+e*5,根据计算所得的分值对云原生应用的安全性进行比对。
[0084]
最后,本发明还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
[0085]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1