Skip to content

Commit b589f59

Browse files
author
chaitali.borole
committed
ATLAS-5189: Encrypt postgres password
1 parent 928a378 commit b589f59

3 files changed

Lines changed: 34 additions & 3 deletions

File tree

graphdb/janusgraph-rdbms/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
<artifactId>HikariCP</artifactId>
3939
<version>${HikariCP.version}</version>
4040
</dependency>
41+
<dependency>
42+
<groupId>org.apache.atlas</groupId>
43+
<artifactId>atlas-intg</artifactId>
44+
</dependency>
4145
<dependency>
4246
<groupId>org.eclipse.persistence</groupId>
4347
<artifactId>eclipselink</artifactId>

graphdb/janusgraph-rdbms/src/main/java/org/janusgraph/diskstorage/rdbms/dao/DaoManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
import com.zaxxer.hikari.HikariConfig;
2222
import com.zaxxer.hikari.HikariDataSource;
23+
import org.apache.atlas.ApplicationProperties;
24+
import org.apache.atlas.AtlasException;
2325
import org.eclipse.persistence.config.PersistenceUnitProperties;
2426
import org.slf4j.Logger;
2527
import org.slf4j.LoggerFactory;
@@ -62,6 +64,7 @@ public class DaoManager {
6264
private static final Logger LOG = LoggerFactory.getLogger(DaoManager.class);
6365

6466
private final EntityManagerFactory emFactory;
67+
private static final String HIKARI_PASSWORD_KEY = "atlas.graph.storage.rdbms.jpa.hikari.password";
6568

6669
/**
6770
*
@@ -78,6 +81,16 @@ public DaoManager(Map<String, Object> jpaConfig) {
7881

7982
if (value != null) {
8083
if (key.startsWith("hikari.")) {
84+
if ("hikari.password".equals(key)) {
85+
try {
86+
String decrypted = ApplicationProperties.getDecryptedPassword(ApplicationProperties.get(), HIKARI_PASSWORD_KEY);
87+
if (decrypted != null) {
88+
value = decrypted;
89+
}
90+
} catch (AtlasException e) {
91+
LOG.error("Error in getting secure password ", e);
92+
}
93+
}
8194
hikariConfig.put(key.substring("hikari".length() + 1), value.toString());
8295
} else {
8396
config.put(key, value.toString());

intg/src/main/java/org/apache/atlas/ApplicationProperties.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public final class ApplicationProperties extends PropertiesConfiguration {
6767
public static final String AD = "AD";
6868
public static final String LDAP_AD_BIND_PASSWORD = "atlas.authentication.method.ldap.ad.bind.password";
6969
public static final String LDAP_BIND_PASSWORD = "atlas.authentication.method.ldap.bind.password";
70-
public static final String MASK_LDAP_PASSWORD = "********";
70+
public static final String MASK_PASSWORD = "********";
7171
public static final String DEFAULT_GRAPHDB_BACKEND = GRAPHBD_BACKEND_JANUS;
7272
public static final boolean DEFAULT_SOLR_WAIT_SEARCHER = false;
7373
public static final boolean DEFAULT_INDEX_MAP_NAME = false;
@@ -342,7 +342,7 @@ private static void setLdapPasswordFromKeystore(Configuration configuration) {
342342
if (ldapType.equalsIgnoreCase(LDAP)) {
343343
String maskPasssword = configuration.getString(LDAP_BIND_PASSWORD);
344344

345-
if (MASK_LDAP_PASSWORD.equals(maskPasssword)) {
345+
if (MASK_PASSWORD.equals(maskPasssword)) {
346346
String password = SecurityUtil.getPassword(configuration, LDAP_BIND_PASSWORD, HADOOP_SECURITY_CREDENTIAL_PROVIDER_PATH);
347347

348348
configuration.clearProperty(LDAP_BIND_PASSWORD);
@@ -351,7 +351,7 @@ private static void setLdapPasswordFromKeystore(Configuration configuration) {
351351
} else if (ldapType.equalsIgnoreCase(AD)) {
352352
String maskPasssword = configuration.getString(LDAP_AD_BIND_PASSWORD);
353353

354-
if (MASK_LDAP_PASSWORD.equals(maskPasssword)) {
354+
if (MASK_PASSWORD.equals(maskPasssword)) {
355355
String password = SecurityUtil.getPassword(configuration, LDAP_AD_BIND_PASSWORD, HADOOP_SECURITY_CREDENTIAL_PROVIDER_PATH);
356356

357357
configuration.clearProperty(LDAP_AD_BIND_PASSWORD);
@@ -364,6 +364,20 @@ private static void setLdapPasswordFromKeystore(Configuration configuration) {
364364
}
365365
}
366366

367+
public static String getDecryptedPassword(Configuration configuration, String propertyKey) {
368+
String configuredValue = configuration != null ? configuration.getString(propertyKey) : null;
369+
370+
if (configuredValue != null && MASK_PASSWORD.equals(configuredValue)) {
371+
try {
372+
return SecurityUtil.getPassword(configuration, propertyKey, HADOOP_SECURITY_CREDENTIAL_PROVIDER_PATH);
373+
} catch (Exception e) {
374+
LOG.error("Error in getting secure password ", e);
375+
}
376+
}
377+
378+
return configuredValue;
379+
}
380+
367381
private void setDefaults() {
368382
AtlasRunMode runMode = AtlasRunMode.valueOf(getString(ATLAS_RUN_MODE, DEFAULT_ATLAS_RUN_MODE.name()));
369383

0 commit comments

Comments
 (0)