This is an automated email from the ASF dual-hosted git repository.
xtsong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new a8c72ccb98e [FLINK-29435][client] SecurityConfiguration supports
dynamic configuration
a8c72ccb98e is described below
commit a8c72ccb98e6eaa59d878d8182f0d1411bf577c9
Author: Bo Cui <[email protected]>
AuthorDate: Wed Sep 28 10:01:30 2022 +0800
[FLINK-29435][client] SecurityConfiguration supports dynamic configuration
This closes #20910
---
.../org/apache/flink/client/cli/CliFrontend.java | 8 +++++--
.../cli/CliFrontendDynamicPropertiesTest.java | 26 ++++++++++++++++++++++
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git
a/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
b/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
index f603dc90cda..9cf4a34bdb8 100644
--- a/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
+++ b/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
@@ -1163,8 +1163,12 @@ public class CliFrontend {
int retCode = 31;
try {
final CliFrontend cli = new CliFrontend(configuration,
customCommandLines);
-
- SecurityUtils.install(new
SecurityConfiguration(cli.configuration));
+ CommandLine commandLine =
+ cli.getCommandLine(
+ new Options(), Arrays.copyOfRange(args, 1,
args.length), true);
+ Configuration securityConfig = new
Configuration(cli.configuration);
+ DynamicPropertiesUtil.encodeDynamicProperties(commandLine,
securityConfig);
+ SecurityUtils.install(new SecurityConfiguration(securityConfig));
retCode = SecurityUtils.getInstalledContext().runSecured(() ->
cli.parseAndRun(args));
} catch (Throwable t) {
final Throwable strippedThrowable =
diff --git
a/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendDynamicPropertiesTest.java
b/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendDynamicPropertiesTest.java
index 4fa5f4a7398..3a4451f8337 100644
---
a/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendDynamicPropertiesTest.java
+++
b/flink-clients/src/test/java/org/apache/flink/client/cli/CliFrontendDynamicPropertiesTest.java
@@ -21,9 +21,12 @@ package org.apache.flink.client.cli;
import org.apache.flink.client.program.PackagedProgram;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.configuration.CoreOptions;
+import org.apache.flink.configuration.SecurityOptions;
+import org.apache.flink.runtime.security.SecurityConfiguration;
import org.apache.flink.util.ChildFirstClassLoader;
import org.apache.flink.util.FlinkUserCodeClassLoaders.ParentFirstClassLoader;
+import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -31,6 +34,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
+import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -167,6 +171,28 @@ class CliFrontendDynamicPropertiesTest {
configuration, args, cliUnderTest, expectedConfigValues);
}
+ @Test
+ public void testSecurityConfigWithDynamicProperties(@TempDir File tempDir)
throws Exception {
+ File keytabFile = new File(tempDir, "keytab.file");
+ keytabFile.createNewFile();
+ String[] args = {
+ "-e",
+ "test-executor",
+ "-D" + SecurityOptions.KERBEROS_LOGIN_KEYTAB.key() + "=" +
keytabFile.getPath(),
+ "-D" + SecurityOptions.KERBEROS_LOGIN_PRINCIPAL.key() +
"=principal",
+ getTestJarPath(),
+ };
+ TestingCliFrontendWithDynamicProperties testFrontend =
+ new TestingCliFrontendWithDynamicProperties(
+ configuration, cliUnderTest, null, null);
+ CommandLine commandLine = testFrontend.getCommandLine(new Options(),
args, true);
+ Configuration securityConfig = new Configuration(configuration);
+ DynamicPropertiesUtil.encodeDynamicProperties(commandLine,
securityConfig);
+ SecurityConfiguration securityConfiguration = new
SecurityConfiguration(securityConfig);
+
assertThat(securityConfiguration.getKeytab()).isEqualTo(keytabFile.getPath());
+
assertThat(securityConfiguration.getPrincipal()).isEqualTo("principal");
+ }
+
//
--------------------------------------------------------------------------------------------
public static void verifyCliFrontendWithDynamicProperties(