|
@@ -111,10 +111,12 @@ public class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 class TestProxyUsers {
|
|
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 @@ public class TestProxyUsers {
|
|
}
|
|
}
|
|
|
|
|
|
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 class TestProxyUsers {
|
|
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);
|