[ 
https://issues.apache.org/jira/browse/FLINK-37953?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17967628#comment-17967628
 ] 

Basapuram Kumar commented on FLINK-37953:
-----------------------------------------

PR - https://github.com/apache/flink/pull/26677

> 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
>            Priority: Major
>
> 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)

Reply via email to