【问题标题】:HBase (Hortonworks) access denied exceptionHBase (Hortonworks) 访问被拒绝异常
【发布时间】:2017-05-02 07:36:21
【问题描述】:

我们在 Hortonworks 环境中使用 HBase 作为我们的存储选择。 我们有一个节点正在运行,如果一切正常,我们计划升级到多个节点。目前,我们使用 Knox SSO 登录服务。

要访问 HBase 中的数据,我们使用 WebHBase api。 通过 Knox SSO 登录可以正常工作。我们用来执行此操作的用户(“testuser”)对 Hbase 具有完全访问权限,在 Ranger 中配置。

但是,当我们通过 Knox 并到达 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, 家庭: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.RegionCoprocessorHost$50.call(RegionCoprocessorHost.java:1267) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1638) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1712) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperationWithResult(RegionCoprocessorHost.java:1687) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preScannerOpen(RegionCoprocessorHost.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(Thread.java:745)

在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 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(RemoteException.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(Thread.java:745) 引起: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.security.AccessDeniedException): org.apache.hadoop.hbase.security.AccessDeniedException:不足 用户“root”的权限,操作:scannerOpen,tableName:rowphyste, 家庭: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.RegionCoprocessorHost$50.call(RegionCoprocessorHost.java:1267) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1638) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1712) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperationWithResult(RegionCoprocessorHost.java:1687) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preScannerOpen(RegionCoprocessorHost.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(Thread.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 拓扑中进行用户映射(即主体映射)。我的 gateway-audit.log 如下所示:

17/05/05 11:58:33 ||aac40856-3c3f-46a5-8b90-970d54bc0a21|审计|WEBHBASE||||访问|uri|/gateway/default/hbase/testdatabase/|不可用|请求 方法:GET 17/05/05 11:58:33 ||aac40856-3c3f-46a5-8b90-970d54bc0a21|audit|WEBHBASE||||access|uri|/gateway/default/hbase/testdatabase/|success|响应 状态:302 17/05/05 11:58:33 ||5737b75b-9082-44e5-9afd-9675e9c36c43|审计|KNOXSSO||||访问|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway/default/hbase/testdatabase/%2A|不可用|请求 方法:GET 17/05/05 11:58:33 ||5737b75b-9082-44e5-9afd-9675e9c36c43|审计|KNOXSSO|testuser|||认证|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway/default/hbase/testdatabase/%2A|成功| 17/05/05 11:58:33 ||5737b75b-9082-44e5-9afd-9675e9c36c43|审计|KNOXSSO|testuser|||认证|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway/default/hbase/testdatabase/%2A|成功|组: [] 17/05/05 11:58:33 ||5737b75b-9082-44e5-9afd-9675e9c36c43|审计|KNOXSSO|testuser|||access|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway/default/hbase/testdatabase/%2A|成功|响应 状态:303 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-07e71a8ae112|审计|WEBHBASE||||访问|uri|/gateway/default/hbase/testdatabase/|不可用|请求 方法:GET 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-07e71a8ae112|audit|WEBHBASE||||dispatch|uri|mydomain:60080/testdatabase/?user.name=testuser|unavailable|请求 方法:GET 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-07e71a8ae112|audit|WEBHBASE||||dispatch|uri|mydomain:60080/testdatabase/?user.name=testuser|success|Response 状态:403 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-07e71a8ae112|audit|WEBHBASE||||access|uri|/gateway/default/hbase/testdatabase/|success|响应 状态:403

【问题讨论】:

  • 这看起来很奇怪,你能看看 gateway-audit.log,在那里你可以看到有关 Knox 正在查看的用户的详细信息。另外,您是否在 knox 拓扑中进行用户映射?
  • 我们目前没有进行用户映射。我更新了我的帖子以包含 gateway-audit.log。您是否建议我们添加主体映射?

标签: hadoop hbase hortonworks-data-platform apache-ranger knox-gateway


【解决方案1】:

感谢您提供额外信息,在我看来,查看 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 文件以了解相关设置。这是一个 link to Knox documentation 谈论设置。

【讨论】:

猜你喜欢
  • 2012-05-19
  • 2014-11-19
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 2015-10-11
相关资源
最近更新 更多