hbase(hortonworks)访问被拒绝异常

vfhzx4xs  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(484)

我们使用hbase作为hortonworks环境中的存储选择。我们有一个节点运行,并计划升级到多个节点,如果一切正常。目前,我们使用knox sso登录服务。
为了访问hbase中的数据,我们使用webhbase api。通过knox sso登录工作正常。我们用来执行此操作的用户(“testuser”)拥有在ranger中配置的hbase上的完全访问权限。
然而,当我们通过诺克斯到达hbase时,出现了一些问题。不,我们得到一个例外,用户“root”。为什么它要求用户“root”,而我们要用“testuser”获取数据?显然,我们可以让一个用户成为“root”,并给它完全的权限,但这是非常不可取的。我们认为ranger/knox中关于服务的用户授权肯定有错误。
下面是我们通过knox网关访问webhbase api时得到的堆栈跟踪:
禁止org.apache.hadoop.hbase.security.accessdeniedexception:org.apache.hadoop.hbase.security.accessdeniedexception:用户“root”权限不足,操作:scanneropen,tablename:testtable, family:r. 在org.apache.ranger.authorization.hbase.rangerauthorizationcoprocessor.authorizeaccess(rangerauthorizationcoprocessor。java:511)在org.apache.ranger.authorization.hbase.rangerauthorizationcoprocessor.prescanneropen(rangerauthorizationcoprocessor。java:901)在org.apache.ranger.authorization.hbase.rangerauthorizationcoprocessor.prescanneropen(rangerauthorizationcoprocessor。java:856)在org.apache.hadoop.hbase.regionserver.regionProcessorHost$50.call(regionProcessorHost。java:1267)位于org.apache.hadoop.hbase.regionserver.regionProcessorHost$regionoperation.call(regionProcessorHost)。java:1638)在org.apache.hadoop.hbase.regionserver.regionProcessorHost.execoperation(regionProcessorHost。java:1712)位于org.apache.hadoop.hbase.regionserver.regionProcessorHost.execoperationwithresult(regionProcessorHost)。java:1687)在org.apache.hadoop.hbase.regionserver.regionprocessorhost.prescanneropen(regionprocessorhost。java:1262)在org.apache.hadoop.hbase.regionserver.rsrpcservices.scan(rsrpcservices。java:2279)在org.apache.hadoop.hbase.protobuf.generated.clientprotos$clientservice$2.callblockingmethod(clientprotos。java:32295)在org.apache.hadoop.hbase.ipc.rpcserver.call(rpcserver。java:2127)在org.apache.hadoop.hbase.ipc.callrunner.run(callrunner。java:107)在org.apache.hadoop.hbase.ipc.rpcexecutor.consumerloop(rpcexecutor。java:133)在org.apache.hadoop.hbase.ipc.rpcexecutor$1.run(rpcexecutor。java:108)在java.lang.thread.run(线程。java:745)
在sun.reflect.nativeconstructoraccessorimpl.newinstance0(本机方法)在sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl)。java:62)在sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl。java:45)在java.lang.reflect.constructor.newinstance(constructor。java:423)在org.apache.hadoop.ipc.remoteexception.instantiateexception(远程异常。java:106)在org.apache.hadoop.ipc.remoteexception.unwrapremoteexception(remoteexception。java:95)在org.apache.hadoop.hbase.protobuf.protobufutil.getremoteexception(protobufutil。java:333)在org.apache.hadoop.hbase.client.scannercallable.openscanner(scannercallable。java:387)在org.apache.hadoop.hbase.client.scannercallable.call(scannercallable。java:201)在org.apache.hadoop.hbase.client.scannercallable.call(scannercallable。java:63)位于org.apache.hadoop.hbase.client.rpcretryingcaller.callwithoutretries(rpcretryingcaller)。java:200)在org.apache.hadoop.hbase.client.scannercallablewithreplicas$retryingrpc.call(scannercallablewithreplicas)。java:364)在org.apache.hadoop.hbase.client.scannercallablewithreplicas$retryingrpc.call(scannercallablewithreplicas。java:338)在org.apache.hadoop.hbase.client.rpcretryingcaller.callwithretries(rpcretryingcaller。java:126)在org.apache.hadoop.hbase.client.resultboundedcompletionservice$queueingfuture.run(resultboundedcompletionservice)。java:65)位于java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor。java:1142)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor。java:617)在java.lang.thread.run(线程。java:745)原因:org.apache.hadoop.hbase.ipc.remotewithextrasexception(org.apache.hadoop.hbase.security.accessdeniedexception):org.apache.hadoop.hbase.security.accessdeniedexception:用户“root”权限不足,操作:scanneropen,tablename:rowphyste, family:r. 在org.apache.ranger.authorization.hbase.rangerauthorizationcoprocessor.authorizeaccess(rangerauthorizationcoprocessor。java:511)在org.apache.ranger.authorization.hbase.rangerauthorizationcoprocessor.prescanneropen(rangerauthorizationcoprocessor。java:901)在org.apache.ranger.authorization.hbase.rangerauthorizationcoprocessor.prescanneropen(rangerauthorizationcoprocessor。java:856)在org.apache.hadoop.hbase.regionserver.regionProcessorHost$50.call(regionProcessorHost。java:1267)位于org.apache.hadoop.hbase.regionserver.regionProcessorHost$regionoperation.call(regionProcessorHost)。java:1638)在org.apache.hadoop.hbase.regionserver.regionProcessorHost.execoperation(regionProcessorHost。java:1712)位于org.apache.hadoop.hbase.regionserver.regionProcessorHost.execoperationwithresult(regionProcessorHost)。java:1687)在org.apache.hadoop.hbase.regionserver.regionprocessorhost.prescanneropen(regionprocessorhost。java:1262)在org.apache.hadoop.hbase.regionserver.rsrpcservices.scan(rsrpcservices。java:2279)在org.apache.hadoop.hbase.protobuf.generated.clientprotos$clientservice$2.callblockingmethod(clientprotos。java:32295)在org.apache.hadoop.hbase.ipc.rpcserver.call(rpcserver。java:2127)在org.apache.hadoop.hbase.ipc.callrunner.run(callrunner。java:107)在org.apache.hadoop.hbase.ipc.rpcexecutor.consumerloop(rpcexecutor。java:133)在org.apache.hadoop.hbase.ipc.rpcexecutor$1.run(rpcexecutor。java:108)在java.lang.thread.run(线程。java:745)在org.apache.hadoop.hbase.ipc.rpcclientimpl.call(rpcclientimpl。java:1225)在org.apache.hadoop.hbase.ipc.abstractrpcclient.callblockingmethod(abstractrpcclient。java:213)在org.apache.hadoop.hbase.ipc.abstractrpcclient$blockingrpcchannelimplementation.callblockingmethod(abstractrpcclient。java:287)在org.apache.hadoop.hbase.protobuf.generated.clientprotos$clientservice$blockingstub.scan(clientprotos。java:32741)在org.apache.hadoop.hbase.client.scannercallable.openscanner(scannercallable。java:379) ... 10多个
我们目前没有在knox拓扑中进行用户Map(即主体Map)。我的gateway-audit.log如下所示:
05/05/05/05/05/05 17/05/05/05 05/05 05/05 05/05 05/05 17/05 05/05 11:58:33 |/05;aac40856-3c3f-46a5-8b90-970D4040407A3A3A356-46a5-46a5-8b90-970D4040404040407A21;审计;审计;webhbase;;;;|;2005/05/05 05/aac40856-3C356-3c3f-46A5C4C40856-46A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A5-46A5A5-4040404040404040404090-4040404040404040404040404040404040404040404040404040404040回复状态:302 17/05/05 11:58:33||5737b75b-9082-44e5-9afd-9675e9c36c43 |审计| knoxso | | | |访问| uri |/gateway/knoxso/api/v1/websso?originalurl=mydomain/gateway/default/hbase/testdatabase/%2a |不可用|请求方法:get 17/05/05 11:58:33||5737b75b-9082-44e5-9afd-9675e9c36c43 |审计| knoxso |测试用户| | |身份验证| uri |/gateway/knoxso/api/v1/websso?originalurl=mydomain/gateway/default/hbase/testdatabase/%2a |成功| 17/05/05 11:58:33||5737b75b-9082-44e5-9afd-9675e9c36c43 |审计| knoxso |测试用户| | |身份验证| uri |/gateway/knoxso/api/v1/websso?originalurl=mydomain/gateway/default/hbase/testdatabase/%2a |成功|组:[]17/05/05 11:58:33||5737b75b-9082-44e5-9afd-9675e9c36c43 |审计|审计|审计|审计b75B75B75B75B75B75B75B-9082-9082-44E5E5-9E5E5-9E9E9E9E9C36C36C43;审计;审计;审计|审计|审计|审计|;审计bsoxsoxxb7575B75B75B75B75B7575B75B75B75B75B75B75B75B75B75B75B75B75B75B75B75B75/hbase/testdatabase/|不可用|请求方法:get2005年5月17日11:58:33 | | | 53594522-40b6-4040-ad2e-07e71a8ae112 |审计| webhbase | | | |调度| uri|mydomain:60080/testdatabase/?user.name=testuser|不可用|请求方法:get 17/05/05 11:58:33 | | 53594522-40b6-4040-ad2e-07e71a8ae112 | audit | webhbase | | | dispatch | uri|mydomain:60080/testdatabase/?user.name=testuser|成功|响应状态:403 17/05/0511:58:33 | | 53594522-40b6-4040-ad2e-07e71a8ae112 |审核| webhbase | | | |访问| uri |/gateway/default/hbase/testdatabase/|成功|响应状态:403

ggazkfy8

ggazkfy81#

感谢您提供的额外信息,在我看来,查看审计日志,knox看到了“testuser”

9675e9c36c43|audit|KNOXSSO|testuser|||authentication|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway/default/hbase/testdatabase/%2A|success|Groups: [] 17/05/05 11:58:33 ||5737b75b-9082-44e5-9afd-

4040-ad2e-07e71a8ae112|audit|WEBHBASE||||dispatch|uri|mydomain:60080/testdatabase/?user.name=testuser|success|Response status: 403 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-

您可能需要检查hbase-site.xml文件中的相关设置。这是一个关于设置的knox文档链接。

相关问题