聊聊更为高效的ACL认证方式

本文探讨了传统ACL认证模式的缺点,如元数据的高频访问和空间占用问题。提出了基于比特位的ACL存储方式,通过位运算优化权限信息的存储空间。同时,引入Radix Tree构建ACL访问,利用内存高效性和空间节省特性,提高ACL查询和更新的效率。这种优化方法受到Hadoop Ozone原生ACL设计的启发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


在存储系统中,为了保证数据的安全性,凡是需要访问数据的用户,都是需要被验证其是否有足够权限访问的。这个认证过程可以是传统UGO(user, group, other,rwx)的方式,当然也可以是另一种ACL的方式。ACL是为每个需要被访问的资源指定了可允许用户的列表,每个用户还被声明了能够允许的权限操作。假设现在我们使用的是ACL的方式来做访问控制,这意味着每次用户发起资源(如果是存储系统,就是数据)请求时,系统都会经过一次ACL的验证。那么此时ACL的check动作将会是一个高频的行为,按照传统方式我们将ACL信息保存到元数据存储中,这势必会带来高频的元数据查询。对此,我们可以做哪些优化处理使之行为更加高效呢?本文笔者结合最近Hadoop Ozone的原生ACL设计,来聊聊这个主题。

传统ACL认证模式的缺点


我们要想提高现有ACL认证模式的效率,那我们必不可少需要去了解目前传统资源ACL的认证原理,大致过程如下所示。
在这里插入图片描述
按照上图所示,过程主要如下:

1)系统在创建资源时,会将设置的ACL信息作为资源元数据信息的一个属性信息,和元数据信息一起被序列化保存到外部存储中去。当然有些系统也可能将ACL信息单拎出来进行保存。
2)当用户访问目标资源时,系统从元数据存储中读取该资源对象信息,提取其ACL属性信息,进行ACL的用户验证,权限验证。如果验证通过,系统允许用户当前访问行。如果验证不通过,则抛出权限验证错误。

看似上述过程中规中矩,并没有明显的弊端毛病,但是如果我们往系统未来的扩展性等方向考虑的话,这里面还是会暴露出不少的缺陷。主要有以下几点不足之处:

  • 元数据的ACL信息的高频访问。高频访问意味着高频的访问元数据外部存储的行为,这里假设元数据存储还仅仅是在本地的情况时,这意味着系统将会
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值