This is an automated email from the ASF dual-hosted git repository.

mehul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 8fe1ce8  RANGER-2571 : Need to add Knox proxy configuration support in 
Ranger plugins
8fe1ce8 is described below

commit 8fe1ce872ab13c4543f6eb70cfe01bcdc36ff8f3
Author: Dhaval B.Shah <[email protected]>
AuthorDate: Thu Sep 19 20:28:23 2019 +0530

    RANGER-2571 : Need to add Knox proxy configuration support in Ranger plugins
    
    Signed-off-by: Mehul Parikh <[email protected]>
---
 .../ranger/plugin/util/GrantRevokeRequest.java      | 21 +++++++++++++++++++++
 .../hbase/RangerAuthorizationCoprocessor.java       |  7 ++++++-
 .../authorization/hadoop/RangerHdfsAuthorizer.java  |  2 ++
 .../yarn/authorizer/RangerYarnAuthorizer.java       |  9 ++++++---
 4 files changed, 35 insertions(+), 4 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/GrantRevokeRequest.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/GrantRevokeRequest.java
index 870ec96..63f0f25 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/GrantRevokeRequest.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/GrantRevokeRequest.java
@@ -20,8 +20,10 @@
 package org.apache.ranger.plugin.util;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -50,6 +52,8 @@ public class GrantRevokeRequest implements Serializable {
        private Set<String>         groups;
        private Set<String>         roles;
        private Set<String>         accessTypes;
+       private List<String>        forwardedAddresses;
+       private String              remoteIPAddress;
        private Boolean             delegateAdmin              = Boolean.FALSE;
        private Boolean             enableAudit                = Boolean.TRUE;
        private Boolean             replaceExistingPermissions = Boolean.FALSE;
@@ -137,6 +141,15 @@ public class GrantRevokeRequest implements Serializable {
        public Map<String, String> getResource() {
                return resource;
        }
+       
+       public void setForwardedAddresses(List<String> forwardedAddresses) {
+               this.forwardedAddresses = (forwardedAddresses == null) ? new 
ArrayList<String>() : forwardedAddresses;
+       }
+
+       public void setRemoteIPAddress(String remoteIPAddress) {
+               this.remoteIPAddress = remoteIPAddress;
+       }
+
 
        /**
         * @param resource the resource to set
@@ -334,6 +347,14 @@ public class GrantRevokeRequest implements Serializable {
        public String getClusterName() {
                return clusterName;
        }
+       
+       public String getRemoteIPAddress() {
+               return remoteIPAddress;
+       }
+
+       public List<String> getForwardedAddresses() { 
+               return forwardedAddresses; 
+       }
 
        /**
         * @param clusterName the clusterName to set
diff --git 
a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
 
b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
index 5729eb2..364a415 100644
--- 
a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
+++ 
b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
@@ -1495,6 +1495,8 @@ public class RangerAuthorizationCoprocessor implements 
AccessControlService.Inte
                ret.setReplaceExistingPermissions(Boolean.TRUE);
                ret.setResource(mapResource);
                ret.setClientIPAddress(getRemoteAddress());
+               ret.setForwardedAddresses(null);//TODO: Need to check with Knox 
proxy how they handle forwarded add.
+               ret.setRemoteIPAddress(getRemoteAddress());
 
                if(userName.startsWith(GROUP_PREFIX)) {
                        
ret.getGroups().add(userName.substring(GROUP_PREFIX.length()));
@@ -1600,7 +1602,10 @@ public class RangerAuthorizationCoprocessor implements 
AccessControlService.Inte
                ret.setReplaceExistingPermissions(Boolean.TRUE);
                ret.setResource(mapResource);
                ret.setClientIPAddress(getRemoteAddress());
-
+               ret.setForwardedAddresses(null);//TODO: Need to check with Knox 
proxy how they handle forwarded add.
+               ret.setRemoteIPAddress(getRemoteAddress());
+               
+               
                if(userName.startsWith(GROUP_PREFIX)) {
                        
ret.getGroups().add(userName.substring(GROUP_PREFIX.length()));
                } else {
diff --git 
a/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
 
b/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
index 7b2882c..52df2db 100644
--- 
a/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
+++ 
b/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
@@ -826,6 +826,8 @@ class RangerHdfsAccessRequest extends 
RangerAccessRequestImpl {
                super.setAccessTime(new Date());
                super.setClientIPAddress(getRemoteIp());
                super.setAction(access.toString());
+               super.setForwardedAddresses(null);
+               super.setRemoteIPAddress(getRemoteIp());
 
                if (inode != null) {
                        buildRequestContext(inode);
diff --git 
a/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
 
b/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
index b49fb8a..eb473c4 100644
--- 
a/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
+++ 
b/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
@@ -98,7 +98,8 @@ public class RangerYarnAuthorizer extends 
YarnAuthorizationProvider {
                AccessType accessType = accessRequest.getAccessType();
            PrivilegedEntity entity = accessRequest.getEntity();
                UserGroupInformation ugi = accessRequest.getUser();
-
+               List<String> forwardedAddresses = 
accessRequest.getForwardedAddresses();
+               String remoteIpAddress = accessRequest.getRemoteAddress();
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> RangerYarnAuthorizer.checkPermission(" + 
accessType + ", " + toString(entity) + ", " + ugi + ")");
                }
@@ -117,7 +118,7 @@ public class RangerYarnAuthorizer extends 
YarnAuthorizationProvider {
                                perf = 
RangerPerfTracer.getPerfTracer(PERF_YARNAUTH_REQUEST_LOG, 
"RangerYarnAuthorizer.checkPermission(entity=" + entity + ")");
                        }
 
-                       RangerYarnAccessRequest request = new 
RangerYarnAccessRequest(entity, getRangerAccessType(accessType), 
accessType.name(), ugi);
+                       RangerYarnAccessRequest request = new 
RangerYarnAccessRequest(entity, getRangerAccessType(accessType), 
accessType.name(), ugi, forwardedAddresses, remoteIpAddress);
 
                        auditHandler = new RangerYarnAuditHandler();
 
@@ -300,7 +301,7 @@ class RangerYarnResource extends RangerAccessResourceImpl {
 }
 
 class RangerYarnAccessRequest extends RangerAccessRequestImpl {
-       public RangerYarnAccessRequest(PrivilegedEntity entity, String 
accessType, String action, UserGroupInformation ugi) {
+       public RangerYarnAccessRequest(PrivilegedEntity entity, String 
accessType, String action, UserGroupInformation ugi, List<String> 
forwardedAddresses, String remoteIpAddress) {
                super.setResource(new RangerYarnResource(entity));
                super.setAccessType(accessType);
                super.setUser(ugi.getShortUserName());
@@ -308,6 +309,8 @@ class RangerYarnAccessRequest extends 
RangerAccessRequestImpl {
                super.setAccessTime(new Date());
                super.setClientIPAddress(getRemoteIp());
                super.setAction(action);
+               super.setRemoteIPAddress(remoteIpAddress);
+               super.setForwardedAddresses(forwardedAddresses);
        }
        
        private static String getRemoteIp() {

Reply via email to