本文介绍如何集成HBase到Ranger,以及如何配置权限。

前提条件

已创建选择了HBase和Ranger服务的集群,创建集群详情请参见创建集群

操作步骤

  1. 进入集群服务页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击目标集群操作列的集群服务
  2. Ranger启用HBase。
    1. 集群服务页面,单击Ranger-plugin服务区域的状态
    2. 服务概述区域,打开enableHBase开关。
    3. 在弹出的对话框中,单击确定
  3. 在Ranger UI页面查看HBase Service。
    1. 进入Ranger UI页面,详情请参见访问Ranger UI
    2. 在Ranger UI页面,单击配置好的emr-hbase
      在Ranger启用HBase时会自动添加一个名称为emr-hbase的HBase Service。
    3. 您可以根据实际情况配置策略。
      HBase Service服务信息如下。hbase

      相关参数描述如下。

      参数说明
      Service Name服务名称,固定值为emr-hbase
      Username用户名,本示例为hbase。
      Password密码,用户自定义。
      hadoop.security.authentication
      • 标准集群(非高安全集群):选择Simple
      • 高安全集群:选择Kerberos
      hbase.master.kerberos.principal标准集群时不填写;高安全集群时填写hbase/_HOST@EMR.${CLUSTER_ID}.COM
      说明 ${CLUSTER_ID}可登录机器执行hostname命令,hostname中的'.'后以'c-'开始的字符串转换为大写即为${CLUSTER_ID}的值。
      hbase.security.authentication
      • 标准集群(非高安全集群):选择Simple
      • 高安全集群:选择Kerberos
      hbase.zookeeper.property.clientPort固定值2181
      hbase.zookeeper.quorum固定值master-1-1
      zookeeper.znode.parent固定值/hbase
      Add New Configurations
      • Name:固定值policy.download.auth.users
      • Value:固定值hbase
  4. 重启HBase。
    1. 集群服务页面,选择more > HBase
    2. 选择更多操作 > 重启
    3. 在弹出的对话框中,输入执行原因,单击确定
    4. 确认对话框中,单击确定

设置管理员账号

  1. 进入Ranger UI页面,详情请参见访问Ranger UI
  2. 在Ranger UI页面,单击配置好的emr-hbase
  3. 设置管理员账号的权限(admin权限),用于执行管理命令。
    例如balance、compaction、flush或split等。因为当前服务已经存在权限策略,所以您只需单击右侧的modify图标,在User中添加需要设置的账号即可。另外也可以修改其中的权限(例如只保留admin权限)。HBase账号必须默认设置为管理员账号。Hbase ranger
    如果使用Phoenix,则需在Ranger的HBase中新增如下策略。
    参数示例
    HBase Table SYSTEM.*
    HBase Column-family星号(*)
    HBase Column星号(*)
    Select Grouppublic
    PermissionsRead、Write、Create和Admin

权限配置示例

例如,给test用户授予表foo_ns:test的Create、Write和Read权限。

  1. 进入Ranger UI页面,详情请参见访问Ranger UI
  2. 在Ranger UI页面,单击配置好的emr-hbase
  3. 单击右上角的Add New Policy
  4. 根据您的实际需求配置相关参数。
    参数描述
    Policy Name策略名称,可以自定义。
    HBase Table表对象,格式为${namespace}:${tablename}。可输入多个,填写一个需按一次Enter键。本文示例配置为foo_ns:test。
    如果${namespace}是default,则不需要加default。支持通配符星号(*)。例如,foo_ns:*表示foo_ns下的所有表。
    说明 目前不支持default:*
    HBase Column-family列簇。例如配置为*
    HBase Column列名。例如配置为*
    Select Group指定添加此策略的用户组。
    Select User指定添加此策略的用户。例如,test。
    Permissions选择授予的权限。例如,Read、Write、Create和Admin。
  5. 单击Add
    添加Policy后,实现了对test用户的授权。test用户即可以对foo_ns:test表进行访问。
    说明 添加、删除或修改Policy后,需要等待约一分钟至授权生效。