EndPoint
如果说HBase Observers类似关系数据库的触发器,那么HBase的EndPoint概念上则类似存储过程,提供了显式参数RPC函数调用。如图,客户端自定义接口,调用RPC方法。其中,HTable.coprocessorExec()调用返回列数的大小,而此调用又会跨越不同的Region Server,然后分割,并行执行,最后返回结果。
访问控制器
访问控制器(AccessController)作为HBase的核心,主要负责访问控制列表(ACL)与权限管理。从ACL的角度看,AccessControllerProtocol提供RPC调用,更新与查询用户权限。而ZooKeeper作为监听器,通过集群同步ACL的变更。从权限管理的角度看,RegionObserver触发的对象为DML操作,而MasterObserver针对的是DDL操作。
作为一个具体例子,AccessControllerProtocol作为一个EndPoint,实现AccessControllerProtocol接口,代码如下:
另一个例子,AccessController提供函数preGet通过RegionObserver与MasterObserver实现权限访问检查,代码如下:
为更加便于理解,这里给出preGet()用例图。这里验证的是用户的credential,如果验证成功,则继续下一步操作,如果失败则抛出AccessDeniedException。
Secure ZooKeeper
ZooKeeper作为监听器,在HBase集群起到关键作用,具体表现在:
- · Root catalog table location
- · Region assignment
- · Server "liveness"
- · Synchronizes ACLs throughout cluster
- · Synchronizes secret key rolling for token authentication
如前所述,ZooKeeper能监听ACL的变更,如图:
我们可以看到,绿色的znode为public,一般来说,该作用域适用于客户端所需操作。红色的znode为private,通常为集群操作安全性要求较高的znode。
总之,安全性是企业应用绕不开的话题。HBase 0.92在安全性方面有非常大的改进,相信越来越多的公司会选择HBase。通过HBase读写数据的产品也会越来越多。更多大会详情,请查看专题链接:
(责任编辑:安博涛)