hbase kerberos

原文链接:HBase ThriftServer Kerberos认证 - 程序员大本营

1.前置

用户可以通过ThriftServer来访问HBase服务,它的特点如下:

  • ThriftServer代理用户访问HBase服务返回操作结果,用户客户端不需要直接跟HBase进行通信
  • 用户可以使用java/python/php/c++等语言的Thrift客户端代码访问HBase服务(HBase本身客户端只支持java语言)

2. Kerberos下的ThriftServer使用

如果HBase集群开启了Kerberos认证(E-MapReduce可一键创建安全集群,非常方便),那么用户怎么通过ThriftServer访问HBase服务呢?

2.1 ThriftServer配置Kerberos

ThriftServer其实是HBase服务的客户端,既然HBase开启了Kerberos认证,那么ThrifServer也必须配置Kerberos的信息才能正常访问HBase集群服务。

在ThriftServer的hbase-site.xml文件中添加新配置:

 
  1. <property>

  2. <name>hbase.security.authentication</name>

  3. <value>kerberos</value>

  4. </property>

  5. <property>

  6. <name>hbase.thrift.kerberos.principal</name>

  7. <value>hbase/_HOST@EMR.123456.COM</value>

  8. </property>

  9. <property>

  10. <name>hbase.thrift.keytab.file</name>

  11. <value>/etc/ecm/hbase-conf/hbase-thrift.keytab</value>

  12. </property>

上述配置中实际值以用户为准(principle和keytab需对应)。

2.2 ThriftClient访问ThriftServer

用户使用python/java/php等Thrift客户端访问ThrifServer有两种方式:

2.2.1 ThriftServer不对Client进行身份认证

任何用户都可以通过ThriftServer访问HBase服务,而且都是以ThriftServer本身配置的hbase.thrift.kerberos.principal中的用户名去访问HBase服务,即对HBase服务来说只有一个固定的用户来访问。

如下图所示:

这种方式使得HBase集群的Kerberos认证无效,不适合使用开启了Kerberos的场景。

2.2.2 ThriftServer对Client进行身份认证

ThriftServer可以开启对Client进行身份认证,而且以实际的用户身份访问HBase服务。

需要做如下配置:

  • ThriftServer的hbase-site.xml中增加新的配置:
 
  1. <property>

  2. <name>hbase.thrift.security.qop</name>

  3. <value>auth</value>

  4. </property>

其中hbase.thrift.security.qop可以是auth/auth-init/auth-conf中的一个

  • HBase集群的所有节点core-site.xml中增加新的配置:
 
  1. <property>

  2. <name>hadoop.proxyuser.$user.hosts</name>

  3. <value>*</value>

  4. </property>

  5. <property>

  6. <name>hadoop.proxyuser.$user.groups</name>

  7. <value>*</value>

  8. </property>

备注:
a) $user为ThriftServer本身配置的hbase.thrift.kerberos.principal中的用户
b) 重启HBase集群(无需重启HDFS)

3. 代码示例

上述2.2.2节的场景代码

3.1 python

参考github上一个项目: 
GitHub - joshelser/hbase-thrift1-python-sasl: Python client code for Apache HBase 1.x using Kerberos authentication over SASL

使用方式在README.md中:

 
  1. -> 在客户端运行的账号下kinit初始化好Kerberos的TGT

  2. -> ./setup.sh

  3. -> python get_row.py

备注: get_row.py需要根据实际集群的配置修改相关参数

3.2 java

HBase官方的example jar有示例代码:
hbase/hbase-examples at master · apache/hbase · GitHub

hbase/DemoClient.java at master · apache/hbase · GitHub

 
  1. -> 在客户端运行的账号下kinit初始化好Kerberos的TGT

  2. ->

  3. export HBASE_EXAMPLE_CLASSPATH=`hbase classpath`;

  4. java -cp /usr/lib/hbase-current/lib/hbase-examples-1.1.1.jar:$HBASE_EXAMPLE_CLASSPATH org.apache.hadoop.hbase.thrift.DemoClient $thrift_server_host $thrift_serve_port true

有兴趣或者有需求的用户可以关注一下E-MapReduce的安全相关的功能,有问题及时联系和反馈。

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值