-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/53568/
-----------------------------------------------------------
Review request for ranger, Ankita Sinha, Don Bosco Durai, Gautam Borad, Abhay
Kulkarni, Madhan Neethiraj, Mehul Parikh, Ramesh Mani, Selvamohan Neethiraj,
and Velmurugan Periasamy.
Bugs: RANGER-1212
https://issues.apache.org/jira/browse/RANGER-1212
Repository: ranger
Description
-------
**Problem Statement : ** If SSL is enabled in Ranger unsecured HA environment
then load balancer doesn't forward client certificate to Ranger and
Authentication fails due to certificate issue. In SSL environment usually
client sends SSL certificate with request attribute to Ranger for
authentication but whenever such request is sent via load balancer; load
balancer could not pass the received certificate to Ranger and authentication
fails.
**Note :** This is happening only in the unsecured environment as client
certificate is mandatory at Ranger end; while in the secured environment,
authentication is done through Kerberos ticket so client certificate is not
required.
**Proposed Solution :** Since load balancer is unable to pass client
certificate with request attribute we can configure load balancer to pass
client certifacte with request header. To enable this configuration at load
balancer end we need to add below line and enable load balancer to add request
header received from client.
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
Load balancer shall send the client certificate in PEM format, proposed patch
shall read the PEM format certificate from request header and parse it. Since
Ranger requires X509 format certificate to authenticate the request, proposed
patch contains those changes to parse the certifacte in X509 format.
Diffs
-----
security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
9e72f42
Diff: https://reviews.apache.org/r/53568/diff/
Testing
-------
**Steps Performed(with patch):**
1. Installed ranger-admin on two nodes from Build having changes of proposed
patch.
2. Configured Ranger admin in SSL mode.
3. Configured load balancer in SSL mode with both the node of ranger-admin.
4. Created truststore of load balancer self signed keystore.
5. Created a truststore for the hdfs plugin and added the public key of ranger
admin as trusted entry into it.
6. To enable HDFS Plugin to communicate to Ranger Admin via load balancer
copied the truststore file generated from load balancer machine(file generated
from step 4) to HDFS node.
7. Generated HDFS truststore in PEM format to configure that in load balancer
machine.
8. Created ranger_lb_crt.pem file in load balancer machine and added the
content of file created from previous step.
9. In load balancer machine configured the path of file created in previous
step.
10. Added below line in load balancer config file.
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
11. Started ranger-admin, hdfs and load balancer.
**Expected behaviour :** Ranger plugin should able to communicate to Ranger
admin and download the policies.
**Actual behaviour :** Ranger plugin was able to communicate to Ranger admin
and download the policies.
Thanks,
Pradeep Agrawal