Author: jaimin
Date: Thu Mar 14 00:33:10 2013
New Revision: 1456293
URL: http://svn.apache.org/r1456293
Log:
AMBARI-1634. Integrate Frontend Security work to enable security on Oozie,
Hive, and WebHCat Server. (jaimin)
Modified:
incubator/ambari/trunk/CHANGES.txt
incubator/ambari/trunk/ambari-web/app/controllers/main/admin.js
incubator/ambari/trunk/ambari-web/app/controllers/main/admin/security/add/step3.js
incubator/ambari/trunk/ambari-web/app/data/secure_configs.js
incubator/ambari/trunk/ambari-web/app/data/secure_mapping.js
incubator/ambari/trunk/ambari-web/app/data/secure_properties.js
Modified: incubator/ambari/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1456293&r1=1456292&r2=1456293&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Thu Mar 14 00:33:10 2013
@@ -11,6 +11,9 @@ Trunk (unreleased changes):
INCOMPATIBLE CHANGES
NEW FEATURES
+
+ AMBARI-1634. Integrate Frontend Security work to enable security on
+ Oozie, Hive, and WebHCat Server. (jaimin)
AMBARI-1633. Reassign Master Wizard - Step 5. (yusaku)
Modified: incubator/ambari/trunk/ambari-web/app/controllers/main/admin.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/main/admin.js?rev=1456293&r1=1456292&r2=1456293&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/main/admin.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/main/admin.js Thu Mar 14
00:33:10 2013
@@ -119,12 +119,17 @@ App.MainAdminController = Em.Controller.
if (configs['mapred_user']) {
serviceUsers.pushObject({id: 'puppet var', name: 'mapred_user', value:
configs['mapred_user']});
} else {
- serviceUsers.pushObject({id: 'puppet var', name: 'hdfs_user', value:
'mapred'});
+ serviceUsers.pushObject({id: 'puppet var', name: 'mapred_user', value:
'mapred'});
}
if (configs['hbase_user']) {
serviceUsers.pushObject({id: 'puppet var', name: 'hbase_user', value:
configs['hbase_user']});
} else {
- serviceUsers.pushObject({id: 'puppet var', name: 'hdfs_user', value:
'hbase'});
+ serviceUsers.pushObject({id: 'puppet var', name: 'hbase_user', value:
'hbase'});
+ }
+ if (configs['hive_user']) {
+ serviceUsers.pushObject({id: 'puppet var', name: 'hive_user', value:
configs['hive_user']});
+ } else {
+ serviceUsers.pushObject({id: 'puppet var', name: 'hive_user', value:
'hive'});
}
}
Modified:
incubator/ambari/trunk/ambari-web/app/controllers/main/admin/security/add/step3.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/main/admin/security/add/step3.js?rev=1456293&r1=1456292&r2=1456293&view=diff
==============================================================================
---
incubator/ambari/trunk/ambari-web/app/controllers/main/admin/security/add/step3.js
(original)
+++
incubator/ambari/trunk/ambari-web/app/controllers/main/admin/security/add/step3.js
Thu Mar 14 00:33:10 2013
@@ -27,6 +27,17 @@ App.MainAdminSecurityAddStep3Controller
secureServices: [],
serviceConfigTags: [],
globalProperties: [],
+
+ isSubmitDisabled: true,
+
+ isOozieSelected: function () {
+ return this.get('content.services').someProperty('serviceName', 'OOZIE');
+ }.property('content.services'),
+
+ isWebHcatSelected: function () {
+ return this.get('content.services').someProperty('serviceName', 'WEBHCAT');
+ }.property('content.services'),
+
serviceUsersBinding: 'App.router.mainAdminController.serviceUsers',
hasHostPopup:true,
services:[],
@@ -34,6 +45,7 @@ App.MainAdminSecurityAddStep3Controller
clearStep: function () {
this.get('stages').clear();
+ this.set('isSubmitDisabled',true);
},
loadStep: function () {
@@ -171,9 +183,17 @@ App.MainAdminSecurityAddStep3Controller
newValue = globalProperty.value;
var isInstanceName = this.get('globalProperties').findProperty('name',
'instance_name');
if (isInstanceName) {
- if (/primary_name?$/.test(globalProperty.name) && property !==
'hadoop.security.auth_to_local') {
- if (!/_HOST?$/.test(newValue)) {
- newValue = newValue + '/_HOST';
+ if (/primary_name?$/.test(globalProperty.name) && property !==
'hadoop.security.auth_to_local' && property !==
'oozie.authentication.kerberos.name.rules') {
+ if (this.get('isOozieSelected') && (property ===
'oozie.service.HadoopAccessorService.kerberos.principal' || property ===
'oozie.authentication.kerberos.principal')) {
+ var oozieServerName =
App.Service.find('OOZIE').get('hostComponents').findProperty('componentName',
'OOZIE_SERVER').get('host.hostName');
+ newValue = newValue + '/' + oozieServerName;
+ } else if (this.get('isWebHcatSelected') && property ===
'templeton.kerberos.principal') {
+ var webHcatName =
App.Service.find('WEBHCAT').get('hostComponents').findProperty('componentName',
'WEBHCAT_SERVER').get('host.hostName');
+ newValue = newValue + '/' + webHcatName;
+ } else {
+ if (!/_HOST?$/.test(newValue)) {
+ newValue = newValue + '/_HOST';
+ }
}
}
}
@@ -303,6 +323,7 @@ App.MainAdminSecurityAddStep3Controller
serviceUsers.pushObject({id: 'puppet var', name: 'hdfs_user', value:
'hdfs'});
serviceUsers.pushObject({id: 'puppet var', name: 'mapred_user', value:
'mapred'});
serviceUsers.pushObject({id: 'puppet var', name: 'hbase_user', value:
'hbase'});
+ serviceUsers.pushObject({id: 'puppet var', name: 'hive_user', value:
'hive'});
} else {
App.router.get('mainAdminController').getHDFSDetailsFromServer();
}
@@ -482,8 +503,8 @@ App.MainAdminSecurityAddStep3Controller
moveToNextStage: function () {
var nextStage = this.get('stages').findProperty('isStarted', false);
if (nextStage) {
- //
this.get('content').saveCurrentStage(nextStage.get('stage').charAt(nextStage.get('stage').length
- 1));
nextStage.set('isStarted', true);
+ this.set('isSubmitDisabled', true);
} else {
this.set('isSubmitDisabled', false);
}
@@ -521,7 +542,6 @@ App.MainAdminSecurityAddStep3Controller
console.log("TRACE: In error function for the
getServiceConfigsFromServer call");
console.log("TRACE: value of the url is: " + url);
console.log("TRACE: error code status is: " + request.status);
-
},
statusCode: require('data/statusCodes')
Modified: incubator/ambari/trunk/ambari-web/app/data/secure_configs.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/data/secure_configs.js?rev=1456293&r1=1456292&r2=1456293&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/data/secure_configs.js (original)
+++ incubator/ambari/trunk/ambari-web/app/data/secure_configs.js Thu Mar 14
00:33:10 2013
@@ -40,7 +40,7 @@ module.exports = [
configCategories: [
App.ServiceConfigCategory.create({ name: 'General', displayName:
'General'}),
App.ServiceConfigCategory.create({ name: 'NameNode', displayName:
'NameNode'}),
- // App.ServiceConfigCategory.create({ name: 'SNameNode'}),
+ App.ServiceConfigCategory.create({ name: 'SNameNode',displayName:
'SNameNode'}),
App.ServiceConfigCategory.create({ name: 'DataNode', displayName:
'DataNode'})
],
configs: configProperties.filterProperty('serviceName', 'HDFS')
@@ -86,7 +86,7 @@ module.exports = [
App.ServiceConfigCategory.create({ name: 'RegionServer', displayName:
'RegionServer'})
],
configs: configProperties.filterProperty('serviceName', 'HBASE')
- }
+ },
/*
{
serviceName: 'ZOOKEEPER',
@@ -97,7 +97,7 @@ module.exports = [
configs: configProperties.filterProperty('serviceName', 'ZOOKEEPER')
},
-
+ */
{
serviceName: 'OOZIE',
@@ -107,6 +107,6 @@ module.exports = [
App.ServiceConfigCategory.create({ name: 'Oozie Server'})
],
configs: configProperties.filterProperty('serviceName', 'OOZIE')
- },
- */
+ }
+
];
Modified: incubator/ambari/trunk/ambari-web/app/data/secure_mapping.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/data/secure_mapping.js?rev=1456293&r1=1456292&r2=1456293&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/data/secure_mapping.js (original)
+++ incubator/ambari/trunk/ambari-web/app/data/secure_mapping.js Thu Mar 14
00:33:10 2013
@@ -34,13 +34,11 @@ module.exports = [
{
"name": "hadoop.security.auth_to_local",
- "templateName": ["jobtracker_primary_name", "kerberos_domain",
"mapred_user", "tasktracker_primary_name","namenode_primary_name", "hdfs_user",
"datanode_primary_name", "hbase_master_primary_name", "hbase_user",
"regionserver_primary_name"],
+ "templateName": ["jobtracker_primary_name", "kerberos_domain",
"mapred_user", "tasktracker_primary_name", "namenode_primary_name",
"hdfs_user", "datanode_primary_name", "hbase_master_primary_name",
"hbase_user", "regionserver_primary_name"],
"foreignKey": null,
"value":
"RULE:[2:$1@$0](<templateName[0]>@.*<templateName[1]>)s/.*/<templateName[2]>/
RULE:[2:$1@$0](<templateName[3]>@.*<templateName[1]>)s/.*/<templateName[2]>/
RULE:[2:$1@$0](<templateName[4]>@.*<templateName[1]>)s/.*/<templateName[5]>/
RULE:[2:$1@$0](<templateName[6]>@.*<templateName[1]>)s/.*/<templateName[5]>/
RULE:[2:$1@$0](<templateName[7]>@.*<templateName[1]>)s/.*/<templateName[8]>/
RULE:[2:$1@$0](<templateName[9]>@.*<templateName[1]>)s/.*/<templateName[8]>/
DEFAULT",
"filename": "core-site.xml"
},
-
-
{
"name": "dfs.namenode.kerberos.principal",
"templateName": ["namenode_primary_name", "kerberos_domain"],
@@ -64,7 +62,7 @@ module.exports = [
},
{
"name": "dfs.secondary.namenode.keytab.file",
- "templateName": ["namenode_keytab"],
+ "templateName": ["snamenode_keytab"],
"foreignKey": null,
"value": "<templateName[0]>",
"filename": "hdfs-site.xml"
@@ -224,18 +222,96 @@ module.exports = [
"filename": "hive-site.xml"
},
{
+ "name": "oozie.service.AuthorizationService.security.enabled",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "true",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.service.HadoopAccessorService.kerberos.enabled",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "true",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "local.realm",
+ "templateName": ["kerberos_domain"],
+ "foreignKey": null,
+ "value": "<templateName[0]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.service.HadoopAccessorService.keytab.file",
+ "templateName": ["oozie_keytab"],
+ "foreignKey": null,
+ "value": "<templateName[0]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.service.HadoopAccessorService.kerberos.principal",
+ "templateName": ["oozie_primary_name", "kerberos_domain"],
+ "foreignKey": null,
+ "value": "<templateName[0]>@<templateName[1]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.authentication.type",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "kerberos",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.authentication.kerberos.principal",
+ "templateName": ["oozie_http_primary_name", "kerberos_domain"],
+ "foreignKey": null,
+ "value": "<templateName[0]>@<templateName[1]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.authentication.kerberos.keytab",
+ "templateName": ["oozie_http_keytab"],
+ "foreignKey": null,
+ "value": "<templateName[0]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.authentication.kerberos.name.rules",
+ "templateName": ["jobtracker_primary_name", "kerberos_domain",
"mapred_user", "tasktracker_primary_name", "namenode_primary_name",
"hdfs_user", "datanode_primary_name", "hbase_master_primary_name",
"hbase_user", "regionserver_primary_name"],
+ "foreignKey": null,
+ "value":
"RULE:[2:$1@$0](<templateName[0]>@.*<templateName[1]>)s/.*/<templateName[2]>/
RULE:[2:$1@$0](<templateName[3]>@.*<templateName[1]>)s/.*/<templateName[2]>/
RULE:[2:$1@$0](<templateName[4]>@.*<templateName[1]>)s/.*/<templateName[5]>/
RULE:[2:$1@$0](<templateName[6]>@.*<templateName[1]>)s/.*/<templateName[5]>/
RULE:[2:$1@$0](<templateName[7]>@.*<templateName[1]>)s/.*/<templateName[8]>/
RULE:[2:$1@$0](<templateName[9]>@.*<templateName[1]>)s/.*/<templateName[8]>/
DEFAULT",
+ "filename": "oozie-site.xml"
+ },
+ {
"name": "templeton.kerberos.principal",
"templateName": ["webhcat_http_primary_name", "kerberos_domain"],
"foreignKey": null,
"value": "<templateName[0]>@<templateName[1]>",
- "filename": "hive-site.xml"
+ "filename": "webhcat-site.xml"
},
{
"name": "templeton.kerberos.keytab",
"templateName": ["webhcat_http_keytab"],
"foreignKey": null,
"value": "<templateName[0]>",
- "filename": "hive-site.xml"
+ "filename": "webhcat-site.xml"
+ },
+ {
+ "name": "templeton.kerberos.secret",
+ "templateName": [""],
+ "foreignKey": null,
+ "value": "secret",
+ "filename": "webhcat-site.xml"
+ },
+ {
+ "name": "templeton.kerberos.properties",
+ "templateName": ["hive_user"],
+ "foreignKey": null,
+ "value": "hive.metastore.local=false,
hive.metastore.uris=thrift://MetastoreHost_FQDN:9083, hive.q" +
+ "metastore.sasl.enabled=true,hive.metastore.execute.setugi= true,
hive.exec.mode.local.auto=false,
hive.metastore.kerberos.principal=<templateName[0]>/[email protected]",
+ "filename": "webhcat-site.xml"
}
];
Modified: incubator/ambari/trunk/ambari-web/app/data/secure_properties.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/data/secure_properties.js?rev=1456293&r1=1456292&r2=1456293&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/data/secure_properties.js (original)
+++ incubator/ambari/trunk/ambari-web/app/data/secure_properties.js Thu Mar 14
00:33:10 2013
@@ -139,24 +139,26 @@ module.exports =
"serviceName": "HDFS",
"category": "General"
},
- {
- "id": "puppet var",
- "name": "snamenode_primary_name",
- "displayName": "primary name",
- "value": "",
- "defaultValue": "sn",
- "description": "Primary name for SecondaryNameNode",
- "displayType": "principal",
- "isVisible": true,
- "serviceName": "HDFS",
- "category": "SNameNode"
- },
+ /*
+ {
+ "id": "puppet var",
+ "name": "snamenode_primary_name",
+ "displayName": "primary name",
+ "value": "",
+ "defaultValue": "sn",
+ "description": "Primary name for SecondaryNameNode",
+ "displayType": "principal",
+ "isVisible": true,
+ "serviceName": "HDFS",
+ "category": "SNameNode"
+ },
+ */
{
"id": "puppet var",
"name": "snamenode_keytab",
"displayName": "Path to keytab file",
"value": "",
- "defaultValue": "/etc/security/keytabs/nn.service.keytab",
+ "defaultValue": "/etc/security/keytabs/sn.service.keytab",
"description": "path to SecondaryNameNode keytab file",
"displayType": "directory",
"isVisible": true,
@@ -305,7 +307,7 @@ module.exports =
"name": "hive_metastore__keytab",
"displayName": "Path to Keytab file",
"value": "",
- "defaultValue": "/etc/security/keytabs",
+ "defaultValue": "/etc/security/keytabs/hive.service.keytab",
"description": "keytab for Hive Metastore",
"displayType": "directory",
"isVisible": true,
@@ -317,6 +319,18 @@ module.exports =
//OOZIE
{
"id": "puppet var",
+ "name": "oozie_server_name",
+ "displayName": "Oozie server host",
+ "value": "",
+ "defaultValue": "",
+ "description": "Oozie server host",
+ "displayType": "masterHosts",
+ "isVisible": false,
+ "serviceName": "OOZIE",
+ "category": "Oozie Server"
+ },
+ {
+ "id": "puppet var",
"name": "oozie_primary_name",
"displayName": "primary name",
"value": "",
@@ -332,7 +346,7 @@ module.exports =
"name": "oozie_keytab",
"displayName": "Path to keytab file",
"value": "",
- "defaultValue": "/etc/security/keytabs",
+ "defaultValue": "/etc/security/keytabs/oozie.service.keytab",
"description": "Keytab for Oozie server",
"displayType": "directory",
"isVisible": true,
@@ -357,7 +371,7 @@ module.exports =
"name": "oozie_http_keytab",
"displayName": "Path to HTTP Keytab file",
"value": "",
- "defaultValue": "/etc/security/keytabs",
+ "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
"description": "Keytab for http Oozie server",
"displayType": "directory",
"isVisible": true,
@@ -385,7 +399,7 @@ module.exports =
"name": "webhcat_http_keytab",
"displayName": "Path to HTTP Keytab file",
"value": "",
- "defaultValue": "/etc/security/keytabs",
+ "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
"description": "Keytab for http webHCat",
"displayType": "directory",
"isVisible": true,
@@ -394,6 +408,7 @@ module.exports =
},
//HUE
+
//NAGIOS
{
"id": "puppet var",