HBase鉴权设计以及Kerberos鉴权方法

文章目录

  • [1. HBase鉴权方式整理](#1. HBase鉴权方式整理)
  • [2. Kerboers鉴权架构整理](#2. Kerboers鉴权架构整理)
    • [2.1 kerberos的实现架构](#2.1 kerberos的实现架构)
    • [2.2 相关核心参数整理](#2.2 相关核心参数整理)
  • [3. 客户端的鉴权设计](#3. 客户端的鉴权设计)
    • [3.1 安全管控权限](#3.1 安全管控权限)
    • [3.2 安全管控级别](#3.2 安全管控级别)
    • [3.3 相关操作](#3.3 相关操作)
      • [3.3.1 用户授权](#3.3.1 用户授权)
      • [3.3.2 回收权限](#3.3.2 回收权限)
  • [4. 疑问和思考](#4. 疑问和思考)
  • [6. 参考文章](#6. 参考文章)

鉴权,分别由组成

  • : 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致
  • : 完成身份的后,还需要判断用户是否有相关操作的权限。

因此对于某一个用户来说,通常情况下,需要完成 才能够满足一个完整的业务场景,因此通常将鉴权放在一起考量。本文探讨hbase的鉴权常用的鉴权方式以及kerberos鉴权方式的相关方法。

1. HBase鉴权方式整理

HBase的权限管理包括两个部分,分别是Authentication 和 Authorization。

Authentication:针对某host是否有权成为集群的regionserver或者client端,典型的实现是:kerberos

Authorization: 是针对client端对集群数据的读写等权限,能够控制到库、表、列鏃等级别的鉴权控制。

2. Kerboers鉴权架构整理

2.1 kerberos的实现架构

参考 HDFS鉴权设计以及Kerberos鉴权方法 中的kerbero鉴权部分

2.2 相关核心参数整理

hbase-site.xml配置

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
 Licensed ...
-->

<configuration>
    <!-- 默认情况下是simple,表示不使用认证 -->
    <property>
        <name>hbase.security.authentication</name>
        <value>kerberos</value>
    </property>

    <!-- 开启Kerberos的安全授权,通常接入Kerberos以后授权必须一起打开 -->
    <property>
        <name>hbase.security.authorization</name>
        <value>true</value>
    </property>

    <!-- Master、regionserver、thrift使用的principal账号 -->
    <property>
        <name>hbase.master.kerberos.principal</name>
        <value>hbase/_HOST@IDATA.RUIJIE.COM</value>
    </property>
    <property>
        <name>hbase.regionserver.kerberos.principal</name>
        <value>hbase/_HOST@IDATA.RUIJIE.COM</value>
    </property>
    <property>
        <name>hbase.thrift.kerberos.principal</name>
        <value>hbase/_HOST@IDATA.RUIJIE.COM</value>
    </property>
    <!-- Master、regionserver、thrift不同组件使用的keytable文件 -->
    <property>
        <name>hbase.master.keytab.file</name>
        <value>hbase.keytab</value>
    </property>
    <property>
        <name>hbase.regionserver.keytab.file</name>
        <value>hbase.keytab</value>
    </property>
    <property>
        <name>hbase.thrift.keytab.file</name>
        <value>/etc/hbase/conf/hbase.keytab</value>
    </property>


    <!-- 配置相关的coprocessor -->
    <property>
        <name>hbase.coprocessor.master.classes</name>
        <value>
            org.apache.hadoop.hbase.security.access.AccessControllerorg.apache.hadoop.hbase.security.visibility.VisibilityController
        </value>
    </property>

    <property>
        <name>hbase.coprocessor.region.classes</name>
        <value>
            org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.visibility.VisibilityController,org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint
        </value>
    </property>
</configuration>

3. 客户端的鉴权设计

参考mysql的库表鉴权设计模式,能够创建用户、组和鉴权控制表、字段的读写权限。

3.1 安全管控权限

HBase提供五个权限标识符:(RWXCA)

bash 复制代码
R - represents read privilege.
W - represents write privilege.
X - represents execute privilege.
C - represents create privilege.
A - represents admin privilege.

3.2 安全管控级别

相关的管控权限的作用范围,涉及如下级别:

  • Superuser:拥有所有权限的超级管理员用户,通过hbase.superuser参数配置;
  • Global:全局权限可以作用在集群所有的表上;
  • Namespace :命名空间级;
  • Table:表级;
  • ColumnFamily:列簇级权限;
  • Cell:单元级;

3.3 相关操作

和关系数据库(如mysql)一样,Hbase权限的授予和回收都使用grant和revoke,但格式有所不同。

3.3.1 用户授权

bash 复制代码
# 给用户授权emp表的操作权限
hbase(main):012:0> grant 'Administrator','RWCA','emp'
0 row(s) in 0.1740 seconds

# 查看用户的权限
hbase(main):014:0> user_permission 'emp'
User                                     Namespace,Table,Family,Qualifier:Permission                                                                         
 Administrator                           default,emp,,: [Permission: actions=READ,WRITE,CREATE,ADMIN]                                                        
 root                                    default,emp,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]                                                   
2 row(s) in 0.0640 seconds

3.3.2 回收权限

相关语法

bash 复制代码
revoke <user> [<table> [<column family> [<column; qualifier>]]

操作示例

bash 复制代码
hbase(main):014:0> revoke 'Administrator','emp'
0 row(s) in 0.1860 seconds

4. 疑问和思考

暂无

6. 参考文章

暂无

相关推荐
夜泉_ly35 分钟前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New4 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6754 小时前
数据库基础1
数据库
我爱松子鱼4 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo4 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser5 小时前
【SQL】多表查询案例
数据库·sql
Galeoto5 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)6 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231116 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql