-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/406/
-----------------------------------------------------------

Review request for hbase.


Summary
-------

This patch ports over the secure Hadoop RPC changes from the latest Yahoo 0.20 
based branch (yahoo-hadoop-0.20.104).  This patch is produced against HBase 
trunk, but is targeted as the first step in a "security" feature branch for a 
full role-based access control implementation (HBASE-1697).

RPC Changes
--------------------
The primary changes are updates from the classes:
org.apache.hadoop.ipc.Client -> org.apache.hadoop.hbase.ipc.HBaseClient
org.apache.hadoop.ipc.RPC -> org.apache.hadoop.hbase.ipc.HBaseRPC
org.apache.hadoop.ipc.Server -> org.apache.hadoop.hbase.ipc.HBaseServer

The new classes were also ported:
org.apache.hadoop.hbase.security.HBaseSaslRpcClient
org.apache.hadoop.hbase.security.HBaseSaslRpcServer

Due to type dependencies on the Hadoop RPC classes, the original Hadoop 
SaslRpc* classes could not be used.

The RPC port provides client authentication via Kerberos, and SASL negotiation 
of client server connections for mutual authentication and optionally 
encryption, so it also provides the authentication functionality for 
HBASE-2016.  The ported RPC code contains dependencies on other classes in 
secure Hadoop/Hadoop trunk, preventing it from currently running on 0.20 
branches missing the security changes.

Process Authentication
---------------------------
The HMaster and HRegionServer processes have been updated to allow 
configuration of the Kerberos principals used to run the processes.  The new 
configuration parameters are:

* hbase.master.keytab.file - Path to the keytab file containing the master 
principal's credentials
* hbase.master.kerberos.principal - Kerberos principal name used to login the 
HMaster process
* hbase.master.kerberos.https.principal - Kerberos principal name used to login 
the HMaster info server
* hbase.regionserver.keytab.file - Path to the keytab file containing the 
region server's credentials
* hbase.regionserver.kerberos.principal - Kerberos principal name used to login 
the HRegionServer process
* hbase.regionserver.kerberos.https.principal - Kerberos principal name used to 
login the HRegionServer info server

The new class org.apache.hadoop.hbase.security.HBasePolicyProvider and new file 
conf/hadoop-policy.xml allow restriction of the users and groups permitting to 
utilize each of the RPC protocol interfaces (HMasterInterface, 
HMasterRegionInterface, HRegionInterface).

Testing Updates
--------------------
Parts of the test code (org.apache.hadoop.hbase.HBaseTestingUtility and 
org.apache.hadoop.hbase.MiniHBaseCluster) were directly using the internal 
Hadoop UnixUserGroupInformation class to manipulate process ownership for 
testing.  These have been updated to use UserGroupInformation.doAs() instead.


This addresses bugs HBASE-2016 and HBASE-2742.
    http://issues.apache.org/jira/browse/HBASE-2016
    http://issues.apache.org/jira/browse/HBASE-2742


Diffs
-----

  conf/hadoop-policy.xml PRE-CREATION 
  pom.xml 2d3d75a 
  src/main/java/org/apache/hadoop/hbase/ipc/ConnectionHeader.java PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/ipc/HBaseClient.java 2b5eeb6 
  src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java 9873172 
  src/main/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java d88c12d 
  src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java d3c6c21 
  src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java bd48a4b 
  src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java 71a0447 
  src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java 1157fe1 
  src/main/java/org/apache/hadoop/hbase/ipc/Status.java PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/master/HMaster.java e4bd30d 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java 6a54736 
  src/main/java/org/apache/hadoop/hbase/security/HBasePolicyProvider.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/security/HBaseSaslRpcClient.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/security/HBaseSaslRpcServer.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java 280b91d 
  src/main/resources/hbase-default.xml e3a9669 
  src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java 4d09fe9 
  src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java 9c49e36 
  src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java 0b47975 
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java 
c982662 

Diff: http://review.cloudera.org/r/406/diff


Testing
-------


Thanks,

Gary

Reply via email to