CN117195171A - 访问权限处理方法、装置、计算机设备以及存储介质 - Google Patents

访问权限处理方法、装置、计算机设备以及存储介质 Download PDF

Info

Publication number
CN117195171A
CN117195171A CN202310912845.7A CN202310912845A CN117195171A CN 117195171 A CN117195171 A CN 117195171A CN 202310912845 A CN202310912845 A CN 202310912845A CN 117195171 A CN117195171 A CN 117195171A
Authority
CN
China
Prior art keywords
ace
target
protocol
acl
field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310912845.7A
Other languages
English (en)
Inventor
张松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Cloud Technologies Co Ltd
Original Assignee
New H3C Cloud Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by New H3C Cloud Technologies Co Ltd filed Critical New H3C Cloud Technologies Co Ltd
Priority to CN202310912845.7A priority Critical patent/CN117195171A/zh
Publication of CN117195171A publication Critical patent/CN117195171A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本公开提供了一种访问权限处理方法、装置、计算机设备以及存储介质,其中,该方法包括:接收对象通过第一协议发送的对目标资源的访问请求;获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。

Description

访问权限处理方法、装置、计算机设备以及存储介质
技术领域
本公开涉及计算机的技术领域,具体而言,涉及一种访问权限处理方法、装置、计算机设备以及存储介质。
背景技术
在非结构化数据融合场景,通常支持NFS、SMB、S3、HDFS等跨协议访问权限控制。其中,不同协议通过制定不同的访问控制列表ACL进行权限控制。这里,不同的访问控制列表ACL约束的资源和标识也不同。例如,NFS协议、SMB协议、HDFS协议约束的资源是目录和文件,S3协议约束的资源是桶和对象。不同协议对应的访问控制列表ACL对应的用户类型也不完全相同。此时,需要使用不同的管理和表示方法。
相关技术中为了实现非结构化的数据融合,通常将不同类型的非结构化协议产生的数据,存放到同一份存储空间,以通过不同的协议对该存储空间中存储的相应数据进行访问。但是,针对同一份存储空间中的同一份融合数据,则无法实现权限互通。
发明内容
本公开实施例至少提供一种访问权限处理方法、装置、计算机设备以及存储介质。
第一方面,本公开实施例提供了一种访问权限处理方法,包括:
接收对象通过第一协议发送的对目标资源的访问请求;
获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;
在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;
根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
一种可选的实施方式中,所述方法还包括:
将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE;
基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL。
一种可选的实施方式中,所述将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE,包括:
在生效类第一ACE和继承类第一ACE中删除第一禁止权限,得到删除后所述第一ACE;所述第一禁止权限用于指示所述第二协议所服务的对象对所述目标资源的禁止访问权限,所述继承类第一ACE用于指示对在所述目标资源所对应目录下新创建的资源进行权限控制的方式,所述生效类第一ACE用于指示对所述目标资源进行权限控制的方式;
在删除后所述第一ACE中确定第一目标ACE,将所述第一目标ACE中的权限控制字段,转换为通过所述第一协议表达的目标字段;所述第一目标ACE用于指示对各用户和各用户组进行权限控制的方式;
在已创建的第一初始ACE中写入所述目标字段,得到所述第二ACE;其中,所述第一初始ACE为通过所述第一协议表达的空ACE。
一种可选的实施方式中,所述第一协议为SMB协议,所述第二协议为NFS协议;在已创建的第一初始ACE中写入所述目标字段之后,还包括:
在确定所述第一目标ACE中限制目标字段所指示的对象类型为属主用户组的情况下,在所述第一初始ACE中设置第一指示标识,得到所述第二ACE;其中,所述第一指示标识用于指示所述第一目标ACE的继承类型,所述属主用户组用于指示拥有所述目标资源的用户组。
一种可选的实施方式中,所述第一协议为SMB协议,所述第二协议为NFS协议,所述第二ACE为允许类ACE;
所述基于所述第二ACE确定用于向所述对象展示的待展示ACL,包括:
按照所述第二ACE中限制目标字段所指示的对象类型,对所述第二ACE进行排序,排序后得到第一允许ACE列表;
在所述第一ACL中确定所述第二ACE对应的第二目标ACE
基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表;
基于所述第二允许ACE列表,确定所述待展示ACL。
一种可选的实施方式中,所述基于所述第二允许ACE列表,确定所述待展示ACL,包括:
在所述目标资源为目录的情况下,在所述第二允许ACE列表中确定与继承类第一ACE对应的目标ACE;所述继承类第一ACE用于指示对在所述目录下创建的文件进行权限控制的方式;
在所述目标ACE中设置继承标识字段的字段内容,得到第三允许ACE列表;
将所述第三允许ACE列表中的ACE划分为第一子列表和第二子列表,将所述第一子列表和所述第二子列表进行拼接,得到所述待展示ACL;所述第一子列表由生效类第一ACE变换得到,所述第二子列表由所述继承类第一ACE变换得到,所述生效类第一ACE用于指示对所述目录进行权限控制的方式。
一种可选的实施方式中,所述基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表,包括:
基于所述目标限制语义在所述第二目标ACEPOSIX中确定第三目标ACEPOSIX;所述第三目标ACE的权限限制字段的字段内容用于指示对所述目标资源的禁止访问权限;
确定所述第一允许ACE列表中所述第三目标ACE所对应第二ACE,并基于所述所对应第二ACE在所述第一允许ACE列表中的位置,在所述第一允许ACE列表中插入目标拒绝ACE,得到所述第二允许ACE列表;其中,所述目标拒绝ACE用于表示所述所对应第二ACE中权限限制字段的字段内容所指示的权限为禁止访问权限。
一种可选的实施方式中,所述第一协议为SMB协议,所述第二协议为S3协议;所述基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL,包括:
在所述第二ACE中确定第三ACE;所述第三ACE用于指示目标对象对所述目标资源进行权限控制的方式;
将所述第三ACE移动至所述第二ACE所在列表的末尾位置。
一种可选的实施方式中,在所述接收对象通过第一协议发送的对目标资源的访问请求之前,所述方法还包括通过以下方式确定所述第一ACL,包括:
将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE;
基于所述第四ACE,确定所述第一ACL。
一种可选的实施方式中,所述将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE,包括:
将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE;所述第四目标ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE;所述第五目标ACE用于指示对第二对象和/或第二对象组对所述目标资源进行权限控制的方式;
基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE。
一种可选的实施方式中,所述第一协议为SMB协议,所述第二协议为NFS协议;
所述将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE,包括:
确定所述第二ACL中允许类型的所述第四目标ACE的第一权限限制字段,并确定所述第二ACL中拒绝类型的所述第四目标ACE的第二权限限制字段;
在所述第一权限限制字段中确定未出现在所述第二权限限制字段中的第三字段内容;
将所述第三字段内容转换成通过所述第二协议表达的第四字段内容,基于所述第四字段内容确定所述第一备选ACEPOSIX。
一种可选的实施方式中,所述将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,包括:
基于所述第五目标ACE中权限限制字段的字段内容,创建允许类ACE列表;其中,所述允许类ACE列表包含多个允许ACE,所述允许ACE用于记录所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;
将所述允许类ACE列表中的限制权限字段转换为通过所述第二协议表达的限制权限字段,转换后得到所述第二备选ACEPOSIXPOSIX。
一种可选的实施方式中,所述基于所述第五目标ACE中权限字段的字段内容,创建允许类ACE列表,包括:
确定所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息;
确定所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;
基于所述允许访问权限和所述第二对象映射信息,确定允许ACE,并基于所述允许ACE确定所述允许类ACE列表。
一种可选的实施方式中,所述第一协议为SMB协议,所述第二协议为NFS协议;
所述将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE,包括:
在所述目标资源为目录的情况下,确定所述第二ACL中第六目标ACE的第二指示标识;所述第二指示标识用于指示所述第六目标ACE的继承类型;所述第六目标ACE为所述第五目标ACE中用于指示对第二对象组进行权限控制的ACE;
基于所述第二指示标识的标识类型,将所述第六目标ACE划分为生效类ACE列表和继承类ACE列表,得到所述第四ACE;所述继承类ACE列表中的ACE用于指示对在所述目录下创建的文件进行权限控制的方式,所述生效类ACE列表中的ACE用于指示对所述目录进行权限控制的方式。
一种可选的实施方式中,所述第一协议为S3协议,所述第二协议为NFS协议;
所述将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE,包括:
确定所述第四目标ACE的权限限制字段的字段内容;
将所述第四目标ACE的权限限制字段的字段内容,转换为通过所述第二协议表达的第六字段内容;
创建通过所述第二协议表达的第二初始ACEPOSIX;所述第二初始ACE用于指示对所述第二对象和所述第二对象组对所述目标资源进行权限控制的方式;
将所述第六字段内容写入所述第二初始ACE的权限限制字段,得到通过所述第二协议表达的第一备选ACE。
一种可选的实施方式中,所述将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,包括:
在所述第五目标ACE中限制目标字段所指示的限制目标为对象或对象组的情况下,创建通过所述第二协议表达的第三初始ACEPOSIX;所述第三初始ACE为对象组类型的ACE;
将所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息;
将所述第五目标ACE中权限限制字段的字段内容,内容转换为通过所述第二协议协议表达的字段内容,得到第七字段内容;
确定所述第四目标ACE中权限限制字段的字段内容,得到第八字段内容;
将所述第三对象映射信息写入所述第三初始ACE的限制目标字段,并将所述第七字段内容和所述第八字段内容写入所述第三初始ACE的权限限制字段,得到对象组类型的所述第二备选ACE。
一种可选的实施方式中,所述基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE,包括:
将所述第一备选ACE和所述第二备选ACE中的权限限制字段的字段内容的内容并集,并基于所述内容并集确定通过所述第二协议表达的第三备选ACE;所述第三备选ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
基于所述第一备选ACE、所述第二备选ACE、所述第三备选ACE,确定所述第四ACE。第二方面,本公开实施例提供了一种访问权限处理装置,包括:
接收单元,用于接收对象通过第一协议发送的对目标资源的访问请求;
获取单元,用于获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;
确定单元,用于在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;
校验单元,用于根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了现有技术所提供的一种访问权限处理方法的流程图;
图2示出了本公开实施例所提供的一种访问权限处理方法的流程图;
图3示出了本公开实施例所提供的一种对象映射信息的确定方法的流程图;
图4示出了本公开实施例所提供的另一种一种访问权限处理方法的流程图;
图5示出了本公开实施例所提供的又一种访问权限处理方法的流程图;
图6示出了本公开实施例所提供的一种访问权限处理装置的示意图;
图7示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
所涉及名词解释:
非结构化数据:文件、对象、大数据服务产生的数据,区别于传统的块服务产生的数据。
数据融合:不同业务类型的数据在同一空间存储,比如对象、文件、大数据的数据利用同一份空间进行存储。
权限互通:同一个文件,在被多个协议同时访问时,能使用同一份权限控制列表,进行用户权限控制。
POSIX ACL:POSIX(Portable Operating System Interface of UNIX,可移植操作系统接口)访问控制列表(Access Control List,简称ACL),一种广泛使用在各种Linux/Unix系统上的权限控制方式。
SMB(Server Message Block):用于Windows访问共享文件的网络协议。
NTFS(New Technology File System):用于表示Windows NT内核支持的文件系统,广泛使用在各版本的Windows系统中。
NT ACL:NTFS中用于权限控制的访问控制列表。
UID(UserID):Linux/Unix系统中用户的标识。
GID(GroupID):Linux/Unix系统中用户组的标识。
SID(Security Identifiers):用于表示Windows操作系统中用户(用户组)的标识。
Bucket:S3服务(对象存储服务)中存储对象(Object)的容器。
Object:S3服务中存储数据的基本单位。
HDFS(Hadoop Distributed File System:Hadoop分布式文件系统。
NFS(Network File System):网络文件系统。
S3(Amazon Simple Storage Service)ACL:S3服务中用于权限控制的访问控制列表。
在非结构化数据融合场景,通常支持NFS、SMB、S3、HDFS等跨协议访问权限控制。其中,不同协议通过制定不同的访问控制列表ACL进行权限控制。例如,NFSv3版本的NFS协议,依赖POSIX ACL进行权限控制,NFSv4版本的NFS协议,依赖专门定义的NFSv4 ACL进行权限控制;SMB协议使用NT ACL进行权限控制;S3协议使用S3 ACL进行权限控制,HDFS协议一般通过对接NFS的权限控制模块进行权限控制。
这里,不同的访问控制列表ACL约束的资源和标识也不同。例如,NFS协议、SMB协议、HDFS协议约束的资源是目录和文件,S3协议约束的资源是桶和对象。不同协议对应的访问控制列表ACL对应的用户类型也不完全相同。例如,NFS协议通过UID/GID标识不同Unix用户,SMB协议通过SID标识Windows用户,S3协议通过特有的S3用户ID标识S3用户,HDFS一般使用NFS协议的用户。此时,需要使用不同的管理和表示方法。
相关技术中为了实现非结构化的数据融合,通常将不同类型的非结构化协议产生的数据,存放到同一份存储空间,以通过不同的协议对该存储空间中存储的相应数据进行访问。但是,针对同一份存储空间中的同一份融合数据,则无法实现权限互通。
为了解决融合数据无法实现权限互通的问题,可以将不同协议的权限访问控制列表转换为一种特殊的ACL内容格式。这种特殊的ACL内容格式和权限语义,一般是存储厂商各自实现的,是一种特有的自定义的格式和语义。另外对于不同协议的用户,需要根据管理员配置,映射到统一用户类型,其中,用户类型也是不同存储厂商在存储系统内容自定义和特有的实现。例如。如图1所示,针对来自于Unix用户或Windows用户的资源访问请求,需要将Unix用户或Windows用户映射为统一类型的用户,即图1所示的“统一用户”,并将Unix用户或Windows用户对应的访问控制列表ACL转换为如图1所示的自定义ACL。
然而,通过如图1所示的方式进行访问权限控制具有不可移植的特性。在当前存储厂商的存储系统产生的自定义的访问控制列表ACL,在其他存储厂商的存储系统无法访问和使用。如图1所示的技术方案维护难度大,自定义的访问控制列表,维护人员需要重新理解学习,无业界标准统一规范,对维护产生较大的难度。
基于上述研究,本公开提供了一种访问权限处理方法、装置、计算机设备以及存储介质。在本公开实施例中,在接收到对象通过第一协议发送的对目标资源的访问请求之后,获取第一访问控制列表ACL,该第一ACL用于通过第二协议表达第二ACL的权限控制语义,第二ACL用于表征对通过第一协议发送的对目标资源的访问请求进行权限校验的方式;之后,如果确定出第一协议和第二协议不相同,那么可以确定对象映射到第二协议所服务对象类型下的第一对象映射信息,并根据该第一ACL和第一对象映射信息,校验访问请求对目标资源的访问权限。
上述实施方式中,通过将第二ACL转换为通过第二协议表达的第一ACL,并获取对象的第一对象映射信息,进而根据该第一对象映射信息和第一ACL对访问请求进行权限校验的方式,可以实现针对存储空间中同一份融合数据之间的权限互通,具有可移植性和通用性,能够提高数据的访问效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种访问权限处理方法进行详细介绍,本公开实施例所提供的访问权限处理方法的执行主体可以为存储系统,其中,该存储系统可以为分布式存储系统中用于存储文件的设备。该分布式存储系统可以为Ceph分布式存储系统、Daos分布式存储系统,以及Hadoop分布式文件系统。
下面对本公开实施例提供的访问权限处理方法加以说明。
参见图2所示,为本公开实施例提供的一种访问权限处理方法的流程图,所述方法包括步骤S102~S108,其中:
S102:接收对象通过第一协议发送的对目标资源的访问请求。
这里,对象可以为Windows用户、S3用户和Unix用户。如果对象为Windows用户,那么第一协议可以为SMB协议;如果对象为S3用户,那么第一协议可以为S3协议;如果对象为Unix用户,那么第一协议可以为NFS协议。目标资源可以为目录,文件、桶和对象等资源。
S104:获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE。
这里,如图4和图5所示,第二协议可以为SMB协议,或者,可以为NFS协议。
如果第二协议为SMB协议,那么可以将NFS协议或者HDFS对应的访问控制列表,以及S3对应的访问控制列表,转换为通过SMB协议表达的第一ACL,此时,第一ACL又可以称为NT ACL。此时,NFS协议或者HDFS对应的访问控制列表,以及S3对应的访问控制列表可以理解为上述第二ACL。
如果第二协议为NFS协议,那么可以将SMB协议对应的访问控制列表,以及S3对应的访问控制列表,转换为通过NFS协议表达的第一ACL,此时第一ACL又可以称为POSIX ACL。此时,SMB协议对应的访问控制列表,以及S3对应的访问控制列表可以理解为上述第二ACL。
在本公开实施例中,权限控制语义用于指示ACL对访问请求进行权限校验的规则和流程。通过上述描述可知,不同协议对应的访问控制列表不相同,其中,不同访问控制列表中所包含的内容和格式也不相同。这里,可以将第二ACL转换为通过第二协议表达的第一ACL,从而得到与第二协议所对应访问控制列表的格式和内容相匹配的第一ACL。
S106:在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息。
例如,第一协议为SMB协议,第二协议为NFS协议,那么可以确定第一协议和第二协议不相同,此时,可以将对象映射到NFS协议所服务对象类型下的第一对象映射信息。例如,将Windows用户映射到Unix用户(即,第二协议所服务对象类型)下的第一对象映射信息。其中,该第一对象映射信息可以为对象ID、对象所属对象组的名称、对象所属对象组的ID等信息。例如,在第一协议为SMB协议,第二协议为NFS协议的情况下,该第一对象映射信息可以为Unix用户ID、Unix用户所属用户组的名称、Unix用户所属用户组的ID等信息。
S108:根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
在本公开实施例中,在接收到对象通过第一协议发送的对目标资源的访问请求之后,获取第一访问控制列表ACL,该第一ACL用于通过第二协议表达第二ACL的权限控制语义,第二ACL用于表征对通过第一协议发送的对目标资源的访问请求进行权限校验的方式;之后,如果确定出第一协议和第二协议不相同,那么可以确定对象映射到第二协议所服务对象类型下的第一对象映射信息,并根据该第一ACL和第一对象映射信息,校验访问请求对目标资源的访问权限。
上述实施方式中,通过将第二ACL转换为通过第二协议表达的第一ACL,并获取对象的第一对象映射信息,进而根据该第一对象映射信息和第一ACL对访问请求进行权限校验的方式,可以实现针对存储空间中同一份融合数据之间的权限互通,具有可移植性和通用性,能够提高数据的访问效率。
在本公开实施例中,在执行上述步骤S102至步骤S108之前,还需要将第二ACL转换为通过第二协议表达的第一ACL。
在一个可选的实施方式中,可以通过以下方式确定所述第一ACL,具体包括如下步骤:
S1011:将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE;
S1012:基于所述第四ACE,确定所述第一ACL。
这里,访问控制列表ACL中包含多个访问控制条目ACE,不同类型的访问控制列表ACL中所包含的ACE的类型不相同,且不同ACL的ACE中所包含的内容也不完全相同。此时,需要将第二ACL中的每个ACE转换为通过第二协议表达的ACE,从而得到第四ACE。之后,可以基于第四ACE确定第一ACL。
在一个可选的实施方式中,第一协议可以为SMB协议或者S3协议,第二协议可以NFS协议。此时,可以将SMB协议对应的NT ACL的ACE,转换为通过NFS协议表达的ACE,从而得到POSIX ACE_1(即,第四ACE)。还可以将S3协议对应的S3 ACL的ACE,转换为通过NFS协议表达的ACE,从而得到POSIX ACE_2(即,第四ACE)。之后,可以将POSIX ACE_1和POSIX ACE_2合并,得到第一ACL。
在另一个可选的实施方式中,第一协议可以为S3协议,还可以为NFS协议或者HDFS协议,第二协议可以SMB协议。此时,可以将S3协议对应的S3 ACL的ACE,转换为通过SMB协议表达的ACE,从而得到POSIX ACE_3(即,第四ACE)。还可以将NFS协议或者HDFS协议对应的POSIX ACL的ACE,转换为通过SMB协议表达的ACE,从而得到POSIX ACE_4(即,第四ACE)。之后,可以将POSIX ACE_3和POSIX ACE_4合并,得到第一ACL。
下面将介绍POSIX ACL、NT ACL和S3 ACL的具体权限内容。
一、POSIX ACL的权限内容。
POSIX ACL权限内容包含访问控制条目ACE。ACE的内容包括以下权限控制字段:类型字段、限制目标字段、限制权限字段;其中,类型字段的字段内容为该ACE的类型type,限制目标字段的字段内容为该ACE的限制目标标识identifier,限制权限字段的字段内容为该ACE的权限位perm的内容。
POSIX ACL中ACE的类型,从生效继承类型划分,包括Access ACE(表示用于生效的权限),Default ACE(表示用于继承的权限)两大类型;从生效内容划分,包括User ACE、User Obj ACE、Group ACE、Group Obj AC、Mask ACE、Other ACE六种类型。
这里,Access ACE用于指示对已经存在的文件或目录进行权限校验的方式,Default ACE用于指示在当前目录下新创建的文件或目录进行权限校验的方式。
User ACE表示普通用户ACE、User Obj ACE表示属主用户ACE、Group ACE表示普通用户组ACE、Group Obj ACE表示属主用户组ACE。其中,属主用户为对应资源的创建用户,或者,拥有该资源的用户,属主用户组用于指示属主用户所在的用户组。
Mask ACE表示对用户和用户组权限的限制。Other ACE定义了默认(其他)用户或用户组的权限。
其中,普通用户ACE中包含一个普通用户的UserID(即UID)作为限制目标标识,普通用户组ACE中包含一个普通用户组的GroupID(即GID)作为限制目标标识。
POSIX ACL中ACE的权限位包括读、写、执行三个权限比特位(permission bits),权限位由这三个比特位组合而成。
POSIX ACL的限制规则满足"first-match"规则,即:将第一个匹配目标标识的ACE的权限位的内容返回,用于判断所需的权限是否得到满足。
二、NT ACL权限内容。
NT ACL权限内容包含访问控制条目ACE。ACE的内容包括以下权限控制字段:类型字段、限制目标字段、限制权限字段、指示标识字段、允许拒绝字段;其中,类型字段的字段内容为该ACE的类型type,限制目标字段的字段内容为该ACE的限制目标标识identifier,限制权限字段的字段内容为该ACE的权限位perm的内容,允许拒绝字段的字段内容用于指示该ACE的允许拒绝类型,通过该允许拒绝类型可以确定该ACE是允许Allow类ACE和拒绝Deny类ACE。
NT ACL中ACE的类型,从允许拒绝类型划分,包括NT Allow ACE(表示允许权限)和NT Deny ACE(表示拒绝权限),从语义内容划分,包括普通普通用户User类型、属主用户Owner User类型、普通Group类型(普通用户组)、Owner Group类型(属主用户组)、Other类型(即EveryOne类型所有用户用户组标识)五种类型,这五种类型的ACE定义了普通用户、属主用户、普通用户组、属主用户组、其余用户用户组的权限。
NT ACL的ACE的限制目标标识包括用户SID、用户组SID,也包括特殊用户用户组标识,特殊用户用户组标识包括:OWNER@(属主标识);GROUP@(属组标识);EVERYONE@(所有用户用户组标识)。
NT ACL的ACE的权限位较多,包括:NT Read Data、NT Append Data、NT Execute、NT Delete、NT Write ACL、NT Write Owner、NT Read ACL、NT Read Attr、NTSynchronize、NT Read Named Attributes、NT Write Named Attributes等。
NT ACL的指示标志,包括:仅继承标志(Inherit Only)、容器继承标志(ContainerInherit)、对象继承标志(Object Inherit)、审计成功标志(Audit Success)和GROUPflag。
NT ACL满足"Deny-Any-Allow-All"规则,即:从前到后遍历ACE,存在一个Deny类型的ACE,拒绝了要求的权限位的任何一位,则返回权限被拒绝;否则,继续遍历,找到一个多个Allow类型的ACE,它们允许的权限位,组合起来满足了要求的权限位,则返回权限被允许;遍历到最后,要求的权限位没有被完全满足,则返回权限被拒绝。
三、S3 ACL权限内容。
S3 ACL权限内容包括访问控制条目ACE。ACE的内容包括以下权限控制字段:标识字段、权限许可字段和授权身份字段;其中,标识字段的字段内容为标识Identity,权限许可字段的字段内容为权限许可Permission,授权身份字段的字段内容为授权身份Grantee。标识Identity定义了访问资源的主体,权限许可Permission定义了授权的权限内容,也即上述所描述的权限位的内容,Grantee定义了授权的对象,也即上述所描述的限制目标标识。
权限许可Permission定义的授权的权限内容可以是读权限、写权限、ACP读权限、ACP写权限或完全控制权限。其中,“读权限”描述了账户(对象)拥有对桶或对象的元数据和数据的读权限,“写权限”描述了账户(对象)拥有对桶内对象的上传、覆盖、删除权限。“ACP读权限”和“ACP写权限”分别描述了账户(对象)对桶或对象的ACL拥有读权限和写(包括修改、删除)权限,“完全控制权限”包含了“读权限”、“写权限”、“ACP读权限”、“ACP写权限”。
S3 ACL的权限内容仅包括允许权限,不包含拒绝权限。S3 ACL中,Grantee对应同一个对象的ACE仅有一个,不存在重复出现Grantee相同的情况。S3 ACL中包含一个描述桶或对象的拥有者的权限的条目。
S3 ACL对权限的限制规则:使用S3 ACL匹配请求中的用户身份,如果请求中的对象身份,和某个条目的Grantee匹配,且匹配条目的Permission如果包含请求所需的操作权限,则允许访问该资源(桶或对象);对于Grantee是EveryOne的ACE条目,会在最后匹配;如果所有的ACE条目都没有匹配成功,或者匹配成功的ACE条目的Permission不包含所请求的操作权限,则拒绝访问该资源。
在一个可选的实施方式中,上述步骤S1011将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE,具体包括如下步骤:
S11:将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE;所述第四目标ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
S12:将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE;所述第五目标ACE用于指示对第二对象和/或第二对象组对所述目标资源进行权限控制的方式;
S13:基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE。
在本公开实施例中,可以将第二ACL中限制目标标识为Other的ACE确定为第四目标ACE。例如,如果第二ACL为NT ACL,那么第四目标ACE可以为NT ACL中EveryOne类型的ACE;如果第二ACL为S3 ACL,那么第四目标ACE可以为S3 ACL中EveryOne类型的ACE。其中,EveryOne类型的ACE用于指示对其他对象(即,第一对象)和对象组(即,第一对象组)进行权限校验的方式。
这里,可以将第二ACL中EveryOne类型的ACE,转换成通过第二协议表达的ACE,从而得到第一备选ACE。具体实施时,可以将第二ACL中EveryOne类型的ACE的权限字段转换为通过第二协议表达的权限字段,从而得到第一备选ACE。
在本公开实施例中,可以将第二ACL中限制目标标识为第二对象和/或第二对象组的ACE确定为第五目标ACE。例如,如果第二ACL为NT ACL,那么该第五目标ACE可以为NT ACL中的NT Group ACE、NT Owner Group ACE、NT User Obj ACE、NT User ACE;如果第二ACL为S3 ACL,那么第五目标ACE可以为Grantee字段是S3预定义组(Authenticated Users)(至多一个)的S3 ACE和/或Grantee是对应的S3桶或S3对象的属主的ACE。
这里,可以将第二ACL中第五目标ACE,转换成通过第二协议表达的ACE,从而得到第二备选ACE。具体实施时,可以将第五目标ACE的限制权限字段转换为通过第二协议表达的限制权限字段,从而得到第二备选ACE。
在确定出第一备选ACE和第二备选ACE之后,可以基于该第一备选ACE和第二备选ACE确定第四ACE。
下面将分情况介绍上述步骤S11至S13。
情况一:第一协议为SMB协议,所述第二协议为NFS协议,第二ACL为NT ACL,第一ACL为POSIX ACL,第四目标ACE为NT ACL中EveryOne类型的ACE。
在此情况下,步骤S11将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE,具体包括如下步骤:
步骤S21:确定所述第二ACL中允许类型的所述第四目标ACE的第一权限限制字段,并确定所述第二ACL中拒绝类型的所述第四目标ACE的第二权限限制字段;
步骤S22:在所述第一权限限制字段中确定未出现在所述第二权限限制字段中的第三字段内容;
步骤S23:将所述第三字段内容转换成通过所述第二协议表达的第四字段内容,基于所述第四字段内容确定所述第一备选ACE。
在本公开实施例中,首先创建一个表示允许的权限量和一个表示拒绝的权限量;其中,表示允许的权限量称为other_allow,表示拒绝的权限量,称为other_deny。
接下来,从前到后,遍历NT ACL的所有NT ACE,针对每个NT ACE,如果确定出NTACE是EveryOne类型的ACE,则进行以下处理,否则忽略并判断NT AC中的下一个ACE:
如果NT ACE是EveryOne类型且是Allow类型,则确定这个NT EveryOne Allow ACE中权限限制字段(即,上述第一权限限制字段)的字段内容,从而得到权限位的内容。如果NTACE是EveryOne类型且是Deny类型,则确定这个NT EveryOne Allow ACE中权限限制字段(即,上述第二权限限制字段)的字段内容,从而得到权限位的内容。
这里,可以将NT EveryOne Allow ACE中的部分权限位的内容设置到other_allow中,设置的部分权限位是未出现在other_deny中的部分权限位。
如果NT ACE是EveryOne类型且是Deny类型,则确定NT EveryOne Allow ACE中权限限制字段(即,上述第二权限限制字段)的字段内容,从而得到权限位的内容;并将NTEveryOne Deny ACE的部分权限位设置到other_deny中,设置的部分权限位是未出现在other_allow中的部分权限位。
在按照上述所描述的方式对NT ACE进行处理之后,可以得到权限量other_allow和other_deny。其中,权限量other_allow中所包含的权限位可以理解为第一权限限制字段中确定未出现在第二权限限制字段中的第三字段内容。
在得到权限量other_allow和other_deny之后,可以删除other_deny,然后,将other_allow中描述的权限位,转换为有效的POSIX ACL的权限位。其中,如果转换不是直接可行的情况,比如POSIX ACL的“写”权限权限位转换到NT ACL的NT Write Data和NTAppend Data,按照此关系进行转换时,可以同时具有NT Write Data和NT Append Data,才能在对应的POSIX ACE的权限位中设置“写”权限位。
接下来,创建一个POSIX Other ACE,并将得到的other_allow权限位设置到POSIXOther ACE的权限位的内容,得到POSIX Other ACE,其中,该POSIX Other ACE可以理解为上述所描述的第一备选ACE。之后,可以将该POSIX Other ACE放入目标POSIX ACL中,其中,目标POSIX ACL可以理解为上述所描述的第一ACL。
针对情况一,上述步骤S12将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,具体包括如下步骤:
步骤S31:基于所述第五目标ACE中权限限制字段的字段内容,创建允许类ACE列表;其中,所述允许类ACE列表包含多个允许ACE,所述允许ACE用于记录所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;
步骤S32:将所述允许类ACE列表中的限制权限字段转换为通过所述第二协议表达的限制权限字段,转换后得到所述第二备选ACE。
在本公开实施例中,可以基于第五目标ACE中限制目标字段和权限限制字段的字段内容,创建多个允许ACE;其中,可以通过多个ACE指示第五目标ACE中每个限制目标对目标资源的允许访问权限。
如果第五目标ACE为NT ACL中的NT Group ACE、NT Owner Group ACE、NT UserObj ACE、NT User ACE,那么可以基于NT Group ACE确定Allow列表1(即允许类ACE列表),在对Allow列表1中的限制权限字段进行转换之后,得到通过第二协议表达的限制权限字段,从而得到POSIX Group ACE(即,第二备选ACE)。可以基于NT Owner Group ACE确定Allow列表2(即允许类ACE列表),在对Allow列表2中的限制权限字段进行转换之后,得到通过第二协议表达的限制权限字段,从而得到POSIX Group Obj ACE(即,第二备选ACE)。基于NT User Obj ACE确定Allow列表3(即允许类ACE列表),在对Allow列表3中的限制权限字段进行转换之后,得到通过第二协议表达的限制权限字段,从而得到POSIX User Obj ACE(即,第二备选ACE)。可以基于NT User ACE确定Allow列表4(即允许类ACE列表),在对Allow列表4中的限制权限字段进行转换之后,得到通过第二协议表达的限制权限字段,从而得到POSIX User ACE(即,第二备选ACE)。
在本公开实施例中,上述步骤所述基于所述第五目标ACE中权限字段的字段内容,创建允许类ACE列表,包括如下步骤:
确定所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息;
确定所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;
基于所述允许访问权限和所述第二对象映射信息,确定允许ACE,并基于所述允许ACE确定所述允许类ACE列表。
在本公开实施例中,首先创建一个用于表示允许权限POSIX Group ACE的“Allow列表”,和一个用于表示拒绝权限的POSIX Group ACE的“Deny列表”。
如果第五目标ACE为NT ACL中的NT Group ACE、NT Owner Group ACE、NT UserObj ACE、NT User ACE,那么可以先将第五目标ACE中的限制目标标识SID,根据Windows用户到Unix用户的映射关系表,转换成第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息,例如,可以转换成Unix用户组标识GID。
根据GID到“Allow列表”中查找具有相同限制目标标识GID的POSIX Group AllowACE(简称“Allow ACE”),到“Deny列表”中查找具有相同限制目标标识GID的POSIX GroupDeny ACE(简称“Deny ACE”);如果没有找到相同目标标识GID的对应ACE,则创建一个对应的POSIX Group Allow ACE(简称“Allow ACE”)或POSIX Group Deny ACE(简称“DenyACE”),加入对应的“Allow列表”或“Deny列表”,并设置对应的GID标识。
在“Allow列表”和“Deny列表”中确定出对应的ACE之后,可以基于该ACE确定第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限,并在AllowACE的权限限制字段中写入该允许访问权限,在Allow ACE的限制目标字段中写入第二对象映射信息,得到允许ACE,并基于允许ACE确定允许类ACE列表。
之后,可以删除“Deny列表”,然后使用权限位的转换关系,对允许类ACE列表中的允许ACE进行权限位的转换,将“Allow列表”中的ACE的权限位,转换为有效的POSIX ACL的权限位。其中,如果POSIX ACL的“写”权限位转换到NT ACL的NT Write Data和NT AppendData,按照此关系进行反向转换时,需要同时具有NT Write Data和NT Append Data,才能在对应的POSIX ACE的权限位中设置“写”权限位。
将得到的“Allow列表”中的所有POSIX Group ACE和POSIX Group Obj ACE确定为第二备选ACE,并将该第二备选ACE放入目标POSIX ACL中。
在本公开实施例中,上述步骤确定所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限,包括如下步骤:
确定所述第二ACL中允许类型的所述第五目标ACE的第三权限限制字段,并确定所述第二ACL中拒绝类型的所述第五目标ACE的第四权限限制字段;
在所述第三权限限制字段中确定未出现在所述第四权限限制字段中的第四字段内容;
确定所述第一权限限制字段中未出现在所述第四权限限制字段中的第五字段内容;
基于所述第四字段内容和所述第五字段内容所指示的权限,确定所述允许访问权限。
如果NT Group ACE(第五目标ACE)是Allow类型,则确定NT Group ACE的权限限制字段,即第三权限限制字段;并将第三权限限制字段中未被对应的“Deny ACE”拒绝的部分(即没有出现在“Deny ACE”的权限位中)的部分,设置到对应的“Allow ACE”的权限位中。这里,Allow ACE和对应的Deny ACE的限制目标标识相同。
如果NT Group ACE(第五目标ACE)是Deny类型,则确定NT Group ACE的权限限制字段,即第四权限限制字段;并将该第四权限限制字段中未被对应的“Allow ACE”允许的部分(即没有出现在“Allow ACE”的权限位中)的部分,设置到对应的“Deny ACE”的权限位中。这里,Deny ACE和对应的Allow ACE的限制目标标识相同。
通过上述处理方式,可以在第三权限限制字段中确定未出现在第四权限限制字段中的第四字段内容。
在本公开实施例中,在遍历NT ACL的每个NT ACE之后,还可以先判断该NT ACE是否同时为EveryOne类型和Allow类型的ACE。如果确定出该NT ACE是EveryOne类型且为Allow类型,则进行以下处理,否则再执行上述步骤S31和步骤S32:
如果NT ACE是EveryOne类型且是Allow类型,则将这个EveryOne类型且是Allow类型的NT ACE(即,NT EveryOne Allow ACE)中的部分权限位,设置到“Allow列表”的每一个“Allow ACE”的权限位中,设置的部分权限位是满足“Deny列表”对应的“Deny ACE”的没有拒绝的权限位部分。这里,“Allow ACE”和对应的“Deny ACE”是指“Allow列表”和“Deny列表”中限制目标标识GID相同的两个ACE。
如果NT ACE是EveryOne类型且是Deny类型,则将这个EveryOne类型且是Deny类型的NT ACE(即,NT EveryOne Deny ACE)中的部分权限位,设置到“Deny列表”的每一个“DenyACE”的权限位中,设置的权限位部分是满足没有出现在“Allow列表”对应的“Allow ACE”的部分权限位。这里,对应的“Allow ACE”和“Deny ACE”是指“Allow列表”和“Deny列表”中限制目标标识GID相同的两个ACE。
通过上述处理方式,可以确定EveryOne类型且是Deny类型的NT ACE的权限限制字段(即,第一权限限制字段)中未出现在Deny列表中每个Allow ACE对应的Deny ACE的权限限制字段(即四权限限制字段)的第五字段内容。之后,就可以基于该第四字段内容和第五字段内容所指示的权限,确定允许访问权限。
在本公开实施例中,如果第一协议为SMB协议,第二协议为NFS协议,那么上述步骤将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE,还包括:
在所述目标资源为目录的情况下,确定所述第二ACL中第六目标ACE的第二指示标识;所述第二指示标识用于指示所述第六目标ACE的继承类型;所述第六目标ACE为用于指示对第二对象组进行权限控制的ACE;
基于所述第二指示标识的标识类型,将所述第六目标ACE划分为生效类ACE列表和继承类ACE列表,得到所述第四ACE;所述继承类ACE列表中的ACE用于指示对在所述目录下创建的文件进行权限控制的方式,所述生效类ACE列表中的ACE用于指示对所述目录进行权限控制的方式。
在本公开实施例中,针对上述情况一,在执行步骤S11至步骤S13之前,还需要判断NT ACL约束的目标资源是否为目录,并在确定出是的情况下,创建一个用于生效权限的POSIX ACE的“仅生效列表”,以及一个用于继承权限的POSIX ACE的“仅继承列表”。
接下来,从前到后,遍历NT ACL的所有NT ACE,并进行以下处理:
如果NT ACE是普通Group类型的NT Group ACE(普通用户组),或者是Owner Group类型(属主用户组)的NT Group ACE,则确定该NT ACE为第六目标ACE,此时,进行以下处理,否则忽略并判断下一个ACE:
如果NT ACE(例如,NT Group ACE)的Flag(第二指示标识)没有Inherit(仅继承标志)相关的标识,则将此NT ACE放入“仅生效列表”。
如果NT ACE(例如,NT Group ACE)的Flag(第二指示标识)有Container Inherit(容器继承)或Object Inherit(对象继承)标识,则将此NT ACE放入“仅生效列表”,也放入“仅继承列表”。
如果NT ACE(例如,NT Group ACE)的Flag(第二指示标识)有Inherit Only(仅继承)标识,且有Container Inherit(容器继承)或Object Inherit(对象继承)标识,则将此ACE放入“仅继承列表”。
在得到生效类ACE列表和继承类ACE列表之后,可以按照上述步骤S11至步骤S13所描述的方法对生效类ACE列表和继承类ACE列表进行处理,从而得到Access ACE和DefaultACE。
这里,“仅生效列表”用于得到目标POSIX ACL的Access ACE,“仅继承列表”用于得到目标POSIX ACL的Default ACE,对两个列表中的ACE要进行下面的第二步到第五步的具体步骤处理,分别得到POSIX Access ACE和POSIX Default ACE。
在此情况一下,上述步骤基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE,具体包括如下步骤:
首先,将所述第一备选ACE和所述第二备选ACE中的权限限制字段的字段内容的内容并集,并基于所述内容并集确定通过所述第二协议表达的第三备选ACE;所述第三备选ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
其次,基于所述第一备选ACE、所述第二备选ACE和所述第三备选ACE,确定所述第四ACE。
在本公开实施例中,如果上述得到目标POSIX ACL中,有POSIX User ACE或者POSIX Group ACE,那么可以进行以下处理,得到POSIX Mask ACE(即,第三备选ACE)。
这里,可以预先创建一个POSIX Mask ACE,然后,并将所有POSIX User ACE、POSIXGroup ACE和POSIX Group Obj ACE中权限限制字段的字段内容,进行得到“或”运算,得到POSIX Mask ACE的权限限制字段的字段内容,并设置到对应的权限限制字段。
情况二:第一协议为S3协议,第二协议为NFS协议,第二ACL为S3 ACL,第一ACL为POSIX ACL。
在此情况下,上述步骤S11将第二ACL的第四ACE,转换成通过第二协议表达的第一备选ACE,具体包括如下步骤:
步骤S41:确定所述第四目标ACE的权限限制字段的字段内容;
步骤S42:将所述第四目标ACE的权限限制字段的字段内容,转换为通过所述第二协议表达的第六字段内容;
步骤S43:创建通过所述第二协议表达的第二初始ACE;所述第二初始ACE用于指示对所述第二对象和所述第二对象组对所述目标资源进行权限控制的方式;
步骤S44:将所述第六字段内容写入所述第二初始ACE的权限限制字段,得到通过所述第二协议表达的第一备选ACE。
在本公开实施例中,首先,创建一个表示允许的权限量other_allow。然后,确定S3ACL中EveryOne类型的ACE(即,第四目标ACE),其中,该EveryOne类型的ACE可以理解为S3ACL中Grantee字段为EveryOne的ACE。确定S3 ACL中EveryOne类型的ACE的权限限制字段的字段内容,即,上述步骤中所描述的第四目标ACE的权限限制字段的字段内容。将这个S3ACL中EveryOne类型的ACE的权限限制字段的字段内容设置到other_allow中。
这里,可以将other_allow中描述的权限位,转换为有效的POSIX ACL的权限限制字段的字段内容,从而得到第六字段内容。其中,如果POSIX ACL的“写”权限位转换到S3ACL的“写权限”和“ACP写权限”,按照此关系进行转换时,需要同时具有“写权限”和“ACP写权限”,才能在对应的POSIX ACE的权限位中设置“写”权限位。
这里,可以创建一个POSIX Other ACE,将other_allow中进行转换之后的权限位设置到POSIX Other ACE的权限位,将得到的POSIX Other ACE放入目标POSIX ACL中。
在此情况二下,上述步骤S12将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,具体包括如下步骤:
步骤S51:在所述第五目标ACE中限制目标字段所指示的限制目标为对象组的情况下,创建通过所述第二协议表达的第三初始ACE;所述第三初始ACE为对象组类型的ACE;
步骤S52:将所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息;
步骤S53:将所述第五目标ACE中权限限制字段的字段内容,内容转换为通过所述第二协议协议表达的字段内容,得到第七字段内容;
步骤S54:确定所述第四目标ACE中权限限制字段的字段内容,得到第八字段内容;
步骤S55:将所述第三对象映射信息写入所述第三初始ACE的限制目标字段,并将所述第七字段内容和所述第八字段内容写入所述第三初始ACE的权限限制字段,得到对象组类型的所述第二备选ACE。
在本公开实施例中,针对S3 ACL中Grantee字段为S3预定义组(AuthenticatedUsers)的S3 ACE(即,限制目标字段所指示的限制目标为对象组的第五目标ACE),进行以下处理,否则忽略并判断下一个ACE:
首先,创建一个POSIX Group ACE,即第三初始ACE。然后,将该S3 ACE的Grantee字段,根据S3用户到Unix用户的映射关系表,转换成Unix用户组标识GID(即,第三对象映射信息),并将该Unix用户组标识GID设置到新创建的POSIX Group ACE的限制目标字段中。
将该S3 ACE的Permission字段,进行权限限制字段的转换,转换为有效的POSIXACL的权限限制字段(即,第七字段内容)。其中,如果转换不是直接可行的情况,比如POSIXACL的“写”权限限制字段转换到S3 ACL的“写权限”和“ACP写权限”,按照此关系进行反向转换时,必须同时具有“写权限”和“ACP写权限”,才能在对应的POSIX ACE的权限位中设置“写”限制字段。将转换后的限制字段,设置到得到的POSIX Group ACE的限制字段中。
这里,可以将S3 ACL中EveryOne类型的ACE(即Grantee字段是EveryOne,也即上述第四目标ACE),将该S3 EveryOne AC中权限限制字段的字段内容(即,第八字段内容),设置到得到的POSIX Group ACE的权限限制字段中。最后,将得到的POSIX Group ACE,放入目标POSIX ACL中。
在此情况二下,上述步骤S12将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,具体包括如下步骤:
步骤S61:在所述第五目标ACE中限制目标字段所指示的限制目标为对象的情况下,创建通过所述第二协议表达的第三初始ACE;所述第三初始ACE为对象类型的ACE;
步骤S62:将所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息;
步骤S63:将所述第五目标ACE中权限限制字段的字段内容,内容转换为通过所述第二协议协议表达的字段内容,得到第七字段内容;
步骤S64:确定所述第四目标ACE中权限限制字段的字段内容,得到第八字段内容;
步骤S65:将所述第三对象映射信息写入所述第三初始ACE的限制目标字段,并将所述第七字段内容和所述第八字段内容写入所述第三初始ACE的权限限制字段,得到对象类型的所述第二备选ACE。
在本公开实施例中,按照从前到后的顺序,遍历S3 ACL的所有S3 ACE,进行以下处理:
如果遍历到的S3 ACE的Grantee是非EveryOne用户,则进行以下处理,否则忽略此S3 ACE:
如果S3 ACE的Grantee是对应的S3桶或S3对象的属主,则创建一个POSIX UserObj ACE(即,第三初始ACE),否则创建一个POSIX User ACE。
将该S3 ACE的Grantee字段,根据S3用户到Unix用户的映射关系表,转换成Unix用户标识UID(即,第三对象映射信息),并将该Unix用户标识UID设置到新创建的POSIX UserObj ACE或POSIX User ACE的限制目标字段中。
将该S3 ACE的权限限制Permission字段,进行权限限制字段的转换,转换为有效的POSIX ACL的权限限制字段(即,第七字段内容)。其中,如果转换不是直接可行的情况,比如POSIX ACL的“写”权限限制字段转换到S3 ACL的“写权限”和“ACP写权限”,按照此关系进行转换时,必须同时具有“写权限”和“ACP写权限”,才能在对应的POSIX ACE的权限限制字段中设置“写”权限限制字段。将转换后的权限限制字段,设置到得到的POSIX User ObjACE或POSIX User ACE的权限限制字段中。
这里,可以将S3 ACL中EveryOne类型的ACE(即Grantee字段是EveryOne,也即上述第四目标ACE),将该S3 EveryOne AC中权限限制字段的字段内容(即,第八字段内容),设置到得到的POSIX User Obj ACE或POSIX User ACE的权限限制字段中。最后,将得到的所有POSIX User Obj ACE和POSIX User ACE,放入目标POSIX ACL中。
在此情况二下,上述步骤基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE,具体包括如下步骤:
首先,将所述第一备选ACE和所述第二备选ACE中的权限限制字段的字段内容的内容并集,并基于所述内容并集确定通过所述第二协议表达的第三备选ACE;所述第三备选ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
其次,基于所述第一备选ACE、所述第二备选ACE和所述第三备选ACE,确定所述第四ACE。
在本公开实施例中,如果上述得到目标POSIX ACL中,有POSIX User ACE或者POSIX Group ACE,进行以下处理,得到POSIX Mask ACE:
这里,可以创建一个POSIX Mask ACE,并将所有POSIX User ACE、POSIX GroupACE和POSIX Group Obj ACE中权限限制字段的字段内容,进行得到“或”运算,得到POSIXMask ACE的权限限制字段的字段内容,并设置到对应的权限限制字段。
在一个可选的实施方式中,上述步骤S206确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息,具体包括如下步骤:
步骤S2061:在所述访问请求中确定所述对象的初始对象信息;
步骤S2062:确定与所述对象相匹配的映射表;其中,所述映射表用于表征从所述第一协议所服务对象和第二协议所服务对象之间的映射关系;
步骤S2063:基于所述映射表确定与所述初始对象信息相对应的映射表项,并基于所述映射表项确定所述第一对象映射信息。
在本公开实施例中,在分布式文件存储集群中,可以持久化保存的映射表,映射表1的表项是Windows用户到Unix用户的映射关系,映射表2的表项是S3用户到Unix用户的映射关系,映射表项由管理员配置。如图3所示,首先,在检测到SMB访问请求和S3访问请求之后,将映射表从持久化介质中读取到内存中。之后,在访问请求中提取初始对象信息,并从映射表中查找映射表项,从而基于映射表项确定第一对象映射信息。
在SMB会话建立时,从会话上下文中,得到会话的Windows用户信息(即,初始对象信息),并确定与对象相匹配的映射表,以及在映射表中哈希索引到对应的映射表项,得到映射的Unix用户名。
在S3请求处理时,从访问请求的上下文中,得到请求携带的S3用户名,在映射表中哈希索引到对应的映射表项,得到映射的Unix用户名。然后根据用户名,进一步获取用户ID、用户所属的用户组名、用户所属的用户组ID,从而得到第一对象映射信息。上述所描述的第一对象映射信息后续用于权限校验的Unix用户信息。
在一个可选的实施方式中,上述步骤S208根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限,具体包括如下步骤:
步骤S2081:基于所述第一ACL所对应的权限校验算法,对所述第一对象映射信息进行权限校验处理,得到所述访问请求的权限校验结果。
在本公开实施例中,在获取到访问请求之后,可以获取第一ACL,并在第一协议和第二协议不相同的情况下,确定第一对象映射信息,从而通过权限校验算法对第一对象映射信息进行权限校验处理,得到所述访问请求的权限校验结果。
如果访问请求为访问某个目录或文件的SMB请求,该SMB请求中携带了Windows用户信息,该Windows用户信息包括用户SID和用户组SID。此时,可以将该Windows用户信息转换为Unix用户信息,该Unix用户信息包括UID和GID。之后,可以将此UID和GID作为参数,带入POSIX ACL的权限校验流程,以通过POSIX ACL的权限校验算法对SMB请求进行校验,通过校验结果可以确定该SMB请求是否被允许访问目标目录或文件。
这里,权限校验算法可以为Linux的POSIX ACL的POSIX_acl_permission算法。通过该权限校验算法可以保证可移植性和通用性。权限互通情况下,上述权限校验流程生效,而SMB服务中原有的对NT ACL的权限校验流程不生效。
如果访问请求为访问某个目录或文件的S3请求,该S3请求中携带S3用户Account。此时,可以将该用户Account转换为Unix用户信息,该Unix用户信息包括UID和GID。之后,可以将此UID和GID作为参数,带入POSIX ACL的权限校验流程,以通过POSIX ACL的权限校验算法对SMB请求进行校验,通过校验结果可以确定该S3请求是否被允许访问目标目录或文件。
这里,权限校验算法可以为Linux的POSIX ACL的POSIX_acl_permission算法,通过该权限校验算法可以用于保证可移植性和通用性。权限互通情况下,上述权限校验流程生效,而S3服务中原有的对S3 ACL的权限校验流程不生效。
在本公开实施例中,在获取到第一ACL之后,如果确定第一协议和所述第二协议不相同,那么还可以执行以下步骤:
步骤S210:将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE;
步骤S211:基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL。
在本公开实施例中,在接收到访问请求之后,可以基于第一ACL进行转换,转换为通过第一协议表达的第二ACE,进而为对象展示基于该第二ACE确定的待展示ACL。这里,待展示ACL和第二ACL可以完全相同,还可以部分相同,但是待展示ACL和第二ACL所表达的权限控制语义相同。
这里,在向对象发送待展示ACL之后,可以检测对象对待展示ACL的修改信息,并将修改后的待展示ACL作为第二ACL,以及按照上述所描述的方法将修改后的待展示ACL,转换为通过所述第二协议表达的第一ACL。
在一个可选的实施方式中,上述步骤S210将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE,具体包括如下步骤:
步骤S71:在生效类第一ACE和继承类第一ACE中删除第一禁止权限,得到删除后所述第一ACE;所述第一禁止权限用于指示所述第二协议所服务的对象对所述目标资源的禁止访问权限,所述继承类第一ACE用于指示对在所述目标资源所对应目录下新创建的资源进行权限控制的方式,所述生效类第一ACE用于指示对所述目标资源进行权限控制的方式;
步骤S72:在删除后所述第一ACE中确定第一目标ACE,将所述第一目标ACE中的权限控制字段,转换为通过所述第一协议表达的目标字段;所述第一目标ACE用于指示对各用户和各用户组进行权限控制的方式;
步骤S73:在已创建的第一初始ACE中写入所述目标字段,得到所述第二ACE;其中,所述第一初始ACE为通过所述第一协议表达的空ACE。
在本公开实施例中,可以在第一ACL中确定包含允许权限全集的ACE。例如,如果第一ACL为POSIX ACL,那么包含允许权限全集的ACE即为POSIX ACL中的Mask ACE。确定该包含允许权限全集的ACE,不允许的权限位,进而基于该不允许的权限位确定第一禁止权限,并在生效类第一ACE和继承类第一ACE中删除该第一禁止权限,得到删除后第一ACE。
如果第一ACL为POSIX ACL,那么生效类第一ACE为该POSIX ACL中的Access ACE,继承类第一ACE为该POSIX ACL中的Default ACE。
在得到删除后第一ACE之后,可以遍历删除后的每个第一ACE,如果遍历出该ACE不是包含允许权限全集的ACE(例如,Mask ACE),则确定该第一ACE为第一目标ACE。接下来,可以将第一目标ACE中的权限控制字段,转换为通过第一协议表达的目标字段,并将目标字段写入已创建的第一初始ACE中,从而得到第二ACE。
在一个可选的实施方式中,上述步骤S72将所述第一目标ACE中的权限控制字段,转换为通过所述第一协议表达的目标字段,具体包括如下步骤:
步骤S81:将所述第一目标ACE中限制目标字段的字段内容,转换为通过所述第一协议表达的第一字段内容;
步骤S82:将所述第一目标ACE中限制权限字段的字段内容,转换为通过所述第一协议表达的第二字段内容;
步骤S83:基于所述第一字段内容和所述第二字段内容,确定所述目标字段。
如果第一协议为SMB协议,第二协议为NFS协议,那么上述步骤S81至步骤S83所描述的过程可以为如下所述的过程:
首先,预先创建一个NT Allow ACE,即上述所描述的第一初始ACE。
遍历第一ACL中的每个第一ACE,如果遍历出该第一ACE是User和Group类型的ACE,则确定该第一ACE为第一目标ACE,此时,将User类型和Group类型的ACE中的UserID、GroupID,根据Windows用户到Unix用户的映射表,将UID和GID转换为对应的Windows用户标识SID(即,通过第一协议表达的第一字段内容),并将该Windows用户标识SID填入NT AllowACE的限制目标字段。
如果遍历出该第一ACE是User Obj ACE、Group Obj ACE类型或Other ACE类型的ACE,则将User Obj ACE、Group Obj ACE、Other ACE的限制目标字段,转换为特殊Windows用户标识。例如,可以将User Obj ACE、Group Obj ACE、Other ACE中限制目标字段指示的特殊用户标识,分别转换为以下第一字段内容:"OWNER@","GROUP@"和"EVERYONE@";然后,将该第一字段内容填入NT Allow ACE的限制目标字段。
通过上述处理方式,可以将第一目标ACE中限制目标字段的字段内容转换为通过SMB协议表达的第一字段内容。
如果遍历出该第一ACE的权限限制字段permission bits中有“读”权限位,则设置NT Allow ACE的NT Read Data权限位。如果遍历出该第一ACE的权限限制字段permissionbits中有“写”权限位,则设置NT Allow ACE的NT Write Data和NT Append Data权限位。进一步,如果遍历出该第一ACE是Group ACE或Group Obj ACE,则还需要额外设置NT AllowACE的NT Delete Child权限位。如果遍历出该第一ACE的权限限制字段permission bits中有“执行”权限位,则设置NT Allow ACE的NT Execute权限位。无条件设置NT Read Acl、NTRead Attr、NT Synchronize三个权限位。如果遍历出该第一ACE类型是User Obj ACE,则设置NT Allow ACE的NT Write Acl和NT Write Attr权限位。最后,将NT Allow ACE的其余权限位置零。
通过上述处理方式,可以将第一目标ACE中限制权限字段的字段内容,转换为通过SMB协议表达的第二字段内容。
如果第一协议为S3协议,第二协议为NFS协议,那么上述步骤S81至步骤S83所描述的过程可以为如下所述的过程:
首先,预先创建一个S3 ACE,即上述所描述的第一初始ACE。
遍历第一ACL中的每个第一ACE,如果遍历出该第一ACE是User类型的ACE,将UserACE中的UserID,根据S3用户到Unix用户的映射表,将UID转换为对应的S3用户Account(即,通过第一协议表达的第一字段内容),并将该S3用户Account填入S3 ACE的Grantee字段。
如果遍历出该第一ACE是Group类型的ACE,将Group ACE中的GroupID,根据S3用户到Unix用户的映射表,将GID转换为对应的S3预定义组(AuthenticatedUsers和AllUsers),填入S3 ACE的Grantee字段,如果GID不能对应一个预定义组,则忽略此Group ACE。
如果遍历出该第一ACE是User Obj ACE类型,将User Obj ACE标识的属主用户UserID,根据S3用户到Unix用户的映射表,将UID转换为对应的S3用户Account,填入S3 ACE的Grantee字段。
如果遍历出该第一ACE是Group Obj ACE类型,将Group Obj ACE标识的属组用户组GroupID,根据S3用户到Unix用户的映射表,将GID转换为对应的S3预定义组(AuthenticatedUsers和AllUsers),填入S3 ACE的Grantee字段,如果GID不能对应一个预定义组,则忽略此Group Obj ACE。
如果遍历出该第一ACE是Other类型的ACE,将Other类型的ACE标识的特殊用户Other,转换为特殊S3用户标识EveryOne,填入S3 ACE的Grantee字段。
通过上述处理方式,可以将第一目标ACE中限制目标字段的字段内容转换为通过S3协议表达的第一字段内容。
如果遍历出该第一ACE的permission bits中有“读”权限位,则设置S3 ACE的“读权限”和“ACP读权限”。如果遍历出该第一ACE的permission bits中有“写”权限位,则设置S3 ACE的“写权限”和“ACP写权限”。如果遍历出该第一ACE类型是User Obj ACE,则设置S3ACE的“完全控制权限”。最后,忽略ACE的permission bits的“执行”权限位,并清除S3 ACE的其余权限。
通过上述处理方式,可以将第一目标ACE中限制权限字段的字段内容,转换为通过S3协议表达的第二字段内容。
在一个可选的实施方式中,在第一协议为SMB协议,第二协议为NFS协议的情况下,在已创建的第一初始ACE中写入所述目标字段之后,该方法还包括如下步骤:
在确定所述第一目标ACE中限制目标字段所指示的对象类型为属主用户组的情况下,在所述第一初始ACE中设置第一指示标识,得到所述第二ACE;其中,所述第一指示标识用于指示所述第一目标ACE的继承类型,所述属主用户组用于指示拥有所述目标资源的用户组。
在本公开实施例中,如果第一目标ACE类型是Group Obj ACE,则可以确定该第一目标ACE中限制目标字段所指示的对象类型为属主用户组。此时,可以在NT Allow ACE(即,第一初始ACE)中设置Group flag。
在一个可选的实施方式中,在第一协议为SMB协议,第二协议为NFS协议,第二ACE为允许类ACE的情况下,上述步骤基于所述第二ACE确定用于向所述对象展示的待展示ACL,具体包括如下步骤:
按照所述第二ACE中限制目标字段所指示的对象类型,对所述第二ACE进行排序,排序后得到第一允许ACE列表;
在所述第一ACL中确定所述第二ACE对应的第二目标ACE;
基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表;
基于所述第二允许ACE列表,确定所述待展示ACL。
在本公开实施例中,在第一协议为SMB协议,第二协议为NFS协议,第二ACE可以理解为通过上述实施例确定出的NT Allow ACE,又可以称为允许类ACE。
在此情况下,可以对第二ACE进行排序,排序后得到第一允许ACE列表(也即AllowACE列表),例如,可以按照OWNER@,user,GROUP@,group,EVERYONE@的顺序对第二ACE进行排序,其中,user指任意的普通用户标识、group指任意的普通用户组标识。
在得到第一允许ACE列表之后,可以在POSIX ACL中确定每个第二ACE对应的POSIXACE,得到第二目标ACE。然后,基于第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表。
在本公开实施例中,在按照上述所描述的方式对第一允许ACE列表进行修正之后,可以得到第二允许ACE列表,进而基于该第二允许ACE列表确定待展示ACL。
在一个可选的实施方式中,上述步骤基于所述第二允许ACE列表,确定所述待展示ACL,具体包括如下步骤:
在所述目标资源为目录的情况下,在所述第二允许ACE列表中确定与继承类第一ACE对应的目标ACE;所述继承类第一ACE用于指示对在所述目录下创建的文件进行权限控制的方式;
在所述目标ACE中设置继承标识字段的字段内容,得到第三允许ACE列表;
将所述第三允许ACE列表中的ACE划分为第一子列表和第二子列表,将所述第一子列表和所述第二子列表进行拼接,得到所述待展示ACL;所述第一子列表由生效类第一ACE变换得到,所述第二子列表由所述继承类第一ACE变换得到,所述生效类第一ACE用于指示对所述目录进行权限控制的方式。
在本公开实施例中,如果第一ACL保护的目标资源是目录,且POSIX ACL中存在POSIX Default ACL,则针对POSIX Default ACL所对应目标ACE,除了按照上述所描述步骤进行转换之外,还需要设置目标ACE的继承标识字段的字段内容,例如,可以设置目标ACE中的Inherit Only和Directory Inherit和File Inherit指示标识,设置之后得到第三允许ACE列表。
在本公开实施例中,在得到第三允许ACE列表之后,如果第一ACL保护的目标资源是目录,且POSIX ACL中同时存在POSIX Default ACL和POSIX Access ACL,则需要将第三允许ACE列表划分为第一子列表和第二子列表;其中,第一子列表由Access ACE转换得到,第二子列表由Default ACE转换得到),然后,将这两个列表依次放入目标NT ACL中,得到待展示ACL,其中,第一子列表位于第二子列表之前。
在一个可选的实施方式中,上述步骤基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表,具体包括如下步骤:
基于所述目标限制语义在所述第二目标ACE中确定第三目标ACE;所述第三目标ACE的权限限制字段的字段内容用于指示对所述目标资源的禁止访问权限;
确定所述第一允许ACE列表中所述第三目标ACE所对应第二ACE,并基于所述所对应第二ACE在所述第一允许ACE列表中的位置,在所述第一允许ACE列表中插入目标拒绝ACE,得到所述第二允许ACE列表;其中,所述目标拒绝ACE用于表示所述所对应第二ACE中权限限制字段的字段内容所指示的权限为禁止访问权限。
如果上述排序后的第一允许ACE列表中的ACE,在原来的POSIX ACL列表中,对应的POSIX ACE,存在"POSIX ACE所允许的权限位,是某个POSIX ACL中排序在前面的、且限制目标标识同样匹配的、且权限位没有允许"的情况,则需要在第一允许ACE列表插入额外的NTDeny ACE,用于模拟POSIX ACL的"first-match"语义。
因此,可以基于目标限制语义在第二目标ACE中确定权限限制字段的字段内容用于指示对所述目标资源的禁止访问权限的第三目标ACE;并在第一允许ACE列表中确定第三目标ACE对应的第二ACE,并基于所对应第二ACE在第一允许ACE列表中的位置,在第一允许ACE列表中插入目标拒绝ACE,得到第二允许ACE列表。
举例来说,针对第一允许ACE列表,如果从原来的POSIX ACL列表中,得到对应的POSIX ACE。如果POSIX ACE是普通用户类型、属主用户类型或者其他用户用户组类型,且满足以下条件:POSIX ACE允许的权限位,是POSIX ACL中后续某个POSIX ACE的权限位的子集,且后续的这个POSIX ACE满足“用户标识一致”(用户ID一致、用户属于后续ACE的用户组、或者用户组一致),则确定该POSIX ACE是第三目标ACE,此时,需要在第三目标ACE对应的NT Allow ACE(第二ACE)的前面,插入一个NT Deny ACE。这个NT Deny ACE和NT AllowACE,有同样的限制目标标识、指示标识Flag,但是权限位是NT Allow ACE的权限位的取反后的值,其中,如果取反前的权限位包括NT Write Owner、NT Delete、NT Read NamedAttributes、NT Write Named Attributes,则置零这些权限位。此外,如果第一ACL保护的目标资源不非目录,置零NT Delete Child权限位。
针对第一允许ACE列表,如果从原来的POSIX ACL列表中,得到对应的POSIX ACE。如果POSIX ACE是普通用户组类型或属主用户组类型。则确定该POSIX ACE是第三目标ACE,此时,需要确定对应的NT Allow ACE,并生成一个NT Deny ACE列表。将生成之后的NT DenyACE列表,放到Group@和group类型的NT Allow ACE的后面。
在本公开实施例中,在第一协议为SMB协议,所述第二协议为S3协议的情况下,上述步骤基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL,具体包括如下步骤:
在所述第二ACE中确定第三ACE;所述第三ACE用于指示目标对象对所述目标资源进行权限控制的方式;
将所述第三ACE移动至所述第二ACE所在列表的末尾位置。
在本公开实施例中,如果包含Grantee是EveryOne的ACE,则确定该ACE为第三ACE;其中,EveryOne所指示的限制目标即为该目标对象。此时,可以将此Every ACE排到所有S3ACE(第二ACE)的最后,从而得到待展示ACL。
下面将分情况描述上述过程。
情况一:第一协议为SMB协议,第二协议为NFS协议。此时,第一ACL为POSIX ACL,待展示ACL为NT ACL。
在此情况下,将POSIX ACL转换为NT ACL的算法如下:
第1步:在生效类第一ACE(Access ACE)和继承类第一ACE(Default ACE)中删除第一禁止权限(Mask ACE中不允许的权限位permission bits),得到删除后第一ACE;第一禁止权限用于指示NFS协议所服务的对象对目标资源的禁止访问权限,继承类第一ACE用于指示对在所述目标资源所对应所述目录下新创建的文件资源进行权限控制的方式,生效类第一ACE用于指示对所述目录目标资源进行权限控制的方式。
在本公开实施例中,可以在POSIX ACL中确定包含允许权限全集的Mask ACE。确定该包含允许权限全集的ACE所不允许的权限位,进而基于该不允许的权限位确定第一禁止权限,并在Access ACE和Default ACE中删除该第一禁止权限,得到删除后第一ACE。
第2步:从前到后,遍历POSIX ACL中的所有POSIX ACE(包括Access ACE和DefaultACE),如果遍历到的POSIX ACE不是Mask ACE,则进行以下处理:
2.1:创建一个NT Allow ACE,即第一初始ACE。
2.2:在删除后第一ACE中确定第一目标ACE(非Mask ACE),并将第一目标ACE中限制目标字段的字段内容,转换为通过所述第一协议表达的第一字段内容。
遍历第一ACL(即POSIX ACL)中的每个第一ACE(即POSIX ACE),进而根据每个第一ACE的类型对限制目标字段的字段内容进行转换。
2.2.1:如果遍历出该第一ACE是User类型和Group类型的ACE,例如,为User ACE或者Group ACE,则确定该第一ACE为第一目标ACE。此时,将User ACE和Group ACE中的UserID(简称UID)、GroupID(简称GID),根据Windows用户到Unix用户的映射表,将UID和GID转换为对应的Windows用户标识SID(即,通过第一协议表达的第一字段内容),并将该Windows用户标识SID填入NT Allow ACE的限制目标字段。
2.2.2:如果遍历出该第一ACE是User Obj ACE、Group Obj ACE或Other ACE,则将User Obj ACE、Group Obj ACE、Other ACE的限制目标字段,转换为特殊Windows用户标识。例如,可以将User Obj ACE、Group Obj ACE、Other ACE中限制目标字段指示的特殊用户标识,分别转换为以下第一字段内容:"OWNER@","GROUP@"和"EVERYONE@";然后,将该第一字段内容填入NT Allow ACE的限制目标字段。
2.3:将第一目标ACE中限制权限字段的字段内容,转换为通过第一协议表达的第二字段内容。
2.3.1:如果遍历出该第一ACE的权限限制字段permission bits中有“读”权限位,则设置NT Allow ACE的NT Read Data权限位。
2.3.2:如果遍历出该第一ACE的权限限制字段permission bits中有“写”权限位,则设置NT Allow ACE的NT Write Data和NT Append Data权限位。进一步,如果遍历出该第一ACE是Group ACE或Group Obj ACE,则还需要设置NT Allow ACE的NT Delete Child权限位。
2.3.3:如果遍历出该第一ACE的权限限制字段permission bits中有“执行”权限位,则设置NT Allow ACE的NT Execute权限位。
2.3.4:无条件设置NT Read Acl、NT Read Attr、NT Synchronize三个权限位。
2.3.5:如果遍历出该第一ACE类型是User Obj ACE,则设置NT Allow ACE的NTWrite Acl和NT Write Attr权限位。
2.3.6:最后,将NT Allow ACE的其余权限位置零。
2.4:在确定第一目标ACE中限制目标字段所指示的对象类型为属主用户组的情况下,在第一初始ACE中设置第一指示标识,得到第二ACE;其中,第一指示标识用于指示第一目标ACE的继承类型,主用户组用于指示拥有目标资源的用户组。
这里,如果遍历出POSIX ACE是Group Obj ACE(即,对象类型为属主用户组的第一目标ACE),则设置NT Allow ACE(即,第一初始ACE)的GROUP flag(即,第一指示标识)。
通过上述处理方式,可以实现将所有POSIX ACE转换为NT ACL ACE,下面需要对NTACE进行调整,具体调整过程如下述第3至第6所述。
第3步:按照第二ACE中限制目标字段所指示的对象类型,对第二ACE进行排序,排序后得到第一允许ACE列表。
在此情况下,可以对第二ACE进行排序,排序后得到第一允许ACE列表(也即AllowACE列表),例如,可以按照OWNER@,user,GROUP@,group,EVERYONE@的顺序对第二ACE进行排序,其中,user指任意的普通用户标识、group指任意的普通用户组标识。
第4步:在第一ACL(即POSIX ACL)中确定第二ACE对应的第二目标ACE;基于第二目标ACE中权限限制字段所指示的目标限制语义,对第一允许ACE列表进行修正,得到用于模拟权限控制语义的第二允许ACE列表。
在得到第一允许ACE列表之后,可以在POSIX ACL中确定每个第二ACE对应的POSIXACE,得到第二目标ACE。然后,基于第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟权限控制语义的第二允许ACE列表。
4.1.1针对第一允许ACE列表,如果从原来的POSIX ACL列表中,得到对应的POSIXACE。如果POSIX ACE是普通用户类型、属主用户类型或者其他用户用户组类型,且满足以下条件:POSIX ACE允许的权限位,是POSIX ACL中后续某个POSIX ACE的权限位的子集,且后续的这个POSIX ACE满足“用户标识一致”(用户ID一致、用户属于后续ACE的用户组、或者用户组一致),则确定该POSIX ACE是第三目标ACE,此时,需要在第三目标ACE对应的NT AllowACE(第二ACE)的前面,插入一个NT Deny ACE。这个NT Deny ACE和NT Allow ACE,有同样的限制目标标识、指示标识Flag,但是权限位是NT Allow ACE的权限位的取反后的值,其中,如果取返前的权限位包括NT Write Owner、NT Delete、NT Read Named Attributes、NTWrite Named Attributes,则置零这些权限位。此外,如果第一ACL保护的目标资源不非目录,置零NT Delete Child权限位。
4.1.2:针对第一允许ACE列表,如果从原来的POSIX ACL列表中,得到对应的POSIXACE。如果POSIX ACE是普通用户组类型或属主用户组类型。则确定该POSIX ACE是第三目标ACE,此时,需要确定对应的NT Allow ACE,并生成一个NT Deny ACE列表。将生成之后的NTDeny ACE列表,放到Group@和group类型的NT Allow ACE的后面。
第5步:在目标资源为目录的情况下,在第二允许ACE列表中确定与继承类第一ACE对应的目标ACE;继承类第一ACE用于指示对在目录下创建的文件进行权限控制的方式;在目标ACE中设置继承标识字段的字段内容,得到第三允许ACE列表。
在本公开实施例中,如果第一ACL保护的目标资源是目录,且POSIX ACL中存在POSIX Default ACL(即,继承类第一ACE),则针对POSIX Default ACL所对应目标ACE,除了按照上述所描述步骤进行转换之外,还需要设置目标ACE的继承标识字段的字段内容,例如,可以设置目标ACE中的Inherit Only和Directory Inherit和File Inherit指示标识,设置之后得到第三允许ACE列表。
第6步:将第三允许ACE列表中的ACE划分为第一子列表和第二子列表,将第一子列表和第二子列表进行拼接,得到待展示ACL;第一子列表由生效类第一ACE变换得到,第二子列表由所述继承类第一ACE变换得到,生效类第一ACE用于指示对目录进行权限控制的方式。
在本公开实施例中,在得到第三允许ACE列表之后,如果第一ACL保护的目标资源是目录,且POSIX ACL中同时存在POSIX Default ACL和POSIX Access ACL,则需要将第三允许ACE列表划分为第一子列表和第二子列表;其中,第一子列表由Access ACE转换得到,第二子列表由Default ACE转换得到),然后,将这两个列表依次放入目标NT ACL中,得到待展示ACL,其中,第一子列表位于第二子列表之前。
完成以上步骤后,得到的NT ACL就是从POSIX ACL转换后得到的待展示NT ACL。
情况二:第一协议为S3协议,第二协议为NFS协议。此时,第一ACL为POSIX ACL,待展示ACL为NT ACL。
在此情况下,将POSIX ACL转换为S3 ACL的算法如下:
第1步:在生效类第一ACE和继承类第一ACE中删除第一禁止权限(Mask ACE中不允许的权限位permission bits),得到删除后第一ACE;第一禁止权限用于指示NFS协议所服务的对象对目标资源的禁止访问权限,继承类第一ACE用于指示对在目录下创建的文件进行权限控制的方式,生效类第一ACE用于指示对目录进行权限控制的方式。
在本公开实施例中,可以在POSIX ACL中确定包含允许权限全集的Mask ACE。确定该包含允许权限全集的ACE所不允许的权限位,进而基于该不允许的权限位确定第一禁止权限,并在Access ACE和Default ACE中删除该第一禁止权限,得到删除后第一ACE。
第2步:从前到后,遍历POSIX ACL中的所有POSIX ACE(包括Access ACE和DefaultACE),如果遍历到的POSIX ACE不是Mask ACE,则进行以下处理:
2.1:创建一个S3 ACE,即第一初始ACE。
2.2:在删除后第一ACE中确定第一目标ACE(非Mask ACE),并将第一目标ACE中限制目标字段的字段内容,转换为通过所述第一协议表达的第一字段内容。
遍历第一ACL(即POSIX ACL)中的每个第一ACE(即POSIX ACE),进而根据每个第一ACE的类型对限制目标字段的字段内容进行转换。
2.2.1:如果遍历出该第一ACE是User ACE,将User ACE中的UserID(简称UID),根据S3用户到Unix用户的映射表,将UID转换为对应的S3用户Account(即,通过第一协议表达的第一字段内容),并将该S3用户Account填入S3 ACE的Grantee字段。
2.2.2:如果遍历出该第一ACE是Group ACE类型,将Group ACE中的GroupID,根据S3用户到Unix用户的映射表,将GID转换为对应的S3预定义组(AuthenticatedUsers和AllUsers),填入S3 ACE的Grantee字段,如果GID不能对应一个预定义组,则忽略此GroupACE。
2.2.3:如果遍历出该第一ACE是User Obj ACE类型,将User Obj ACE标识的属主用户UserID,根据S3用户到Unix用户的映射表,将UID转换为对应的S3用户Account,填入S3ACE的Grantee字段。
2.2.4:如果遍历出该第一ACE是Group Obj ACE类型,将Group Obj ACE标识的属组用户组GroupID,根据S3用户到Unix用户的映射表,将GID转换为对应的S3预定义组(AuthenticatedUsers和AllUsers),填入S3 ACE的Grantee字段,如果GID不能对应一个预定义组,则忽略此Group Obj ACE。
2.2.5:如果遍历出该第一ACE是Other ACE类型,将Other ACE标识的特殊用户Other,转换为特殊S3用户标识EveryOne,填入S3 ACE的Grantee字段。
2.3:将第一目标ACE中限制权限字段的字段内容,转换为通过第一协议表达的第二字段内容。
2.3.1:如果遍历出该第一ACE的permission bits中有“读”权限位,则设置S3 ACE的“读权限”和“ACP读权限”。
2.3.2:如果遍历出该第一ACE的permission bits中有“写”权限位,则设置S3 ACE的“写权限”和“ACP写权限”。
2.3.3:如果遍历出该第一ACE类型是User Obj ACE,则设置S3 ACE的“完全控制权限”。
2.3.4:最后,忽略ACE的permission bits的“执行”权限位,并清除S3 ACE的其余权限。
通过上述处理方式,可以将POSIX ACL中POSIX ACE转换为通过S3协议表达的S3ACE(也即,第二ACE)。
第3步:在第二ACE中确定第三ACE;第三ACE用于指示目标对象对目标资源进行权限控制的方式;将第三ACE移动至第二ACE所在列表的末尾位置。
在本公开实施例中,如果包含Grantee是EveryOne的ACE,则确定该ACE为第三ACE;其中,EveryOne所指示的限制目标即为该目标对象。此时,可以将此Every ACE排到所有S3ACE(第二ACE)的最后,从而得到待展示ACL。
情况三:第一协议为SMB协议,第二协议为NFS协议。此时,第一ACL为POSIX ACL,第二ACL为NT ACL。
在此情况下,将NT ACL转换为POSIX ACL的算法如下:
第1步:对于ACL保护的资源是目录的情况,进行以下处理:
遍历NT ACL的每一个ACE,进行以下处理,得到“仅生效列表Access ACE”和“仅继承列表Default ACE”,否则直接进行第2步到第5步。
1.1:创建一个用于生效权限的POSIX ACE的“仅生效列表”,以及创建一个用于继承权限的POSIX ACE的“仅继承列表”。
1.2:确定第二ACL中Group类型的ACE(也即,第六目标ACE)的第二指示标识;第二指示标识用于指示Group类型的ACE的继承类型;基于第二指示标识的标识类型,将第六目标ACE划分为生效类ACE列表和继承类ACE列表。
1.2.1:如果NT ACE是普通Group类型的NT Group ACE(普通用户组),或者是OwnerGroup类型(属主用户组)的NT Group ACE,则确定该NT ACE为第六目标ACE,此时,进行以下处理,否则忽略并判断下一个ACE。
1.2.2:如果NT ACE(例如,NT Group ACE)的Flag(第二指示标识)没有Inherit相关的标识,则将此NT ACE放入“仅生效列表”。
1.2.3:如果NT ACE(例如,NT Group ACE)的Flag(第二指示标识)有ContainerInherit或Object Inherit标识,则将此NT ACE放入“仅生效列表”,也放入“仅继承列表”。
1.2.4:如果NT ACE(例如,NT Group ACE)的Flag(第二指示标识)有Inherit Only标识,且有Container Inherit或Object Inherit标识,则将此ACE放入“仅继承列表”。
1.2.5:其余Inherit相关标志的组合,则忽略。
这里,“仅生效列表”用于得到目标POSIX ACL的Access ACE,“仅继承列表”用于得到目标POSIX ACL的Default ACE,对两个列表中的ACE要进行下面的第2步到第5步的具体步骤处理,分别得到POSIX Access ACE和POSIX Default ACE。
第2步:遍历NT ACL的每一个ACE,进行以下处理,得到POSIX Other ACE,具体过程描述如下:
2.1:创建一个表示允许的权限量,称为other_allow,和一个表示拒绝的权限量,称为other_deny。
2.2:从前到后,遍历NT ACL的所有NT ACE,进行以下处理:
2.2.1:如果NT ACE是EveryOne类型的ACE,则进行以下处理,否则忽略并判断下一个ACE:
2.2.2:确定所述第二ACL中允许类型的第四目标ACE的第一权限限制字段,具体过程描述如下:
如果NT ACE是EveryOne类型且是Allow类型(允许类型的第四目标ACE,简称NTEveryOne Allow ACE),则确定这个NT EveryOne Allow ACE中权限限制字段(即,上述第一权限限制字段)的字段内容,从而得到权限位的内容。
这里,可以将NT EveryOne Allow ACE中的部分权限位的内容设置到other_allow中,设置的部分权限位是未出现在other_deny中的部分权限位。
2.2.3:确定第二ACL中拒绝类型的第四目标ACE的第二权限限制字段,具体过程描述如下:
如果NT ACE是EveryOne类型且是Deny类型(拒绝类型的第四目标ACE,简称NTEveryOne Deny ACE),则确定NT EveryOne DenyACE中权限限制字段(即,上述第二权限限制字段)的字段内容,从而得到权限位的内容;并将NT EveryOne Deny ACE的部分权限位设置到other_deny中,设置的部分权限位是未出现在other_allow中的部分权限位。
在第一权限限制字段中确定未出现在第二权限限制字段中的第三字段内容。
在按照上述所描述的方式对NT ACE进行处理之后,可以得到权限量other_allow和other_deny。其中,权限量other_allow中所包含的权限位可以理解为第一权限限制字段中确定未出现在第二权限限制字段中的第三字段内容。
2.3:将第三字段内容转换成通过第二协议表达的第四字段内容,基于第四字段内容确定所述第一备选ACE。
在得到权限量other_allow和other_deny之后,可以删除other_deny,然后,将other_allow中描述的权限位,转换为有效的POSIX ACL的权限位(即,第四字段内容)。其中,如果转换不是直接可行的情况,比如POSIX ACL的“写”权限权限位转换到NT ACL的NTWrite Data和NT Append Data,按照此关系进行转换时,可以同时具有NT Write Data和NTAppend Data,才能在对应的POSIX ACE的权限位中设置“写”权限位。
2.4:创建一个POSIX Other ACE,并将2.3中得到的other_allow权限位设置到POSIX Other ACE的权限位的内容,得到POSIX Other ACE,其中,该POSIX Other ACE可以理解为上述所描述的第一备选ACE。之后,可以将该POSIX Other ACE放入目标POSIX ACL中。
第3步:遍历NT ACL的每一个ACE,进行以下处理,得到POSIX Group Obj ACE、POSIX Group ACE,具体过程描述如下:
3.1:创建一个用于允许权限POSIX Group ACE的“Allow列表”,和一个用于拒绝权限的POSIX Group ACE的“Deny列表”。
3.2:从前到后,遍历NT ACL的所有NT ACE,进行以下处理:
3.2.1:如果NT ACE是EveryOne类型,则确定第一权限限制字段中未出现在第四权限限制字段中的第五字段内容,否则忽略并判断下一个ACE。
3.2.1.1:如果NT ACE是EveryOne类型且是Allow类型(允许类型的第四目标ACE,简称NT EveryOne Allow ACE),则将这个NT EveryOne Allow ACE中的部分权限位,设置到“Allow列表”的每一个“Allow ACE”的权限位中,设置的部分权限位是满足“Deny列表”对应的“Deny ACE”的没有拒绝的权限位部分。这里,“Allow ACE”和对应的“Deny ACE”是指“Allow列表”和“Deny列表”中限制目标标识GID相同的两个ACE。
3.2.1.2:如果NT ACE是EveryOne类型且是Deny类型(拒绝类型的第四目标ACE,简称NT EveryOne Deny ACE),则将这个NT EveryOne Deny ACE中的部分权限位,设置到“Deny列表”的每一个“Deny ACE”的权限位中,设置的权限位部分是满足没有出现在“Allow列表”对应的“Allow ACE”的部分权限位。这里,对应的“Allow ACE”和“Deny ACE”是指“Allow列表”和“Deny列表”中限制目标标识GID相同的两个ACE。
3.2.2:如果NT ACE是普通Group类型的NT Group ACE,或者是Owner Group类型的NT Group ACE,则确定第五目标ACE中限制目标字段,映射到第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息,否则忽略并判断下一个ACE。
3.2.2.1:如果第五目标ACE为NT ACL中的NT Group ACE、NT Owner Group ACE、NTUser Obj ACE、NT User ACE,那么可以先将第五目标ACE中的限制目标标识SID,根据Windows用户到Unix用户的映射关系表,转换成第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息,例如,可以转换成Unix用户组标识GID。
然后,根据GID到“Allow列表”中查找具有相同限制目标标识GID的POSIX GroupAllow ACE(简称“Allow ACE”),到“Deny列表”中查找具有相同限制目标标识GID的POSIXGroup Deny ACE(简称“Deny ACE”);如果没有找到相同目标标识GID的对应ACE,则创建一个对应的POSIX Group Allow ACE(简称“Allow ACE”)或POSIX Group Deny ACE(简称“Deny ACE”),加入对应的“Allow列表”或“Deny列表”,并设置对应的GID标识。
3.2.2.2:如果NT ACE是EveryOne类型且是Allow类型,则将这个NT EveryOneAllow ACE中的部分权限位,设置到“Allow列表”的每一个“Allow ACE”的权限位中,设置的部分权限位是满足“Deny列表”对应的“Deny ACE”的没有拒绝的权限位部分。这里,“AllowACE”和对应的“Deny ACE”是指“Allow列表”和“Deny列表”中限制目标标识GID相同的两个ACE。
3.2.2.3:如果NT ACE是EveryOne类型且是Deny类型,则将这个NT EveryOne DenyACE中的部分权限位,设置到“Deny列表”的每一个“Deny ACE”的权限位中,设置的权限位部分是满足没有出现在“Allow列表”对应的“Allow ACE”的部分权限位。这里,对应的“AllowACE”和“Deny ACE”是指“Allow列表”和“Deny列表”中限制目标标识GID相同的两个ACE。
通过3.2.2.2和3.2.2.3,可以确定第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限。
3.3:基于允许访问权限和第二对象映射信息,确定允许ACE,并基于允许ACE确定允许类ACE列表。
删除“Deny列表”,然后使用权限位的转换关系,进行权限位的转换,将“Allow列表”中的ACE的权限位,转换为有效的POSIX ACL的权限位。其中,如果POSIX ACL的“写”权限位转换到NT ACL的NT Write Data和NT Append Data,按照此关系进行反向转换时,必须同时具有NT Write Data和NT Append Data,才能在对应的POSIX ACE的权限位中设置“写”权限位。
3.4:将得到的“Allow列表”中的所有POSIX Group ACE和POSIX Group Obj ACE确定为第二备选ACE,并将该第二备选ACE放入目标POSIX ACL中。
第4步:遍历NT ACL的每一个ACE,按照上述3.1至3.4的步骤所描述的方式进行处理,得到POSIX User Obj ACE、POSIX User ACE。
第5步:如果上述得到目标POSIX ACL中,有POSIX User ACE或者POSIX GroupACE,进行以下处理,得到POSIX Mask ACE:
如果上述得到目标POSIX ACL中,有POSIX User ACE或者POSIX Group ACE,那么可以进行以下处理,得到POSIX Mask ACE(即,第三备选ACE)。
这里,可以预先创建一个POSIX Mask ACE,然后,并将所有POSIX User ACE、POSIXGroup ACE和POSIX Group Obj ACE中权限限制字段的字段内容,进行得到“或”运算,得到POSIX Mask ACE的权限限制字段的字段内容,并设置到对应的权限限制字段。
完成以上步骤,则得到了目标POSIX ACL的所有Access ACE和Default ACE。
情况四:第一协议为S3协议,第二协议为NFS协议。此时,第一ACL为POSIX ACL,第二ACL为NT ACL。
在此情况下,将S3 ACL转换为POSIX ACL的算法如下:
第1步:遍历S3 ACL的每一个ACE,进行以下处理,得到POSIX Other ACE。
1.1:创建一个表示允许的权限量,称为other_allow。
1.2:确定第四目标ACE的权限限制字段的字段内容。
确定S3 ACL中EveryOne类型的ACE(即,第四目标ACE),其中,该EveryOne类型的ACE中Grantee字段为EveryOne。确定S3 ACL中EveryOne类型的ACE的权限限制字段的字段内容,即,上述步骤中所描述的第四目标ACE的权限限制字段的字段内容。将这个S3 ACL中EveryOne类型的ACE的权限限制字段的字段内容设置到权限量other_allow中。
1.3:将第四目标ACE的权限限制字段的字段内容,转换为通过第二协议表达的第六字段内容。
这里,可以将other_allow中描述的权限位,转换为有效的POSIX ACL的权限限制字段的字段内容,从而得到第六字段内容。其中,如果POSIX ACL的“写”权限位转换到S3ACL的“写权限”和“ACP写权限”,按照此关系进行转换时,需要同时具有“写权限”和“ACP写权限”,才能在对应的POSIX ACE的权限位中设置“写”权限位。
1.4:创建一个POSIX Other ACE,将权限量other_allow中进行转换之后的权限位设置到POSIX Other ACE的权限位,将得到的POSIX Other ACE放入目标POSIX ACL中。
第2步:对S3 ACL中的Authenticated Users ACE,进行以下处理,得到一个POSIXGroup ACE。
针对S3 ACL中Grantee字段为S3预定义组(AuthenticatedUsers)的S3 ACE(即,限制目标字段所指示的限制目标为对象组的第五目标ACE),进行以下处理,否则忽略并判断下一个ACE:
2.2.1:创建一个POSIX Group ACE,即第三初始ACE。
2.2.2:将第五目标ACE中限制目标字段,映射到第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息。
将该S3 ACE的Grantee字段,根据S3用户到Unix用户的映射关系表,转换成Unix用户组标识GID(即,第三对象映射信息),并将该Unix用户组标识GID设置到新创建的POSIXGroup ACE的限制目标字段中。
2.2.3:将第五目标ACE中权限限制字段的字段内容,内容转换为通过第二协议协议表达的字段内容,得到第七字段内容。
将该S3 ACE的Permission字段,进行权限限制字段的转换,转换为有效的POSIXACL的权限限制字段(即,第七字段内容)。其中,如果转换不是直接可行的情况,比如POSIXACL的“写”权限限制字段转换到S3 ACL的“写权限”和“ACP写权限”,按照此关系进行反向转换时,必须同时具有“写权限”和“ACP写权限”,才能在对应的POSIX ACE的权限位中设置“写”限制字段。将转换后的限制字段,设置到得到的POSIX Group ACE的限制字段中。
2.2.4:确定第四目标ACE中权限限制字段的字段内容,得到第八字段内容。
这里,可以将S3 ACL中EveryOne类型的ACE(即Grantee字段是EveryOne,此ACE至多一个,也即上述第四目标ACE),将该S3 EveryOne AC中权限限制字段的字段内容(即,第八字段内容),设置到得到的POSIX Group ACE的权限限制字段中。最后,将得到的POSIXGroup ACE,放入目标POSIX ACL中。
2.3:将得到的POSIX Group ACE,放入目标POSIX ACL中。
第3步:遍历S3 ACL的每一个ACE,进行以下处理,得到POSIX User Obj ACE、POSIXUser ACE。
3.1:从前到后,遍历S3 ACL的所有S3 ACE。
3.2:如果遍历到S3 ACE的Grantee是非EveryOne用户,则进行以下处理,否则忽略此S3 ACE:
3.2.1:在第五目标ACE中限制目标字段所指示的限制目标为对象的情况下,创建通过第二协议表达的第三初始ACE;第三初始ACE为对象类型的ACE。
如果S3 ACE的Grantee是对应的S3桶或S3对象的属主,则创建一个POSIX UserObj ACE(即,第三初始ACE),否则创建一个POSIX User ACE。
3.2.2:将第五目标ACE中限制目标字段,映射到第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息。
将该S3 ACE的Grantee字段,根据S3用户到Unix用户的映射关系表,转换成Unix用户标识UID(即,第三对象映射信息),并将该Unix用户标识UID设置到新创建的POSIX UserObj ACE或POSIX User ACE的限制目标字段中。
3.2.3:将第五目标ACE中权限限制字段的字段内容,内容转换为通过第二协议协议表达的字段内容,得到第七字段内容。
将该S3 ACE的权限限制Permission字段,进行权限限制字段的转换,转换为有效的POSIX ACL的权限限制字段(即,第七字段内容)。其中,如果转换不是直接可行的情况,比如POSIX ACL的“写”权限限制字段转换到S3 ACL的“写权限”和“ACP写权限”,按照此关系进行转换时,必须同时具有“写权限”和“ACP写权限”,才能在对应的POSIX ACE的权限限制字段中设置“写”权限限制字段。将转换后的权限限制字段,设置到得到的POSIX User ObjACE或POSIX User ACE的权限限制字段中。
3.3:确定第四目标ACE中权限限制字段的字段内容,得到第八字段内容。
这里,可以将S3 ACL中EveryOne类型的ACE(即Grantee字段是EveryOne,此ACE至多一个,也即上述第四目标ACE),将该S3 EveryOne AC中权限限制字段的字段内容(即,第八字段内容),设置到得到的POSIX User Obj ACE或POSIX User ACE的权限限制字段中。
3.4:将得到的所有POSIX User Obj ACE和POSIX User ACE,放入目标POSIX ACL中。
第4步:如果上述得到目标POSIX ACL中,有POSIX User ACE或者POSIX GroupACE,进行以下处理,得到POSIX Mask ACE。
4.1:这里,可以创建一个POSIX Mask ACE,并将所有POSIX User ACE、POSIXGroup ACE和POSIX Group Obj ACE中权限限制字段的字段内容,进行得到“或”运算,得到POSIX Mask ACE的权限限制字段的字段内容,并设置到对应的权限限制字段。
4.2:将得到的POSIX Mask ACE,放入目标POSIX ACL中,得到第一ACL。
通过上述描述可知,本公开实施例描述了一种在非结构化数据融合场景下,针对多种非机构化协议,对同一份融合数据,进行权限控制的方法。本公开实施例提供给用户一种对融合后的非机构化数据,进行统一的互通的权限控制的具体方法,保证了非结构化融合数据,在使用SMB协议、S3协议、NFS协议,进行读写访问和权限修改后,都能够得到合理有效准确的权限控制,权限控制在多协议之间互通生效,具有商业上的实用价值。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与访问权限处理方法对应的访问权限处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述访问权限处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图6所示,为本公开实施例提供的一种访问权限处理装置的架构示意图,所述装置包括:接收单元10、获取单元20、确定单元30和校验单元40;其中,
接收单元10,用于接收对象通过第一协议发送的对目标资源的访问请求;
获取单元20,用于获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;
确定单元30,用于在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;
校验单元40,用于根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
上述实施方式中,通过将第二ACL转换为通过第二协议表达的第一ACL,并获取对象的第一对象映射信息,进而根据该第一对象映射信息和第一ACL对访问请求进行权限校验的方式,可以实现针对存储空间中同一份融合数据之间的权限互通,具有可移植性和通用性,能够提高数据的访问效率。
一种可能的实施方式中,该装置还用于:将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE;基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL。
一种可能的实施方式中,该装置还用于:在生效类第一ACE和继承类第一ACE中删除第一禁止权限,得到删除后所述第一ACE;所述第一禁止权限用于指示所述第二协议所服务的对象对所述目标资源的禁止访问权限,所述继承类第一ACE用于指示对在所述目标资源所对应所述目录下新创建的文件资源进行权限控制的方式,所述生效类第一ACE用于指示对所述目录目标资源进行权限控制的方式;在删除后所述第一ACE中确定第一目标ACE,将所述第一目标ACE中的权限控制字段,转换为通过所述第一协议表达的目标字段;所述第一目标ACE用于指示对各用户和各用户组进行权限控制的方式;在已创建的第一初始ACE中写入所述目标字段,得到所述第二ACE;其中,所述第一初始ACE为通过所述第一协议表达的空ACE。
一种可能的实施方式中,该装置还用于:将所述第一目标ACE中限制目标字段的字段内容,转换为通过所述第一协议表达的第一字段内容;将所述第一目标ACE中限制权限字段的字段内容,转换为通过所述第一协议表达的第二字段内容;基于所述第一字段内容和所述第二字段内容,确定所述目标字段。
一种可能的实施方式中,在第一协议为SMB协议,所述第二协议为NFS协议的情况下,该装置还用于:在已创建的第一初始ACE中写入所述目标字段之后,在确定所述第一目标ACE中限制目标字段所指示的对象类型为属主用户组的情况下,在所述第一初始ACE中设置第一指示标识,得到所述第二ACE;其中,所述第一指示标识用于指示所述第一目标ACE的继承类型,所述属主用户组用于指示拥有所述目标资源的用户组。
一种可能的实施方式中,在所述第一协议为SMB协议,所述第二协议为NFS协议,所述第二ACE为允许类ACE的情况下,该装置还用于:所述基于所述第二ACE确定用于向所述对象展示的待展示ACL,包括:
按照所述第二ACE中限制目标字段所指示的对象类型,对所述第二ACE进行排序,排序后得到第一允许ACE列表;在所述第一ACL中确定所述第二ACE对应的第二目标ACE;基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表;基于所述第二允许ACE列表,确定所述待展示ACL。
一种可能的实施方式中,该装置还用于:在所述目标资源为目录的情况下,在所述第二允许ACE列表中确定与继承类第一ACE对应的目标ACE;所述继承类第一ACE用于指示对在所述目录下创建的文件进行权限控制的方式;在所述目标ACE中设置继承标识字段的字段内容,得到第三允许ACE列表;将所述第三允许ACE列表中的ACE划分为第一子列表和第二子列表,将所述第一子列表和所述第二子列表进行拼接,得到所述待展示ACL;所述第一子列表由生效类第一ACE变换得到,所述第二子列表由所述继承类第一ACE变换得到,所述生效类第一ACE用于指示对所述目录进行权限控制的方式。
一种可能的实施方式中,该装置还用于:基于所述目标限制语义在所述第二目标ACE中确定第三目标ACE;所述第三目标ACE的权限限制字段的字段内容用于指示对所述目标资源的禁止访问权限;确定所述第一允许ACE列表中所述第三目标ACE所对应第二ACE,并基于所述所对应第二ACE在所述第一允许ACE列表中的位置,在所述第一允许ACE列表中插入目标拒绝ACE,得到所述第二允许ACE列表;其中,所述目标拒绝ACE用于表示所述所对应第二ACE中权限限制字段的字段内容所指示的权限为禁止访问权限。
一种可能的实施方式中,在所述第一协议为SMB协议,所述第二协议为S3协议的情况下,该装置还用于:在所述第二ACE中确定第三ACE;所述第三ACE用于指示目标对象对所述目标资源进行权限控制的方式;将所述第三ACE移动至所述第二ACE所在列表的末尾位置。
一种可能的实施方式中,该装置还用于在所述接收对象通过第一协议发送的对目标资源的访问请求之前,通过以下方式确定所述第一ACL:将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE;基于所述第四ACE,确定所述第一ACL。
一种可能的实施方式中,该装置还用于:将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE;所述第四目标ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE;所述第五目标ACE用于指示对第二对象和/或第二对象组对所述目标资源进行权限控制的方式;基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE。
一种可能的实施方式中,在第一协议为SMB协议,所述第二协议为NFS协议的情况下,该装置还用于:确定所述第二ACL中允许类型的所述第四目标ACE的第一权限限制字段,并确定所述第二ACL中拒绝类型的所述第四目标ACE的第二权限限制字段;在所述第一权限限制字段中确定未出现在所述第二权限限制字段中的第三字段内容;将所述第三字段内容转换成通过所述第二协议表达的第四字段内容,基于所述第四字段内容确定所述第一备选ACE。
一种可能的实施方式中,该装置还用于:基于所述第五目标ACE中权限限制字段的字段内容,创建允许类ACE列表;其中,所述允许类ACE列表包含多个允许ACE,所述允许ACE用于记录所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;将所述允许类ACE列表中的限制权限字段转换为通过所述第二协议表达的限制权限字段,转换后得到所述第二备选ACE。
一种可能的实施方式中,该装置还用于:确定所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息;确定所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;基于所述允许访问权限和所述第二对象映射信息,确定允许ACE,并基于所述允许ACE确定所述允许类ACE列表。
一种可能的实施方式中,该装置还用于:确定所述第二ACL中允许类型的所述第五目标ACE的第三权限限制字段,并确定所述第二ACL中拒绝类型的所述第五目标ACE的第四权限限制字段;在所述第三权限限制字段中确定未出现在所述第四权限限制字段中的第四字段内容;确定所述第一权限限制字段中未出现在所述第四权限限制字段中的第五字段内容;基于所述第四字段内容和所述第五字段内容所指示的权限,确定所述允许访问权限。
一种可能的实施方式中,该装置还用于:在第一协议为SMB协议,所述第二协议为NFS协议的情况下,在所述目标资源为目录的情况下,确定所述第二ACL中第六目标ACE的第二指示标识;所述第二指示标识用于指示所述第六目标ACE的继承类型;所述第六目标ACE为用于指示对第二对象组进行权限控制的ACE;基于所述第二指示标识的标识类型,将所述第六目标ACE划分为生效类ACE列表和继承类ACE列表,得到所述第四ACE;所述继承类ACE列表中的ACE用于指示对在所述目录下创建的文件进行权限控制的方式,所述生效类ACE列表中的ACE用于指示对所述目录进行权限控制的方式。
一种可能的实施方式中,在所述第一协议为S3协议,所述第二协议为NFS协议的情况下,该装置还用于:确定所述第四目标ACE的权限限制字段的字段内容;将所述第四目标ACE的权限限制字段的字段内容,转换为通过所述第二协议表达的第六字段内容;创建通过所述第二协议表达的第二初始ACE;所述第二初始ACE用于指示对所述第二对象和所述第二对象组对所述目标资源进行权限控制的方式;将所述第六字段内容写入所述第二初始ACE的权限限制字段,得到通过所述第二协议表达的第一备选ACE。
一种可能的实施方式中,该装置还用于:在所述第五目标ACE中限制目标字段所指示的限制目标为对象组的情况下,创建通过所述第二协议表达的第三初始ACE;所述第三初始ACE为对象组类型的ACE;将所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息;将所述第五目标ACE中权限限制字段的字段内容,内容转换为通过所述第二协议协议表达的字段内容,得到第七字段内容;确定所述第四目标ACE中权限限制字段的字段内容,得到第八字段内容;将所述第三对象映射信息写入所述第三初始ACE的限制目标字段,并将所述第七字段内容和所述第八字段内容写入所述第三初始ACE的权限限制字段,得到对象组类型的所述第二备选ACE。
一种可能的实施方式中,该装置还用于:将所述第一备选ACE和所述第二备选ACE中的权限限制字段的字段内容的内容并集,并基于所述内容并集确定通过所述第二协议表达的第三备选ACE;所述第三备选ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;基于所述第一备选ACE、所述第二备选ACE和所述第三备选ACE,确定所述第四ACE。
一种可能的实施方式中,确定单元,用于:在所述访问请求中确定所述对象的初始对象信息;确定与所述对象相匹配的映射表;其中,所述映射表用于表征从所述第一协议所服务对象和第二协议所服务对象之间的映射关系;基于所述映射表确定与所述初始对象信息相对应的映射表项,并基于所述映射表项确定所述第一对象映射信息。
一种可能的实施方式中,校验单元,用于:基于所述第一ACL所对应的权限校验算法,对所述第一对象映射信息进行权限校验处理,得到所述访问请求的权限校验结果。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的曲线路径生成方法,本公开实施例还提供了一种计算机设备700,如图7所示,为本公开实施例提供的计算机设备700结构示意图,包括:
处理器71、存储器72、和总线73;存储器72用于存储执行指令,包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器71中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器71通过内存721与外部存储器722进行数据交换,当所述计算机设备700运行时,所述处理器71与所述存储器72之间通过总线73通信,使得所述处理器71执行以下指令:
接收对象通过第一协议发送的对目标资源的访问请求;
获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;
在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;
根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的访问权限处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的访问权限处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的访问权限处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (20)

