HADOOP-10817. ProxyUsers configuration should support configurable prefixes. (tucu)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1611780 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7c18f8d55b
commit
64ed72a047
@ -432,6 +432,9 @@ Release 2.6.0 - UNRELEASED
|
|||||||
HADOOP-10610. Upgrade S3n s3.fs.buffer.dir to support multi directories.
|
HADOOP-10610. Upgrade S3n s3.fs.buffer.dir to support multi directories.
|
||||||
(Ted Malaska via atm)
|
(Ted Malaska via atm)
|
||||||
|
|
||||||
|
HADOOP-10817. ProxyUsers configuration should support configurable
|
||||||
|
prefixes. (tucu)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
@ -24,37 +24,64 @@
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
|
import org.apache.hadoop.classification.InterfaceStability;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.security.UserGroupInformation;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
import org.apache.hadoop.util.MachineList;
|
import org.apache.hadoop.util.MachineList;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
|
||||||
|
@InterfaceStability.Unstable
|
||||||
|
@InterfaceAudience.Public
|
||||||
public class DefaultImpersonationProvider implements ImpersonationProvider {
|
public class DefaultImpersonationProvider implements ImpersonationProvider {
|
||||||
private static final String CONF_HOSTS = ".hosts";
|
private static final String CONF_HOSTS = ".hosts";
|
||||||
private static final String CONF_USERS = ".users";
|
private static final String CONF_USERS = ".users";
|
||||||
private static final String CONF_GROUPS = ".groups";
|
private static final String CONF_GROUPS = ".groups";
|
||||||
private static final String CONF_HADOOP_PROXYUSER = "hadoop.proxyuser.";
|
|
||||||
private static final String CONF_HADOOP_PROXYUSER_RE = "hadoop\\.proxyuser\\.";
|
|
||||||
private static final String CONF_HADOOP_PROXYUSER_RE_USERS_GROUPS =
|
|
||||||
CONF_HADOOP_PROXYUSER_RE+"[^.]*(" + Pattern.quote(CONF_USERS) +
|
|
||||||
"|" + Pattern.quote(CONF_GROUPS) + ")";
|
|
||||||
private static final String CONF_HADOOP_PROXYUSER_RE_HOSTS =
|
|
||||||
CONF_HADOOP_PROXYUSER_RE+"[^.]*"+ Pattern.quote(CONF_HOSTS);
|
|
||||||
// acl and list of hosts per proxyuser
|
// acl and list of hosts per proxyuser
|
||||||
private Map<String, AccessControlList> proxyUserAcl =
|
private Map<String, AccessControlList> proxyUserAcl =
|
||||||
new HashMap<String, AccessControlList>();
|
new HashMap<String, AccessControlList>();
|
||||||
private static Map<String, MachineList> proxyHosts =
|
private Map<String, MachineList> proxyHosts =
|
||||||
new HashMap<String, MachineList>();
|
new HashMap<String, MachineList>();
|
||||||
private Configuration conf;
|
private Configuration conf;
|
||||||
|
|
||||||
|
|
||||||
|
private static DefaultImpersonationProvider testProvider;
|
||||||
|
|
||||||
|
public static synchronized DefaultImpersonationProvider getTestProvider() {
|
||||||
|
if (testProvider == null) {
|
||||||
|
testProvider = new DefaultImpersonationProvider();
|
||||||
|
testProvider.setConf(new Configuration());
|
||||||
|
testProvider.init(ProxyUsers.CONF_HADOOP_PROXYUSER);
|
||||||
|
}
|
||||||
|
return testProvider;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setConf(Configuration conf) {
|
public void setConf(Configuration conf) {
|
||||||
this.conf = conf;
|
this.conf = conf;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String configPrefix;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(String configurationPrefix) {
|
||||||
|
configPrefix = configurationPrefix +
|
||||||
|
(configurationPrefix.endsWith(".") ? "" : ".");
|
||||||
|
|
||||||
|
// constructing regex to match the following patterns:
|
||||||
|
// $configPrefix.[ANY].users
|
||||||
|
// $configPrefix.[ANY].groups
|
||||||
|
// $configPrefix.[ANY].hosts
|
||||||
|
//
|
||||||
|
String prefixRegEx = configPrefix.replace(".", "\\.");
|
||||||
|
String usersGroupsRegEx = prefixRegEx + "[^.]*(" +
|
||||||
|
Pattern.quote(CONF_USERS) + "|" + Pattern.quote(CONF_GROUPS) + ")";
|
||||||
|
String hostsRegEx = prefixRegEx + "[^.]*" + Pattern.quote(CONF_HOSTS);
|
||||||
|
|
||||||
// get list of users and groups per proxyuser
|
// get list of users and groups per proxyuser
|
||||||
Map<String,String> allMatchKeys =
|
Map<String,String> allMatchKeys =
|
||||||
conf.getValByRegex(CONF_HADOOP_PROXYUSER_RE_USERS_GROUPS);
|
conf.getValByRegex(usersGroupsRegEx);
|
||||||
for(Entry<String, String> entry : allMatchKeys.entrySet()) {
|
for(Entry<String, String> entry : allMatchKeys.entrySet()) {
|
||||||
String aclKey = getAclKey(entry.getKey());
|
String aclKey = getAclKey(entry.getKey());
|
||||||
if (!proxyUserAcl.containsKey(aclKey)) {
|
if (!proxyUserAcl.containsKey(aclKey)) {
|
||||||
@ -65,7 +92,7 @@ public void setConf(Configuration conf) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get hosts per proxyuser
|
// get hosts per proxyuser
|
||||||
allMatchKeys = conf.getValByRegex(CONF_HADOOP_PROXYUSER_RE_HOSTS);
|
allMatchKeys = conf.getValByRegex(hostsRegEx);
|
||||||
for(Entry<String, String> entry : allMatchKeys.entrySet()) {
|
for(Entry<String, String> entry : allMatchKeys.entrySet()) {
|
||||||
proxyHosts.put(entry.getKey(),
|
proxyHosts.put(entry.getKey(),
|
||||||
new MachineList(entry.getValue()));
|
new MachineList(entry.getValue()));
|
||||||
@ -86,8 +113,8 @@ public void authorize(UserGroupInformation user,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AccessControlList acl = proxyUserAcl.get(
|
AccessControlList acl = proxyUserAcl.get(configPrefix +
|
||||||
CONF_HADOOP_PROXYUSER+realUser.getShortUserName());
|
realUser.getShortUserName());
|
||||||
if (acl == null || !acl.isUserAllowed(user)) {
|
if (acl == null || !acl.isUserAllowed(user)) {
|
||||||
throw new AuthorizationException("User: " + realUser.getUserName()
|
throw new AuthorizationException("User: " + realUser.getUserName()
|
||||||
+ " is not allowed to impersonate " + user.getUserName());
|
+ " is not allowed to impersonate " + user.getUserName());
|
||||||
@ -116,8 +143,8 @@ private String getAclKey(String key) {
|
|||||||
* @param userName name of the superuser
|
* @param userName name of the superuser
|
||||||
* @return configuration key for superuser usergroups
|
* @return configuration key for superuser usergroups
|
||||||
*/
|
*/
|
||||||
public static String getProxySuperuserUserConfKey(String userName) {
|
public String getProxySuperuserUserConfKey(String userName) {
|
||||||
return CONF_HADOOP_PROXYUSER+userName+CONF_USERS;
|
return configPrefix + userName + CONF_USERS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -126,8 +153,8 @@ public static String getProxySuperuserUserConfKey(String userName) {
|
|||||||
* @param userName name of the superuser
|
* @param userName name of the superuser
|
||||||
* @return configuration key for superuser groups
|
* @return configuration key for superuser groups
|
||||||
*/
|
*/
|
||||||
public static String getProxySuperuserGroupConfKey(String userName) {
|
public String getProxySuperuserGroupConfKey(String userName) {
|
||||||
return CONF_HADOOP_PROXYUSER+userName+CONF_GROUPS;
|
return configPrefix + userName + CONF_GROUPS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -136,8 +163,8 @@ public static String getProxySuperuserGroupConfKey(String userName) {
|
|||||||
* @param userName name of the superuser
|
* @param userName name of the superuser
|
||||||
* @return configuration key for superuser ip-addresses
|
* @return configuration key for superuser ip-addresses
|
||||||
*/
|
*/
|
||||||
public static String getProxySuperuserIpConfKey(String userName) {
|
public String getProxySuperuserIpConfKey(String userName) {
|
||||||
return CONF_HADOOP_PROXYUSER+userName+CONF_HOSTS;
|
return configPrefix + userName + CONF_HOSTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@ -18,10 +18,25 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.security.authorize;
|
package org.apache.hadoop.security.authorize;
|
||||||
|
|
||||||
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
|
import org.apache.hadoop.classification.InterfaceStability;
|
||||||
import org.apache.hadoop.conf.Configurable;
|
import org.apache.hadoop.conf.Configurable;
|
||||||
import org.apache.hadoop.security.UserGroupInformation;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
|
|
||||||
|
@InterfaceStability.Unstable
|
||||||
|
@InterfaceAudience.Public
|
||||||
public interface ImpersonationProvider extends Configurable {
|
public interface ImpersonationProvider extends Configurable {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies the configuration prefix for the proxy user properties and
|
||||||
|
* initializes the provider.
|
||||||
|
*
|
||||||
|
* @param configurationPrefix the configuration prefix for the proxy user
|
||||||
|
* properties
|
||||||
|
*/
|
||||||
|
public void init(String configurationPrefix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authorize the superuser which is doing doAs
|
* Authorize the superuser which is doing doAs
|
||||||
*
|
*
|
||||||
|
@ -18,7 +18,9 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.security.authorize;
|
package org.apache.hadoop.security.authorize;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
import org.apache.hadoop.classification.InterfaceAudience;
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
|
import org.apache.hadoop.classification.InterfaceStability;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
||||||
import org.apache.hadoop.security.UserGroupInformation;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
@ -26,9 +28,12 @@
|
|||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
|
||||||
|
@InterfaceStability.Unstable
|
||||||
@InterfaceAudience.LimitedPrivate({"HDFS", "MapReduce", "HBase", "Hive"})
|
@InterfaceAudience.LimitedPrivate({"HDFS", "MapReduce", "HBase", "Hive"})
|
||||||
public class ProxyUsers {
|
public class ProxyUsers {
|
||||||
|
|
||||||
|
public static final String CONF_HADOOP_PROXYUSER = "hadoop.proxyuser";
|
||||||
|
|
||||||
private static volatile ImpersonationProvider sip ;
|
private static volatile ImpersonationProvider sip ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,16 +59,32 @@ public static void refreshSuperUserGroupsConfiguration() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* refresh configuration
|
* Refreshes configuration using the specified Proxy user prefix for
|
||||||
* @param conf
|
* properties.
|
||||||
|
*
|
||||||
|
* @param conf configuration
|
||||||
|
* @param proxyUserPrefix proxy user configuration prefix
|
||||||
*/
|
*/
|
||||||
public static void refreshSuperUserGroupsConfiguration(Configuration conf) {
|
public static void refreshSuperUserGroupsConfiguration(Configuration conf,
|
||||||
|
String proxyUserPrefix) {
|
||||||
|
Preconditions.checkArgument(proxyUserPrefix != null &&
|
||||||
|
!proxyUserPrefix.isEmpty(), "prefix cannot be NULL or empty");
|
||||||
// sip is volatile. Any assignment to it as well as the object's state
|
// sip is volatile. Any assignment to it as well as the object's state
|
||||||
// will be visible to all the other threads.
|
// will be visible to all the other threads.
|
||||||
sip = getInstance(conf);
|
ImpersonationProvider ip = getInstance(conf);
|
||||||
|
ip.init(proxyUserPrefix);
|
||||||
|
sip = ip;
|
||||||
ProxyServers.refresh(conf);
|
ProxyServers.refresh(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refreshes configuration using the default Proxy user prefix for properties.
|
||||||
|
* @param conf configuration
|
||||||
|
*/
|
||||||
|
public static void refreshSuperUserGroupsConfiguration(Configuration conf) {
|
||||||
|
refreshSuperUserGroupsConfiguration(conf, CONF_HADOOP_PROXYUSER);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authorize the superuser which is doing doAs
|
* Authorize the superuser which is doing doAs
|
||||||
*
|
*
|
||||||
|
@ -327,8 +327,8 @@ long runMiniBenchmarkWithDelegationToken(Configuration conf,
|
|||||||
String shortUserName =
|
String shortUserName =
|
||||||
UserGroupInformation.createRemoteUser(user).getShortUserName();
|
UserGroupInformation.createRemoteUser(user).getShortUserName();
|
||||||
try {
|
try {
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserGroupConfKey(shortUserName),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
GROUP_NAME_1);
|
getProxySuperuserGroupConfKey(shortUserName), GROUP_NAME_1);
|
||||||
configureSuperUserIPAddresses(conf, shortUserName);
|
configureSuperUserIPAddresses(conf, shortUserName);
|
||||||
// start the server
|
// start the server
|
||||||
miniServer = new MiniServer(conf, user, keytabFile);
|
miniServer = new MiniServer(conf, user, keytabFile);
|
||||||
@ -411,7 +411,7 @@ private void configureSuperUserIPAddresses(Configuration conf,
|
|||||||
}
|
}
|
||||||
builder.append("127.0.1.1,");
|
builder.append("127.0.1.1,");
|
||||||
builder.append(InetAddress.getLocalHost().getCanonicalHostName());
|
builder.append(InetAddress.getLocalHost().getCanonicalHostName());
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserIpConfKey(superUserShortName),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
builder.toString());
|
getProxySuperuserIpConfKey(superUserShortName), builder.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,8 @@ private void configureSuperUserIPAddresses(Configuration conf,
|
|||||||
builder.append("127.0.1.1,");
|
builder.append("127.0.1.1,");
|
||||||
builder.append(InetAddress.getLocalHost().getCanonicalHostName());
|
builder.append(InetAddress.getLocalHost().getCanonicalHostName());
|
||||||
LOG.info("Local Ip addresses: "+builder.toString());
|
LOG.info("Local Ip addresses: "+builder.toString());
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserIpConfKey(superUserShortName),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(superUserShortName),
|
||||||
builder.toString());
|
builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,8 +182,8 @@ public Void run() throws IOException {
|
|||||||
@Test(timeout=4000)
|
@Test(timeout=4000)
|
||||||
public void testRealUserSetup() throws IOException {
|
public void testRealUserSetup() throws IOException {
|
||||||
final Configuration conf = new Configuration();
|
final Configuration conf = new Configuration();
|
||||||
conf.setStrings(DefaultImpersonationProvider
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME), "group1");
|
getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME), "group1");
|
||||||
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
|
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
|
||||||
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
||||||
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
||||||
@ -214,7 +215,8 @@ public void testRealUserSetup() throws IOException {
|
|||||||
public void testRealUserAuthorizationSuccess() throws IOException {
|
public void testRealUserAuthorizationSuccess() throws IOException {
|
||||||
final Configuration conf = new Configuration();
|
final Configuration conf = new Configuration();
|
||||||
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
|
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
|
||||||
"group1");
|
"group1");
|
||||||
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
||||||
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
||||||
@ -248,9 +250,11 @@ public void testRealUserAuthorizationSuccess() throws IOException {
|
|||||||
@Test
|
@Test
|
||||||
public void testRealUserIPAuthorizationFailure() throws IOException {
|
public void testRealUserIPAuthorizationFailure() throws IOException {
|
||||||
final Configuration conf = new Configuration();
|
final Configuration conf = new Configuration();
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_SHORT_NAME),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_SHORT_NAME),
|
||||||
"20.20.20.20"); //Authorized IP address
|
"20.20.20.20"); //Authorized IP address
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
|
||||||
"group1");
|
"group1");
|
||||||
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
||||||
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
||||||
@ -293,8 +297,8 @@ public String run() throws IOException {
|
|||||||
@Test
|
@Test
|
||||||
public void testRealUserIPNotSpecified() throws IOException {
|
public void testRealUserIPNotSpecified() throws IOException {
|
||||||
final Configuration conf = new Configuration();
|
final Configuration conf = new Configuration();
|
||||||
conf.setStrings(DefaultImpersonationProvider
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME), "group1");
|
getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME), "group1");
|
||||||
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
||||||
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
||||||
.setNumHandlers(2).setVerbose(false).build();
|
.setNumHandlers(2).setVerbose(false).build();
|
||||||
@ -377,7 +381,8 @@ public String run() throws IOException {
|
|||||||
public void testRealUserGroupAuthorizationFailure() throws IOException {
|
public void testRealUserGroupAuthorizationFailure() throws IOException {
|
||||||
final Configuration conf = new Configuration();
|
final Configuration conf = new Configuration();
|
||||||
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
|
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
|
||||||
"group3");
|
"group3");
|
||||||
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
|
||||||
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
.setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
|
||||||
|
@ -111,10 +111,12 @@ public void testNetgroups () throws IOException{
|
|||||||
groupMappingClassName);
|
groupMappingClassName);
|
||||||
|
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(NETGROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(NETGROUP_NAMES)));
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
|
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
@ -135,10 +137,12 @@ public void testNetgroups () throws IOException{
|
|||||||
public void testProxyUsers() throws Exception {
|
public void testProxyUsers() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
@ -168,10 +172,12 @@ public void testProxyUsers() throws Exception {
|
|||||||
public void testProxyUsersWithUserConf() throws Exception {
|
public void testProxyUsersWithUserConf() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserUserConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserUserConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(AUTHORIZED_PROXY_USER_NAME)));
|
StringUtils.join(",", Arrays.asList(AUTHORIZED_PROXY_USER_NAME)));
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
@ -202,10 +208,12 @@ public void testProxyUsersWithUserConf() throws Exception {
|
|||||||
public void testWildcardGroup() {
|
public void testWildcardGroup() {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
"*");
|
"*");
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
@ -236,10 +244,12 @@ public void testWildcardGroup() {
|
|||||||
public void testWildcardUser() {
|
public void testWildcardUser() {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserUserConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserUserConfKey(REAL_USER_NAME),
|
||||||
"*");
|
"*");
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
@ -270,10 +280,12 @@ public void testWildcardUser() {
|
|||||||
public void testWildcardIP() {
|
public void testWildcardIP() {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
"*");
|
"*");
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
@ -301,10 +313,12 @@ public void testWildcardIP() {
|
|||||||
public void testIPRange() {
|
public void testIPRange() {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
"*");
|
"*");
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP_RANGE);
|
PROXY_IP_RANGE);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
@ -324,16 +338,19 @@ public void testIPRange() {
|
|||||||
public void testWithDuplicateProxyGroups() throws Exception {
|
public void testWithDuplicateProxyGroups() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(GROUP_NAMES,GROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(GROUP_NAMES,GROUP_NAMES)));
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
Collection<String> groupsToBeProxied =
|
Collection<String> groupsToBeProxied =
|
||||||
ProxyUsers.getDefaultImpersonationProvider().getProxyGroups().get(
|
ProxyUsers.getDefaultImpersonationProvider().getProxyGroups().get(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME));
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME));
|
||||||
|
|
||||||
assertEquals (1,groupsToBeProxied.size());
|
assertEquals (1,groupsToBeProxied.size());
|
||||||
}
|
}
|
||||||
@ -342,16 +359,19 @@ public void testWithDuplicateProxyGroups() throws Exception {
|
|||||||
public void testWithDuplicateProxyHosts() throws Exception {
|
public void testWithDuplicateProxyHosts() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider()
|
||||||
|
.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(PROXY_IP,PROXY_IP)));
|
StringUtils.join(",", Arrays.asList(PROXY_IP,PROXY_IP)));
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
Collection<String> hosts =
|
Collection<String> hosts =
|
||||||
ProxyUsers.getDefaultImpersonationProvider().getProxyHosts().get(
|
ProxyUsers.getDefaultImpersonationProvider().getProxyHosts().get(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME));
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME));
|
||||||
|
|
||||||
assertEquals (1,hosts.size());
|
assertEquals (1,hosts.size());
|
||||||
}
|
}
|
||||||
@ -391,26 +411,73 @@ public void testProxyUsersWithProviderOverride() throws Exception {
|
|||||||
public void testWithProxyGroupsAndUsersWithSpaces() throws Exception {
|
public void testWithProxyGroupsAndUsersWithSpaces() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserUserConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserUserConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(PROXY_USER_NAME + " ",AUTHORIZED_PROXY_USER_NAME, "ONEMORE")));
|
StringUtils.join(",", Arrays.asList(PROXY_USER_NAME + " ",AUTHORIZED_PROXY_USER_NAME, "ONEMORE")));
|
||||||
|
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
||||||
|
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
PROXY_IP);
|
PROXY_IP);
|
||||||
|
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
|
||||||
Collection<String> groupsToBeProxied =
|
Collection<String> groupsToBeProxied =
|
||||||
ProxyUsers.getDefaultImpersonationProvider().getProxyGroups().get(
|
ProxyUsers.getDefaultImpersonationProvider().getProxyGroups().get(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME));
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME));
|
||||||
|
|
||||||
assertEquals (GROUP_NAMES.length, groupsToBeProxied.size());
|
assertEquals (GROUP_NAMES.length, groupsToBeProxied.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void testProxyUsersWithNullPrefix() throws Exception {
|
||||||
|
ProxyUsers.refreshSuperUserGroupsConfiguration(new Configuration(false),
|
||||||
|
null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void testProxyUsersWithEmptyPrefix() throws Exception {
|
||||||
|
ProxyUsers.refreshSuperUserGroupsConfiguration(new Configuration(false),
|
||||||
|
"");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testProxyUsersWithCustomPrefix() throws Exception {
|
||||||
|
Configuration conf = new Configuration(false);
|
||||||
|
conf.set("x." + REAL_USER_NAME + ".users",
|
||||||
|
StringUtils.join(",", Arrays.asList(AUTHORIZED_PROXY_USER_NAME)));
|
||||||
|
conf.set("x." + REAL_USER_NAME+ ".hosts", PROXY_IP);
|
||||||
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf, "x");
|
||||||
|
|
||||||
|
|
||||||
|
// First try proxying a user that's allowed
|
||||||
|
UserGroupInformation realUserUgi = UserGroupInformation
|
||||||
|
.createRemoteUser(REAL_USER_NAME);
|
||||||
|
UserGroupInformation proxyUserUgi = UserGroupInformation.createProxyUserForTesting(
|
||||||
|
AUTHORIZED_PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
|
||||||
|
|
||||||
|
// From good IP
|
||||||
|
assertAuthorized(proxyUserUgi, "1.2.3.4");
|
||||||
|
// From bad IP
|
||||||
|
assertNotAuthorized(proxyUserUgi, "1.2.3.5");
|
||||||
|
|
||||||
|
// Now try proxying a user that's not allowed
|
||||||
|
realUserUgi = UserGroupInformation.createRemoteUser(REAL_USER_NAME);
|
||||||
|
proxyUserUgi = UserGroupInformation.createProxyUserForTesting(
|
||||||
|
PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
|
||||||
|
|
||||||
|
// From good IP
|
||||||
|
assertNotAuthorized(proxyUserUgi, "1.2.3.4");
|
||||||
|
// From bad IP
|
||||||
|
assertNotAuthorized(proxyUserUgi, "1.2.3.5");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void assertNotAuthorized(UserGroupInformation proxyUgi, String host) {
|
private void assertNotAuthorized(UserGroupInformation proxyUgi, String host) {
|
||||||
try {
|
try {
|
||||||
@ -430,6 +497,11 @@ private void assertAuthorized(UserGroupInformation proxyUgi, String host) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static class TestDummyImpersonationProvider implements ImpersonationProvider {
|
static class TestDummyImpersonationProvider implements ImpersonationProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(String configurationPrefix) {
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authorize a user (superuser) to impersonate another user (user1) if the
|
* Authorize a user (superuser) to impersonate another user (user1) if the
|
||||||
* superuser belongs to the group "sudo_user1" .
|
* superuser belongs to the group "sudo_user1" .
|
||||||
@ -460,11 +532,13 @@ public Configuration getConf() {
|
|||||||
public static void loadTest(String ipString, int testRange) {
|
public static void loadTest(String ipString, int testRange) {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER_NAME),
|
||||||
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
StringUtils.join(",", Arrays.asList(GROUP_NAMES)));
|
||||||
|
|
||||||
conf.set(
|
conf.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(REAL_USER_NAME),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(REAL_USER_NAME),
|
||||||
ipString
|
ipString
|
||||||
);
|
);
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
|
@ -72,11 +72,11 @@ public class TestReaddir {
|
|||||||
public static void setup() throws Exception {
|
public static void setup() throws Exception {
|
||||||
String currentUser = System.getProperty("user.name");
|
String currentUser = System.getProperty("user.name");
|
||||||
config.set(
|
config.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(currentUser),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
"*");
|
getProxySuperuserGroupConfKey(currentUser), "*");
|
||||||
config.set(
|
config.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(currentUser),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
"*");
|
getProxySuperuserIpConfKey(currentUser), "*");
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(config);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(config);
|
||||||
cluster = new MiniDFSCluster.Builder(config).numDataNodes(1).build();
|
cluster = new MiniDFSCluster.Builder(config).numDataNodes(1).build();
|
||||||
cluster.waitActive();
|
cluster.waitActive();
|
||||||
|
@ -312,10 +312,12 @@ public void testWriteStableHow() throws IOException, InterruptedException {
|
|||||||
System.getProperty("user.name"));
|
System.getProperty("user.name"));
|
||||||
String currentUser = System.getProperty("user.name");
|
String currentUser = System.getProperty("user.name");
|
||||||
config.set(
|
config.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserGroupConfKey(currentUser),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(currentUser),
|
||||||
"*");
|
"*");
|
||||||
config.set(
|
config.set(
|
||||||
DefaultImpersonationProvider.getProxySuperuserIpConfKey(currentUser),
|
DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(currentUser),
|
||||||
"*");
|
"*");
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(config);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(config);
|
||||||
|
|
||||||
|
@ -89,7 +89,8 @@ private static void configureSuperUserIPAddresses(Configuration conf,
|
|||||||
builder.append("127.0.1.1,");
|
builder.append("127.0.1.1,");
|
||||||
builder.append(InetAddress.getLocalHost().getCanonicalHostName());
|
builder.append(InetAddress.getLocalHost().getCanonicalHostName());
|
||||||
LOG.info("Local Ip addresses: " + builder.toString());
|
LOG.info("Local Ip addresses: " + builder.toString());
|
||||||
conf.setStrings(DefaultImpersonationProvider.getProxySuperuserIpConfKey(superUserShortName),
|
conf.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(superUserShortName),
|
||||||
builder.toString());
|
builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +102,8 @@ public static void setUp() throws Exception {
|
|||||||
DFSConfigKeys.DFS_NAMENODE_DELEGATION_TOKEN_MAX_LIFETIME_KEY, 10000);
|
DFSConfigKeys.DFS_NAMENODE_DELEGATION_TOKEN_MAX_LIFETIME_KEY, 10000);
|
||||||
config.setLong(
|
config.setLong(
|
||||||
DFSConfigKeys.DFS_NAMENODE_DELEGATION_TOKEN_RENEW_INTERVAL_KEY, 5000);
|
DFSConfigKeys.DFS_NAMENODE_DELEGATION_TOKEN_RENEW_INTERVAL_KEY, 5000);
|
||||||
config.setStrings(DefaultImpersonationProvider.getProxySuperuserGroupConfKey(REAL_USER),
|
config.setStrings(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserGroupConfKey(REAL_USER),
|
||||||
"group1");
|
"group1");
|
||||||
config.setBoolean(
|
config.setBoolean(
|
||||||
DFSConfigKeys.DFS_NAMENODE_DELEGATION_TOKEN_ALWAYS_USE_KEY, true);
|
DFSConfigKeys.DFS_NAMENODE_DELEGATION_TOKEN_ALWAYS_USE_KEY, true);
|
||||||
|
@ -285,8 +285,10 @@ public void testGetProxyUgi() throws IOException {
|
|||||||
String user = "TheNurse";
|
String user = "TheNurse";
|
||||||
conf.set(DFSConfigKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
conf.set(DFSConfigKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
||||||
|
|
||||||
conf.set(DefaultImpersonationProvider.getProxySuperuserGroupConfKey(realUser), "*");
|
conf.set(DefaultImpersonationProvider.getTestProvider().
|
||||||
conf.set(DefaultImpersonationProvider.getProxySuperuserIpConfKey(realUser), "*");
|
getProxySuperuserGroupConfKey(realUser), "*");
|
||||||
|
conf.set(DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey(realUser), "*");
|
||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
UserGroupInformation.setConfiguration(conf);
|
UserGroupInformation.setConfiguration(conf);
|
||||||
UserGroupInformation ugi;
|
UserGroupInformation ugi;
|
||||||
|
@ -151,8 +151,10 @@ public void testRefreshSuperUserGroupsConfiguration() throws Exception {
|
|||||||
final String [] GROUP_NAMES2 = new String [] {"gr3" , "gr4"};
|
final String [] GROUP_NAMES2 = new String [] {"gr3" , "gr4"};
|
||||||
|
|
||||||
//keys in conf
|
//keys in conf
|
||||||
String userKeyGroups = DefaultImpersonationProvider.getProxySuperuserGroupConfKey(SUPER_USER);
|
String userKeyGroups = DefaultImpersonationProvider.getTestProvider().
|
||||||
String userKeyHosts = DefaultImpersonationProvider.getProxySuperuserIpConfKey (SUPER_USER);
|
getProxySuperuserGroupConfKey(SUPER_USER);
|
||||||
|
String userKeyHosts = DefaultImpersonationProvider.getTestProvider().
|
||||||
|
getProxySuperuserIpConfKey (SUPER_USER);
|
||||||
|
|
||||||
config.set(userKeyGroups, "gr3,gr4,gr5"); // superuser can proxy for this group
|
config.set(userKeyGroups, "gr3,gr4,gr5"); // superuser can proxy for this group
|
||||||
config.set(userKeyHosts,"127.0.0.1");
|
config.set(userKeyHosts,"127.0.0.1");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user