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. 参考文章

暂无

相关推荐
yy7634966685 小时前
WPF 之 简单高效的Revit多语言支持方案
java·大数据·linux·服务器·wpf
渲吧云渲染8 小时前
SaaS模式重构工业软件竞争规则,助力中小企业快速实现数字化转型
大数据·人工智能·sass
像风一样!9 小时前
MySQL Galera Cluster部署如何实现负载均衡和高可用
数据库·mysql
青云交10 小时前
Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化
java·大数据·迁移学习·图像识别·模型优化·deeplearning4j·机器学习模型
last_zhiyin10 小时前
Oracle sql tuning guide 翻译 Part 6-4 --- Hint使用准则和Hint使用报告
数据库·sql·oracle·sql tunning
chenchihwen11 小时前
AI代码开发宝库系列:FAISS向量数据库
数据库·人工智能·python·faiss·1024程序员节
小光学长11 小时前
基于Vue的课程达成度分析系统t84pzgwk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
摇滚侠12 小时前
全面掌握PostgreSQL关系型数据库,备份和恢复,笔记46和笔记47
java·数据库·笔记·postgresql·1024程序员节
周杰伦fans12 小时前
Navicat - 连接 mysql 、 sqlserver 数据库 步骤与问题解决
数据库·mysql·sqlserver
码以致用13 小时前
StarRocks笔记
数据库·starrocks·olap·1024程序员节