HBase源码分析之Simple权限验证

本文深入分析HBase的权限验证机制,重点讲解AccessController的配置、权限验证流程及权限缓存的读取与更新。通过配置AccessController,可以实现用户权限控制。内容涵盖超级用户、Namespace和Table权限的验证,以及globalCache、nsCache和tableCache的管理。
摘要由CSDN通过智能技术生成

有了用户的机制,见HBase源码分析之用户,就可以对用户进行权限控制了,HBase提供了AccessController作为自带的认证方式,HBase称之为simple。

1. 配置AccessController

HBase自带了AccessController,所以只要在conf/hbase-site.xml中设置好以下属性,即可生效。

<!-- HBase Superuser -->
<property>
  <name>hbase.superuser</name>
  <value>hbase, admin</value>
</property>

<property>
  <name>hbase.security.authentication</name>
  <value>simple</value>
</property>
<property>
  <name>hbase.security.authorization</name>
  <value>true</value>
</property>
<property>
  <name>hbase.coprocessor.master.classes</name>
  <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
  <name>hbase.coprocessor.region.classes</name>
  <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
  <name>hbase.coprocessor.regionserver.classes</name>
  <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>

AccessController实现了CoprocessorService、AccessControlService.Interface,通过客户端调用grant、revoke操作时,会相应的调用AccessController的grant、revoke方法,方法中会将配置的权限存进hbase:acl中。

  @Override
  public void grant(RpcController controller,
                    AccessControlProtos.GrantRequest request,
                    RpcCallback<AccessControlProtos.GrantResponse> done) {
            ...
            AccessControlLists.addUserPermission(regionEnv.getConfiguration(), perm);
            ...
  }
  static void addUserPermission(Configuration conf, UserPermission userPerm)
      throws IOException {
    ...
    try (Connection connection = ConnectionFactory.createConnection(conf)) {
      try (Table table = connection.getTable(ACL_TABLE_NAME)) {
        table.put(p);
      }
    }
  }

配置一条权限用于测试,给masa赋予表table_name的RW(读写)权限

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值