Repository: ambari
Updated Branches:
  refs/heads/trunk deb782c79 -> e4c62592f


AMBARI-13488 : Add recommendation for 'hive.conf.restricted.list' property 
under hiveserver2-site (For Ranger Plugin)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e4c62592
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e4c62592
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e4c62592

Branch: refs/heads/trunk
Commit: e4c62592f7025bd5c8e67dd1bdfafee895afe7a6
Parents: deb782c
Author: Gautam Borad <gau...@apache.org>
Authored: Tue Oct 20 14:50:12 2015 +0530
Committer: Gautam Borad <gau...@apache.com>
Committed: Wed Oct 28 13:44:28 2015 +0530

----------------------------------------------------------------------
 .../HIVE/configuration/hiveserver2-site.xml     | 12 +++++++++++
 .../stacks/HDP/2.2/services/stack_advisor.py    | 22 ++++++++++++++++++++
 .../stacks/HDP/2.3/services/stack_advisor.py    | 16 ++++++++++++++
 .../stacks/2.2/common/test_stack_advisor.py     | 13 ++++++++----
 4 files changed, 59 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e4c62592/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hiveserver2-site.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hiveserver2-site.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hiveserver2-site.xml
index 12a78db..5a2f002 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hiveserver2-site.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hiveserver2-site.xml
@@ -71,4 +71,16 @@ limitations under the License.
     </depends-on>
   </property>
 
+  <property>
+    <name>hive.conf.restricted.list</name>
+    
<value>hive.security.authenticator.manager,hive.security.authorization.manager,hive.users.in.admin.role</value>
+    <description></description>
+    <depends-on>
+      <property>
+        <type>hive-env</type>
+        <name>hive_security_authorization</name>
+      </property>
+    </depends-on>
+  </property>
+
 </configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/e4c62592/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
index 32e6be3..c813556 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
@@ -429,6 +429,10 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
               ("hiveserver2-site" not in services["configurations"]) or \
               ("hiveserver2-site" in services["configurations"] and 
"hive.security.authenticator.manager" in 
services["configurations"]["hiveserver2-site"]["properties"]):
         putHiveServerPropertyAttribute("hive.security.authenticator.manager", 
"delete", "true")
+      if ("hive.conf.restricted.list" in 
configurations["hiveserver2-site"]["properties"]) or \
+              ("hiveserver2-site" not in services["configurations"]) or \
+              ("hiveserver2-site" in services["configurations"] and 
"hive.conf.restricted.list" in 
services["configurations"]["hiveserver2-site"]["properties"]):
+        putHiveServerPropertyAttribute("hive.conf.restricted.list", "delete", 
"true")
       if "KERBEROS" not in servicesList: # Kerberos security depends on this 
property
         putHiveSiteProperty("hive.security.authorization.enabled", "false")
     else:
