在多租户环境中,限制任意用户协处理器可能是一个大问题。 HBase 提供了连续的选项,以确保只有预期的协处理器运行:
hbase.coprocessor.enabled
:启用或禁用所有协处理器。这将限制 HBase 的功能,因为禁用所有协处理器将禁用某些安全提供程序。受影响的示例 coproccessor 是org.apache.hadoop.hbase.security.access.AccessController
。
hbase.coprocessor.user.enabled
:启用或禁用在表(即用户协处理器)上加载协处理器。
可以通过hbase-site.xml
中的以下可调参数静态加载协处理器:
hbase.coprocessor.regionserver.classes
:由区域服务器加载的以逗号分隔的协处理器列表
hbase.coprocessor.region.classes
:RegionObserver 和 Endpoint 协处理器的逗号分隔列表
hbase.coprocessor.user.region.classes
:由所有区域加载的以逗号分隔的协处理器列表
hbase.coprocessor.master.classes
:由主服务器(MasterObserver 协处理器)加载的以逗号分隔的协处理器列表
hbase.coprocessor.wal.classes
:要加载的以逗号分隔的 WALObserver 协处理器列表
hbase.coprocessor.abortonerror
:如果协处理器应该出错而不是IOError
,是否中止已加载协处理器的守护进程。如果将此设置为 false 并且访问控制器协处理器应该有致命错误,则将绕过协处理器,因此在安全安装中,这被建议为true
;但是,可以在每个表的基础上为用户协处理器重写此操作,以确保它们不会中止其运行区域服务器,而是在出错时卸载。
hbase.coprocessor.region.whitelist.paths
:可用于加载org.apache.hadoop.hbase.security.access.CoprocessorWhitelistMasterObserver
的逗号分隔列表,从而可以使用以下选项列出可以加载协处理器的路径的白名单。
类路径上的协处理器隐式列入白名单
*
到通配符所有协处理器路径
整个文件系统(例如hdfs://my-cluster/
)
由 FilenameUtils.wildcardMatch 评估的通配符路径
注意:路径可以指定方案与否(例如[file:///usr/hbase/lib/coprocessors](file:///usr/hbase/lib/coprocessors)
或所有文件系统/usr/hbase/lib/coprocessors
)