1.一种访问权限处理方法,其特征在于,包括:
接收对象通过第一协议发送的对目标资源的访问请求;
获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;
在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;
根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE;
基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一ACL中的第一ACE,转换为通过所述第一协议表达的第二ACE,包括:
在生效类第一ACE和继承类第一ACE中删除第一禁止权限,得到删除后所述第一ACE;所述第一禁止权限用于指示所述第二协议所服务的对象对所述目标资源的禁止访问权限,所述继承类第一ACE用于指示对在所述目标资源所对应目录下新创建的资源进行权限控制的方式,所述生效类第一ACE用于指示对所述目标资源进行权限控制的方式;
在删除后所述第一ACE中确定第一目标ACE,将所述第一目标ACE中的权限控制字段,转换为通过所述第一协议表达的目标字段;所述第一目标ACE用于指示对各用户和各用户组进行权限控制的方式;
在已创建的第一初始ACE中写入所述目标字段,得到所述第二ACE;其中,所述第一初始ACE为通过所述第一协议表达的空ACE。
4.根据权利要求3所述的方法,其特征在于,所述第一协议为SMB协议,所述第二协议为NFS协议;在已创建的第一初始ACE中写入所述目标字段之后,还包括:
在确定所述第一目标ACE中限制目标字段所指示的对象类型为属主用户组的情况下,在所述第一初始ACE中设置第一指示标识,得到所述第二ACE;其中,所述第一指示标识用于指示所述第一目标ACE的继承类型,所述属主用户组用于指示拥有所述目标资源的用户组。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述第一协议为SMB协议,所述第二协议为NFS协议,所述第二ACE为允许类ACE;
所述基于所述第二ACE确定用于向所述对象展示的待展示ACL,包括:
按照所述第二ACE中限制目标字段所指示的对象类型,对所述第二ACE进行排序,排序后得到第一允许ACE列表;
在所述第一ACL中确定所述第二ACE对应的第二目标ACE;
基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表;
基于所述第二允许ACE列表,确定所述待展示ACL。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第二允许ACE列表,确定所述待展示ACL,包括:
在所述目标资源为目录的情况下,在所述第二允许ACE列表中确定与继承类第一ACE对应的目标ACE;所述继承类第一ACE用于指示对在所述目录下创建的文件进行权限控制的方式;
在所述目标ACE中设置继承标识字段的字段内容,得到第三允许ACE列表;
将所述第三允许ACE列表中的ACE划分为第一子列表和第二子列表,将所述第一子列表和所述第二子列表进行拼接,得到所述待展示ACL;所述第一子列表由生效类第一ACE变换得到,所述第二子列表由所述继承类第一ACE变换得到,所述生效类第一ACE用于指示对所述目录进行权限控制的方式。
7.根据权利要求5所述的方法,其特征在于,所述基于所述第二目标ACE中权限限制字段所指示的目标限制语义,对所述第一允许ACE列表进行修正,得到用于模拟所述权限控制语义的第二允许ACE列表,包括:
基于所述目标限制语义在所述第二目标ACE中确定第三目标ACE;所述第三目标ACE的权限限制字段的字段内容用于指示对所述目标资源的禁止访问权限;
确定所述第一允许ACE列表中所述第三目标ACE所对应第二ACE,并基于所述所对应第二ACE在所述第一允许ACE列表中的位置,在所述第一允许ACE列表中插入目标拒绝ACE,得到所述第二允许ACE列表;其中,所述目标拒绝ACE用于表示所述所对应第二ACE中权限限制字段的字段内容所指示的权限为禁止访问权限。
8.根据权利要求2或3所述的方法,其特征在于,所述第一协议为SMB协议,所述第二协议为S3协议;所述基于所述第二ACE确定用于向所述对象展示的待展示ACL,并向所述对象发送所述待展示ACL,包括:
在所述第二ACE中确定第三ACE;所述第三ACE用于指示目标对象对所述目标资源进行权限控制的方式;
将所述第三ACE移动至所述第二ACE所在列表的末尾位置。
9.根据权利要求1所述的方法,其特征在于,在所述接收对象通过第一协议发送的对目标资源的访问请求之前,所述方法还包括通过以下方式确定所述第一ACL:
将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE;
基于所述第四ACE,确定所述第一ACL。
10.根据权利要求9所述的方法,其特征在于,所述将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE,包括:
将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE;所述第四目标ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE;所述第五目标ACE用于指示对第二对象和/或第二对象组对所述目标资源进行权限控制的方式;
基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE。
11.根据权利要求10所述的方法,其特征在于,所述第一协议为SMB协议,所述第二协议为NFS协议;
所述将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE,包括:
确定所述第二ACL中允许类型的所述第四目标ACE的第一权限限制字段,并确定所述第二ACL中拒绝类型的所述第四目标ACE的第二权限限制字段;
在所述第一权限限制字段中确定未出现在所述第二权限限制字段中的第三字段内容;
将所述第三字段内容转换成通过所述第二协议表达的第四字段内容,基于所述第四字段内容确定所述第一备选ACE。
12.根据权利要求11所述的方法,其特征在于,所述将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,包括:
基于所述第五目标ACE中权限限制字段的字段内容,创建允许类ACE列表;其中,所述允许类ACE列表包含多个允许ACE,所述允许ACE用于记录所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;
将所述允许类ACE列表中的限制权限字段转换为通过所述第二协议表达的限制权限字段,转换后得到所述第二备选ACE。
13.根据权利要求12所述的方法,其特征在于,所述基于所述第五目标ACE中权限字段的字段内容,创建允许类ACE列表,包括:
确定所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第二对象映射信息;
确定所述第五目标ACE中限制目标字段所指示的限制目标对所述目标资源的允许访问权限;
基于所述允许访问权限和所述第二对象映射信息,确定允许ACE,并基于所述允许ACE确定所述允许类ACE列表。
14.根据权利要求9所述的方法,其特征在于,所述第一协议为SMB协议,所述第二协议为NFS协议;
所述将所述第二ACL的ACE,转换为通过所述第二协议表达的ACE,得到第四ACE,包括:
在所述目标资源为目录的情况下,确定所述第二ACL中第六目标ACE的第二指示标识;所述第二指示标识用于指示所述第六目标ACE的继承类型;所述第六目标ACE为用于指示对第二对象组进行权限控制的ACE;
基于所述第二指示标识的标识类型,将所述第六目标ACE划分为生效类ACE列表和继承类ACE列表,得到所述第四ACE;所述继承类ACE列表中的ACE用于指示对在所述目录下创建的文件进行权限控制的方式,所述生效类ACE列表中的ACE用于指示对所述目录进行权限控制的方式。
15.根据权利要求10所述的方法,其特征在于,所述第一协议为S3协议,所述第二协议为NFS协议;
所述将所述第二ACL的第四目标ACE,转换成通过所述第二协议表达的第一备选ACE,包括:
确定所述第四目标ACE的权限限制字段的字段内容;
将所述第四目标ACE的权限限制字段的字段内容,转换为通过所述第二协议表达的第六字段内容;
创建通过所述第二协议表达的第二初始ACE;所述第二初始ACE用于指示对所述第二对象和所述第二对象组对所述目标资源进行权限控制的方式;
将所述第六字段内容写入所述第二初始ACE的权限限制字段,得到通过所述第二协议表达的第一备选ACE。
16.根据权利要求15所述的方法,其特征在于,所述将所述第二ACL的第五目标ACE,转换成通过所述第二协议表达的第二备选ACE,包括:
在所述第五目标ACE中限制目标字段所指示的限制目标为对象或对象组的情况下,创建通过所述第二协议表达的第三初始ACE;所述第三初始ACE为对象组类型的ACE;
将所述第五目标ACE中限制目标字段,映射到所述第二协议所服务对象类型下的对象映射信息,得到第三对象映射信息;
将所述第五目标ACE中权限限制字段的字段内容,内容转换为通过所述第二协议协议表达的字段内容,得到第七字段内容;
确定所述第四目标ACE中权限限制字段的字段内容,得到第八字段内容;
将所述第三对象映射信息写入所述第三初始ACE的限制目标字段,并将所述第七字段内容和所述第八字段内容写入所述第三初始ACE的权限限制字段,得到对象组类型的所述第二备选ACE。
17.根据权利要求10所述的方法,其特征在于,所述基于所述第一备选ACE和所述第二备选ACE,确定所述第四ACE,包括:
将所述第一备选ACE和所述第二备选ACE中的权限限制字段的字段内容的内容并集,并基于所述内容并集确定通过所述第二协议表达的第三备选ACE;所述第三备选ACE用于指示对第一对象和各第一对象组对所述目标资源进行权限控制的方式;
基于所述第一备选ACE、所述第二备选ACE和所述第三备选ACE,确定所述第四ACE。
18.一种访问权限处理装置,其特征在于,包括:
接收单元,用于接收对象通过第一协议发送的对目标资源的访问请求;
获取单元,用于获取第一访问控制列表ACL;所述第一ACL用于通过第二协议表达第二ACL的权限控制语义,所述第二ACL中包含用于对所述目标资源的访问请求实现权限控制的访问控制条目ACE;
确定单元,用于在所述第一协议和所述第二协议不相同的情况下,确定所述对象映射到所述第二协议所服务对象类型下的第一对象映射信息;
校验单元,用于根据所述第一ACL和所述第一对象映射信息,校验所述访问请求对所述目标资源的访问权限。
19.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至17任一项所述的访问权限处理方法的步骤。
20.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至17任一项所述的访问权限处理方法的步骤。
CN202310912845.7A 2023-07-24 2023-07-24 访问权限处理方法、装置、计算机设备以及存储介质 Pending CN117195171A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310912845.7A CN117195171A (zh) 2023-07-24 2023-07-24 访问权限处理方法、装置、计算机设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310912845.7A CN117195171A (zh) 2023-07-24 2023-07-24 访问权限处理方法、装置、计算机设备以及存储介质

