<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: Granting a Kerberos principal permissions on a namespace + its tables in Archives of Support Questions (Read Only)</title>
    <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130118#M34767</link>
    <description>&lt;P&gt;Maybe a typo: "our_apps_user" is given permission, versus you are kinit'ing with "our_app_user". &lt;/P&gt;</description>
    <pubDate>Fri, 15 Jul 2016 06:47:19 GMT</pubDate>
    <dc:creator>Enis</dc:creator>
    <dc:date>2016-07-15T06:47:19Z</dc:date>
    <item>
      <title>Granting a Kerberos principal permissions on a namespace + its tables</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130117#M34766</link>
      <description>&lt;P&gt;In a previous question I inquired about namespaces and how to utilize them: &lt;A href="https://community.hortonworks.com/questions/18552/introduction-of-hbase-namespaces-into-a-pre-existi.html" target="_blank"&gt;https://community.hortonworks.com/questions/18552/introduction-of-hbase-namespaces-into-a-pre-existi.html&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;Since then we've enabled our application to use them, and we're now working through getting our application to work with namespaces + Kerberos. &lt;/P&gt;&lt;P&gt;I understand that the service principal (SPN) that our application uses gets parsed down to just the base portion of the name. For example: &amp;lt;username&amp;gt;/&amp;lt;hostname&amp;gt;@REALM would result in having to grant &amp;lt;username&amp;gt; permissions on the namespace.&lt;/P&gt;&lt;P&gt;I went ahead and did this:&lt;/P&gt;&lt;PRE&gt;hbase(main):001:0&amp;gt; user_permission '@dev01osth'
User                                                     Namespace,Table,Family,Qualifier:Permission
 our_apps_user                                                dev01osth,,,: [Permission: actions=READ,WRITE,CREATE,EXEC,ADMIN]
1 row(s) in 0.4360 seconds&lt;/PRE&gt;&lt;P&gt;So it would appear that I have a proper user who has RWCEA permissions in this namespace. However when I then bring our applications .keytab file over and do a `kinit` using it on our HBase node I cannot perform any actions in an hbase shell as this user. &lt;/P&gt;&lt;P&gt;I would expect that this user would be able to `list` the tables in this namespace and also do `scans` of tables that are within this given namespace.&lt;/P&gt;&lt;P&gt;Errors in the hbase shell are as follows:&lt;/P&gt;&lt;PRE&gt;hbase(main):009:0&amp;gt; user_permission
User                                                     Namespace,Table,Family,Qualifier:Permission


ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'our_apps_user' (global, action=ADMIN)
	at org.apache.hadoop.hbase.security.access.AccessController.requireGlobalPermission(AccessController.java:531)
	at org.apache.hadoop.hbase.security.access.AccessController.requirePermission(AccessController.java:507)
	at org.apache.hadoop.hbase.security.access.AccessController.getUserPermissions(AccessController.java:2273)
	at org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos$AccessControlService$1.getUserPermissions(AccessControlProtos.java:9949)
	at org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos$AccessControlService.callMethod(AccessControlProtos.java:10107)
	at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7459)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1876)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1858)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32209)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2114)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:101)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

Here is some help for this command:
&lt;/PRE&gt;&lt;P&gt;and this:&lt;/P&gt;&lt;PRE&gt;hbase(main):008:0&amp;gt; user_permission '@dev01osth'
User                                                     Namespace,Table,Family,Qualifier:Permission


ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions (user=our_apps_user/&amp;lt;hostname&amp;gt;@&amp;lt;REALM&amp;gt;, scope=dev01osth, params=[namespace=dev01osth],action=ADMIN)
	at org.apache.hadoop.hbase.security.access.AccessController.requireNamespacePermission(AccessController.java:588)
	at org.apache.hadoop.hbase.security.access.AccessController.getUserPermissions(AccessController.java:2264)
	at org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos$AccessControlService$1.getUserPermissions(AccessControlProtos.java:9949)
	at org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos$AccessControlService.callMethod(AccessControlProtos.java:10107)
	at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7459)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1876)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1858)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32209)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2114)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:101)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)
&lt;/PRE&gt;&lt;P&gt;What am I missing here?&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jul 2016 05:37:07 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130117#M34766</guid>
      <dc:creator>slm</dc:creator>
      <dc:date>2016-07-15T05:37:07Z</dc:date>
    </item>
    <item>
      <title>Re: Granting a Kerberos principal permissions on a namespace + its tables</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130118#M34767</link>
      <description>&lt;P&gt;Maybe a typo: "our_apps_user" is given permission, versus you are kinit'ing with "our_app_user". &lt;/P&gt;</description>
      <pubDate>Fri, 15 Jul 2016 06:47:19 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130118#M34767</guid>
      <dc:creator>Enis</dc:creator>
      <dc:date>2016-07-15T06:47:19Z</dc:date>
    </item>
    <item>
      <title>Re: Granting a Kerberos principal permissions on a namespace + its tables</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130119#M34768</link>
      <description>&lt;P&gt;Sorry that was a mistake when I sanitized the output taking work specific details out. The name is our_apps_user and it's not a typo.&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jul 2016 10:33:21 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130119#M34768</guid>
      <dc:creator>slm</dc:creator>
      <dc:date>2016-07-15T10:33:21Z</dc:date>
    </item>
    <item>
      <title>Re: Granting a Kerberos principal permissions on a namespace + its tables</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130120#M34769</link>
      <description>&lt;P&gt;It appears as though adding permissions on just the namespace is not sufficient for allowing a user access to the tables within it. I had to cascade the permissions to the tables themselves like so in an hbase shell:&lt;/P&gt;&lt;PRE&gt;list.each {|t| grant 'our_apps_user','RWCXA',t}&lt;/PRE&gt;&lt;P&gt;I did the above using the included hbase SPN in the hbase.headless.keytab.&lt;/P&gt;&lt;PRE&gt;$ kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase-&amp;lt;servername&amp;gt;@&amp;lt;REALM&amp;gt;
$ hbase shell
...above command...
&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Jul 2016 10:41:28 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/Granting-a-Kerberos-principal-permissions-on-a-namespace-its/m-p/130120#M34769</guid>
      <dc:creator>slm</dc:creator>
      <dc:date>2016-07-15T10:41:28Z</dc:date>
    </item>
  </channel>
</rss>

