文章目录
- 1. HBase鉴权方式整理
- 2. Kerboers鉴权架构整理
-
- 2.1 kerberos的实现架构
- 2.2 相关核心参数整理
- 3. 客户端的鉴权设计
-
- 3.1 安全管控权限
- 3.2 安全管控级别
- 3.3 相关操作
-
- 3.3.1 用户授权
- 3.3.2 回收权限
- 4. 疑问和思考
- 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 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/[email protected]</value> </property> <property> <name>hbase.regionserver.kerberos.principal</name> <value>hbase/[email protected]</value> </property> <property> <name>hbase.thrift.kerberos.principal</name> <value>hbase/[email protected]</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)
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 用户授权
# 给用户授权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 回收权限
相关语法
revoke <user> [<table> [<column family> [<column; qualifier>]]
操作示例
hbase(main):014:0> revoke 'Administrator','emp' 0 row(s) in 0.1860 seconds
4. 疑问和思考
暂无
6. 参考文章
暂无