-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/68133/
-----------------------------------------------------------
Review request for ranger, Ankita Sinha, Gautam Borad, Abhay Kulkarni, Madhan
Neethiraj, Mehul Parikh, Ramesh Mani, and Velmurugan Periasamy.
Bugs: RANGER-2169
https://issues.apache.org/jira/browse/RANGER-2169
Repository: ranger
Description
-------
**Problem Statement:** Currently `name` column of x_policy table does not have
unique constraint and validation is done only at Ranger admin code. Concurrent
create policy request might create same name policies within the same service.
**Proposed Solution:**
We can't create unique index in a table columns if there are duplicate entries
in it so first we need to rename/remove the duplicate entries.
1. SQL Patch 033 shall Update the policy name if there are duplicate policies
in a service. New policy name shall be '<old policyname>-duplicate-<id>'.
Example : if there are two policy having same name say 'hivepolicy' with id 10
and 11 then the new name of the policies shall be 'hivepolicy-duplicate-10' and
'hivepolicy-duplicate-11'
2. Add Unique key/constraint on 'name' and 'service' columns of x_policy table.
Diffs
-----
security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql 174204eb3
security-admin/db/mysql/patches/033-add-unique-constraint-on-table-x_policy.sql
PRE-CREATION
security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
2d18b5082
security-admin/db/oracle/patches/033-add-unique-constraint-on-table-x_policy.sql
PRE-CREATION
security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
0e0344d9b
security-admin/db/postgres/patches/033-add-unique-constraint-on-table-x_policy.sql
PRE-CREATION
security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
4cf295c81
security-admin/db/sqlanywhere/patches/033-add-unique-constraint-on-table-x_policy.sql
PRE-CREATION
security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
09701e2b8
security-admin/db/sqlserver/patches/033-add-unique-constraint-on-table-x_policy.sql
PRE-CREATION
Diff: https://reviews.apache.org/r/68133/diff/1/
Testing
-------
**Steps Performed (without patch) :**
Steps (without patch) is to reproduce the case so that when we with patch
ranger installation is done then it can update the duplicate policies name.
1. After Build untar the Ranger module and updated install.properties for MySQL
DB flavor.
2. Called setup.sh to install Ranger.
3. Started Ranger admin and created hive service and hive policies
'hivepolicy1', 'hivepolicy2' and 'hivepolicy3'
4. Logged into ranger db and updated all three policy name to 'hivepolicy' by
using SQL statement:
UPDATE x_policy set name='hivepolicy' where id in(4,5,6);
5. Restarted Ranger and Ranger UI was showing 3 hive policies with same name
'hivepolicy'.
**Steps Performed (with patch) :**
1. After Build untar the Ranger module and updated install.properties for MySQL
DB flavor with the same configuration used earlier.
2. Called setup.sh to install Ranger.
3. Restarted Ranger and Logged into Ranger admin to check names of 3 duplicate
policies.
**Expected Behavior :**
1. Ranger UI should show different policy names and there should not be any
duplicate policies.
2. Unique constraint should get created in x_policy(name,service).
3. Attempt to create same name policies with in the same service should fail.
For example below given SQL statement execution should fail: "UPDATE x_policy
set name='hivepolicy' where id in(4,5,6)"
**Actual Behavior :**
1. Ranger UI was showing three default policies and 3 hive policies which was
having name 'hivepolicy' was appearing with name
'hivepolicy-duplicate-4'
'hivepolicy-duplicate-5'
'hivepolicy-duplicate-6'
where 4,5 and 6 are the ID's of hivepolicy.
2. Unique key got created on name and service column of x_policy table.
3. Execution of SQL statement "UPDATE x_policy set name='hivepolicy' where id
in(4,5,6)" failed due to unique key constraint violation attempt.
Note: I have tested above steps for all other DB Flavors.
Thanks,
Pradeep Agrawal