HBASE的user底层使用的还是hadoop的user;
构造connection类:
其中可以user参数
进入HBASE的user类:有一个构造方法:
可以看到使用子类SecureHadoopUser
SecureHadoopUser的构造方法参数UserGroupInformation中看到:
其中封装user的则是hadoop.security的user类。
(初始化的时候会执将所有表的权限信息写到对应table的node节点上)
在HBASE执行put以及delete操作触发updateAcl更新操作:
获取权限监控的znode
读取acl表的所有权限:
并且会解析数据成指定格式,写入zookeeper,并且转成字节;
解析核心代码:
则是最终写入zookeeper的格式数据
序列化写入数据:
zookeeper上node子znode数据变更,会执行更新cache操作;
相应的执行refreshAuthManager操作,包括
然后重新将新权限信息放进cache中,提供HBASE权限的检查check操作。
当然,再删除的时候,数据信息也会执行相应的delete操作。
在TableAuthManager权限检查类中,三种cache,
分别在处理超级用户superuser,namespace及table的用户权限信息