在多租户环境中,限制任意用户协处理器可能是一个大问题。 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