一种Redis数据库访问权限控制方法及装置与流程

文档序号:26103355发布日期:2021-07-30 18:15阅读:131来源:国知局
一种Redis数据库访问权限控制方法及装置与流程
本发明涉及数据库
技术领域
,尤其涉及一种redis数据库访问权限控制方法及装置。
背景技术
:非关系型数据库在互联网中的作用非常大,它很大程度的提高了互联网中交互的性能,而远程词典服务器(remotedictionaryserver,redis)是目前最受欢迎的非关系型数据库。redis数据库不区分用户,当某个用户需要访问redis数据库时,只要提供正确的密码,就可增删改查redis数据库所保存的内容,换而言之,redis数据库只认密码不认用户。实际应用中,一个数据库可能需要为多个应用场景的用户提供服务,以提高数据库的利用率。而redis数据库不能区分用户,难以实现针对用户的权限控制,若一个redis数据库供多个场景下的用户使用,就会存在任一用户可以读取或篡改其他用户保存在redis数据库的内容的风险。技术实现要素:为克服上述技术中存在的问题,本发明提供了一种redis数据库访问权限控制方法及装置。根据本发明实施例的第一方面,提供一种redis数据库访问权限控制方法,所述方法应用于redis服务器;所述方法包括:通过与redis客户端已建立的连接,接收redis客户端发送的所述redis客户端被分配的访问密码;同一redis客户端通过不同的访问密码对所述redis数据库执行不同的权限控制;在验证所述访问密码与已配置的访问密码相匹配后,从已配置的权限控制文件中获得所述访问密码对应的权限控制信息;所述权限控制信息至少包括:关键字命名规则;当接收到所述redis客户端发送的访问请求时,校验所述访问请求携带的关键字是否符合所述关键字命名规则,如果否,禁止执行所述访问请求携带的操作指令对应的操作,如果是,允许执行所述访问请求携带的操作指令对应的操作。如此,通过为不同的访问密码配置不同的关键字命名规则,使得使用不同访问密码的redis客户端能够访问的关键字不同,实现了redis服务器对redis客户端的可访问关键字的权限控制。结合第一方面,进一步的,所述关键字命名规则是基于所述redis客户端应用的业务场景设置,其中,不同业务场景下的关键字命名规则不同;所述关键字命名规则要求关键字至少包括业务场景标识和自定义字符串,其中,业务场景标识在自定义字符串之前或者,业务场景标识在自定义字符串之后;所述校验所述访问请求携带的关键字是否符合所述关键字命名规则包括:校验所述访问请求携带的关键字是否按照所述关键字命名规则要求的关键字格式设置。如此,可根据不同的业务场景,灵活设置关键字命名规则。结合第一方面,进一步的,述权限控制信息还包括:权限控制操作;在允许执行所述访问请求携带的操作指令对应的操作之前进一步包括:校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,返回允许执行所述访问请求携带的操作指令对应的操作;或者,在校验所述访问请求携带的关键字是否符合所述关键字命名规则之前进一步包括:校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,继续校验所述访问请求携带的关键字是否符合所述关键字命名规则。如此,通过为不同的访问密码配置不同的关键字命名规则以及权限控制操作,使得使用不同访问密码的redis客户端能够访问的关键字、可进行的访问操作都不相同,实现了redis服务器对redis客户端的可访问关键字以及可进行的访问命令操作的权限控制。结合第一方面,进一步的,当校验所述访问请求携带的关键字不符合所述关键字命名规则,或者,当校验所述访问请求携带的操作指令不对应所述权限控制操作中允许执行的操作时,该方法进一步包括:返回所述redis客户端不具有权限的提示。如此,在redis客户端不具有权限的时候,提示redis客户端没有权限,以使redis客户端确定发送的访问请求未能执行成功。结合第一方面,进一步的,在执行该方法之前,将所述redis客户端被分配的各访问密码发送给所述redis客户端;其中,同一redis客户端通过不同的访问密码对所述redis数据库执行的不同权限控制是依据redis客户端的身份信息确定的。redis客户端在未明确被分配的访问密码时,redis服务器根据redis客户端的身份信息,确定redis客户端被分配的密码,使redis客户端获取与自身身份相适配的权限访问密码。根据本发明实施例的第二方面,提供一种redis数据库访问权限控制装置,所述装置应用于redis服务器;所述装置包括:接收模块,用于通过与redis客户端已建立的连接接收redis客户端发送的所述redis客户端被分配的访问密码;同一redis客户端通过不同的访问密码对所述redis数据库执行不同的权限控制;权限控制信息获取模块,用于在验证所述访问密码与已配置的访问密码相匹配后,从已配置的权限控制文件中获得所述访问密码对应的权限控制信息;所述权限控制信息至少包括:关键字命名规则;关键字校验模块,用于当接收到所述redis客户端发送的访问请求时,校验所述访问请求携带的关键字是否符合所述关键字命名规则,如果否,禁止执行所述访问请求携带的操作指令对应的操作,如果是,允许执行所述访问请求携带的操作指令对应的操作。结合第二方面,进一步的,所述关键字命名规则是基于所述redis客户端应用的业务场景设置,其中,不同业务场景下的关键字命名规则不同;所述关键字命名规则要求关键字至少包括业务场景标识和自定义字符串,其中,业务场景标识在自定义字符串之前或者,业务场景标识在自定义字符串之后;所述校验所述访问请求携带的关键字是否符合所述关键字命名规则包括:校验所述访问请求携带的关键字是否按照所述关键字命名规则要求的关键字格式设置。结合第二方面,进一步的,所述权限控制信息还包括:权限控制操作;所述装置还包括:操作指令校验模块,用于在允许执行所述访问请求携带的操作指令对应的操作之前,校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,返回允许执行所述访问请求携带的操作指令对应的操作;或者用于在校验所述访问请求携带的关键字是否符合所述关键字命名规则之前,校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,继续校验所述访问请求携带的关键字是否符合所述关键字命名规则。结合第二方面,进一步的,所述装置还包括:提示模块,用于当校验所述访问请求携带的关键字不符合所述关键字命名规则,或者,当校验所述访问请求携带的操作指令不对应所述权限控制操作中允许执行的操作时,返回所述redis客户端不具有权限的提示。结合第二方面,进一步的,所述装置还包括:访问密码发送模块,用于在执行所述接收模块前,将所述redis客户端被分配的各访问密码发送给所述redis客户端;其中,同一redis客户端通过不同的访问密码对所述redis数据库执行的不同权限控制是依据redis客户端的身份信息确定的。根据本发明实施例的第三方面,提供一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行如上述任一所述的方法。根据本发明实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一所述方法的步骤。利用本说明一个或多个实施例,通过在redis服务器上,针对不同的访问密码配置不同的权限,从而对利用不同的访问密码访问redis数据库的redis客户端进行权限控制,使得使用不同访问密码的redis客户端对redis数据库有不同的访问权限,令高性能redis数据库可以应用的场景更加广泛。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本发明的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。图1是本发明根据一示例性实施例示出的一种redis数据库权限控制访问方法的流程示意图。图2是本发明根据一示例性实施例示出的一种redis数据库访问权限控制方法的执行判断流程示意图。图3是本发明根据一示例性实施例示出的另一种redis数据库访问权限控制方法的执行判断流程示意图。图4是本发明根据一示例性实施例示出的一种redis数据库访问权限控制装置的框图示意图。图5是本发明根据一示例性实施例示出的一种设备的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。需要说明的是:在其他实施例中并不一定按照本发明示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本发明所描述的更多或更少。此外,本发明中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本发明中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。redis数据库是当前最流行的高性能非关系型数据库(key-value数据库),因其是内存型存储数据库(数据存储在内存,而非磁盘),读写速度快,可以用来实时存储数据,并且redis数据库支持数据的持久化,当需要关闭redis服务器时,可以将内存中的数据保存在磁盘中,重启redis服务器的时候可以加载进行使用。redis服务器的配置文件中有一项为requirepass,若没有设置requirepass,则任何与redis服务器ping通的redis客户端都可在建立连接后访问redis数据库。若设置了连接密码(即设置了requirepass),则任何与redis服务器ping通的redis客户端在与redis服务器建立连接后,需要通过auth<password>命令提供密码,通过后,方可访问redis数据库,也就是说,redis客户端在成功连接redis服务器后访问redis数据库时,并不需要提供用户名,只需要提供与配置文件中所保存的相同的密码即可。实际应用中,可能需要一个数据库供多种业务场景下的多种身份的人使用,例如,一个公司有多个部门,如财务部、后勤部等,财务部与后勤部等部门都使用同一个数据库存储相关的资料,部门之间的数据具有相对保密性,财务部的人员仅可访问财务部的相关数据,后勤部的人员仅可访问后勤部的相关数据,因此,需要在数据库进行权限控制,财务部的人员有权限访问财务部的相关数据,没有权限访问后勤部门的相关数据,后勤部的人员有权限访问后勤部的相关数据,没有权限访问财务部的相关数据。因此,若想利用一个高性能的redis数据库供多个应用场景使用,就需要redis服务器有权限控制功能,然而redis服务器不区分用户,只要提供正确的密码就可以访问redis数据库。基于此,本发明提供了一种redis数据库访问权限控制方法,利用访问密码区分不同权限的用户,针对不同的访问密码,配置不同的访问权限。具体而言,为不同的访问密码分配不同的关键字命名规则(key的命名规则),redis客户端与redis服务器建立连接后,redis客户端通过建立的连接向redis服务器发送访问密码,redis服务器通过redis客户端发送的访问密码,从已配置的权限控制文件中获得与访问密码对应的权限控制信息。当redis服务器接收到redis客户端发送访问请求后,校验访问请求中携带的操作指令是否符合命名规则,如果符合,说明redis客户端具有针对访问请求中携带的关键字的访问权限,允许执行访问请求携带的操作指令对应的操作;如果不符合,说明redis客户端不具有针对访问请求中携带的关键字的访问权限,禁止执行访问请求中携带的操作指令对应的操作。利用本发明的一个或多个实施例,通过在redis服务器上,针对不同的访问密码配置不同的权限,从而对利用不同的访问密码对redis数据库进行访问的redis客户端进行权限控制,使得使用不同访问密码的redis客户端对redis数据库有不同的访问权限,令高性能redis数据库可以应用的场景更加广泛。接下来对本发明实施例进行详细说明。本发明提供了redis数据库访问权限控制方法,以及与之对应的redis数据库访问权限控制装置、设备、计算机可读存储介质。接下来对redis数据库访问权限控制方法进行详细的说明。如图1所示,图1是本发明根据一示例性实施例示出的一种redis数据库访问权限控制方法的流程示意图,包括以下步骤:步骤102、通过与redis客户端已建立的连接接收redis客户端发送的所述redis客户端被分配的访问密码。在本发明中,redis客户端是指任何具有连接redis数据库功能的客户端,可以是一个单独的用于连接访问redis数据库的客户端;也可以是其他客户端,其中一项功能是连接访问redis数据库。预先为不同的设置不同的关键字命名规则,并分配对应的访问密码,使得不同的访问密码对应的可访问的关键字不同。实际应用中,关键字命名规则可以基于业务场景设置不同的关键字命名规则,不同的业务场景下的关键字命名规则不同。例如,关键字命名规则为:要求关键字至少包括业务场景标识和自定义字符串,业务场景标识可以在自定义字符串之前,或者,业务场景标识在自定义字符串之后。还是以上述的一个公司由多个部门为例,不同部门代表不同的业务场景,比如,财务部门,其代表财务业务场景,对应的业务场景标识可通过第一标识比如cw等表示;市场部门,其代表市场业务场景,对应的场景标识可通过第二标识sc等表示,依次类推。基于此情况,对于财务部门,其设置的对应的关键字命名规则可要求关键字至少包括:第一标识和自定义字符串;对于财务部门,其设置的对应的关键字命名规则可要求关键字至少包括:第二标识和自定义字符串;依次类推。其中,业务场景标识可以在自定义字符串之前,那么对应的关键字就是“业务场景标识+自定义字符串”,或者,业务场景标识在自定义字符串之后,那么对于的关键字就是“自定字符串+业务场景标识”。需要注意的是,不同业务场景下关键字命名规则要求的自定义字符串可不同,也可相同,本实施例并不具体限定。如下表所示,假设每个部门对应的业务标识是各部门各个字的拼音的首字母,关键字命名规则为业务场景标识和自定义字符串,业务场景标识在自定义字符串之前:表1业务场景访问密码关键字命名规则市场shichang2021^sc:[a-za-z0-9]+财务caiwu2021^cw:[a-za-z0-9]+后勤houqin2021^hq:[a-za-z0-9]+其中,上表中的关键字命名规则是以正则表达式的形式为例呈现的,正则表达式^sc:[a-za-z0-9]+表示可以匹配任何以sc开头的字符串。若使用redis客户端的用户是市场业务场景下的用户,该redis客户端被分配的访问密码为shichang2021,若使用redis客户端的用户是财务应用场景下的用户,那么该客户端被分配的访问密码为caiwu2021,以此类推。需要说明的是,本发明是以不同的业务场景划分不同的关键字命名规则为例,实际上,根据使用redis数据的不同需求进行灵活划分,例如将redis数据库作为一个云服务,多个用户使用一个redis数据库,以提高redis数据库的利用率等。redis客户端与redis服务器需要先建立长连接(例如tcp长连接等),以保证后续持续可靠的通信,建立连接成功后,redis客户端会将被分配的访问密码发送至redis服务器,以使redis服务器确定该redis客户端的访问权限。需要说明的是,本发明的实施例是基于访问密码区分不同访问权限的用户,因此,redis服务器需要设置requirepass,redis客户端需要提供访问密码,且访问密码正确(即,提供的访问密码需要是配置文件中配置的访问密码,也可称为已配置的访问密码),才可进行后续的访问;若未提供访问密码,或者访问密码错误(提供的密码不是已配置的访问密码),redis服务器会向拒绝redis客户端的访问,并给出相应的提示。步骤104、在验证所述访问密码与已配置的访问密码相匹配后,从已配置的权限控制文件中获得所述访问密码对应的权限控制信息。表1为实际分配时的考虑,在权限配置文件中,只保存访问密码与关键字命名规则的对应关系,如表2所示,只要redis客户端提供的密码是shichang2021,那么就认为使用该redis客户端的用户是市场应用场景下的用户,其可访问的关键字的关键字命名规则为^sc:[a-za-z0-9]+。表2访问密码关键字命名规则shichang2021^sc:[a-za-z0-9]+caiwu2021^cw:[a-za-z0-9]+houqin2021^hq:[a-za-z0-9]+实际应用中,一般是在redis服务器的redis.conf配置文件中进行相应的配置,将requirepasspassword扩展为requirepasspasswordmatchkeyregex,password为访问密码,keyregex表示关键字命名规则,如上述的^sc:[a-za-z0-9]+,match为保留关键字,在读取配置文件时,读取到保留关键字match,表示后面跟着的是访问密码对应的关键字命名规则。步骤106、当接收到所述redis客户端发送的访问请求时,校验所述访问请求携带的关键字是否符合所述关键字命名规则,如果否,禁止执行所述访问请求携带的操作指令对应的操作,如果是,允许执行所述访问请求携带的操作指令对应的操作。redis服务器在对访问密码验证通过后,会向redis客户端返回成功,之后redis客户端会向redis服务器发送携带关键字、操作指令的访问请求,例如,访问请求的内容为setkeyvalue,那么关键字为key,操作指令为set。redis服务器接收到访问请求后,会解析访问请求中携带的关键字,操作指令等,根据获取的该redis客户端的权限控制信息,确定该redis客户端可访问的关键字的关键字命名规则,若访问请求中携带的关键字符合确定的关键字命名规则,说明该redis客户端有对该关键字的访问权限,那么redis服务器就会允许redis客户端执行访问请求中携带的操作指令对应的操作,例如setkeyvalue,允许redis客户端创建一条关键字为key,对应的值为value的数据;若访问请求中携带的关键字不符合确定的关键字命名规则,说明该redis客户端没有对该关键字的访问权限,那么redis服务器就会禁止执行访问请求中携带的操作指令对应的操作。其中,关键字命名规则不同,校验访问请求携带的关键字是否符合关键字命名规则时的方式有所不同,如上述的关键字命名规则要求关键字至少包括业务场景标识和自定义字符串,那么校验时,就可以校验关键字的命名格式是不是业务标识和自定义字符串,业务标识是否正确等。需要说明的是,在本说明一个或多个实施例中,一方面,利用访问密码确定redis客户端是否可以访问redis数据库,另一方面,利用访问密码确定使用redis客户端的用户的访问权限。实际应用中,同一应用场景下,会有不同身份的人使用同一数据库,例如都是财务部的人,主管拥有修改以及查看的权限,而普通的人只有查看的权限,因此,在本说明说一个或多个实施例中,权限控制信息还可以包括权限控制操作,那么步骤106中,在允许执行所述访问请求携带的操作指令对应的操作之前,校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,返回允许执行所述访问请求携带的操作指令对应的操作。或者在步骤106中,在校验所述访问请求携带的关键字是否符合所述关键字命名规则之前,校验访问请求携带的操作指令是否对应权限控制操作中允许执行的操作,当访问请求携带的操作指令对应权限控制操作中允许执行的操作时,继续校验访问请求携带的关键字是否符合关键字命名规则。权限控制操作可以指可执行的指令对应的操作,或者不可执行指令对应的操作,例如,可以是可执行的操作指令{permitcmd1cmd2cmd3},表示若访问请求中携带的操作指令为cmd1cmd2cmd3中的一个,那么是允许执行指令对应的操作;若访问请求中携带的操作指令不是cmd1cmd2cmd3中的一个,那么禁止执行指令对应的操作。也可是不可执行的操作指令{denycmd4cmd5},表示若访问请求中携带的操作指令为cmd4cmd5中的一个,那么禁止执行指令对应的操作;若访问请求中携带的操作指令不是cmd4cmd5中的一个,那么允许执行指令对应的操作。具体设置时,根据实际情况而定,例如,允许的操作指令少,禁止的操作指令多,可以将权限控制操作设置为可执行操作指令;允许的操作指令多,禁止的操作指令少,可以将权限控制操作设置为不可执行操作指令;或者有明确可执行的操作指令或不可执行的操作指令,那么可同时设置(但不能冲突,如一个操作指令既是可执行操作指令又是不可执行操作指令)。实际应用中,可以在redis服务器的redis.conf配置文件中进行配置,将requirepasspasswordmatchkeyregex进一步扩展为requirepasspasswordmatchkeyregex{permitcmd1cmd2…|denycmd3cmd4…},其中password、keyregex、cmd1都是根据实际进行设置的,例如:表3其中,若redis客户端使用的访问密码为shichang2021z,表示使用redis客户端的用户是市场部的主管,可以访问的关键字为符合命名规则^sc:[a-za-z0-9]+的关键字,可操作的指令包括set、del、get;若redis客户端使用的访问密码为shichang2021y,表示使用redis客户端的用户是市场部的员工,可以访问的关键字为符合命名规则^sc:[a-za-z0-9]+的关键字,可操作的指令包括get;若redis客户端使用的访问密码为caiwu2021z,表示使用redis客户端的用户是财务部的主管,可以访问的关键字为符合命名规则^cw:[a-za-z0-9]+的关键字,权限控制操作为空,表示可执行任何操作指令;若redis客户端使用的访问密码为caiwu2021y,表示使用redis客户端的用户是财务部的员工,可以访问的关键字为符合命名规则^cw:[a-za-z0-9]+的关键字,禁止进行的操作指令包括set、del。如图2所示,为本发明示出的redis服务器的一种执行顺序,在允许执行访问请求携带的操作指令对应的操作之前,校验访问请求携带的操作指令是否对应权限控制操作中允许执行的操作,当访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,返回允许执行所述访问请求携带的操作指令对应的操作。如图3所示,为本发明示出的redis服务器的另一种执行的顺序,在校验访问请求携带的关键字是否符合关键字命名规则之前,校验访问请求携带的操作指令是否对应权限控制操作中允许执行的操作,当访问请求携带的操作指令对应权限控制操作中允许执行的操作时,继续校验访问请求携带的关键字是否符合所述关键字命名规则。事实上,当接收的redis服务器接收到访问请求后,还可同时校验访问请求携带的操作指令是否对应权限控制操作中允许执行的操作以及校验访问请求携带的关键字是否符合关键字命名规则,当校验都通过,就允许执行访问请求中携带的操作指令对应的操作,当任一校验不通过,就禁止执行访问请求中携带的操作指令对应的操作。需要说明的是,关键字命名规则是对可访问的关键字进行权限控制,权限控制操作是对可执行操作指令的权限控制,两者组合后,表示对可访问的关键字以及对这些关键字可执行的操作指令的权限控制。任一访问密码对应于一种权限,同一个redis客户端使用不同的访问密码,那么就会有不同的权限,例如使用的访问密码是shichang2021z,那么可执行增删查对应的操作(即,有权限对市场保存的数据进行增加、删除、查看),使用的访问密码是shichang2021y,那么可执行查对应的操作(即,有权限对市场部保存的数据进行查看,没有增加、删除的权限)。此外,实际应用当中,在redis数据库确定redis客户端所发送的访问请求是不具有权限的时候,即,当校验访问请求携带的关键字不符合关键字命名规则,或者,当校验访问请求携带的操作指令不对应权限控制操作中允许执行的操作时,redis服务器会向redis客户端返回不具有权限的提示。当然,实际应用中,提示可更具体一些,例如,当校验所述访问请求携带的关键字不符合所述关键字命名规则时,那么提示redis客户端不具有针对访问请求中携带的关键字的访问权限。当校验所述访问请求携带的操作指令不对应所述权限控制操作中允许执行的操作时,那么提示redis客户端不具有访问请求中携带的操作指令的操作权限。在一个或多个实施例中,在redis客户端与redis服务器建立连接后,redis服务器根据使用redis客户端的用户的身份信息,确定redis客户端被分配的访问密码,并将分配的访问密码发送至redis客户端,以使redis客户端想要访问redis数据库时,可通过访问密码连接redis服务器,从而访问redis数据库。以上是对redis数据库访问权限控制方法的说明,接下来对与前述方法对应的redis数据库访问权限控制装置进行详细说明。如图4所示,图4是本发明根据一示例性实施例示出的一种redis数据库访问权限控制装置的框图,所述装置应用于redis服务器;所述装置包括:接收模块402,用于通过与redis客户端已建立的连接接收redis客户端发送的所述redis客户端被分配的访问密码;同一redis客户端通过不同的访问密码对所述redis数据库执行不同的权限控制;权限控制信息获取模块404,用于在验证所述访问密码与已配置的访问密码相匹配后,从已配置的权限控制文件中获得所述访问密码对应的权限控制信息;所述权限控制信息至少包括:关键字命名规则;关键字校验模块406,用于当接收到所述redis客户端发送的访问请求时,校验所述访问请求携带的关键字是否符合所述关键字命名规则,如果否,禁止执行所述访问请求携带的操作指令对应的操作,如果是,允许执行所述访问请求携带的操作指令对应的操作。其中,所述关键字命名规则是基于所述redis客户端应用的业务场景设置,其中,不同业务场景下的关键字命名规则不同;所述关键字命名规则要求关键字至少包括业务场景标识和自定义字符串,其中,业务场景标识在自定义字符串之前或者,业务场景标识在自定义字符串之后;所述校验所述访问请求携带的关键字是否符合所述关键字命名规则包括:校验所述访问请求携带的关键字是否按照所述关键字命名规则要求的关键字格式设置。所述装置还可以包括操作指令校验模块(图中未示出),用于在允许执行所述访问请求携带的操作指令对应的操作之前,校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,返回允许执行所述访问请求携带的操作指令对应的操作;或者用于在校验所述访问请求携带的关键字是否符合所述关键字命名规则之前,校验所述访问请求携带的操作指令是否对应所述权限控制操作中允许执行的操作,当所述访问请求携带的操作指令对应所述权限控制操作中允许执行的操作时,继续校验所述访问请求携带的关键字是否符合所述关键字命名规则。所述装置还可以包括提示模块(图中未示出),用于当校验所述访问请求携带的关键字不符合所述关键字命名规则,或者,当校验所述访问请求携带的操作指令不对应所述权限控制操作中允许执行的操作时,返回所述redis客户端不具有权限的提示。所述装置还可以包括访问密码发送模块(图中未示出),用于将所述redis客户端被分配的各访问密码发送给所述redis客户端;其中,同一redis客户端通过不同的访问密码对所述redis数据库执行的不同权限控制是依据redis客户端的身份信息确定的。上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。相应的,本发明还提供一种设备,所述设备包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行如上述任一所述的方法。图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。本发明一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本发明一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。本发明还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权上述任一所述方法的步骤。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。上述对本发明特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未申请的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1