Publications (1)

Publication Number Publication Date
CN117195171A true CN117195171A (zh) 2023-12-08

Family

ID=88993114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310912845.7A Pending CN117195171A (zh) 2023-07-24 2023-07-24 访问权限处理方法、装置、计算机设备以及存储介质

Country Status (1)

Country Link
CN (1) CN117195171A (zh)

Similar Documents

Publication Publication Date Title
US11334562B2 (en) Blockchain based data management system and method thereof
US10002152B2 (en) Client computer for updating a database stored on a server via a network
US11196772B2 (en) Data access policies
EP3814929B1 (en) Blockchain-based content management method, apparatus, and electronic device
US8990900B2 (en) Authorization control
JP4892179B2 (ja) データ項目のためのゾーンベースのセキュリティ管理
BRPI0611880A2 (pt) autorização unificada para aplicações heterogêneas
US20090049047A1 (en) Storing custom metadata using custom access control entries
CN112511599B (zh) 一种基于区块链的人防数据共享系统及方法
CN108228353A (zh) 资源访问控制方法、装置及相应终端
CN109587151A (zh) 访问控制方法、装置、设备及计算机可读存储介质
WO2023197916A1 (zh) Linux文件系统的访问控制方法及装置
CN109145621A (zh) 文档管理方法及装置
CN111324799B (zh) 搜索请求的处理方法及装置
CN107172102A (zh) 数据访问方法、系统以及存储介质
CN117195171A (zh) 访问权限处理方法、装置、计算机设备以及存储介质
CN113032745A (zh) 权限管理设备及其权限管理方法和介质
CN117077120B (zh) 应用系统权限解析方法、装置、计算机设备、及介质
CN115618367A (zh) 鉴权方法及装置、设备
US20130046720A1 (en) Domain based user mapping of objects
CN115934671A (zh) 一种访问控制列表的处理方法、装置、设备及存储介质
CN115934862A (zh) 一种基于知识图谱的权限查询方法和装置
Moffatt Access control in semantic information systems
JP2019160101A (ja) 情報処理装置及び情報処理プログラム
CN118051956A (zh) 日志处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination