You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by me...@apache.org on 2017/08/22 04:47:36 UTC
[1/2] ranger git commit: RANGER-1724: On Report listing page for
masking/row filter policies show only mask/row filter conditions
Repository: ranger
Updated Branches:
refs/heads/ranger-0.7 9beaebfeb -> e2f94d227
RANGER-1724: On Report listing page for masking/row filter policies show only mask/row filter conditions
Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/59052975
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/59052975
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/59052975
Branch: refs/heads/ranger-0.7
Commit: 590529752491fda89e1344b8d9d8bcdbbcb269b5
Parents: 9beaebf
Author: ni3galave <ni...@gmail.com>
Authored: Fri Aug 18 17:54:45 2017 +0530
Committer: Mehul Parikh <me...@apache.org>
Committed: Tue Aug 22 10:12:06 2017 +0530
----------------------------------------------------------------------
.../scripts/modules/globalize/message/en.js | 3 +-
.../scripts/views/common/CustomSubgrid.js | 8 +-
.../scripts/views/policies/PermissionList.js | 5 +-
.../views/policies/RangerPolicyTableLayout.js | 2 +-
.../views/reports/PlugableServiceDiffDetail.js | 12 +-
.../scripts/views/reports/UserAccessLayout.js | 152 +++++++++++++++----
security-admin/src/main/webapp/styles/xa.css | 10 ++
.../common/ServiceManagerLayout_tmpl.html | 3 +-
.../PlugableServicePolicyDeleteDiff_tmpl.html | 4 +-
.../reports/PlugableServicePolicyDiff_tmpl.html | 4 +-
10 files changed, 162 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
index 4bac746..422e952 100644
--- a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
+++ b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
@@ -242,7 +242,8 @@ define(function(require) {
selectAndAddGroup : 'Select and Add Group',
download : 'Download',
lastUpdate : 'Last Update',
- clusterName : 'Cluster Name'
+ clusterName : 'Cluster Name',
+ url : 'Hive url.'
},
btn : {
add : 'Add',
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/scripts/views/common/CustomSubgrid.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/common/CustomSubgrid.js b/security-admin/src/main/webapp/scripts/views/common/CustomSubgrid.js
index 0c7e52a..ad89a13 100644
--- a/security-admin/src/main/webapp/scripts/views/common/CustomSubgrid.js
+++ b/security-admin/src/main/webapp/scripts/views/common/CustomSubgrid.js
@@ -152,7 +152,9 @@ define(function(require){
var labelName = this.column.attributes.label;
$(this.el).html("");
if (this.state == "collasped"){
- $(this.el).parent().addClass("warning");
+// $(this.el).parent().addClass("warning");
+// Add warning class to sub grid table
+ $(this.el).addClass("warning");
this.state = "expanded";
this.subrow = new SubgridCustomRow({
columns: this.column.collection,
@@ -164,7 +166,9 @@ define(function(require){
$(this.el).parent("tr").after(this.subrow.render().$el);
} else {
if( $(this.el).parent().siblings('.warning').length <= 1 ){
- $(this.el).parent().removeClass("warning")
+// $(this.el).parent().removeClass("warning")
+// Remove warning class from sub grid table
+ $(this.el).removeClass("warning")
}
this.state = "collasped";
this.subrow.remove();
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
index 067bf3b..bb64984 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
@@ -485,7 +485,7 @@ define(function(require) {
});
this.$el.find('input[data-id="maskTypeCustom"]').on('change', function(e){
if(!_.isUndefined(that.model.get('dataMaskInfo'))){
- that.model.get('dataMaskInfo').valueExpr = e.currentTarget.value;
+ that.model.get('dataMaskInfo').valueExpr = _.escape(e.currentTarget.value);
}
}).trigger('change');
if(!this.accessPermSetForTagMasking){
@@ -707,6 +707,7 @@ define(function(require) {
$(this).siblings('[data-id="maskTypeCustom"]').css("display","");
}else{
$(this).siblings('[data-id="maskTypeCustom"]').css("display","none");
+ $(this).siblings('[data-id="maskTypeCustom"]').val(" ")
}
$(this).html("<span class='label label-info'>" + obj.text + "</span>");
@@ -723,7 +724,7 @@ define(function(require) {
});
this.$el.find('input[data-id="maskTypeCustom"]').on('change', function(e){
if(!_.isUndefined(that.model.get('dataMaskInfo'))){
- that.model.get('dataMaskInfo').valueExpr = e.currentTarget.value;
+ that.model.get('dataMaskInfo').valueExpr = _.escape(e.currentTarget.value);
}
}).trigger('change');
},
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
index eb88686..09e2e16 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
@@ -354,7 +354,7 @@ define(function(require){
table:localization.tt('lbl.tableName') , tag : localization.tt('h.tagsMsg'),
taxonomy:localization.tt('h.taxonomy') ,term: localization.tt('h.term') ,
topic:localization.tt('h.topic') ,topology:localization.tt('lbl.topologyName'),
- type:localization.tt('h.type') ,udf:localization.tt('h.udf') ,
+ type:localization.tt('h.type') ,udf:localization.tt('h.udf') , url:localization.tt('h.url')
};
var serverRsrcAttrName = _.map(resourceSearchOpt,function(opt){
return {
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/scripts/views/reports/PlugableServiceDiffDetail.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/reports/PlugableServiceDiffDetail.js b/security-admin/src/main/webapp/scripts/views/reports/PlugableServiceDiffDetail.js
index f24fe87..914f271 100644
--- a/security-admin/src/main/webapp/scripts/views/reports/PlugableServiceDiffDetail.js
+++ b/security-admin/src/main/webapp/scripts/views/reports/PlugableServiceDiffDetail.js
@@ -327,14 +327,20 @@ define(function(require){
if(itemType === 'Masked Policy Items') {
// its for new created record
for(var i = 0; i < newPolicyItems.length ; i++){
- if(newPolicyItems[i].DataMasklabel){
+ if(newPolicyItems[i].DataMasklabel && newPolicyItems[i].DataMasklabel == "Custom"){
var maskingType = newPolicyItems[i].dataMaskInfo.dataMaskType;
- newPolicyItems[i].dataMaskInfo.dataMaskType = newPolicyItems[i].DataMasklabel;
+ newPolicyItems[i].dataMaskInfo.dataMaskType = newPolicyItems[i].DataMasklabel +' : '+newPolicyItems[i].dataMaskInfo.valueExpr;
+ }else if(newPolicyItems[i].DataMasklabel){
+ var maskingType = newPolicyItems[i].dataMaskInfo.dataMaskType;
+ newPolicyItems[i].dataMaskInfo.dataMaskType = newPolicyItems[i].DataMasklabel;
}
}
for(var i = 0; i < oldPolicyItems.length ; i++){
- if(oldPolicyItems[i].DataMasklabel){
+ if(oldPolicyItems[i].DataMasklabel && oldPolicyItems[i].DataMasklabel == "Custom"){
+ var maskingType = oldPolicyItems[i].dataMaskInfo.dataMaskType;
+ oldPolicyItems[i].dataMaskInfo.dataMaskType = oldPolicyItems[i].DataMasklabel +' : '+oldPolicyItems[i].dataMaskInfo.valueExpr;
+ }else if(oldPolicyItems[i].DataMasklabel){
var maskingType = oldPolicyItems[i].dataMaskInfo.dataMaskType;
oldPolicyItems[i].dataMaskInfo.dataMaskType = oldPolicyItems[i].DataMasklabel;
}
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js b/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
index 197bc84..c5dc053 100644
--- a/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
@@ -141,10 +141,11 @@ define(function(require) {'use strict';
this.initializePlugins();
this.setupGroupAutoComplete();
this.renderComponentAndPolicyTypeSelect();
- //Show policies listing for each service and GET policies for each service
+ var policyType = this.ui.policyType.val();
+// Show policies listing for each service and GET policies for each service
_.each(this.policyCollList, function(obj,i){
this.renderTable(obj.collName, obj.serviceDefName);
- this.getResourceLists(obj.collName,obj.serviceDefName);
+ this.getResourceLists(obj.collName,obj.serviceDefName,policyType);
},this);
this.$el.find('[data-js="policyName"]').focus()
var urlString = XAUtil.getBaseUrl();
@@ -161,11 +162,15 @@ define(function(require) {'use strict';
{text :'Search By' , info :localization.tt('msg.searchBy')},
{text :'Resource' , info :localization.tt('msg.resourceMsg')}]
},
- getResourceLists: function(collName, serviceDefName){
+ getResourceLists: function(collName, serviceDefName , policyType){
var that = this, coll = this[collName];
that.allowDownload = false;
coll.queryParams.serviceType = serviceDefName;
+ if(policyType){
+// to set default value access type in policy type
+ coll.queryParams.policyType = policyType;
+ }
coll.fetch({
cache : false,
reset: true,
@@ -178,9 +183,13 @@ define(function(require) {'use strict';
_.each(that[collName].models,function(model,ind){
if (XAUtil.isMaskingPolicy(model.get('policyType'))) {
//'<name>Collection' must be same as subgrid custom column name
- model.attributes.allowCollection = model.get('dataMaskPolicyItems');
+ model.attributes.maskCollection = model.get('dataMaskPolicyItems');
+// Add service type in masking condition
+ _.each(model.attributes.dataMaskPolicyItems , function(m){
+ m.type = model.collection.queryParams.serviceType;
+ })
} else if (XAUtil.isRowFilterPolicy(model.get('policyType'))) {
- model.attributes.allowCollection = model.get('rowFilterPolicyItems');
+ model.attributes.rowlvlCollection = model.get('rowFilterPolicyItems');
} else {
model.attributes.allowCollection = model.get('policyItems');
}
@@ -215,16 +224,15 @@ define(function(require) {'use strict';
label: 'Groups',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function (rawValue,model, coll) {
- var startSpanEle = '<span class="label label-info cellWidth-1 float-left-margin-2" style="">',endSpanEle = '</span>';
var group_str = '';
if(_.isEmpty(model.get('groups'))){
return '<center>--</center>';
} else {
_.each(model.get('groups'),function(group,index){
if(index < 4) {
- group_str += '<span class="label label-info cellWidth-1 float-left-margin-2" group-policy-id="'+model.cid+'" style="">' + _.escape(group) + endSpanEle + " ";
+ group_str += '<span class="label label-info cellWidth-1 float-left-margin-2" group-policy-id="'+model.cid+'" style="">' + _.escape(group) + '</span>' + " ";
} else {
- group_str += '<span class="label label-info cellWidth-1 float-left-margin-2" group-policy-id="'+model.cid+'" style="display:none">' + _.escape(group) + endSpanEle + " ";
+ group_str += '<span class="label label-info cellWidth-1 float-left-margin-2" group-policy-id="'+model.cid+'" style="display:none">' + _.escape(group) + '</span>' + " ";
}
});
if(model.get('groups').length > 4) {
@@ -247,16 +255,15 @@ define(function(require) {'use strict';
label: 'Users',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function (rawValue,model) {
- var startSpanEle = '<span class="label label-info cellWidth-1 float-left-margin-2" style="">',endSpanEle = '</span>';
var user_str = '';
if(_.isEmpty(model.get('users'))){
return '<center>--</center>';
} else {
_.each(model.get('users'),function(user,index){
if(index < 4) {
- user_str += '<span class="label label-info cellWidth-1 float-left-margin-2" user-policy-id="'+model.cid+'" style="">' + _.escape(user) + endSpanEle + " ";
+ user_str += '<span class="label label-info cellWidth-1 float-left-margin-2" user-policy-id="'+model.cid+'" style="">' + _.escape(user) + '</span>'+ " ";
} else {
- user_str += '<span class="label label-info cellWidth-1 float-left-margin-2" user-policy-id="'+model.cid+'" style="display:none">' + _.escape(user) + endSpanEle + " ";
+ user_str += '<span class="label label-info cellWidth-1 float-left-margin-2" user-policy-id="'+model.cid+'" style="display:none">' + _.escape(user) + '</span>'+ " ";
}
});
if(model.get('users').length > 4) {
@@ -278,13 +285,12 @@ define(function(require) {'use strict';
label: 'Accesses',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function (rawValue,model) {
- var startSpanEle = '<span class="label label-info cellWidth-1 float-left-margin-2" style="">',endSpanEle = '</span>';
var access_str = '';
_.each(model.get('accesses'),function(access,index){
if(index < 4){
- access_str += '<span class="label label-info cellWidth-1 float-left-margin-2" access-policy-id="'+model.cid+'" style="">' + access.type+ endSpanEle + " ";
+ access_str += '<span class="label label-info cellWidth-1 float-left-margin-2" access-policy-id="'+model.cid+'" style="">' + access.type+'</span>' + " ";
} else {
- access_str += '<span class="label label-info cellWidth-1 float-left-margin-2" access-policy-id="'+model.cid+'" style="display:none">' + access.type+ endSpanEle + " ";
+ access_str += '<span class="label label-info cellWidth-1 float-left-margin-2" access-policy-id="'+model.cid+'" style="display:none">' + access.type+'</span>'+ " ";
}
});
if(model.get('accesses').length > 4) {
@@ -301,6 +307,66 @@ define(function(require) {'use strict';
sortable: false
}
];
+ if(XAUtil.isMaskingPolicy(this.ui.policyType.val())){
+ subcolumns.push({
+ name: 'maskingCondition',
+ cell: 'html',
+ cell: Backgrid.HtmlCell.extend({
+ className : 'subgridTable'
+ }),
+ label: 'Masking Condition',
+ formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+ fromRaw: function (rawValue,model) {
+ var access_str = '';
+ var servicedef = _.find(that.serviceDefList.models ,function(m){
+ return m.get('name') == model.get('type');
+ });
+ var maskValue = _.find(servicedef.get('dataMaskDef').maskTypes,function(m){
+ return m.name == model.get('dataMaskInfo').dataMaskType
+ })
+ if(maskValue.label){
+ if(maskValue.label == "Custom"){
+ var title = model.attributes.dataMaskInfo.dataMaskType +' : '+model.attributes.dataMaskInfo.valueExpr;
+ access_str = '<span class="label label-info trim-containt" title="'+_.escape(title)+'">'+_.escape(title)+'</span>';
+ }else{
+ access_str = '<span class="label label-info trim-containt" title="'+_.escape(maskValue.label)+'">'+_.escape(maskValue.label)+'</span>';
+ }
+ }else {
+ access_str ='<center>--</center>';
+ }
+ return access_str;
+ }
+ }),
+ editable: false,
+ click: false,
+ sortable: false
+
+ })
+ };
+ if(XAUtil.isRowFilterPolicy(this.ui.policyType.val())){
+ subcolumns.push({
+ name: 'rowLevelFilter',
+ cell: 'html',
+ cell: Backgrid.HtmlCell.extend({
+ className : 'subgridTable'
+ }),
+ label: 'Row Level Filter',
+ formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+ fromRaw: function (rawValue,model) {
+ var access_str = '';
+ if(model.get('rowFilterInfo').filterExpr){
+ access_str = '<span class="label label-info trim-containt" title="'+_.escape(model.get('rowFilterInfo').filterExpr)+'">' + _.escape(model.get('rowFilterInfo').filterExpr)+ '</span>' + " ";
+ } else {
+ access_str ='<center>--</center>';
+ }
+ return access_str;
+ }
+ }),
+ editable: false,
+ click: false,
+ sortable: false
+ })
+ }
var columns = {
id : {
cell : "uri",
@@ -401,18 +467,43 @@ define(function(require) {'use strict';
if(serviceDefName === XAEnums.ServiceType.SERVICE_TAG.label){
enableDenyAndExceptionsInPolicies = true;
}
+ if(XAUtil.isAccessPolicy(this.ui.policyType.val())){
+ permissions = {
+ allow:{
+ label: 'Allow Conditions',
+ cell: "subgrid-custom",
+ optionValues : subcolumns,
+ editable: false,
+ sortable: false,
+ click : false
+ }
+ };
+ }else if(XAUtil.isMaskingPolicy(this.ui.policyType.val())){
+ permissions = {
+ mask:{
+ label: 'Masking Conditions',
+ cell: "subgrid-custom",
+ optionValues : subcolumns,
+ editable: false,
+ sortable: false,
+ click : false
+ }
+ };
+ }else if(XAUtil.isRowFilterPolicy(this.ui.policyType.val())){
+ permissions = {
+ rowlvl:{
+ label: 'Row Level Conditions',
+ cell: "subgrid-custom",
+ optionValues : subcolumns,
+ editable: false,
+ sortable: false,
+ click : false
+ }
+ };
+ }
- permissions = {
- allow:{
- label: 'Allow Conditions',
- cell: "subgrid-custom",
- optionValues : subcolumns,
- editable: false,
- sortable: false,
- click : false
- }
- };
- if(enableDenyAndExceptionsInPolicies) {
+
+ if(enableDenyAndExceptionsInPolicies && that.ui.policyType.val() == 0) {
cols = {
allowExclude:{
label: 'Allow Exclude',
@@ -460,11 +551,11 @@ define(function(require) {'use strict';
data: options
});
this.ui.policyType.select2({
- closeOnSelect: true,
- placeholder: 'Select policy type',
+ closeOnSelect: false,
maximumSelectionSize : 1,
width: '220px',
- allowClear: true,
+ value : this.ui.policyType.val("0"),
+ allowClear: false,
data: policyTypes
});
@@ -666,7 +757,10 @@ define(function(require) {'use strict';
var rxName = this.ui.resourceName.val(), policyName = this.ui.policyName.val() , policyType = this.ui.policyType.val();
var params = {group : groups, user : users, polResource : rxName, policyNamePartial : policyName, policyType: policyType};
var component = (this.ui.componentType.val() != "") ? this.ui.componentType.select2('val'):undefined;
-
+ that.initializeRequiredData();
+ _.each(this.policyCollList, function(obj,i){
+ this.renderTable(obj.collName, obj.serviceDefName);
+ },this);
var compFlag = false;
if(!_.isUndefined(component)) {
compFlag = true;
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/styles/xa.css
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/styles/xa.css b/security-admin/src/main/webapp/styles/xa.css
index 4fb9057..a0e0bf2 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -1708,6 +1708,7 @@ background-color: #444444;
}
.alert {
border:none;
+ word-break: break-all;
}
tr.disable-policy td {
background-color: #F0F0F0;
@@ -2211,3 +2212,12 @@ td.subgrid-custom-cell{
margin-left: 388px;
margin-top: -27px;
}
+.subgridTable{
+ width : 25% !important;
+}
+.trim-containt{
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: 95%;
+}
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html b/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html
index 44f96ef..fec2535 100644
--- a/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html
+++ b/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html
@@ -35,7 +35,8 @@
<tr>
<th>
<span class="policy-title">
- <img alt="HDFS" src="images/folder-grey.png">
+ <!-- Remove alt attribut from img tag -->
+ <img src="images/folder-grey.png">
{{./this.attributes.name}}
{{#if ../operation}}
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
index 93404f0..97ad345 100644
--- a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
+++ b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
@@ -116,7 +116,9 @@
{{#if this.dataMaskInfo}}
<li class="change-row">
Data Mask Types:
- {{this.dataMaskInfo.dataMaskType}}
+ <i>
+ {{this.dataMaskInfo.dataMaskType}}
+ </i>
</li>
{{/if}}
</ol><br/>
http://git-wip-us.apache.org/repos/asf/ranger/blob/59052975/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
index acf6d86..75c1f64 100644
--- a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
+++ b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
@@ -243,7 +243,9 @@
{{#if this.dataMaskInfo}}
<li class="change-row">
Data Mask Types:
- {{this.dataMaskInfo.dataMaskType}}
+ <i>
+ {{this.dataMaskInfo.dataMaskType}}
+ </i>
</li>
{{/if}}
</ol><br/>
[2/2] ranger git commit: RANGER-1676: Policy Details popup from
Access audit page not displaying details of masking policy.
Posted by me...@apache.org.
RANGER-1676: Policy Details popup from Access audit page not displaying details of masking policy.
Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/e2f94d22
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/e2f94d22
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/e2f94d22
Branch: refs/heads/ranger-0.7
Commit: e2f94d22722427a0984bf4037f59adcf63746577
Parents: 5905297
Author: Nitin Galave <ni...@gmail.com>
Authored: Mon Aug 21 15:19:27 2017 +0530
Committer: Mehul Parikh <me...@apache.org>
Committed: Tue Aug 22 10:16:44 2017 +0530
----------------------------------------------------------------------
.../ranger/plugin/model/RangerPolicy.java | 10 +++
.../ranger/service/RangerDataHistService.java | 10 +++
.../scripts/modules/globalize/message/en.js | 2 -
.../scripts/views/policies/RangerPolicyRO.js | 53 +++++++++++++--
.../webapp/scripts/views/reports/AuditLayout.js | 25 +++----
.../templates/policies/RangerPolicyRO_tmpl.html | 68 ++++++++++++++++----
6 files changed, 136 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ranger/blob/e2f94d22/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
index 140a59d..b44c7db 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
@@ -70,6 +70,7 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
private List<RangerPolicyItem> denyExceptions = null;
private List<RangerDataMaskPolicyItem> dataMaskPolicyItems = null;
private List<RangerRowFilterPolicyItem> rowFilterPolicyItems = null;
+ private String serviceType = null;
/**
@@ -211,6 +212,14 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
this.isAuditEnabled = isAuditEnabled == null ? Boolean.TRUE : isAuditEnabled;
}
+ public String getServiceType() {
+ return serviceType;
+ }
+
+ public void setServiceType(String serviceType) {
+ this.serviceType = serviceType;
+ }
+
/**
* @return the resources
*/
@@ -415,6 +424,7 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
sb.append("description={").append(description).append("} ");
sb.append("resourceSignature={").append(resourceSignature).append("} ");
sb.append("isAuditEnabled={").append(isAuditEnabled).append("} ");
+ sb.append("serviceType={").append(serviceType).append("} ");
sb.append("resources={");
if(resources != null) {
http://git-wip-us.apache.org/repos/asf/ranger/blob/e2f94d22/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java
index e94bad4..a96d648 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java
@@ -26,6 +26,8 @@ import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.entity.XXDataHist;
+import org.apache.ranger.entity.XXService;
+import org.apache.ranger.entity.XXServiceDef;
import org.apache.ranger.plugin.model.RangerBaseModelObject;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerService;
@@ -92,6 +94,14 @@ public class RangerDataHistService {
RangerPolicy policy = (RangerPolicy) baseModelObj;
objectName = policy.getName();
classType = AppConstants.CLASS_TYPE_RANGER_POLICY;
+ XXService xXService = daoMgr.getXXService().findByName(policy.getService());
+ XXServiceDef xxServiceDef = null;
+ if(xXService != null){
+ xxServiceDef = daoMgr.getXXServiceDef().getById(xXService.getType());
+ }
+ if(xxServiceDef != null){
+ policy.setServiceType(xxServiceDef.getName());
+ }
content = writeObjectAsString(policy);
}
http://git-wip-us.apache.org/repos/asf/ranger/blob/e2f94d22/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
index 422e952..3338633 100644
--- a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
+++ b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
@@ -208,8 +208,6 @@ define(function(require) {
selectTopologyName : 'Select Topology Name',
selectServiceName : 'Select Service Name',
topologyName : 'Topology Name',
- serivceName : 'Service Name',
- serivceType : 'Service Type',
ipAddress : 'IP Address',
isVisible : 'Visible',
delegatedAdmin : 'Delegate Admin',
http://git-wip-us.apache.org/repos/asf/ranger/blob/e2f94d22/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyRO.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyRO.js b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyRO.js
index 0d8e3df..b084473 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyRO.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyRO.js
@@ -35,8 +35,17 @@ define(function(require) {
template: RangerPolicyROTmpl,
templateHelpers: function() {
+ var isDelegatAdminChk;
+ if(this.policyDetails.serviceType !== XAEnums.ServiceType.SERVICE_TAG.label
+ && !XAUtils.isMaskingPolicy(this.policy.get('policyType'))
+ && !XAUtils.isRowFilterPolicy(this.policy.get('policyType'))) {
+ isDelegatAdminChk = true;
+ } else {
+ isDelegatAdminChk = false;
+ }
return {
PolicyDetails: this.policyDetails,
+ isDelegatAdmin: isDelegatAdminChk
};
},
breadCrumbs: [],
@@ -79,6 +88,12 @@ define(function(require) {
},
initializePolicyDetailsObj : function(){
+ // In this.policy service type is undefined then we take repotype.
+ if(_.isUndefined(this.policy.get('serviceType'))){
+ this.serviceDef = this.serviceDefList.findWhere({'id' : this.repoType})
+ }else{
+ this.serviceDef = this.serviceDefList.findWhere({'name':this.policy.get('serviceType')});
+ }
var self = this;
var details = this.policyDetails = {};
details.id = this.policy.get('id');
@@ -109,6 +124,18 @@ define(function(require) {
perm.allowException = this.policy.get('allowExceptions');
perm.denyPolicyItems = this.policy.get('denyPolicyItems');
perm.denyExceptions = this.policy.get('denyExceptions');
+ if(this.policy.get('dataMaskPolicyItems')){
+ _.each(this.policy.get('dataMaskPolicyItems'), function(mask){
+ var maskingInfo = _.find(self.serviceDef.get("dataMaskDef").maskTypes, function(m){
+ return m.name == mask.dataMaskInfo.dataMaskType;
+ });
+ if(maskingInfo){
+ _.extend(mask.dataMaskInfo , _.pick(maskingInfo, 'label'));
+ }
+ })
+ perm.maskingPolicy = this.policy.get('dataMaskPolicyItems');
+ }
+ perm.rowLevelPolicy = this.policy.get('rowFilterPolicyItems');
details.createdBy = this.policy.get('createdBy');
details.createTime = Globalize.format(new Date(this.policy.get('createTime')), "MM/dd/yyyy hh:mm tt");
details.updatedBy = this.policy.get('updatedBy');
@@ -124,7 +151,9 @@ define(function(require) {
var items = [{'itemName': 'policyItems',title : 'Allow Condition'},
{'itemName': 'allowExceptions',title : 'Exclude from Allow Conditions'},
{'itemName': 'denyPolicyItems',title : 'Deny Condition'},
- {'itemName': 'denyExceptions',title : 'Exclude from Deny Conditions'},]
+ {'itemName': 'denyExceptions',title : 'Exclude from Deny Conditions'},
+ {'itemName': 'dataMaskPolicyItems',title : 'Masking Conditions'},
+ {'itemName': 'rowFilterPolicyItems',title : 'Row Level Conditions'}]
_.each(items, function(item){
if(!_.isUndefined(this.policy.get(item.itemName)) && !_.isEmpty(this.policy.get(item.itemName))){
this.policyDetails['policyItemsCond'].push({ title : item.title, headers : headers.header, policyItems : this.policy.get(item.itemName)})
@@ -145,9 +174,23 @@ define(function(require) {
getPermHeaders : function(){
var permList = [],
- policyCondition = false;
- permList.unshift(localization.tt('lbl.delegatedAdmin'));
- permList.unshift(localization.tt('lbl.permissions'));
+ policyCondition = false;
+ if(this.policyDetails.serviceType !== XAEnums.ServiceType.SERVICE_TAG.label
+ && !XAUtils.isMaskingPolicy(this.policy.get('policyType'))
+ && !XAUtils.isRowFilterPolicy(this.policy.get('policyType'))){
+ permList.unshift(localization.tt('lbl.delegatedAdmin'));
+ }
+ if(XAUtils.isRowFilterPolicy(this.policy.get('policyType'))){
+ permList.unshift(localization.tt('lbl.rowLevelFilter'));
+ }
+ if(XAUtils.isMaskingPolicy(this.policy.get('policyType'))){
+ permList.unshift(localization.tt('lbl.selectMaskingOption'));
+ }
+ if(XAUtils.isRowFilterPolicy(this.policy.get('policyType')) || XAUtils.isMaskingPolicy(this.policy.get('policyType'))){
+ permList.unshift(localization.tt('lbl.accessTypes'));
+ }else{
+ permList.unshift(localization.tt('lbl.permissions'));
+ }
if(!_.isEmpty(this.serviceDef.get('policyConditions'))){
permList.unshift(localization.tt('h.policyCondition'));
policyCondition = true;
@@ -177,6 +220,8 @@ define(function(require) {
},
getPolicyByVersion : function(ver, e){
+ //to support old policy log after updating that policy.
+ this.policy.set('serviceType',undefined);
this.policy.fetchByVersion(ver, {
cache : false,
async : false
http://git-wip-us.apache.org/repos/asf/ranger/blob/e2f94d22/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js b/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
index 68be81e..f2c8448 100644
--- a/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
@@ -845,19 +845,18 @@ define(function(require) {
Backgrid.Row.prototype.initialize.apply(this, args);
},
onClick: function (e) {
- var self = this;
- if($(e.target).hasClass('tagsColumn') || $(e.target).closest('td').hasClass("tagsColumn")){
- return;
- }
+ var self = this ;
+ if($(e.target).hasClass('tagsColumn') || $(e.target).closest('td').hasClass("tagsColumn")){
+ return;
+ }
+ if(this.model.get('repoType')){
+ var repoType = this.model.get('repoType');
+ }
var policyId = this.model.get('policyId');
if(policyId == -1){
return;
}
- var serviceDef = that.serviceDefList.findWhere({'id':this.model.get('repoType')});
- if(_.isUndefined(serviceDef)){
- return ;
- }
- var eventTime = this.model.get('eventTime');
+ var eventTime = this.model.get('eventTime');
var policy = new RangerPolicy({
id: policyId
@@ -866,17 +865,19 @@ define(function(require) {
var view = new RangerPolicyRO({
policy: policy,
policyVersionList : policyVersionList,
- serviceDef: serviceDef,
- eventTime : eventTime
+ serviceDefList: that.serviceDefList,
+ eventTime : eventTime,
+ repoType : repoType
});
var modal = new Backbone.BootstrapModal({
animate : true,
content : view,
title: localization.tt("h.policyDetails"),
okText :localization.tt("lbl.ok"),
- allowCancel : false,
+ allowCancel : true,
escape : true
}).open();
+ modal.$el.find('.cancel').hide();
var policyVerEl = modal.$el.find('.modal-footer').prepend('<div class="policyVer pull-left"></div>').find('.policyVer');
policyVerEl.append('<i id="preVer" class="icon-chevron-left '+ ((policy.get('version')>1) ? 'active' : '') +'"></i><text>Version '+ policy.get('version') +'</text>').find('#preVer').click(function(e){
view.previousVer(e);
http://git-wip-us.apache.org/repos/asf/ranger/blob/e2f94d22/security-admin/src/main/webapp/templates/policies/RangerPolicyRO_tmpl.html
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/templates/policies/RangerPolicyRO_tmpl.html b/security-admin/src/main/webapp/templates/policies/RangerPolicyRO_tmpl.html
index 6ff5329..f298fd0 100644
--- a/security-admin/src/main/webapp/templates/policies/RangerPolicyRO_tmpl.html
+++ b/security-admin/src/main/webapp/templates/policies/RangerPolicyRO_tmpl.html
@@ -17,12 +17,12 @@
<div class="serviceInfo row-fluid">
<div class="pull-left">
<p>
- <strong>{{tt 'lbl.serivceName'}} :</strong> {{PolicyDetails.service}}
+ <strong>{{tt 'lbl.serviceName'}} :</strong> {{PolicyDetails.service}}
</p>
</div>
<div class="pull-right">
<p>
- <strong>{{tt 'lbl.serivceType'}} :</strong> {{PolicyDetails.serviceType}}
+ <strong>{{tt 'lbl.serviceType'}} :</strong> {{PolicyDetails.serviceType}}
</p>
</div>
</div>
@@ -66,9 +66,15 @@
<td>
{{tt 'lbl.description'}}
</td>
- <td>
- {{PolicyDetails.description}}
- </td>
+ {{#ifCond PolicyDetails.description '==' ""}}
+ <td>
+ --
+ </td>
+ {{else}}
+ <td>
+ {{PolicyDetails.description}}
+ </td>
+ {{/ifCond}}
</tr>
{{#if PolicyDetails.isRecursive}}
<tr>
@@ -106,12 +112,24 @@
<tbody>
{{#each this.policyItems}}
<tr>
- <td>{{#each this.groups}}
- <span class="label label-info">{{this}}</span>
- {{/each}}</td>
- <td>{{#each this.users}}
- <span class="label label-info">{{this}}</span>
- {{/each}}</td>
+ <td>
+ {{#if this.groups}}
+ {{#each this.groups}}
+ <span class="label label-info">{{this}}</span>
+ {{/each}}
+ {{else}}
+ --
+ {{/if}}
+ </td>
+ <td>
+ {{#if this.users}}
+ {{#each this.users}}
+ <span class="label label-info">{{this}}</span>
+ {{/each}}
+ {{else}}
+ --
+ {{/if}}
+ </td>
{{#if ../../PolicyDetails.policyCondition}}
<td>
{{#if this.conditions}}
@@ -131,9 +149,31 @@
<td>{{#each this.accesses}}
<span class="label label-info">{{#if this.isAllowed}}{{this.type}}{{/if}}</span>
{{/each}}</td>
- <td>
- <input type="checkbox" {{#if this.delegateAdmin}}checked{{/if}} disabled="disabled">
- </td>
+ {{#if this.dataMaskInfo}}
+ {{#ifCond this.dataMaskInfo.dataMaskType '==' "CUSTOM"}}
+ <td>
+ <span class="label label-info ">{{this.dataMaskInfo.label}} : {{this.dataMaskInfo.valueExpr}} </span>
+ </td>
+ {{else}}
+ <td>
+ <span class="label label-info">{{this.dataMaskInfo.label}}</span>
+ </td>
+ {{/ifCond}}
+ {{/if}}
+ {{#if this.rowFilterInfo}}
+ <td>
+ {{#if this.rowFilterInfo.filterExpr}}
+ <span class="label label-info">{{this.rowFilterInfo.filterExpr}}</span>
+ {{else}}
+ --
+ {{/if}}
+ </td>
+ {{/if}}
+ {{#if ../../isDelegatAdmin}}
+ <td>
+ <input type="checkbox" {{#if this.delegateAdmin}}checked{{/if}} disabled="disabled">
+ </td>
+ {{/if}}
</tr>
{{/each}}
</tbody>