@@ -450,6 +454,7 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
       putHiveServerProperty("hive.security.authorization.enabled", "true")
       putHiveServerProperty("hive.security.authorization.manager", 
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory")
       putHiveServerProperty("hive.security.authenticator.manager", 
"org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator")
+      putHiveServerProperty("hive.conf.restricted.list", 
"hive.security.authenticator.manager,hive.security.authorization.manager,hive.users.in.admin.role")
       putHiveSiteProperty("hive.security.authorization.manager", 
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdConfOnlyAuthorizerFactory")
       if sqlstdauth_class not in auth_manager_values:
         auth_manager_values.append(sqlstdauth_class)
@@ -465,6 +470,7 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
       putHiveServerProperty("hive.security.authorization.enabled", "true")
       putHiveServerProperty("hive.security.authorization.manager", 
"com.xasecure.authorization.hive.authorizer.XaSecureHiveAuthorizerFactory")
       putHiveServerProperty("hive.security.authenticator.manager", 
"org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator")
+      putHiveServerProperty("hive.conf.restricted.list", 
"hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager")
 
     putHiveSiteProperty("hive.server2.use.SSL", "false")
 
@@ -1154,6 +1160,22 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
                                   "item": self.getWarnItem(
                                   "If Ranger Hive Plugin is enabled."\
                                   " {0} under hiveserver2-site needs to be set 
to {1}".format(prop_name, prop_val))})
+        prop_name = 'hive.conf.restricted.list'
+        prop_vals = 
'hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager'.split(',')
+        current_vals = []
+        missing_vals = []
+        if hive_server2 and prop_name in hive_server2:
+          current_vals = hive_server2[prop_name].split(',')
+          current_vals = [x.strip() for x in current_vals]
+
+        for val in prop_vals:
+          if not val in current_vals:
+            missing_vals.append(val)
+
+        if missing_vals:
+          validationItems.append({"config-name": prop_name,
+            "item": self.getWarnItem("If Ranger Hive Plugin is enabled."\
+            " {0} under hiveserver2-site needs to contain missing value 
{1}".format(prop_name, ','.join(missing_vals)))})
       ##Add stack validations for  Ranger plugin disabled.
       elif not ranger_plugin_enabled:
         prop_name = 'hive.security.authorization.manager'

http://git-wip-us.apache.org/repos/asf/ambari/blob/e4c62592/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py 
b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
index b3de283..1d1cdba 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
@@ -628,6 +628,22 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
                                   "item": self.getWarnItem(
                                   "If Ranger Hive Plugin is enabled."\
                                   " {0} under hiveserver2-site needs to be set 
to {1}".format(prop_name, prop_val))})
+        prop_name = 'hive.conf.restricted.list'
+        prop_vals = 
'hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager'.split(',')
+        current_vals = []
+        missing_vals = []
+        if hive_server2 and prop_name in hive_server2:
+          current_vals = hive_server2[prop_name].split(',')
+          current_vals = [x.strip() for x in current_vals]
+
+        for val in prop_vals:
+          if not val in current_vals:
+            missing_vals.append(val)
+
+        if missing_vals:
+          validationItems.append({"config-name": prop_name,
+            "item": self.getWarnItem("If Ranger Hive Plugin is enabled."\
+            " {0} under hiveserver2-site needs to contain missing value 
{1}".format(prop_name, ','.join(missing_vals)))})
       ##Add stack validations for  Ranger plugin disabled.
       elif not ranger_plugin_enabled:
         prop_name = 'hive.security.authorization.manager'

http://git-wip-us.apache.org/repos/asf/ambari/blob/e4c62592/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py 
b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
index 74d9b21..6b582c9 100644
--- a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
+++ b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
@@ -1049,7 +1049,8 @@ class TestHDP22StackAdvisor(TestCase):
         },
         'property_attributes': {
          'hive.security.authorization.manager': {'delete': 'true'},
-         'hive.security.authenticator.manager': {'delete': 'true'}
+         'hive.security.authenticator.manager': {'delete': 'true'},
+         'hive.conf.restricted.list': {'delete': 'true'}
         }
       }
     }
@@ -1146,7 +1147,8 @@ class TestHDP22StackAdvisor(TestCase):
         "hiveserver2-site": {
           "properties": {
             "hive.security.authorization.manager": "",
-            "hive.security.authenticator.manager": ""
+            "hive.security.authenticator.manager": "",
+            "hive.conf.restricted.list": ""
           }
         }
       },
@@ -1220,7 +1222,8 @@ class TestHDP22StackAdvisor(TestCase):
         "hiveserver2-site": {
           "properties": {
             "hive.security.authorization.manager": "",
-            "hive.security.authenticator.manager": ""
+            "hive.security.authenticator.manager": "",
+            "hive.conf.restricted.list": ""
           }
         }
       },
@@ -1290,6 +1293,7 @@ class TestHDP22StackAdvisor(TestCase):
     
expected["hiveserver2-site"]["properties"]["hive.security.authorization.enabled"]="true"
     
expected["hiveserver2-site"]["properties"]["hive.security.authorization.manager"]="org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory"
     
expected["hiveserver2-site"]["properties"]["hive.security.authenticator.manager"]="org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator"
+    
expected["hiveserver2-site"]["properties"]["hive.conf.restricted.list"]="hive.security.authenticator.manager,hive.security.authorization.manager,hive.users.in.admin.role"
 
     self.stackAdvisor.recommendHIVEConfigurations(configurations, clusterData, 
services, hosts)
     self.assertEquals(configurations, expected)
@@ -1382,6 +1386,7 @@ class TestHDP22StackAdvisor(TestCase):
     
expected["hiveserver2-site"]["properties"]["hive.security.authenticator.manager"]
 = "org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator"
     
expected["hiveserver2-site"]["properties"]["hive.security.authorization.manager"]
 = "com.xasecure.authorization.hive.authorizer.XaSecureHiveAuthorizerFactory"
     
expected["hiveserver2-site"]["properties"]["hive.security.authorization.enabled"]
 = "true"
+    
expected["hiveserver2-site"]["properties"]["hive.conf.restricted.list"]="hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager"
     self.stackAdvisor.recommendHIVEConfigurations(configurations, clusterData, 
services, hosts)
     self.assertEquals(configurations['hiveserver2-site'], 
expected["hiveserver2-site"])
 
@@ -3142,7 +3147,7 @@ class TestHDP22StackAdvisor(TestCase):
     }
 
     # Test with ranger plugin enabled, validation fails
-    res_expected = [{'config-type': 'hiveserver2-site', 'message': 'If Ranger 
Hive Plugin is enabled. hive.security.authorization.manager under 
hiveserver2-site needs to be set to 
com.xasecure.authorization.hive.authorizer.XaSecureHiveAuthorizerFactory', 
'type': 'configuration', 'config-name': 'hive.security.authorization.manager', 
'level': 'WARN'}, {'config-type': 'hiveserver2-site', 'message': 'If Ranger 
Hive Plugin is enabled. hive.security.authenticator.manager under 
hiveserver2-site needs to be set to 
org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator', 'type': 
'configuration', 'config-name': 'hive.security.authenticator.manager', 'level': 
'WARN'}]
+    res_expected = [{'config-type': 'hiveserver2-site', 'message': 'If Ranger 
Hive Plugin is enabled. hive.security.authorization.manager under 
hiveserver2-site needs to be set to 
com.xasecure.authorization.hive.authorizer.XaSecureHiveAuthorizerFactory', 
'type': 'configuration', 'config-name': 'hive.security.authorization.manager', 
'level': 'WARN'}, {'config-type': 'hiveserver2-site', 'message': 'If Ranger 
Hive Plugin is enabled. hive.security.authenticator.manager under 
hiveserver2-site needs to be set to 
org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator', 'type': 
'configuration', 'config-name': 'hive.security.authenticator.manager', 'level': 
'WARN'}, {'config-type': 'hiveserver2-site', 'message': 'If Ranger Hive Plugin 
is enabled. hive.conf.restricted.list under hiveserver2-site needs to contain 
missing value 
hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager',
 'type': 'configuration', 'config-name': 'hive.con
 f.restricted.list', 'level': 'WARN'}]
     res = self.stackAdvisor.validateHiveServer2Configurations(properties, 
recommendedDefaults, configurations, services, {})
     self.assertEquals(res, res_expected)
 

Reply via email to