HADOOP-12954. Add a way to change hadoop.security.token.service.use_ip (rkanter)
(cherry picked from commit 8cac1bb09f
)
This commit is contained in:
parent
d2f9adca88
commit
5a552973f4
|
@ -73,16 +73,38 @@ public class SecurityUtil {
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static HostResolver hostResolver;
|
static HostResolver hostResolver;
|
||||||
|
|
||||||
|
private static boolean logSlowLookups;
|
||||||
|
private static int slowLookupThresholdMs;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Configuration conf = new Configuration();
|
setConfigurationInternal(new Configuration());
|
||||||
|
}
|
||||||
|
|
||||||
|
@InterfaceAudience.Public
|
||||||
|
@InterfaceStability.Evolving
|
||||||
|
public static void setConfiguration(Configuration conf) {
|
||||||
|
LOG.info("Updating Configuration");
|
||||||
|
setConfigurationInternal(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void setConfigurationInternal(Configuration conf) {
|
||||||
boolean useIp = conf.getBoolean(
|
boolean useIp = conf.getBoolean(
|
||||||
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP,
|
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP,
|
||||||
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP_DEFAULT);
|
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP_DEFAULT);
|
||||||
setTokenServiceUseIp(useIp);
|
setTokenServiceUseIp(useIp);
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean logSlowLookups = getLogSlowLookupsEnabled();
|
logSlowLookups = conf.getBoolean(
|
||||||
private static int slowLookupThresholdMs = getSlowLookupThresholdMs();
|
CommonConfigurationKeys
|
||||||
|
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_ENABLED_KEY,
|
||||||
|
CommonConfigurationKeys
|
||||||
|
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_ENABLED_DEFAULT);
|
||||||
|
|
||||||
|
slowLookupThresholdMs = conf.getInt(
|
||||||
|
CommonConfigurationKeys
|
||||||
|
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_THRESHOLD_MS_KEY,
|
||||||
|
CommonConfigurationKeys
|
||||||
|
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_THRESHOLD_MS_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For use only by tests and initialization
|
* For use only by tests and initialization
|
||||||
|
@ -90,6 +112,11 @@ public class SecurityUtil {
|
||||||
@InterfaceAudience.Private
|
@InterfaceAudience.Private
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public static void setTokenServiceUseIp(boolean flag) {
|
public static void setTokenServiceUseIp(boolean flag) {
|
||||||
|
if (LOG.isDebugEnabled()) {
|
||||||
|
LOG.debug("Setting "
|
||||||
|
+ CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP
|
||||||
|
+ " to " + flag);
|
||||||
|
}
|
||||||
useIpForTokenService = flag;
|
useIpForTokenService = flag;
|
||||||
hostResolver = !useIpForTokenService
|
hostResolver = !useIpForTokenService
|
||||||
? new QualifiedHostResolver()
|
? new QualifiedHostResolver()
|
||||||
|
@ -485,24 +512,6 @@ public class SecurityUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean getLogSlowLookupsEnabled() {
|
|
||||||
Configuration conf = new Configuration();
|
|
||||||
|
|
||||||
return conf.getBoolean(CommonConfigurationKeys
|
|
||||||
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_ENABLED_KEY,
|
|
||||||
CommonConfigurationKeys
|
|
||||||
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_ENABLED_DEFAULT);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getSlowLookupThresholdMs() {
|
|
||||||
Configuration conf = new Configuration();
|
|
||||||
|
|
||||||
return conf.getInt(CommonConfigurationKeys
|
|
||||||
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_THRESHOLD_MS_KEY,
|
|
||||||
CommonConfigurationKeys
|
|
||||||
.HADOOP_SECURITY_DNS_LOG_SLOW_LOOKUPS_THRESHOLD_MS_DEFAULT);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolves a host subject to the security requirements determined by
|
* Resolves a host subject to the security requirements determined by
|
||||||
* hadoop.security.token.service.use_ip. Optionally logs slow resolutions.
|
* hadoop.security.token.service.use_ip. Optionally logs slow resolutions.
|
||||||
|
|
|
@ -28,6 +28,7 @@ import java.net.URI;
|
||||||
import javax.security.auth.kerberos.KerberosPrincipal;
|
import javax.security.auth.kerberos.KerberosPrincipal;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.CommonConfigurationKeys;
|
||||||
import org.apache.hadoop.io.Text;
|
import org.apache.hadoop.io.Text;
|
||||||
import org.apache.hadoop.net.NetUtils;
|
import org.apache.hadoop.net.NetUtils;
|
||||||
import org.apache.hadoop.security.token.Token;
|
import org.apache.hadoop.security.token.Token;
|
||||||
|
@ -144,7 +145,10 @@ public class TestSecurityUtil {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBuildDTServiceName() {
|
public void testBuildDTServiceName() {
|
||||||
SecurityUtil.setTokenServiceUseIp(true);
|
Configuration conf = new Configuration(false);
|
||||||
|
conf.setBoolean(
|
||||||
|
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP, true);
|
||||||
|
SecurityUtil.setConfiguration(conf);
|
||||||
assertEquals("127.0.0.1:123",
|
assertEquals("127.0.0.1:123",
|
||||||
SecurityUtil.buildDTServiceName(URI.create("test://LocalHost"), 123)
|
SecurityUtil.buildDTServiceName(URI.create("test://LocalHost"), 123)
|
||||||
);
|
);
|
||||||
|
@ -161,7 +165,10 @@ public class TestSecurityUtil {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBuildTokenServiceSockAddr() {
|
public void testBuildTokenServiceSockAddr() {
|
||||||
SecurityUtil.setTokenServiceUseIp(true);
|
Configuration conf = new Configuration(false);
|
||||||
|
conf.setBoolean(
|
||||||
|
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP, true);
|
||||||
|
SecurityUtil.setConfiguration(conf);
|
||||||
assertEquals("127.0.0.1:123",
|
assertEquals("127.0.0.1:123",
|
||||||
SecurityUtil.buildTokenService(new InetSocketAddress("LocalHost", 123)).toString()
|
SecurityUtil.buildTokenService(new InetSocketAddress("LocalHost", 123)).toString()
|
||||||
);
|
);
|
||||||
|
@ -260,7 +267,10 @@ public class TestSecurityUtil {
|
||||||
verifyTokenService(InetSocketAddress addr, String host, String ip, int port, boolean useIp) {
|
verifyTokenService(InetSocketAddress addr, String host, String ip, int port, boolean useIp) {
|
||||||
//LOG.info("address:"+addr+" host:"+host+" ip:"+ip+" port:"+port);
|
//LOG.info("address:"+addr+" host:"+host+" ip:"+ip+" port:"+port);
|
||||||
|
|
||||||
SecurityUtil.setTokenServiceUseIp(useIp);
|
Configuration conf = new Configuration(false);
|
||||||
|
conf.setBoolean(
|
||||||
|
CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP, useIp);
|
||||||
|
SecurityUtil.setConfiguration(conf);
|
||||||
String serviceHost = useIp ? ip : StringUtils.toLowerCase(host);
|
String serviceHost = useIp ? ip : StringUtils.toLowerCase(host);
|
||||||
|
|
||||||
Token<?> token = new Token<TokenIdentifier>();
|
Token<?> token = new Token<TokenIdentifier>();
|
||||||
|
|
Loading…
Reference in New Issue