cdh用户权限_0617-使用Sentry给Solr的collection赋予Query权限后查询异常分析
作者:冉南陽
1.文檔編寫目的
Sentry在CDH平臺中定位為統一的授權框架,即所有的組件都要受Sentry的管理,當然也是為了方便用戶的操作,一個入口為所有數據相關進行授權。Solr作為CDH的關鍵組件之一也不例外,安全授權同樣受到Sentry的管理。在前面的文章中,Fayson介紹過Sentry與Solr如何結合使用,參考《0294-如何使用Sentry為Solr賦權》,《0301-使用命令行創建collection時Sentry給Solr賦權的問題》和《0304-如何在Hue中使用Sentry為Solr賦權》。但在CDH5中,Solr的版本較低是4.10.3,而CDH6的Solr是7.4,Solr的更新較大,在使用上也會有些差別。
本文描述在CDH6.1.0集群中,使用Sentry給Solr的collection賦予Query后,查詢時不會報權限問題,但是不能查詢到數據的問題解決。
- 測試環境:
1.CM/CDH6.1.0
2.操作系統版本為Redhat7.4
3.采用root用戶進行操作
4.集群已啟用Kerberos
2.創建collection并導入數據
1.首先準備一個8個字段的csv文件,一共1行,使用逗號分隔,用來導入Solr并實現全文索引。
注意:這個csv定義了文件頭,一共8個字段,從field_1到field_8。
2. 定義一個schema文件,一共8個字段,從field_1到field_8,其中field_1為主鍵。
3. 準備創建collection的腳本,并創建collection
創建collection腳本
創建collection:創建collection需要使用solr的principle。
4. 將準備好的csv文件導入到collection1
導入文件也需要使用solr的principle
curl --negotiate -u : 'http://hadoop12:8983/solr/collection1/update/csv?commit=true' -H 'Content-Type: application/csv' --data-binary @/data1/solr/data.csv5. 查詢collection1確認數據都已經導入成功。
curl --negotiate -u : "http://hadoop12:8983/solr/collection1/query?q=*%3A*&wt=json&indent=true"3.故障重現
1.首先創建一個admin角色,并賦予所有權限,并對應到solr用戶組。
solrctl sentry --create-role adminsolrctl sentry --add-role-group admin solrsolrctl sentry --grant-privilege admin 'collection=*->action=*'solrctl sentry --grant-privilege admin 'config=*->action=*'solrctl sentry --list-privileges admin2.未賦予kibana用戶任何權限時查看數據
會報403錯
kinit kibanacurl --negotiate -u : "http://hadoop12:8983/solr/collection1/query?q=*%3A*&wt=json&indent=true"3.授予kibana用戶查詢權限
solrctl sentry --create-role kibanasolrctl sentry --grant-privilege kibana 'collection=*->action=Update'solrctl sentry --add-role-group kibana kibanasolrctl sentry --list-privileges kibana4.使用kibana查詢數據
kinit kibanacurl --negotiate -u : "http://hadoop12:8983/solr/collection1/query?q=*%3A*&wt=json&indent=true"此時未報錯,但是查詢時沒有數據。
4.問題解決
1、修改配置文件
修改配置文件tmp/${COLLECTION}_configs/conf/solrconfig.xml,把下的 true改成 false。
2. reload collection
kinit solrsolrctl collection --reload collection1reload需要使用solr用戶
3.再次使用kibana用戶查看數據,成功查詢數據
curl --negotiate -u : "http://hadoop12:8983/solr/collection1/query?q=*%3A*&wt=json&indent=true"5.總結
1. CDH 6.1里移除了collection level的授權,如果不需要document level授權認證的話,需要在solrconfig.xml 中把 下的 true 改成 false。這樣默認會是collection 級別的授權認證。
2.如果要使用document level的授權認證,那么schema中必須包含特殊的列 senty_auth,它的值就是sentry的role 名,以決定哪個role可以查看這個documen
總結
以上是生活随笔為你收集整理的cdh用户权限_0617-使用Sentry给Solr的collection赋予Query权限后查询异常分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和方舟rust一样的手游_三大高人气手游
- 下一篇: eplan图纸怎么发给别人_EPLAN标