本发明涉及计算机技术领域,特别涉及一种云上函数权限检测并修复方法、装置、存储介质及终端。
背景技术:
随着云计算的飞速发展,利用云服务搭建业务系统已经成为了趋势,云服务提供商为租户提供计算、存储、网络、应用服务等基础资源。函数计算是云服务一项基于事件驱动的托管计算服务,使用函数计算,云服务的用户只需编写业务逻辑代码并设置相应的运行条件,无需配置和管理服务器等基础设施。当运行条件被触发是,由云平台运行相应的函数。在完整的业务应用中,函数会根据业务需求,访问云数据库、对象存储、中间件等其它云服务。此时需要通过创建委托的方式,赋予函数访问其它服务的权限。如果授予函数的权限过大,使得该函数可以访问不必要的资源或对资源进行不必要的操作,就违背了“最小权限”的原则。
目前,在云上函数权限检测并修复方案中,netflix(网飞公司)针对aws(亚马逊云)发布过两个工具,分别是repokid和aardvark。它们的用途是简化针对awsiam角色实现最小权限的流程。它们会主动监控特定iam角色使用的aws服务,并通过移除未使用服务的访问权来削减权限。但是由于其涉及到的颗粒度非常宽泛且针对于服务级别的最小权限检测,没有细化到服务下面资源的相应操作,也没有针对赋予awslambda函数调用其他服务的权限进行检测,从而导致函数被攻击者利用,给系统带来安全威胁。
技术实现要素:
本申请实施例提供了一种云上函数权限检测并修复方法、装置、存储介质及终端。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
第一方面,本申请实施例提供了一种云上函数权限检测并修复方法,所述方法包括:
获取待分析函数集合中各函数对应的预设权限;
当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
可选的,所述基于所述实际权限修改所述预设权限,生成修改后的权限,包括:
获取所述实际权限对应的第一策略数据;
获取所述预设权限对应的第二策略数据;
将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
将所述修改后的策略数据对应的权限确定为修改后的权限。
可选的,所述获取待分析函数集合中各函数对应的实际权限,包括:
获取待分析函数集合;
获取预设特征库;
获取所述待分析函数集合中各函数对应的源代码;
采集所述源代码中的特征,生成所述源代码对应的特征集合;
基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的权限,将所述源代码对应的权限作为待分析函数集合中各函数对应的实际权限。
可选的,所述获取预设特征库,包括:
获取目标云服务对应的服务集合;
将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库。
可选的,所述将所述修改后的权限确定为所述待分析函数集合中各函数最终权限之后,还包括:
当接收到到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
可选的,所述采集所述源代码中的特征,生成所述源代码对应的特征集合,包括:
将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合。
第二方面,本申请实施例提供了一种云上函数权限检测并修复装置,所述装置包括:
第一权限获取模块,用于获取待分析函数集合中各函数对应的实际权限;
第二权限获取模块,用于获取待分析函数集合中各函数对应的预设权限;
权限生成模块,用于当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
权限确定模块,用于将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
可选的,所述权限生成模块,包括:
第一数据获取单元,用于获取所述实际权限对应的第一策略数据;
第二数据获取单元,用于获取所述预设权限对应的第二策略数据;
数据生成单元,用于将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
权限确定单元,用于将所述修改后的策略数据对应的权限确定为修改后的权限。
可选的,所述第一权限获取模块,包括:
集合获取单元,用于获取待分析函数集合;
特征库获取单元,用于获取预设特征库;
源代码获取单元,用于获取所述待分析函数集合中各函数对应的源代码;
集合生成单元,采集所述源代码中的特征,生成所述源代码对应的特征集合;
权限生成单元,用于基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的权限,将所述源代码对应的权限作为待分析函数集合中各函数对应的实际权限。
可选的,所述特征库获取单元,包括:
集合获取子单元,用于获取目标云服务对应的服务集合;
集合生成子单元,用于将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
特征库生成子单元,用于将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库。
可选的,所述装置还包括:
信息发送模块,用于当接收到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
可选的,所述集合生成单元,具体用于:
将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种终端,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请实施例提供的技术方案可以包括以下有益效果:
在本申请实施例中,用户终端首先获取待分析函数集合中各函数对应的实际权限,再获取待分析函数集合中各函数对应的预设权限,然后当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限,最后将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。由于本方案基于sdk(软件开发工具包)和api(应用程序接口)的特征,采用代码静态分析、环境变量分析和权限策略分析相结合的技术手段,自动化地检测赋予函数计算服务中的某个函数是否拥有调用其他服务的最小权限。如果不是最小权限,则根据其调用的具体服务,自动修复权限过大的问题来保障系统的安全。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本申请实施例提供的一种云上函数权限检测并修复方法的流程示意图;
图2是本申请实施例提供的实例代码逻辑示意图;
图3是本申请实施例提供的通过分析代码得到的代码特征示意图;
图4是本申请实施例提供的云上函数操作权限示意图;
图5是本申请实施例提供的云上函数策略对应的全部权限示意图;
图6是本申请实施例提供的云上函数权限检测并修复执行过程的过程图;
图7是本申请实施例提供的另一种云上函数权限检测并修复方法的流程示意图;
图8是本申请实施例提供的一种云上函数权限检测并修复装置的结构示意图;
图9是本申请实施例提供的另一种云上函数权限检测并修复装置的结构示意图;
图10是本申请实施例提供的一种权限生成模块的结构示意图;
图11是本申请实施例提供的第一权限获取模块的结构示意图;
图12是本申请实施例提供的特征图获取单元的结构示意图;
图13是本申请实施例提供的一种终端的结构示意图。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
到目前为止,对于云上函数权限检测并修复中,netflix(网飞公司)针对aws(亚马逊云)发布过两个工具,分别是repokid和aardvark。它们的用途是简化针对awsiam角色实现最小权限的流程。它们会主动监控特定iam角色使用的aws服务,并通过移除未使用服务的访问权来削减权限。但是由于其涉及到的颗粒度非常宽泛且针对于服务级别的最小权限检测,没有细化到服务下面资源的相应操作,也没有针对赋予awslambda函数调用其他服务的权限进行检测,从而导致函数被攻击者利用,给系统带来安全威胁。为此,本申请提供了一种云上函数权限检测并修复方法、装置、存储介质及终端,以解决上述相关技术问题中存在的问题。本申请提供的技术方案中,由于本方案基于sdk(软件开发工具包)和api(应用程序接口)的特征,采用代码静态分析、环境变量分析和权限策略分析相结合的技术手段,自动化地检测赋予函数计算服务中的某个函数是否拥有调用其他服务的最小权限。如果不是最小权限,则根据其调用的具体服务,自动修复权限过大的问题来保障系统的安全,下面采用示例性的实施例进行详细说明。
下面将结合附图1-附图7,对本申请实施例提供的云上函数权限检测并修复方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的云上函数权限检测并修复装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。其中,本申请实施例中的云上函数权限检测并修复装置可以为用户终端,包括但不限于:个人电脑、平板电脑、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中用户终端可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personaldigitalassistant,pda)、5g网络或未来演进网络中的终端设备等。
请参见图1,为本申请实施例提供了一种云上函数权限检测并修复方法的流程示意图。如图1所示,本申请实施例的所述方法可以包括以下步骤:
s101,获取待分析函数集合中各函数对应的实际权限;
其中,实际权限是云上函数对应的实际需要的权限信息。所述云上函数是使用java、python等编程语言编写的项目部署到云服务上的业务代码逻辑。此处的云服务可以是华为云、腾讯云、阿里云等云提供的函数计算服务。具体的编程语言和云服务可根据实际场景而定,此处不做限制。本方案以华为云和python编程语言进行举例说明。
在本申请实施例中,首先需要获取待分析函数集合,再获取待分析函数集合中各函数对应的源代码,然后采集源代码的特征,生成源代码对应的特征集合,最后基于源代码对应的特征集合生成源代码对应的权限信息。
在一种可能的实现方式中,通过分析函数计算中每个函数的源代码,采集代码中引入的sdk信息、api信息和引入环境变量中的相关信息,分析出函数调用的其他服务的详细信息,最后生成需要的权限信息。
例如,首先获取函数计算实例的列表,再依次遍历函数计算实例的列表,然后下载其源代码和环境变量信息,再对函数代码进行静态扫描,扫描结束后取出引入的sdk(第三方库)、api和环境变量,再根据sdk和api的特征进行分析。其中实例代码请参见图2,图2是本申请实施例提供的obs服务(对象存储服务)的实例代码。
具体的,以obs的sdk和环境变量为例进行说明,首先扫描例如图2中的代码,根据扫描出的代码片段(fromobsimportobsclient)发现引入的sdk属于obs,然后根据obs的sdk特性,获取调用了那个项目的服务,通过代码片段(obsclient=obsclient(access_key_id=ak,secret_access_key=sk,server=server))发现所需的服务信息在变量server中,查询此处代码的上文,找到server的值。如果扫描发现代码片段如下(server=’https://obs.cn-north-1.myhuaweicloud.com’),则通过参数context的getuserdata方法去获取obs_server的值,说明该服务信息存储在环境变量名为“obs_server”的键值对中,扫描该函数的环境变量,发现键值对例如表1所示,然后分析其value,获取到调用obs服务属于项目cn-north-1。
表1
继续根据obs的sdk特性,分析图2中的代码做了什么操作,通过图2中的代码片段(obsclient.deletebucket(“imagebucket”))和(obsclient.getbucketmetadata(“serverlessgoat”))发现针对于资源“imagebucket”和“serverlessgoat”分别进行了deletebucket和getbucketmetadata操作,说明该函数对项目cn-north-1的obs服务对这两个资源进行了删除和获取信息操作,需要赋予其对应的权限。通过分析代码和环境变量并结合相应服务的sdk、api的特征得到的结果,合并整理后例如图3所示。由图3可以看出各函数对应的实际权限操作为deletebucket、getbucketmetadata和get-key-rotation-status。
s102,获取待分析函数集合中各函数对应的预设权限;
其中,预设权限是云上函数对应的预先赋予的权限信息。
在本申请实施例中,在获取云上函数对应的预设权限时,通过分析赋予函数计算中每个函数的委托信息,去iam(统一身份认证服务)获取到对应的权限列表,并生成详细的权限信息。
具体的,首先扫描函数配置,获取委托的id,然后根据委托的id,通过调用iam(统一身份认证服务)相应的api接口,然后获取到操作项目的权限信息,例如图4所示,图4是操作项目的权限信息,根据权限信息对项目赋予的策略进行分析,通过调用iam服务相应的api,获取到策略对应的详细权限,例如图5所示,图5所示权限信息为待分析函数集合中各函数对应的预设权限的详细权限信息。
s103,当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
在本申请实施例中,由步骤s101可得出云上函数实际需要的权限,由步骤s102可得出待分析函数集合中各函数对应的预设权限的详细权限信息。通过对比分析步骤s101中的权限信息和步骤s102中的权限信息,可以看出步骤s102中赋予的权限远远多于步骤s101中的实际需要权限,因此发现赋予的权限过大,此时用户终端实现自动修复。
具体的,首先分析匹配步骤s101函数实际需要的权限信息和步骤s102赋予的权限信息,可以看到赋予了全局服务obsoperator的权限,由于obs是全局性服务,该服务的策略是符合要求的。同时赋予了cn-notrh-4的权限,由于该函数并没有调用该项目的服务,所以此权限是不必要的,可以将此权限进行删除。然后分析赋予的“策略”的权限是否过大,由图3可以看出实际函数权限只进行了桶的删除、获取信息和数据加密服务查看密钥信息的权限,其他权限均未使用,同时该策略没有指定具体操作的资源,所以赋权过大,需要修复,当需要修复时,用户终端通过修改多于权限对应的策略,删除多于的权限来完成云上函数权限的自动修复。当权限自动修复完成时,将修复信息发送至用户终端显示器进行显示。
s104,将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
在本申请实施例中,例如图6所示,图6是本申请实施例的架构逻辑图,首先通过扫描函数进行目标代码静态扫描和环境变量扫描,再将扫描出的sdk和引入的url路径进行归类,然后和预先构造出的sdk和api的特征进行特征匹配分析,匹配分析结束后得到函数实际调用的服务、操作的资源、具体的操作和服务所属项目。然后通过委托扫描获取委托的id,根据id调用iam(统一身份认证服务)相应的api接口,获取到操作项目的权限,通过分析赋予该委托的权限得到函数授权的项目、授权的服务、授权的资源和授权的操作。将(函数实际调用的服务、操作的资源、具体的操作和服务所属项目)和(函数授权的项目、授权的服务、授权的资源和授权的操作)进行权限匹配分析发现不必要的权限,最后将发现的不必要权限通过修改策略来自动进行删除完成修复过大的权限。
在本申请实施例中,用户终端首先获取待分析函数集合中各函数对应的实际权限,再获取待分析函数集合中各函数对应的预设权限,然后当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限,最后将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。由于本方案基于sdk(软件开发工具包)和api(应用程序接口)的特征,采用代码静态分析、环境变量分析和权限策略分析相结合的技术手段,自动化地检测赋予函数计算服务中的某个函数是否拥有调用其他服务的最小权限。如果不是最小权限,则根据其调用的具体服务,自动修复权限过大的问题来保障系统的安全。
请参见图7,为本申请实施例提供的一种云上函数权限检测并修复方法的流程示意图。本实施例以云上函数权限检测并修复方法应用于用户终端中来举例说明。该云上函数权限检测并修复方法可以包括以下步骤:
s201,获取待分析函数集合;
在本申请实施例中,待分析函数集合为需要进行权限修复的云上函数集合,当用户终端需要进行云上函数权限修复时,首先需要获取待分析函数集合。
s202,获取目标云服务对应的服务集合;
在本申请实施例中,云服务商提供的各个服务的sdk和api都有其特征,需要先分析出每个服务相应的特征,并归类后存储在特征库中,方便后续进行匹配分析。具体操作是对函数可能访问的每个云服务,分析该服务提供的sdk和api特征,保存到特征库中。
s203,将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
例如,以obs服务(对象存储服务)的sdk(软件开发工具包)和api(应用程序编程接口)为例进行说明。
(1)引入obs服务的sdk的特征是“fromobsimportobsclient”,并且代码中出现类似“obsclient(server=server)”的语句。
(2)在代码当中如果出现类似的代码片段例如:“server='https://obs.cn-north-1.myhuaweicloud.com'”的语句时,则说明cn-north-1就是操作的具体项目。
(3)代码中出现的增删改查功能相关的代码片段,应包括“deletebucket()”、“getobject()”等操作,括号“()”内的信息即为操作的资源。
(4)引入obs服务的api的特征是代码中出现了“requests.request()”方法,并且上文中也出现了“signer.httprequest()”方法。
(5)如果在api(应用程序编程接口)请求中出现形如“url=https://obs.cn-north-1.myhuaweicloud.com/v1.0/bucketname/serverlessgoat/getbucketinfo”的代码,则obs就是调用的服务,cn-north-1是该服务所属的项目,serverlessgoat是操作的具体资源,getbucketinfo为具体的操作。
(6)若代码中出现了类似“context.getuserdata(‘server’)”的操作,说明括号内的参数server存储在环境变量中。
s204,将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库;
在本申请实施例中,根据步骤s203中的分析可得出obs服务的sdk、api的特征和环境变量的特征,如表2所示。表2为目标云服务对应的特征库。
表2
s205,获取所述待分析函数集合中各函数对应的源代码;
s206,将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合;
s207,基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的实际权限;
s208,获取待分析函数集合中各函数对应的预设权限;
s209,当所述预设权限大于所述实际权限时,获取所述实际权限对应的第一策略数据;
s210,获取所述预设权限对应的第二策略数据;
s211,将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
s212,将所述修改后的策略数据对应的权限确定为修改后的权限;
s213,当接收到到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
在本申请实施例中,用户终端首先获取待分析函数集合中各函数对应的实际权限,再获取待分析函数集合中各函数对应的预设权限,然后当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限,最后将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。由于本方案基于sdk(软件开发工具包)和api(应用程序接口)的特征,采用代码静态分析、环境变量分析和权限策略分析相结合的技术手段,自动化地检测赋予函数计算服务中的某个函数是否拥有调用其他服务的最小权限。如果不是最小权限,则根据其调用的具体服务,自动修复权限过大的问题来保障系统的安全。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参见图8,其示出了本发明一个示例性实施例提供的云上函数权限检测并修复装置的结构示意图。该云上函数权限检测并修复装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置1包括第一权限获取模块10、第二权限获取模块20、权限生成模块30、权限确定模块40。
第一权限获取模块10,用于获取待分析函数集合中各函数对应的实际权限;
第二权限获取模块20,用于获取待分析函数集合中各函数对应的预设权限;
权限生成模块30,用于当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
权限确定模块40,用于将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
可选的,如图9所示,所述装置1还包括:
信息发送模块50,用于当接收到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
可选的,如图10所示,所述权限生成模块30,包括:
第一数据获取单元310,用于获取所述实际权限对应的第一策略数据;
第二数据获取单元320,用于获取所述预设权限对应的第二策略数据;
数据生成单元330,用于将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
权限确定单元340,用于将所述修改后的策略数据对应的权限确定为修改后的权限。
可选的,如图11所示,所述第一权限获取模块10,包括:
集合获取单元110,用于获取待分析函数集合;
特征库获取单元120,用于获取预设特征库;
源代码获取单元130,用于获取所述待分析函数集合中各函数对应的源代码;
集合生成单元140,采集所述源代码中的特征,生成所述源代码对应的特征集合;
权限生成单元150,用于基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的实际权限。
可选的,如图12所示,所述特征库获取单元120,包括:
集合获取子单元1201,用于获取目标云服务对应的服务集合;
集合生成子单元1202,用于将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
特征库生成子单元1203,用于将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库。
可选的,所述集合生成单元140,具体用于:
将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合。
需要说明的是,上述实施例提供的云上函数权限检测并修复装置在执行云上函数权限检测并修复方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的云上函数权限检测并修复装置与云上函数权限检测并修复方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请实施例中,用户终端首先获取待分析函数集合中各函数对应的实际权限,再获取待分析函数集合中各函数对应的预设权限,然后当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限,最后将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。由于本方案基于sdk(软件开发工具包)和api(应用程序接口)的特征,采用代码静态分析、环境变量分析和权限策略分析相结合的技术手段,自动化地检测赋予函数计算服务中的某个函数是否拥有调用其他服务的最小权限。如果不是最小权限,则根据其调用的具体服务,自动修复权限过大的问题来保障系统的安全。
本发明还提供一种计算机可读介质,其上存储有程序指令,该程序指令被处理器执行时实现上述各个方法实施例提供的云上函数权限检测并修复方法。
本发明还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例所述的云上函数权限检测并修复方法。
请参见图13,为本申请实施例提供了一种终端的结构示意图。如图13所示,所述终端1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(display)、摄像头(camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行电子设备1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图13所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及云上函数权限检测并修复应用程序。
在图13所示的终端1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的云上函数权限检测并修复应用程序,并具体执行以下操作:
获取待分析函数集合中各函数对应的实际权限;
获取待分析函数集合中各函数对应的预设权限;
当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
在一个实施例中,所述处理器1001在执行所述基于所述实际权限修改所述预设权限,生成修改后的权限时,具体执行以下操作:
获取所述实际权限对应的第一策略数据;
获取所述预设权限对应的第二策略数据;
将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
将所述修改后的策略数据对应的权限确定为修改后的权限。
在一个实施例中,所述处理器1001在执行所述获取待分析函数集合中各函数对应的实际权限时,具体执行以下操作:
获取待分析函数集合;
获取预设特征库;
获取所述待分析函数集合中各函数对应的源代码;
采集所述源代码中的特征,生成所述源代码对应的特征集合;
基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的实际权限。
在一个实施例中,所述处理器1001在执行所述获取预设特征库时,具体执行以下操作:
获取目标云服务对应的服务集合;
将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库。
在一个实施例中,所述处理器1001在执行所述将所述修改后的权限确定为所述待分析函数集合中各函数最终权限之后时,还执行以下操作:
当接收到到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
在一个实施例中,所述处理器1001在执行所述采集所述源代码中的特征,生成所述源代码对应的特征集合时,具体执行以下操作:
将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合。
在本申请实施例中,用户终端首先获取待分析函数集合中各函数对应的实际权限,再获取待分析函数集合中各函数对应的预设权限,然后当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限,最后将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。由于本方案基于sdk(软件开发工具包)和api(应用程序接口)的特征,采用代码静态分析、环境变量分析和权限策略分析相结合的技术手段,自动化地检测赋予函数计算服务中的某个函数是否拥有调用其他服务的最小权限。如果不是最小权限,则根据其调用的具体服务,自动修复权限过大的问题来保障系统的安全。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。所属技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,应该理解到,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
应当理解的是,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本发明并不局限于上面已经描述并在附图中示出的流程及结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
1.一种云上函数权限检测并修复方法,其特征在于,所述方法包括:
获取待分析函数集合中各函数对应的实际权限;
获取待分析函数集合中各函数对应的预设权限;
当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
2.根据权利要求1所述的方法,其特征在于,所述基于所述实际权限修改所述预设权限,生成修改后的权限,包括:
获取所述实际权限对应的第一策略数据;
获取所述预设权限对应的第二策略数据;
将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
将所述修改后的策略数据对应的权限确定为修改后的权限。
3.根据权利要求1所述的方法,其特征在于,所述获取待分析函数集合中各函数对应的实际权限,包括:
获取待分析函数集合;
获取预设特征库;
获取所述待分析函数集合中各函数对应的源代码;
采集所述源代码中的特征,生成所述源代码对应的特征集合;
基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的实际权限。
4.根据权利要求2所述的方法,其特征在于,所述获取预设特征库,包括:
获取目标云服务对应的服务集合;
将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库。
5.根据权利要求1所述的方法,其特征在于,所述将所述修改后的权限确定为所述待分析函数集合中各函数最终权限之后,还包括:
当接收到到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
6.根据权利要求2所述的方法,其特征在于,所述采集所述源代码中的特征,生成所述源代码对应的特征集合,包括:
将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合。
7.一种云上函数权限检测并修复装置,其特征在于,所述装置包括:
第一权限获取模块,用于获取待分析函数集合中各函数对应的实际权限;
第二权限获取模块,用于获取待分析函数集合中各函数对应的预设权限;
权限生成模块,用于当所述预设权限大于所述实际权限时,基于所述实际权限修改所述预设权限,生成修改后的权限;
权限确定模块,用于将所述修改后的权限确定为所述待分析函数集合中各函数最终权限。
8.根据权利要求7所述的装置,其特征在于,所述权限生成模块,包括:
第一数据获取单元,用于获取所述实际权限对应的第一策略数据;
第二数据获取单元,用于获取所述预设权限对应的第二策略数据;
数据生成单元,用于将所述第二策略数据修改成所述第一策略数据,生成修改后的策略数据;
权限确定单元,用于将所述修改后的策略数据对应的权限确定为修改后的权限。
9.根据权利要求7所述的装置,其特征在于,所述第一权限获取模块包括:
集合获取单元,用于获取待分析函数集合;
特征库获取单元,用于获取预设特征库;
源代码获取单元,用于获取所述待分析函数集合中各函数对应的源代码;
集合生成单元,采集所述源代码中的特征,生成所述源代码对应的特征集合;
权限生成单元,用于基于所述源代码对应的特征集合和预设特征库生成所述源代码对应的实际权限。
10.根据权利要求7所述的装置,其特征在于,所述特征库获取单元,包括:
集合获取子单元,用于获取目标云服务对应的服务集合;
集合生成子单元,用于将所述服务集合中各服务进行特征分析生成所述各服务对应的特征集合;
特征库生成子单元,用于将所述各服务对应的特征集合进行归类后保存至预设特征库中,生成所述目标云服务对应的特征库,将所述目标云服务对应的特征库作为预设特征库。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
信息发送模块,用于当接收到权限修改成功指令时,生成权限修改信息发送至客户端进行显示。
12.根据权利要求7所述的装置,其特征在于,所述集合生成单元,具体用于:
将所述源代码进行代码静态扫描和环境变量扫描,生成所述源代码对应的特征集合。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~6任意一项的方法步骤。
14.一种终端,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~6任意一项的方法步骤。
技术总结