Basapuram Kumar created FLINK-37953:
---------------------------------------
Summary: Add OBF password obfuscation support for SSL
configurations
Key: FLINK-37953
URL: https://issues.apache.org/jira/browse/FLINK-37953
Project: Flink
Issue Type: Improvement
Components: Runtime / Network
Affects Versions: 1.19.1
Reporter: Basapuram Kumar
Hello Team,
Currently, Flink's SSL configuration requires plaintext passwords for
keystore/truststore in:
* {{config.yaml}} (for internal RPC)
* {{history-server.conf}} (for Internal & REST endpoints)
*Example Configurations:*
1.
{code:java}
vim /etc/flink/conf/config.yaml{code}
{noformat}
security:
ssl:
internal:
truststore: /etc/security/certificates/truststore.jks
enabled: 'true'
key-password: Hadoop@123 # PLAINTEXT EXPOSURE
truststore-password: Hadoop@123 # PLAINTEXT EXPOSURE
keystore-password: Hadoop@123 # PLAINTEXT EXPOSE
keystore: /etc/security/certificates/keystore.jks{noformat}
2.
{code:java}
vim /etc/flink/conf/history-server.conf/config.yaml {code}
{noformat}
security:
ssl:
rest:
keystore-password: Hadoop@123 # Plain-text expose
authentication-enabled: 'false'
truststore-password: Hadoop@123 #Plain-text Expose
key-password: Hadoop@123 # Plain-Text Expose
truststore: /etc/security/certificates/truststore.jks
keystore: /etc/security/certificates/keystore.jks
enabled: 'true'
internal:
enabled: 'true'
key-password: Hadoop@123 #Plain-Text Expose
truststore-password: Hadoop@123 #Plain-Text Expose
keystore-password: Hadoop@123 #Plain-Text Expose
truststore: /etc/security/certificates/truststore.jks
keystore: /etc/security/certificates/keystore.jks{noformat}
h2. *Proposed Solution*
Implement support for Jetty's *OBF* password obfuscation format:
* Maintain backward compatibility with plaintext passwords
* Add automatic detection of OBF prefixes ({{{}OBF:{}}})
* Use Jetty's built-in {{Password}} class for decryption
* Support all SSL password fields:
** {{key-password}}
** {{keystore-password}}
** {{{}{}}}{{{}truststore-password{}}}
{{How to generate OBF passwords.?}}
{{}}
{noformat}
java -cp flink/opt/flink-azure-fs-hadoop-1.19.1.jar
org.eclipse.jetty.util.security.Password
<SSL_keystore/truststore_password>{noformat}
{{Ex:}}
{noformat}
java -cp flink/opt/flink-azure-fs-hadoop-1.19.1.jar
org.eclipse.jetty.util.security.Password Hadoop@123
2025-06-03 14:41:51.066:INFO::main: Logging initialized @126ms
Hadoop@123
OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
MD5:d61eb912413c69c46d34b847ef660caa{noformat}
{{Use this *OBF* password for the SSL configurations}}
{noformat}
security.ssl.internal.key-password
security.ssl.internal.keystore-password
security.ssl.internal.truststore
security.ssl.rest.key-password
security.ssl.rest.keystore-password
security.ssl.rest.truststore{noformat}
{{}}
{{After providing OBF password.}}
{noformat}
vim /etc/flink/conf/history-server.conf/config.yaml{noformat}
{noformat}
security:
ssl:
rest:
keystore-password: OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
authentication-enabled: 'false'
truststore-password: OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
key-password: OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
truststore: /etc/security/certificates/truststore.jks
keystore: /etc/security/certificates/keystore.jks
enabled: 'true'
internal:
enabled: 'true'
key-password: OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
truststore-password: OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
keystore-password: OBF:1dhw1i9a1inm1nse1x8e1x8g1nps1iks1i6o1dgq
truststore: /etc/security/certificates/truststore.jks
keystore: /etc/security/certificates/keystore.jks
historyserver:
archive:
fs:
dir: hdfs://rl9-zk-ssl.acceldata.ce:8020/apps/odp/flink/completed-jobs/
refresh-interval: '10000'
web:
address: 0.0.0.0
port: '9022'
ssl:
enabled: 'true'
{noformat}
Adding OBF password support significantly improves Flink's security by
eliminating plaintext password exposure in config files.
This aligns with security best practices already adopted across the Hadoop
ecosystem (Zookeeper,Hadoop, Hive,Zeppelin, Ambari ... etc.) and helps meet
compliance requirements.
The change is low-risk since it maintains backward compatibility while
providing immediate security benefits for new deployments.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)