作者:冉南阳

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.csv

5. 查询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 admin

2.未赋予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 kibana

4.使用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 collection1

reload需要使用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权限后查询异常分析相关推荐

  1. 计算机重新创建一个管理用户,如何给电脑新建一个登录账户并赋予管理权限?...

    原标题:如何给电脑新建一个登录账户并赋予管理权限? 在前面和大家分享的如何给个人电脑设置管理员登录密码?,时和大家分享了如何给Administrator设置密码,这里的Administrator是系统 ...

  2. ef连接mysql报root没有权限_想要远程连接MySQL,赋予root权限没用啊?一直报语法错误...

    weixin_XMan 转载,希望对你有帮助:1. 3306端口是不是没有打开?使用nestat命令查看3306端口状态:~# netstat -an | grep 3306tcp        0  ...

  3. cdh用户权限_CDH用户管理

    一 简介 CDH大数据集群安装和使用过程中,涉及到很多用户.根据用户性质分为服务用户和使用用户.服务用户是在搭建CDH集群中自动创建的,使用用户是在集群使用中管理员创建的.这些用户都是基于linux的 ...

  4. 数据库授予用户增删改查的权限的语句_mysql创建本地用户及赋予数据库权限的方法示例...

    前言 大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也 ...

  5. linux下添加用户并赋予root权限

    1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy   //修改密码 Changing pa ...

  6. 添加用户和赋予root权限

    1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy   //修改密码 Changing pa ...

  7. linux系统添加新用户并赋予相应权限

    添加用户 添加一个名为Alex的用户 adduser Alex 修改密码 cd /home passwd Alex 赋予权限 vim /etc/sudoers 找到 root ALL=(ALL) AL ...

  8. Ubuntu增加一个用户并给普通用户赋予root权限的方法

    1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy   //修改密码 Changing pa ...

  9. vtigercrm中添加用户字段_linux笔记(一):linux添加用户并赋予root权限

    最近开始学习linux,不定期把一些学习到的东西记录到这里,权当笔记! Linux添加用户并赋root权限 一.添加用户并设置密码: 1.添加一个普通用户 2.设置密码,当看到"passwd ...

最新文章

  1. nagios报警的问题
  2. 4G EPS 中的 Control Plane
  3. 杂志订阅管理系统c++_电池管理系统BMS功能安全开发流程详解
  4. C/C++中的##用法
  5. c语言初始化字符数组为空,怎么把已经初始化的字符数组设置为空?
  6. 编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 – 12345,要求使用递归,并且函数体代码不超过8行...
  7. 会话,授权,认证概念解析
  8. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流
  9. 使用Zookeeper共享锁和排它锁和分布式队列的原理和实现(ZkClient)
  10. LintCode 137. 克隆图
  11. 培训师之绕口令与气息练习
  12. linux的夹子的权限,linux系统下MegaCli使用方法
  13. MVN TEST指定运行脚本
  14. 硬盘盘符拒绝访问-问题和解决办法
  15. 在Frenet坐标系下的动态障碍物避障
  16. 烤仔的客厅 | 明晚7:30,KAKA和烤仔在b站等你~
  17. 使用viewer实现图片预览
  18. 潘悟云方言计算机,山东方言精组与见晓组声母的分合研究
  19. rational rose 2007安装破解全过程
  20. 我为Bill Gates熬夜加班的那个晚上

热门文章

  1. Mybatis的selectKey使用
  2. android服务的说法错误的是,下面关于Android开发描述有误的一项是()。
  3. linux看进程所在,linux 查看进程所在目录
  4. hibernate教程--关联关系的映射详解
  5. (JAVA学习笔记) 异常处理
  6. LeetCode 90子集Ⅱ91解码方法
  7. SSM整合shiro权限框架
  8. Servlet优化之BaseServlet
  9. 观察者模式(Observer) 简介
  10. [转]ubuntu下ATI/Intel双显卡切换的方法