0

我们在 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,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.RegionCoprocessorHost$50.call(RegionCoprocessorHost.java:1267) 在 org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation。调用(RegionCoprocessorHost.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.RegionCoprocessorHost$50.call(RegionCoprocessorHost.java:1267) 在 org.apache.hadoop.hbase.regionserver。

我们目前没有在 Knox 拓扑中进行用户映射(即主体映射)。我的 gateway-audit.log 如下所示:

17/05/05 11:58:33 ||aac40856-3c3f-46a5-8b90-970d54bc0a21|audit|WEBHBASE||||access|uri|/gateway/default/hbase/testdatabase/ |不可用|请求方法:GET 17 /05/05 11:58:33 ||aac40856-3c3f-46a5-8b90-970d54bc0a21|审计|WEBHBASE||||访问|uri|/gateway/default/hbase/testdatabase/|成功|响应状态: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|unavailable|请求方法:GET 17/05/05 11:58:33 ||5737b75b-9082-44e5-9afd-9675e9c36c43|audit|KNOXSSO|testuser| ||认证|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway/default/hbase/testdatabase/%2A|success| 2005 年 5 月 17 日 11:58:33 ||5737b75b-9082-44e5-9afd-9675e9c36c43|审计|KNOXSSO|testuser|||身份验证|uri|/gateway/knoxsso/api/v1/websso?originalUrl=mydomain/gateway /default/hbase/testdatabase/%2A|success|Groups: [] 17/05/05 11:58:|不可用|请求方法:GET 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-07e71a8ae112|audit|WEBHBASE||||dispatch|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|success|响应状态:403 17/05/05 11:58:33 ||53594522-40b6-4040-ad2e-07e71a8ae112|audit|WEBHBASE||||access|uri|/gateway/default/hbase /testdatabase/ |成功|响应状态:403

4

1 回答 1

0

感谢您提供其他信息,在我看来,查看 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 文档的链接。

于 2017-05-05T13:14:59.370 回答