Hortonworks環境でのストレージの選択としてHBaseを使用しています。 1つのノードが稼動していて、すべて正常に動作する場合は、複数のノードにアップグレードする予定です。現在、Knox SSOを使用してサービスにサインインしています。HBase(Hortonworks)アクセス拒否例外
HBase内のデータにアクセスするには、WebHBase APIを使用します。 Knox SSOからのサインインはうまく動作します。これを行うために使用するユーザー(「testuser」)は、レンジャーで設定されたHbase上でフルアクセス権を持ちます。
しかし、Knoxを通過してHbaseに到着したときに何かがうまくいかない。いいえ、ユーザー "root"は例外です。 "testuser"を使ってデータをフェッチしたいときに、どうやってユーザーの "root"を尋ねるのでしょうか?明らかに、ユーザーを "root"にして完全なクリアランスを与えることはできますが、これは非常に望ましくありません。私たちは、レンジャー/ノックスのサービスに関するユーザー認証に間違いがあると考えています。
禁断のorg.apache.hadoop.hbase.security.AccessDeniedException: org.apache.hadoop.hbase.securityここ
は、私たちのノックスゲートウェイを介してwebhbaseのAPIにアクセスするときに我々が得るスタックトレースです。 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で。 org.apache.hadoopで org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost $ 50.call(RegionCoprocessorHost.java:1267) でapache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preScannerOpen(RangerAuthorizationCoprocessor.java:856) .hbase.regionserver.RegionCoprocessorHost $ RegionOperation.call(RegionCoprocessorHost.java:1638) at 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) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java: 107) at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133) で org.apache.hadoop.hbase.ipc.RpcExecutor $ 1.run(RpcExecutor.java:108) れるjava.langで sun.reflectでsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) でsun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブ 方法)で.Thread.run(Thread.java:745)
コンストラクタ。org.apache.hadoop.ipc。 org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtilで org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95) でRemoteException.instantiateException(RemoteException.java:106) 。ジャワ: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:338)で org.apache.hadoop.hbase.client.ScannerCallableWithReplicas $ RetryingRPC.callで(ScannerCallableWithReplicas.java:364) org.apache.hadoop.hbase.client.ResultBoundedCompletionService $ QueueingFuture.run(ResultBoundedCompletionService.java:65) で org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126) での (ThreadPoolExecutor.java:617) (org.apache.hadoop.hbase.security.AccessDeniedException): org.apache.hadoop.hbase.ipc.RemoteWithExtrasException: org.apacheで、がjava.lang.Thread.run(Thread.java:745)で発生しました。 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で。 org.apache.hadoopで org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost $ 50.call(RegionCoprocessorHost.java:1267) でapache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preScannerOpen(RangerAuthorizationCoprocessor.java:856) .hbase.regionserver.RegionCoprocessorHost $ RegionOperation.call(RegionCoprocessorHost.java:1638) at 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) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java: 107) at 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)at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1225) at 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トポロジーでのユーザーマッピング(主マッピング)を行わない。私のゲートウェイのaudit.logは、次のようになります。
17/05/05 11時58分33秒 || aac40856-3c3f-46a5-8b90-970d54bc0a21 |監査| WEBHBASE ||||アクセス| URI | /ゲートウェイ/デフォルト/ 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 | /ゲートウェイ/ 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 | /ゲートウェイ/ 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 | /ゲートウェイ/ knoxsso/api/v1/websso?originalUrl = mydomain /ゲートウェイ/デフォルト/ hbase/testdatabase /%2A | success |グループ: [] 17/05/05 11:58:33 || 5737b75b-9082-44e5-9afd-9675e9c36c43 |監査| KNOXSSO | testuser |||アクセス| uri | /ゲートウェイ/ knoxsso/api/v1/websso?originalUrl = mydomain/gateway/default/hbase/testdatabase /%2A | success |レスポンス ステータス: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 |監査| WEBHBASE ||||ディスパッチ| URI |マイドメイン:60080/testdatabase/?user.name = testuser | unavailable |リクエスト メソッド:GET 17/05/05 11:58:33 || 53594522-40b6-4040-ad2e-07e71a8ae112 |監査| WEBHBASE ||||ディスパッチ| URI | mydomain :60080/testdatabase/?user.name = testuser | success |レスポンス ステータス:403 17/05/05 11:58:33 || 53594522-40b6-4040-ad2e-07e71a8ae112 |監査| WEBHBASE ||||アクセス| URI | /ゲートウェイ/デフォルト/ HBaseの/ testdatabase/ |成功|レスポンス 状況:追加情報のための403の
これは変わったように見えますが、ゲートウェイのaudit.logを見ると、Knoxが見ているユーザーの詳細が表示されます。また、knoxトポロジでユーザーマッピングを行っていますか? –
現在、ユーザーマッピングは行っていません。投稿を更新してgateway-audit.logを含むようにします。プリンシパルマッピングを追加するようお勧めしますか? – bigdatadev