HBase ACL管理 Hbase 权限管理
場景:hadoop集群已經進行kerberos認證
- 啟動Hbase相關配置
- ?Hbase權限分為以下五種:
Read(R) : 可以讀取給定范圍內數據的權限
Write(W) : 可以在給定范圍內寫數據
Executor(X) : 可以在指定表執行Endpoints類型的協處理
Create(C) : 可以在給定范圍內創建和刪除表(包括非該用戶創建的表)
Admin(A) : 可以執行集群操作,如平衡數據等
?
以上5個控制級別都需要為其指定范圍,范圍定義如下:
Superuser : 超級用戶可以執行HBase中所有操作及任何資源(如:hbase用戶)
Global: 在全局范圍內授予的權限,可以在超級管理下創建多種集群管理員
Namespace: 在命名空間范圍內授權,適用于命名空間內所有表
Table: 表范圍授權,適用于為指定表進行授權
ColumnFamily: ColumnFamily范圍內授權
Cell: 為指定的單元格進行授權
grant
grant <user>, <permissions> [, <@namespace> [, <table> [, <column family> [, <column qualifier>]]]
- 對指定用戶授權?
使用kerberos 授權的hdfs用戶執行創建表,對HDFS文件系統hdfs有最高的權限,但是在hbase shell中創建表也是沒有權限(前提是啟動kerberos,未啟動的集群可以隨便搞~)
hbase(main):001:0> create 'test','fn'ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions (user=hdfs@JAST.COM, scope=default, params=[namespace=default,table=default:test,family=fn],action=CREATE)使用kerberos 授權的hbase用戶有最高權限,我們使用hbase,授權給hdfs相關權限
kinit -kt hbase.keytab hbase@JAST.COM # 切換hbase給hdfs用戶授權 Create(C) 、Admin(A) 權限?
hbase(main):004:0> grant 'hdfs','CA' 0 row(s) in 0.2240 secondshbase(main):005:0> user_permission User Namespace,Table,Family,Qualifier:Permission hdfs hbase,hbase:acl,,: [Permission: actions=CREATE,ADMIN]測試創建表 ,成功
hbase(main):005:0> create 'test2','ss' 0 row(s) in 1.2710 seconds測試查詢數據,發現只能查詢、添加使用hdfs創建的表,其他表提示無權限(寫入也無權限這里不做測試了)
hbase(main):003:0> scan 'test',{LIMIT=>1} ROW COLUMN+CELL ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'hdfs' (table=test, action=READ)也就是說授予CA權限的用戶可以對自己新建的表進行讀、寫、刪除等操作,但不能操作非admin用戶創建的表。如果admin用戶擁有RCA的權限則可以讀非admin用戶創建的表進行操作(如:讀、寫、刪除操作)
注意:這里給用戶設置了A的權限,他同時也可以修改其他用戶的相關權限,所以admin謹慎設置,超級用戶與hbase用戶不受ACL權限控制,即便設置了也不生效
查看權限發現的確與測試結果相同
hbase(main):012:0> user_permission '.*' User Namespace,Table,Family,Qualifier:Permission hdfs hbase,hbase:acl,,: [Permission: actions=CREATE,ADMIN] hbase default,test,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN] hdfs default,test2,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN] 3 row(s) in 0.7510 seconds?重新授權,可以查看所有表數據~
hbase(main):004:0> grant 'hdfs','CAR' 0 row(s) in 0.0700 secondshbase(main):005:0> user_permission User Namespace,Table,Family,Qualifier:Permission hdfs hbase,hbase:acl,,: [Permission: actions=CREATE,ADMIN,READ] 1 row(s) in 0.0320 seconds#授權后查看數據,成功 hbase(main):005:0> scan 'test',{LIMIT=>1} ROW COLUMN+CELL 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:article_type, timestamp=1562936918988, value=2 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:crawler_site_id, timestamp=1562936918988, value=300 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:crawler_time, timestamp=1562936918988, value=2019-07-09 20:17:51.473 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:created_at, timestamp=1562936918988, value=2019-07-09 07:00:00.000 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:created_date, timestamp=1562936918988, value=20190709 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:download_type, timestamp=1562936918988, value=297 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:emotion, timestamp=1562936918988, value=\xE4\xB8\xAD\xE6\x80\xA7 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:grade_all, timestamp=1562936918988, value=2 0000300_04bedaa8de0a226b3a7f48f12c5504a8 column=fn:media_type, timestamp=1562936918988, value=["002-001","001-002"]- ?賦予某個用戶命名空間權限
- ?賦予某個用戶某個表的權限
- ?賦予某個用戶某個列的權限
?
?
?
總結
以上是生活随笔為你收集整理的HBase ACL管理 Hbase 权限管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GCC常用命令详解
- 下一篇: Hbase PageFilter 取出数