HBase (Hortonworks) доступ запрещен исключение

Мы используем HBase в качестве хранилища в среде Hortonworks. У нас работает один узел, и мы планируем перейти на несколько узлов, если все будет работать нормально. В настоящее время мы используем систему единого входа Knox для входа в службы.

Для доступа к данным в HBase мы используем API WebHBase. Вход через систему единого входа Knox работает нормально. Пользователь, которого мы используем для этого («testuser»), имеет полные права доступа к Hbase, настроенные в Ranger.

Однако что-то идет не так, когда мы проходим через Knox и достигаем Hbase. Нет, мы получаем исключение, что пользователь "root". Почему он запрашивает пользователя «root», в то время как мы хотим получить данные с помощью «testuser»? Очевидно, мы можем сделать пользователя «root» и предоставить ему полный доступ, но это крайне нежелательно. Мы считаем, что должна быть какая-то ошибка с авторизацией пользователя в Ranger / Knox в отношении услуг.

Вот трассировка стека, которую мы получаем при доступе к API webhbase через наш шлюз Knox:

Запрещено 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.preannerOpen (orjava.AuthorizationCoprocessor.preannerOpen (orjava.Authorization) .hbase.RangerAuthorizationCoprocessor.preScannerOpen (RangerAuthorizationCoprocessor.java:856) в org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost $ 50.call ($ 50.call ($ RegionCoprocessorHost.java:1267). вызов (RegionCoprocessorHost.java:1638) в org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation (RegionCoprocessorHost.java:1712) в org.apache.hadoop.hbase.regionserver.RegionCoprocessorWhite (Regionserver.RegionCoprocessorHost) в org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preScannerOpen (RegionCoprocessorHost.java:1262) в org.a pache.hadoop.hbase.regionserver.RSRpcServices.scan (RSRpcServices.java:2279) на org.apache.hadoop.hbase.protobuf.generated.ClientProtos $ ClientService $ 2.callBlockingMethod (ClientProtos.java orgoop.java orgoop.protos.java:32295) .hbase.ipc.RpcServer.call (RpcServer.java:2127) на org.apache.hadoop.hbase.ipc.CallRunner.run (CallRunner.java:107) на org.apache.hadoop.hbase.ipc.RpcExecutoop.consumerLinkor.consumer (RpcExecutor.java:133) в org.apache.hadoop.hbase.ipc.RpcExecutor $ 1.run (RpcExecutor.java:108) в java.lang.Thread.run (Thread.java:745)

В настоящее время мы не выполняем сопоставление пользователей (т. Е. Основное сопоставление) в топологиях Knox. Мой журнал gateway-audit.log выглядит так:

17.05.05 11:58:33 || aac40856-3c3f-46a5-8b90-970d54bc0a21 | audit | WEBHBASE |||| доступ | uri | / gateway / default / hbase / testdatabase / | unavailable | Метод запроса : GET 17/05/05 11:58:33 || aac40856-3c3f-46a5-8b90-970d54bc0a21 | audit | WEBHBASE |||| доступ | uri | / gateway / default / hbase / testdatabase / | success | Статус ответа: 302 17/05/05 11:58:33 || 5737b75b-9082-44e5-9afd-9675e9c36c43 | audit | KNOXSSO |||| access | 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 | 17.05.05 11:58:33 || 5737b75b-9082-44e5-9afd-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-9675e9c36c43 | audit | KNOXSSO | testuser ||| access | uri | / gateway / knoxsso / api / v1 / websso? originalUrl = mydomain / gateway / default / hbase / testdatabase /% 2A | success | Статус ответа: 303 17/05/05 11:58:33 || 53594522-40b6-4040- ad2e-07e71a8ae112 | audit | WEBHBASE |||| access | uri | / gateway / default / hbase / testdatabase / | unavailable | Метод запроса: 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 | Статус ответа: 403 17/05/05 11:58:33 || 53594522-40b6-4040-ad2e-07e71a8ae 112 | audit | WEBHBASE |||| доступ | uri | / gateway / default / hbase / testdatabase / | success | Статус ответа: 403

Спасибо за дополнительную информацию, как мне кажется, глядя в журнал аудита, что Нокс видит 'testuser'


person Nebulastic    schedule 02.05.2017    source источник
comment
В настоящее время мы не занимаемся отображением пользователей. Я обновляю свой пост, добавив в него файл gateway-audit.log. Не могли бы вы предложить нам добавить основное отображение?   -  person Sandeep More    schedule 03.05.2017
comment
Я загрузил свои настройки здесь: community.hortonworks.com/questions/100385/ Я пока не могу обнаружить никаких ошибок.   -  person Nebulastic    schedule 05.05.2017


Ответы (1)


Возможно, вы захотите проверить файл hbase-site.xml на предмет связанных настроек. Это ссылка на документацию Knox, в котором говорится о настройках.

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-

Это выглядит странно. Можете ли вы посмотреть журнал gateway-audit.log, там вы можете увидеть подробную информацию о пользователе, которого видит Knox. Кроме того, выполняете ли вы отображение пользователей в топологии knox?

person Sandeep More    schedule 05.05.2017
comment
в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) в sun.reflect.DelegatingConstructorAccessorImpl.newConstructor.java: .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.aphbase.hadoop.client. ScannerCallable.call (ScannerCallable.java:201) на org.apache.hadoop.hbase.client.ScannerCallable.call (ScannerCallable.java:63) на org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithpallRetries ( er.java:200) на org.apache.hadoop.hbase.client.ScannerCallableWithReplicas $ RetryingRPC.call (ScannerCallableWithReplicas.java:364) на org.apache.hadoop.hbase.client.ScannerCallableWithRepnerlicas $ 338) в org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries (RpcRetryingCaller.java:126) в org.apache.hadoop.hbase.client.ResultBoundedCompletionService $ QueueingFutureBound.java.java.java (ResultingFutureBoundService). .concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread) .java: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException (org.apache.hadoop.hbase.security.AccessDeniedException): org.apache.hadoop.hbase.security.AccessDeniedException: Недостаточные разрешения для пользователя 'root', действие: scannerOpen, table : rowphyste, семья: r. в org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.authorizeAccess (RangerAuthorizationCoprocessor.java:511) в org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preannerOpen (orjava.AuthorizationCoprocessor. .hbase.RangerAuthorizationCoprocessor.preScannerOpen (RangerAuthorizationCoprocessor.java:856) в org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost $ 50. RegionCoprocessorHost $ RegionOperation.call (RegionCoprocessorHost.java:1638) на org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation (RegionCoprocessorHost.java:1712) в org.apache.hadopsercoprocess.hbase.Og. java: 1687) в org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preScannerOpen (RegionCoprocessorHost.java:1262) в org.apache.hadoop.hbase.regionserver.RSRpcServices.scan (RSRpcServices. .hadoop.hbase.protobuf.generated.ClientProtos $ ClientService $ 2.callBlockingMethod (ClientProtos.java:32295) в org.apache.hadoop.hbase.ipc.RpcServer.call (RpcServer.java:2127) в orhadoop.apache. hbase.ipc.CallRunner.run (CallRunner.java:107) в org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop (RpcExecutor.java:133) в org.apache.hadoop.hbase.ipc.RpcExecutor $ 1. (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.base. ipc.AbstractRpcClient $ BlockingRpcChannelImplementation.callBlockingMethod (AbstractRpcClient.java:287) в org.apache.hadoop.hbase.protobuf.generated.ClientProtos $ ClientService $ BlockingStap.scan (ClientProtos41.base) или в 32:32 client.ScannerCallable.openScanner (ScannerCallable.java:379) ... еще 10 - person Nebulastic; 08.05.2017