面向HDFS 的密钥资源控制机制
2022-10-09金伟李凤华余铭洁郭云川周紫妍房梁
金伟,李凤华,余铭洁,郭云川,周紫妍,房梁
(1.中国科学院信息工程研究所,北京 100093;2.中国科学院大学网络空间安全学院,北京 100049;3.中国信息通信研究院,北京 100191;4.中国科学技术大学网络空间安全学院,安徽 合肥 230027)
0 引言
Hadoop 分布式文件系统(HDFS,Hadoop distributed file system)是大数据平台Hadoop 集群下对海量数据进行分布式存储的大数据文件存储系统,为Hadoop 集群上的数据和组件提供高可用数据存储服务。目前,HDFS 存储系统在物联网数据中心等各类数据分析和存储场景下具有广泛应用。
据《物联网终端安全白皮书(2019)》统计,截至2019 年,全球物联网设备连接数量达110 亿个,我国授权频段蜂窝物联网终端连接数量达9.2 亿个。中国互联网络信息中心发布的《第48 次中国互联网络发展状况统计报告》显示,2021 年上半年,移动互联网接入流量达1 033 亿GB。庞大的终端账户规模和数据量需要大数据平台进行数据管理和安全防护。同时,敏感设备如终端支付设备等,涉及用户身份、位置隐私、信用卡账户、生物识别特征等核心隐私信息,一旦泄露,将威胁千万用户的财产安全,需要HDFS 采用访问控制、数据加密等手段进行保护,提供安全的存储服务。
现有HDFS 系统具备基本的资源控制能力,但其控制的客体对象仅针对HDFS 的目录和文件,且大部分HDFS 文件为明文存储,访问控制的安全性依赖策略中对权限的配置。一旦权限配置不当或访问控制被绕过,将造成明文数据泄露,依然会威胁数据安全。
通过设置加密区保护目录和文件,加密区密钥在密钥管理系统(KMS,key management system)中单独存储和访问,并非实时计算,且未与文件统一访问控制,存在密钥库泄露的风险。因此需对密钥进行访问控制,否则,倘若敌手经其他途径可以拿到分布式存储的数据,那么只要获取密钥,就可以解密数据、拿到明文,损害文件的机密性;同时,若敌手可以单独销毁密钥,导致密文无法解密,也将破坏文件的可用性。现有KMS 的访问控制机制非常简单,只提供黑白名单匹配的方式进行控制,管理效率低。因此,需同时对文件数据和密钥实施访问控制。
现有HDFS 的密钥资源控制及访问控制模型粒度较粗,HDFS 原生的POSIX 权限模型及POSIX ACL 机制只从用户组的读、写、执行等基本操作进行访问控制;Apache Sentry 为HDFS 提供基于角色的访问控制;Apache Ranger 为HDFS 提供基于标签(角色的泛化)的访问控制。已有组件都不提供基于时间、IP 地址等实时环境,以及细粒度主客体属性的访问控制。因此需要设计完整高效的细粒度访问控制机制,提供数据及密钥的全生命周期保护。
根据上述现状和安全特点,大数据安全防护需要满足以下新需求。1) 密钥资源控制:集中存储和管理的密钥需要有效的访问控制,否则仍可能导致数据泄露或不可用。2) 操作语义归一化描述:HDFS所支撑的服务众多,包括HDFS 文件系统本身、KMS 密钥管理、加密区管理等服务,访问控制策略需要归一化描述和鉴权,且需要统一的管理函数。3)细粒度访问控制:细粒度大数据访问控制系统应具备对于文件和密钥的细粒度访问控制,对于谁、在什么时间、在什么场景下、从何种设备、经由何网络、通过何操作、访问何数据等问题,应设置属性和策略进行保护。
文献[1]为了实现网络数据的细粒度控制,通过考虑访问请求实体、广义时态、接入点、访问设备、网络、资源、网络交互图和资源传播链等要素,提出了面向网络空间的访问控制(CoAC,cyberspace-oriented access control)模型。本文将CoAC映射到HDFS 的文件与密钥管理中,实现面向HDFS 的密钥资源控制机制(CKCM,cryptographic key control mechanism)。该机制将CoAC 中的访问请求实体、资源、广义时态、接入点、访问设备、网络等要素具体化为HDFS 中的多服务实体,作为大数据环境下的访问控制模型实例,管理大数据文件与密钥资源。CoAC 模型的宏观架构清晰、控制要素丰富,与大数据环境下的安全需求相匹配,具有一致性。本文的主要贡献如下。
1) 针对大数据环境对密钥资源控制、细粒度访问控制等需求,通过映射面向网络空间的访问控制模型,提出了面向HDFS 的密钥资源控制机制,实现文件与密钥统一访问控制。
2) 针对大数据策略管理的复杂性和操作语义归一化描述的安全需求,给出了面向HDFS 的密钥资源控制管理模型,并用Z 语言形式化地描述了管理模型中的管理函数和管理方法。
1 相关工作
大数据环境下,密钥的访问控制机制为黑白名单,其余相关工作较少。因此本文扩展至大数据访问控制角度进行梳理,并介绍其他细粒度访问控制模型。大数据平台中,各类访问控制模型、机制、工具随着技术发展而不断演进,主要相关工作如下。
1.1 大数据平台的访问控制模型
大数据场景数据量大且多源多样,Colombo 等[2]从MapReduce 的分布式计算场景,梳理了可用的访问控制模型,包括GuardMR[3]、Vigiles[4]、HeAC[5]、OT-RBAC[6]等。其中,以HeAC 和OT-RBAC 等最为贴合大数据存储的使用场景,讨论如下。
Gupta 等[5]首先介绍了目前Hadoop 生态系统中的用户级、服务级、数据级、资源级等多层授权机制和相关组件,随后提出了HeAC(access control for Hadoop ecosystem)模型。HeAC 是一个形式化的Hadoop 多级访问控制模型,是关于 Apache Ranger、Sentry 和原生 Hadoop(native Apache Hadoop)等组件中访问控制能力的模型抽象。该模型描述了Hadoop 服务、生态服务系统(如Hive、Kafka 等组件)中数据的授权模型和读取访问控制机制。基于标签对Hadoop 中的各类操作进行访问控制,对于生态服务客体如Hive 等,可以设置属性值作为标签(Tag)用于赋权,并结合NIST的RBAC96[7]对模型进行修改。但该模型未考虑上传操作,且仅考虑了允许的权限,未考虑拒绝的判定处理。
随后,Gupta 等[6]扩展HeAC 至OT-RBAC(object-tagged role-based access control)模型,引入组继承(GH,group hierarchy)机制。并且扩展Hadoop 服务的权限也可以分配给角色R;结合组继承机制,可以获得每个用户/主体/角色的有效角色。该模型在Apache Ranger 0.5 的基础上实现。
Gupta 等[8]引入信任的概念和基于属性的访问控制,将HeAC 模型扩展为HeABAC 模型,分析了多服务间数据信任的反射性、传递性、对称性,给出了形式化定义、授权函数、决策函数和管理模型,并给出了用于IoT 场景中的实例。
Awaysheh 等[9]针对Apache Hadoop 3.x 梳理了联邦HDFS 中的访问控制场景,在联邦HDFS 多NN联合管理、去中心化多服务数据访问、大数据作为平台的多租户云服务架构BDaaS 等不同服务模式下,在Knox、Kerberos 及DT、SSO、LDAP、Ranger、Sentry 等多种认证和安全服务中,提出了一个大数据联邦访问控制参考模型(FACRM,federation access control reference model)和实施流程,符合面向服务的框架(SOA,service-oriented architecture)。
但以上主要针对Hadoop 中的数据设置访问控制机制,未考虑密钥的访问控制,不能直接用于密钥访问控制中,同时保证数据和密钥的安全。
1.2 大数据平台的访问控制系统
在现有Hadoop 访问控制实施方面,HDFS 自带的访问控制系统是POSIX 权限模型,并支持POSIX ACL 扩展接口。文件所有者可以依据用户组为文件所有者、文件所有者的同组用户及其他组用户分配读、写、执行等基本操作的权限。
Apache Sentry 是Hadoop 平台中一个基于角色的访问控制工具,为Hive、Hive Metastore/HCatalog、Solr、Impala 和存储Hive 数据的HDFS 等Hadoop服务,提供基于“用户-用户组”“用户组-角色”“角色-权限”对资源访问的统一授权与鉴权。
Apache Ranger 为Hadoop 集群提供集中式安全框架,支持基于标签的访问控制和策略管理,对HDFS、Hive、HBase、Knox、Yarn 等组件提供文件级/列级访问控制,提供用户访问的统一审计和安全管理;Ranger KMS 对Hadoop KMS 进行扩展,为密钥提供数据库安全存储和可视化管理,但不提供与文件统一的细粒度访问控制。
Gupta 等[10]介绍了Hadoop 的权限管理体系,细数HDFS、YARN、Hive、Ranger、Knox、Atlas等Apache 组件的权限管理作用和参数配置方法,说明Hadoop 生态系统实例中对服务、数据、应用、基础资源的访问控制框架,并举例示范访问控制框架的应用。但该研究更多地总结了基于HDP 的组件环境,对CDH 相关的Sentry 等组件未进行详细说明。
Ugobame 等[11]将区块链引入大数据访问控制安全生态,借助Hyperledger Fabric blockchain,实现了区块链基于身份的访问控制商业网络(BIBAC BN,blockchain identity-based access control business network)和区块链基于角色的访问控制(BRBAC,blockchain role-based access control),可以将基于身份或基于角色的操作(如请求、授权、撤权、验证、查看资产等)记录于区块链中,完成身份管理与权限控制,并保护数据隐私。
以上工作已经在Hadoop 大数据平台中实现了文件的访问控制,但未考虑细粒度访问控制属性,如时态、接入点等环境属性。
1.3 细粒度访问控制模型
除了前述基于角色的访问控制,现有的细粒度访问控制模型包括基于属性的访问控制(ABAC,attribute-based access control)[12]、下一代访问控制(NGAC,next generation access control)[13]、使用控制(UCON,usage control)[14-15]、CoAC[1]等,各具特点。
ABAC 模型采用属性组合描述策略进行赋权,通过策略管理点(PAP)、策略执行点(PEP)、策略决策点(PDP)和策略信息点(PIP)等主体完成访问控制,并采用XACML 标准[16]实现。属性虽然灵活,但也较为宽泛,在大数据环境中使用时需要具体的定义,而且没有CoAC 中资源传播链和网络交互图的定义,缺乏对于传播的描述。
NGAC 模型基于图的权限管理模型,通过图来表示主客体之间的继承关系、操作关系,并在此基础上设置策略和权限,易于线性扩展。但在大数据存储环境中,由于大量用户使用,海量文件和密钥作为客体,导致图的信息量难以管理。
UCON 模型在主体、客体、权限的访问控制要素基之上加入了授权、义务和条件3 个决定性因素,对使用前、使用中和使用后进行使用决策和执行,呈现连续性和可变性的特征。
CoAC 模型涵盖了访问请求实体、广义时态、接入点、访问设备、网络、资源、网络交互图和资源传播链等要素,可有效防止由数据所有权与管理权分离、信息二次/多次转发等带来的安全问题,通过对上述要素的适当调整可描述现有的经典访问控制模型,满足新的信息服务和传播模式的需求,可以借鉴用于解决大数据环境的资源管理问题。
除此之外,还有基于时间的访问控制模型、基于任务的访问控制模型等考虑各类属性的访问控制模型,但属性都相对单一。
1.4 结合密码资源的访问控制机制
随着密钥资源对数据的保护,访问控制的方向增加为:①采用密码协议和计算完成访问控制;②对资源和密钥同时完成访问控制。
CP-ABE[17]、KP-ABE[18]等基于密文策略、属性管理的加密,确实可以同时提供加密和访问控制的功能,但其使用条件不适用于透明加解密的大数据环境,且对加密者的自由度要求很高、管理开销很大。Shafagh 等[19]虽然也将访问控制和密钥统一管理,采用Dual Hash 树的方式生成密钥,并对密钥进行受控共享,适用场景主要是可穿戴设备等移动应用的时序数据流,提供定长切分保护。但对于大数据环境中的无序独立文件,无法直接提供加密和密钥保护。
2 CKCM 定义及映射
本节首先对面向HDFS 的密钥资源控制机制(CKCM)进行定义,并呈现从CoAC 到CKCM 的映射过程,给出形式化描述。
2.1 CKCM 系统模型
如图1 所示,本文提出的面向HDFS 的密钥资源控制机制由CoAC 的访问控制要素映射至大数据环境,由HDFS 访问请求实体、网络空间环境、文件系统资源以及密钥资源组成。其中,访问请求实体包括管理员和用户。网络空间环境包括广义时态、接入点、访问设备、网络等。文件系统资源包括HDFS 中的目录和文件,分别由HDFS 管理节点NameNode、数据节点DataNode 管理和存储。密钥资源为文献[20]中的三层密钥管理体系,即密钥库口令、加密区密钥、文件密钥,由密钥管理系统KMS 和HDFS 管理节点NameNode 存储;文件系统中的加密区与二级密钥绑定,形成透明加解密的加密区,由加密区列表维护。
图1 面向HDFS 的密钥资源控制机制相关实体
2.2 从CoAC 到CKCM 的映射
CKCM 包括访问请求实体、广义时态、接入点、访问设备、网络、资源、场景等要素的映射。
映射1访问请求实体映射。大数据资源访问的发起者包括两类,记为q=〈u,s〉。其中,用户u包括数据访问用户、HDFS 管理员、密钥管理员这3 类;服务s表示通过客户端访问大数据资源的进程,包括Hive、Solr 等大数据组件的服务,也包括上层应用业务的服务。所有访问请求实体的集合记为Q。
大数据环境下访问请求实体的通用属性gAttr包括用户名(qName)、用户域(qDom)等,以及其他自选添加的属性(qExtGAttr);安全属性sAttr包括登录方式(qPattern)、登录口令(qPwd)、登录证书(qCert)、公私钥对(qKeys)、口令过期时间(qExpTime)等,以及其他自选添加的安全属性(qExtSAttr)。
访问请求实体的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
Q.gAttr=<qName,qDom,qExtGAttr,…〉
Q.sAttr=< qPattern,qPwd,qCert,qKeys,qExp-Time,qExtSAttr,…〉
用户域qDom 主要以Kerberos 的注册域区分,安全属性sAttr 也是以Kerberos 的配置为准。通用属性和安全属性各自支持自选添加属性,由用户或管理员添加和设置,用于后续访问控制策略配置。
映射2广义时态映射。与CoAC 类似,广义时态(GT,general temporal)是指大数据访问请求实体发起访问时,与环境要素的日期时间相关的信息,大数据环境下的时态包含两部分,记为T。
T={<interval,duration〉| interval∈2TIN,duration∈R+}
其中,interval∈2TIN表示起始日期时间和终止日期时间;duration 表示持续时间,单位可为秒(s)、分钟(min)、小时(h)、天(d)、月(m)、年(y)。
映射3接入点映射。接入点(AP,access point)是指大数据访问请求实体首次接入大数据网络中的空间位置或网络标识。大数据环境中以网络标识区分不同访问接入点。
大数据环境接入点的通用属性gAttr 包括地理位置(aGPS)、MAC 地址(aMac)、IP 地址(aIPv4)、端口(aPort)等;安全属性sAttr 包括安全传输协议(aSecProt)等。接入点的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
AP.gAttr=< aGPS,aMac,aIPv4,aPort,…〉
AP.sAttr=< aSecProt,…〉
其中,安全传输协议 aSecProt 支持 HTTP、HTTP/TLS v1.0 等。
映射4访问设备映射。访问设备(DEV,device)是指大数据环境中访问资源时使用的设备,主要包括手机、平板计算机、笔记本计算机、台式机计算机、服务器等。
访问设备的通用属性(gAttr)包括操作系统(dOS)、处理器(dCPU)、内存(dMem)、硬盘(dDisk)、应用程序(dApp)等;设备的安全属性sAttr 包括安全等级(dSecLev)、安全软件模块(dSecSMod)、安全硬件模块(dSecHMod)等。
访问设备的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
DEV.gAttr=< dOS,dCPU,dMem,dDisk,dApp,…〉
DEV.sAttr=< dSecLev,dSecSMo,dSecHMod,…〉
访问设备DEV 可用三元组<dID,dev.gAttr,dev.sAttr〉表示。其中,dID 为访问设备ID。
映射5网络-大数据平台网络映射。大数据平台(BDP,big data platform)网络是由部署在数据中心的分布式大数据节点组成的网络,是大数据存储、分析、计算的核心载体,包括管理节点(NameNode)、数据节点(DataNode)、计算节点(MapReduce)、认证节点(CertNode)、密钥服务节点(KeyNode)等服务器节点(SN,server node)。BDP 网络可表示为无向联通图GBDP=(VBDP,EBDP),其中,VBDP={sn1,…,snM}为图的顶点集合,表示大数据平台的服务器节点集合,sni表示第i个服务器节点,1≤i≤M,M≥3;EBDP={<sni,sni+1〉|1≤i≤M,snM+1=sn1}为边集,表示服务器节点之间的传输链路。为了简洁,用esn 表示大数据平台网络的边。
大数据平台服务器节点sn 的通用属性gAttr 包括心跳连接(snHeart)、时间对齐(snTime)、CPU剩余(snCPU)、内存剩余(snMem)、硬盘剩余(snDisk)、服务状态(snServStatus)、角色实例(snRoleInst)等;大数据平台节点的安全属性sAttr包括认证方式(snAuth)等。大数据平台节点的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
SN.gAttr=< snHeart,snTime,snCPU,snMem,snDisk,snServStatus,snRoleInst,…〉
SN.sAttr=< snAuth,…〉
大数据平台网络链路esn 的通用属性gAttr包括通信带宽(eWidth)、物理链路层协议(ePhyProt)、网络层协议(eNetProt)、传输层协议(eTranProt)等;大数据平台网络链路esn 的安全属性sAttr 包括安全传输协议(eSecProt)、加密算法(eEncType)等。大数据平台网络链路esn的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
ESN.gAttr=< eWidth,ePhyProt,eNetProt,eTranProt,…〉
ESN.sAttr=< eSecProt,eEncType,…〉
其中,安全传输协议 eSecProt 支持 HTTP、HTTP/TLS v1.0 等;加密算法 eEncType 支持TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 等。
映射6网络-大数据客户端网络映射。大数据客户端(BDC,big data client)网络是由连接和使用BDP 网络的客户端组成的网络,大部分客户端之间没有连接,各自只与BDP 网络有连接。BDC 网络用无向图GBDC=(VBDC,EBDC)表示,其中,VBDC={cn1,…,cnK}为图的顶点集合,表示大数据平台的客户端节点集合,cni表示第i个客户端节点,1≤i≤K,K≥1;EBDC={<sni, sni+1〉|1≤i≤M,snM+1=sn1}为边集,表示客户端节点之间的传输链路。BDC 网络中节点和链路的属性类型,与BDP网络中节点和链路的属性类型相同,属性值存在差异,此处不再重复属性类型。
映射7网络映射。大数据网络(BDN,big data network)是信息传播的载体,是所有信息传播通道的集合。BDN 可以用无向图GBDN=(VBDN,EBDN)表示,该网络的顶点包括BDP 网络顶点VBDN和BDC网络顶点VBDC,边EBDN由EBDP和EBDC组成,即
VBDN=VBDP∪VBDC,EBDN=EBDP∪EBDC∪{<cni,snj〉,1≤i≤M,1≤j≤K,大数据客户端节点cni与大数据平台服务器节点snj可连接}
大数据网络中的通用属性BDN.gAttr 和安全属性BDN.sAttr 包括顶点属性和边属性,顶点属性为图GBDP和图GBDC所有顶点属性的并集,边属性为图GBDP和图GBDC中所有边属性的并集。
映射8资源-HDFS 文件系统映射。HDFS 文件系统(FS,file system)资源包括目录(Directory,记为DIR)和文件(File,记为FILE)两部分,可用二元组<inodeID,path〉表示,其中,inodeID 为文件系统资源对应的唯一标识inode 号,path 为目录或文件的路径,路径可变、inode 号不可变。目录信息由大数据平台网络的管理节点管理,文件数据由大数据平台网络的数据节点存储。
目录的通用属性包括目录名(dirName)、目录最后一次修改时间(dirModTime)、目录下子节点个数最大值(dirNsQuota)、目录下所有文件占用存储空间最大值(dirDsQuota)等。目录的安全属性包括目录权限(dirPerm)、扩展属性(dirXAttrs)等。目录的基本权限为 POSIX ACL 的 rwx(read-write-execute)形式。目录的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
DIR.gAttr=< dirName,dirModTime,dirNsQuota,dirDsQuota,…〉
DIR.sAttr=< dirPerm,dirXAttrs,…〉
文件的通用属性包括文件名(fileName)、文件最后一次访问时间(fileAccessTime)、文件最后一次修改时间(fileModTime)、文件副本数(fileReplica)等。文件的安全属性包括文件权限(filePerm)、扩展属性(fileXAttrs)等。文件权限和目录权限的基本标准相同,为POSIX ACL 的rwx 形式。文件的通用属性(gAttr)和安全属性(sAttr)可分别表示如下。
FILE.gAttr=< fileName,fileAccessTime,file-ModTime,fileReplica,…〉
FILE.sAttr=< filePerm,fileXAttrs,…〉
定义1HDFS 文件系统层次结构(FSH,file system hierarchy)。HDFS 文件系统层次结构FSH⊆DIR×FILE 是HDFS 文件系统中的偏序关系。
从根目录(/)开始,目录(DIR)与文件(FILE)构成偏序关系DIR≥FILE,当且仅当该文件位于该目录中。
映射9资源-KMS 密钥体系映射。KMS 密钥体系是指大数据文件的密钥管理体系,包括密钥库口令(OPwd)、加密区密钥(OEZK)、文件密钥(OFK)这3 层,可分别称为一级密钥、二级密钥和三级密钥。KMS 密钥资源(rKMS)可用三元组<kid,kgAttr,ksAttr〉表示,其中,kid 表示rKMS 的体系层,kgAttr 和ksAttr 分别表示密钥的通用属性和安全属性。
密钥库口令资源的通用属性OPwd.kgAttr 包括拥有者(pOwner)、初始化时间(pIniTime)、口令存储位置(pStoreLoc)等。安全属性OPwd.ksAttr包括口令长度(pLength)、默认口令(pDefault)、加密类型(pEncType)等,其中,口令长度pLength为128 位或256 位;默认口令pDefault 为字符串“Password”的摘要值;加密类型pEncType 包括DES、SM4 等。密钥库口令资源OPwd 的通用属性(kgAttr)和安全属性(ksAttr)可分别表示如下。
OPwd.kgAttr=< pOwner,pIniTime,pStoreLoc,…〉
OPwd.ksAttr=< pLength,pDefault,pEncType,…〉
加密区密钥资源的通用属性OEZK.kgAttr 包括密钥名(zkKeyName)、创建时间(zkCreateTime)、密钥描述信息(zkDescrip )、密钥属性对(zkAttrPairs)等。加密区密钥资源的安全属性OEZK.ksAttr 包括加密算法(zkCipher)、密钥长度(zkLength)等。其中,加密算法 zkCipher 有AES/CTR/NoPadding、SM4/CTR/NoPadding 等算法与模式组合,用于指定所绑定加密区中文件加密算法;密钥长度为128 位、256 位等。加密区密钥资源OEZK 的通用属性(kgAttr)和安全属性(ksAttr)可分别表示如下。
OEZK.kgAttr=<zkKeyName,zkCreateTime,zkDescrip,zkAttrPairs,…〉
OEZK.ksAttr=< zkLength,zkCipher,…〉
文件密钥资源的通用属性OFK.kgAttr 包括一次一密文件路径(fkPath)等。文件密钥资源的安全属性OFK.ksAttr 包括密钥校验值(fkCheckSum)等。文件密钥资源OFK 的通用属性(kgAttr)和安全属性(ksAttr)可分别表示如下。
OFK.kgAttr=<fkPath,…〉
OFK.ksAttr=<fkCheckSum,…〉
定义2密钥偏序关系。KMS 密钥资源层次结构(KMSCH,key management system hierarchy)KMSCH⊆ OPwd×OEZK×OFK 是KMS 密钥资源中的偏序关系,由密钥库口令(OPwd)、加密区密钥(OEZK)、文件密钥(OFK)组成。
密钥库口令(OPwd)与所有加密区密钥(OEZK)构成偏序关系OPwd≥OEZK;加密区密钥(OEZK)与文件密钥(OFK)构成偏序关系OEZK≥OFK,当且仅当文件密钥所保护的文件位于加密区密钥所保护的加密区中。
映射10资源-加密区管理列表映射。加密区管理(EZM,encryption zone manager)模块是对目录与加密区密钥的绑定关系管理,维护加密区管理列表,列表中的关联关系可用目录名和加密区密钥名组成的二元组<dirName,zkKeyName〉表示。用户在访问加密区中的目录和文件时,需通过加密区管理模块获取密钥信息。
映射11资源映射。大数据资源(BDR,big data resource)是大数据环境中访问请求实体访问的对象,是所有访问对象的集合,包括HDFS 文件系统、KMS 密钥体系、加密区管理列表等。即BDR=HDFS∪KMS∪EZM。
资源的通用属性 BDR.gAttr 和安全属性BDR.sAttr,分别为HDFS 文件系统(目录DIR 和文件FILE)、KMS 密钥体系(密钥库口令OPwd、加密区密钥OEZK 和文件密钥OFK)、加密区管理列表EZM 中所有通用属性和安全属性的并集。
定义3操作(Operation)。大数据环境下的操作是指访问请求实体对资源的访问动作,通过动作的连续进行而实现大量的系统功能。根据主要访问的目标资源,操作可以分为密钥管理操作(KMO,key management operation)、加密区操作(EZO,encryption zone operation)、HDFS 操作(DFSO,distributed file system operation)等。
实体的一个操作可能影响多个资源,操作涉及的客体如表1 所示。其中,“√”表示一定存在影响,如密钥管理操作对各级密钥存在影响、加密区操作对相关绑定实体存在影响、HDFS 操作对文件和目录存在影响;“○”表示关联绑定加密区后存在影响,如更新绑定了加密区的密钥,将影响该加密区中此后上传的最新密钥版本等,对于未绑定加密区的密钥,密钥管理操作不影响加密区和文件等资源。
表1 操作涉及的客体
映射12场景(SC,scene)。场景指大数据访问请求主体q启动会话s访问大数据资源r获得权限p时所需要的要素条件,要素包括广义时态、接入点、设备、大数据网络及其属性,以及访问请求实体q和资源r的属性,记为sc,由五元组(t,l,d,bdn,attr)表示。其中,t∈T,l∈L,d∈Dev, bdn∈BDN,attr∈ {gAttr∪sAttr}。
与CoAC 模型中场景的不同之处在于,CKCM机制的场景除了四要素外,还包括所有要素的属性。场景具备偏序关系,可包含子场景。
2.3 CKCM 实施/生效机制、核心资源控制函数
CKCM 机制的核心问题是授权和鉴权。为高效、准确地授予和撤销访问权限,本文借鉴CoAC中对权限的管理方式,通过场景和属性来设置大数据环境下的约束策略,分配和撤销用户对资源的访问权限(P,privilege)。场景由广义时态、接入点、设备、大数据网络这4 个要素构成,属性则是访问请求实体、场景四要素、资源属性的并集。
在大数据资源开放访问之前,预先设置约束策略,约定具备何种属性的主体在何种场景下对具备何种属性的何种资源可执行何种操作(完成“场景-权限”分配);未分配权限的场景默认拒绝访问。当大数据访问请求实体Q对资源BDR 发起访问请求时,通过分配会话(S,session)权限执行点给出访问请求实体的场景和属性信息(完成“用户-场景”信息收集),权限决策点基于“用户-场景”信息和预分配的“场景-权限”进行场景匹配,根据场景匹配到的权限,判定Q是否有权对BDR 执行操作。面向HDFS 的密钥资源控制机制如图2所示。
图2 面向HDFS 的密钥资源控制机制
相关访问控制函数如下。
1) attrValueCollect(Q.gAttr,AP.gAttr,DEV.gAttr,BDN.gAttr,BDR.gAttr,Q.sAttr,AP.sAttr,DEV.sAttr,BDN.sAttr,BDR.sAttr)→{gAttr_value∪sAttr_value}为属性值采集函数,用于确定当前访问请求中的相关属性值,形成访问请求场景,备用于场景构建和匹配。
2) sceneConstruct(gAttr_value∪sAttr_value)→{Q.SCENE}为场景构建函数,用于将访问请求中的属性及属性值进行归集,形成场景实例,备用于匹配策略中的场景。
3) sceneMatch(Q.SCENE⊆SCENE)→{true,false}为场景匹配函数,将访问请求的实例场景与策略中配置的场景进行匹配,确实实例场景是否为配置场景的子集,其中,SCENE 表示管理员已配置的场景集合。
4) scenePermActivate(SCENE,PERM)→{true,false}为场景-权限激活函数,用于激活给定场景所具备的权限,其中,true 表示激活成功,false 表示激活失败。
5) scenePermRevoke(SCENE,PERM)→{true,false}为场景-权限撤销函数,用于撤销指定场景中已具备、可执行的权限。
3 CKCM 管理模型
大数据环境具有数据量大、分布式存储的特点,多用户跨网交叉访问,数据跨服务流动,使大数据环境下的海量文件和密钥控制复杂,需要设计访问控制的管理模型和管理函数,确保面向HDFS 的密钥资源控制机制安全高效地运行。本文将对管理过程进行分析,并采用Z 语言规范描述管理函数。
3.1 面向HDFS 的密钥资源控制机制管理模型
在大数据环境中,管理员通过服务管理系统和策略管理系统,在给定的时间段,通过特定设备、网络对访问请求实体访问特定资源的属性、场景、权限进行配置、撤销和更新管理。图3 给出了面向HDFS 的密钥资源控制机制管理模型。
图3 面向HDFS 的密钥资源控制机制管理模型
定义 4管理场景(ADSC,administration scene)。该场景由四元组<adminT,adminAP,adminDEV,adminBDN〉表示,意为管理员在adminT时间,通过adminDEV 设备,从接入点adminAP,经由adminBDN 进行管理的场景。
大数据环境的管理员包括超级管理员、HDFS管理员、KMS 管理员、属性管理员、策略管理员。各类管理者通过管理场景对访问场景、访问权限进行管理,其管理过程涉及的管理操作流程如下。
①超级管理员为其他管理员分配、撤销管理场景,并维护管理场景对应的权限。②HDFS 管理员通过管理场景,维护HDFS 文件系统管理和加密区服务管理。③KMS 管理员通过管理场景,维护密钥系统管理。④属性管理员通过管理场景,创建、删除和更新访问请求实体、资源及场景四要素的属性元数据,并配置属性值。⑤策略管理员通过管理场景,汇聚属性形成场景,并对场景进行授权和撤销。⑥访问请求实体发起访问时,管理模型认证身份并分配会话,根据其访问的时间、设备、接入点、大数据网络及各属性形成场景,判定场景是否满足策略中该访问请求实体所具备权限的场景,若是则激活权限,反之则拒绝访问。
根据上述内容,管理对象包括:①访问请求实体的身份及属性,场景中的元素及属性,资源的操作及属性,策略中的场景及权限;② 所有元素的属性管理,访问请求实体的场景获取,给当前访问请求实体分配会话,给当前访问请求实体所处场景分配权限。
基于管理场景,本文的管理模型为文献[1]的实例化,因此不再给出管理模型组件的定义。同时,本文的管理员权限分配与撤销,与文献[21]一致,这里不再赘述。
3.2 面向HDFS 的密钥资源控制机制管理函数
大数据环境下的访问控制管理模型,主要包括UScA(用户-属性场景管理)、ScPA(属性场景-权限管理)、ScA(属性场景管理)这3 个主要管理子模型,同时还需包括访问请求主体身份管理QA、会话管理SA 等支撑模型。
CKCM 管理函数的语义复杂,采用自然语言描述易出现歧义,需要使用形式化语言描述,以确保描述的正确性。Z 形式化描述语言(简称“Z 语言”)[16]是一种书写软件规格说明的方法,采用形式化的方法描述和验证软件系统的需求、功能、规格等,为设计、编程和测试提供理论依据,从而确保软件的正确性、可靠性和精细化描述。因此,为确保语义准确,本节通过Z 语言给出上述5 类子模型的函数描述,提供理论模型。
3.2.1 管理子模型
根据管理流程,3 个管理子模型依次描述如下。
1) 属性场景管理
属性场景管理(ScA,scene administration)是对各要素属性元数据、场景要素的管理,是权限管理和用户场景管理的基础,包括createMetaAttr、deleteMetaAttr、selectFunction、createScene、modScene、deleteScene 等函数,如表2 所示,功能分别为创建属性元数据、删除属性元数据、选取场景描述函数、创建场景、修改场景、删除场景等。
表2 属性场景管理类
2) 属性场景-权限管理
属性场景-权限管理(ScPA,scene and privilege administration)是指为已创建的场景授予和撤销权限,包括assignScPerm 和revokeScPerm,分别对应授予场景权限、撤销场景权限的功能,如表3 所示。本文模型中,授予权限即允许访问,撤销权限即拒绝访问,不具备场景和权限时,默认为拒绝。属性和场景不具备继承关系。场景出现重叠时,授权均为允许,重叠场景的组合结果也是允许,因此不存在权限冲突的问题。
表3 属性场景-权限管理类
3) 用户-属性场景管理
用户-属性场景管理(UScA,user and scene ad-ministration)是指管理用户的属性值,在用户发起访问请求时,获取并分配场景。函数包括modAttr、getAttr、getAttrValue、verifyTime、verifyAP、verifyDevice、verifyBDNetwork 等,功能分别为添加/修改属性值、选取/查询属性、查询属性值、验证时间、验证接入点、验证设备、验证网络,如表4 所示。
表4 用户-属性场景管理类
3.2.2 管理支撑模型
管理支撑模型为管理场景和管理权限的运行实施提供基础,是面向HDFS 的密钥资源控制机制的必要组成。
1) 访问请求实体身份管理
访问请求实体身份管理(QA,quantity administration)意在管理用户身份,提供身份认证,为会话管理、用户-属性场景管理提供支撑。函数包括 QuantitySignUp、QuantityLogOff、updateAuthentication、CheckId、getQuantityList,功能分别为用户实体注册,用户实体删除/注销,口令/证书的初始化、更新、撤销、口令/证书认证(用于会话建立之前)、用户列表查询(用于属性场景管理和权限管理)等,如表5 所示。
表5 实体身份与认证管理类
2) 会话管理
会话管理(SA,session administration)是指为每一次通过认证的访问请求创建或关闭会话,用于访问请求实体身份认证之后、激活场景权限之前。函数包括 assignQSession、assignScSession、closeSession 等,功能分别是为通过认证的用户分配会话、为会话分配场景、关闭会话等,如表6 所示。
表6 会话管理类
3.3 CKCM 模型分析
下面,分析CKCM 及其管理模型如何满足引言中提出的安全需求。
1) 支持密钥资源控制。CKCM 将三层密钥管理体系纳入资源管理范畴,在会话、属性、场景、权限的管理中,均支持统一的管理力度和控制效果。
2) 支持操作语义归一化描述。该机制通过Z语言形式化描述管理函数和管理操作,支持HDFS、KMS、EZM 的资源控制统一描述和鉴权,因而该机制支持操作语义归一化描述。
3) 支持细粒度访问控制。该机制通过会话、属性、场景、权限的管理,支持对于访问主体、资源、时间、设备、网络IP、操作、资源等要素和属性的控制。采用这些要素可以实现大数据存储系统的细粒度访问控制。
本文所提资源控制机制除了支持这3 个核心需求外,还支持属性自定义和策略自定义。通过属性场景管理类的函数,可以自定义要素属性和属性值。通过属性场景-权限管理类的函数,可以根据已有属性、属性值和场景,设置资源控制策略。对大数据存储系统的文件与密钥提供统一、灵活的资源管理,同时对使用HDFS 文件系统的上层Hadoop服务提供统一的数据控制,实现文件与密钥统一访问控制管理。
4 实验分析
4.1 系统实现
本文在Hadoop 环境中实施面向HDFS 的密钥资源控制CKCM 模型和管理模型,基于XACML[18]策略表示方式,设置策略执行点(PEP,policy enforcement point)、上下文处理(context handle)、策略判定点(PDP,policy determination point)、策略信息点(PIP,policy information point)、策略管理点(PAP,policy administration point),实现HDFS、KMS和EZM 中属性和策略的统一管理与评估,如图4所示。CKCM 系统实施不改变HDFS 接口与架构。
图4 面向HDFS 的密钥资源管理CKCM 模型实施
4.2 性能分析
经过系统测试,表7 给出了系统确定资源控制策略判定时空消耗随访问请求数量的变化趋势。本节分别测试8 种使用场景下的系统响应时间和内存占用大小,模拟总访问请求连接数为2 000、5 000、10 000、15 000 个,并发访问请求连接数占比分别为50%和75%的情况下,系统对于每个连接的平均响应时长,以及各场景下的服务器内存占用。
从表7 中可以看出,本文系统的策略判定时间开销随着并发访问请求连接数的增加而增加,近似呈线性增长趋势。当总访问请求连接数达到15 000 个、并发访问请求连接数达到12 000 个时,策略判定的平均响应时间为1.6 ms,对于文件与密钥资源控制而言,该时间在可接受范围内。
表7 资源控制策略判定时空消耗随访问请求数量的变化趋势
5 结束语
大数据环境下服务众多、数据海量、密钥倍增,本文针对大数据环境对密钥资源的细粒度访问控制、操作语义归一化描述等需求,从密钥资源控制的要素及属性出发,通过映射面向网络空间的访问控制模型,提出了面向HDFS 的密钥资源控制机制;同时,给出了面向HDFS 密钥资源控制机制的管理模型,并用Z 语言形式化地描述了管理模型中的管理函数和管理方法;最后,基于XACML实现CKCM系统,实现了文件与密钥统一访问控制管理。