-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66504/#review200820
-----------------------------------------------------------
.git/rebase-apply/patch:195: trailing whitespace.
warning: 1 line adds whitespace errors.
Please fix above warning.
- Qiang Zhang
On April 9, 2018, 2:55 p.m., Pradeep Agrawal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66504/
> -----------------------------------------------------------
>
> (Updated April 9, 2018, 2:55 p.m.)
>
>
> Review request for ranger, bhavik patel, Gautam Borad, Abhay Kulkarni, Madhan
> Neethiraj, Mehul Parikh, Ramesh Mani, Sailaja Polavarapu, and Velmurugan
> Periasamy.
>
>
> Bugs: RANGER-2058
> https://issues.apache.org/jira/browse/RANGER-2058
>
>
> Repository: ranger
>
>
> Description
> -------
>
> **Problem Statement:** Ranger can not communicate to ssl enabled Postgres
> server
>
>
> **Proposed Solution:**
> To connect to a SSL Enabled Postgres Server JDBC connection string could be :
> =>For validating CA:
> "jdbc:postgresql://127.0.0.1:3306/ranger?ssl=true&sslmode=verify-ca".
> =>For Non validating CA:
> "jdbc:postgresql://127.0.0.1:3306/ranger?ssl=true&org.postgresql.ssl.NonValidatingFactory".
>
> The 'ssl=true' property is added to the JDBC URL to attempt to communicate
> via SSL.
> The 'sslfactory=org.postgresql.ssl.NonValidatingFactory' property is set to
> bypass certificate validation.
> The 'sslmode=verify-ca' property is set to connect only if the Postgres
> server trust certificate is available. If user wants to connect using
> truststore then he can configure truststore files(certificate information for
> the postgres server and client both).
> ---
> Following properties of install.properties file can be used to provide the
> SSL config options, keystore and truststore path to connect to SSL enabled
> Postgres server:
>
> db_ssl_enabled=
> db_ssl_required=
> db_ssl_verifyServerCertificate=
> db_ssl_auth_type=
> javax_net_ssl_keyStore=
> javax_net_ssl_keyStorePassword=
> javax_net_ssl_trustStore=
> javax_net_ssl_trustStorePassword=
> ---
> **Rules:**
> 1. if [db_ssl_enabled=true] then ranger admin/kms JDBC URL will attempt to
> communicate to postgres via SSL.
> 2. if [db_ssl_enabled=true and [db_ssl_required=false and
> db_ssl_verifyServerCertificate=false]] then JDBC url will have parameter
> 'sslfactory=org.postgresql.ssl.NonValidatingFactory' in it and CA validation
> will be skipped.
> 3. if [db_ssl_enabled=true and [db_ssl_required=true or
> db_ssl_verifyServerCertificate=true]] then JDBC url will have parameter
> 'sslmode=verify-ca' in it and CA validation will be mandatory.
> 3.1) if [db_ssl_auth_type=1-way] then User have to provide the certificate
> and password through truststore
> properties(javax_net_ssl_trustStore,javax_net_ssl_trustStorePassword)
> 3.2) if [db_ssl_auth_type=2-way] then User have to provide the keystore
> and password through keystore
> properties(javax_net_ssl_keyStore,javax_net_ssl_keyStorePassword) and CA
> certificate and password through truststore
> properties(javax_net_ssl_trustStore,javax_net_ssl_trustStorePassword).
>
> **Note:**
> Ranger application and jisql utility should know from where to pick the
> certificates which can be set in the System properties like this :
> -Djavax.net.ssl.keyStore=path_to_keystore_file
> -Djavax.net.ssl.keyStorePassword=password
> -Djavax.net.ssl.trustStore=path_to_truststore_file
> -Djavax.net.ssl.trustStorePassword=password
>
>
> Diffs
> -----
>
> kms/scripts/db_setup.py a431b60
> kms/scripts/dba_script.py bcd4aa2
> kms/src/main/java/org/apache/hadoop/crypto/key/RangerKMSDB.java 12585ca
> security-admin/scripts/db_setup.py b8664d2
> security-admin/scripts/dba_script.py 69fff41
> security-admin/src/main/java/org/apache/ranger/common/PropertiesUtil.java
> edd9d36
>
>
> Diff: https://reviews.apache.org/r/66504/diff/1/
>
>
> Testing
> -------
>
> **Steps Performed(with patch):**
> Installed Postgres and enabled SSL with the help of doc :
> https://www.postgresql.org/docs/9.5/static/ssl-tcp.html
>
> Untar ranger-admin from Build having changes of proposed patch.
> Provided ranger db root and admin db details in install.properties.
> Provided values for below properties of install.properties file.
> db_ssl_enabled=true
> db_ssl_required=true
> db_ssl_verifyServerCertificate=true
> db_ssl_auth_type=1-way
> javax_net_ssl_keyStore=/root/keystore
> javax_net_ssl_keyStorePassword=secret
> javax_net_ssl_trustStore=/root/truststore
> javax_net_ssl_trustStorePassword=secret
>
> Executed setup.sh script.
>
> Tried to start ranger admin service.
>
> **Expected behaviour :** Ranger admin should start normally and User should
> able to see Dashboard page after login.
>
> **Actual behaviour :** Ranger admin was started and was able to login and see
> Ranger UI.
>
> **Note :**
> Tested Ranger admin and Ranger kms on SSL enabled Postgres with one-way and
> two-way ssl configurations.
> Tried below combination of SSL properties also with different ranger db
> combination to install ranger admin and ranger kms.
>
> db_ssl_enabled|db_ssl_required|db_ssl_verifyServerCertificate|db_ssl_auth_type|javax_net_ssl_keyStore
> javax_net_ssl_trustStore
> TRUE TRUE TRUE 2-way provided provided
> TRUE TRUE TRUE 2-way provided not provided
> TRUE TRUE TRUE 2-way not provided provided
> TRUE TRUE TRUE 2-way not provided not provided
> TRUE TRUE TRUE 1-way provided provided
> TRUE TRUE TRUE 1-way provided not provided
> TRUE TRUE TRUE 1-way not provided provided
> TRUE TRUE TRUE 1-way not provided not provided
> TRUE TRUE FALSE 2-way provided provided
> TRUE TRUE FALSE 2-way provided not provided
> TRUE TRUE FALSE 2-way not provided provided
> TRUE TRUE FALSE 2-way not provided not provided
> TRUE TRUE FALSE 1-way provided provided
> TRUE TRUE FALSE 1-way provided not provided
> TRUE TRUE FALSE 1-way not provided provided
> TRUE TRUE FALSE 1-way not provided not provided
> TRUE FALSE TRUE 2-way provided provided
> TRUE FALSE TRUE 2-way provided not provided
> TRUE FALSE TRUE 2-way not provided provided
> TRUE FALSE TRUE 2-way not provided not provided
> TRUE FALSE TRUE 1-way provided provided
> TRUE FALSE TRUE 1-way provided not provided
> TRUE FALSE TRUE 1-way not provided provided
> TRUE FALSE TRUE 1-way not provided not provided
> TRUE FALSE FALSE 2-way provided provided
> TRUE FALSE FALSE 2-way provided not provided
> TRUE FALSE FALSE 2-way not provided provided
> TRUE FALSE FALSE 2-way not provided not provided
> TRUE FALSE FALSE 1-way provided provided
> TRUE FALSE FALSE 1-way provided not provided
> TRUE FALSE FALSE 1-way not provided provided
> TRUE FALSE FALSE 1-way not provided not provided
> FALSE TRUE TRUE 2-way provided provided
> FALSE TRUE TRUE 2-way provided not provided
> FALSE TRUE TRUE 2-way not provided provided
> FALSE TRUE TRUE 2-way not provided not provided
> FALSE TRUE TRUE 1-way provided provided
> FALSE TRUE TRUE 1-way provided not provided
> FALSE TRUE TRUE 1-way not provided provided
> FALSE TRUE TRUE 1-way not provided not provided
> FALSE TRUE FALSE 2-way provided provided
> FALSE TRUE FALSE 2-way provided not provided
> FALSE TRUE FALSE 2-way not provided provided
> FALSE TRUE FALSE 2-way not provided not provided
> FALSE TRUE FALSE 1-way provided provided
> FALSE TRUE FALSE 1-way provided not provided
> FALSE TRUE FALSE 1-way not provided provided
> FALSE TRUE FALSE 1-way not provided not provided
> FALSE FALSE TRUE 2-way provided provided
> FALSE FALSE TRUE 2-way provided not provided
> FALSE FALSE TRUE 2-way not provided provided
> FALSE FALSE TRUE 2-way not provided not provided
> FALSE FALSE TRUE 1-way provided provided
> FALSE FALSE TRUE 1-way provided not provided
> FALSE FALSE TRUE 1-way not provided provided
> FALSE FALSE TRUE 1-way not provided not provided
> FALSE FALSE FALSE 2-way provided provided
> FALSE FALSE FALSE 2-way provided not provided
> FALSE FALSE FALSE 2-way not provided provided
> FALSE FALSE FALSE 2-way not provided not provided
> FALSE FALSE FALSE 1-way provided provided
> FALSE FALSE FALSE 1-way provided not provided
> FALSE FALSE FALSE 1-way not provided provided
> FALSE FALSE FALSE 1-way not provided not provided
>
>
> Thanks,
>
> Pradeep Agrawal
>
>