SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Verschlüsselte Properties
                                für Liquibase




 JUG Saxony Happy Hour                           06. Dezember 2012
Montag, 10. Dezember 12
Dominik Hirt




Montag, 10. Dezember 12
http://www.efinia.de




Montag, 10. Dezember 12
Personal Finance Management




Montag, 10. Dezember 12
Montag, 10. Dezember 12
Problem


                            liquibase.properties   |   defaultsFile


                          driver: org.postgresql.Driver
                          url: jdbc:postgresql://localhost:5432/efinia
                          username: dbUser
                          password: superGeheim42!




Montag, 10. Dezember 12
#epicfail




Montag, 10. Dezember 12
Ursache


                          property                       member

                 liquibase.integration.commandline.Main.parsePropertiesFile




Montag, 10. Dezember 12
Lösung


                              +




Montag, 10. Dezember 12
Lösung

                           Encrypting
                           application              Advanced
                                              +
                          configuration            configuration
                              files




Montag, 10. Dezember 12
Encrypting
                           application         Advanced
                                          +
                          configuration       configuration
                              files




Montag, 10. Dezember 12
enc. property   decrypt    member




                                 password

Montag, 10. Dezember 12
Lösung
                    EnvironmentStringPBEConfig pbeConfig = new EnvironmentStringPBEConfig();
                    pbeConfig.setPasswordEnvName(pbeVariable);

                    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
                    encryptor.setConfig(pbeConfig);

                    EncryptableProperties props = new EncryptableProperties(encryptor);
                    props.load(propertiesInputStream);




                   if (value.startsWith("ENC"))
                   {
                       String env = System.getenv(pbeVariable);
                       if (env == null || env.equals(""))
                       {
                            throw new RuntimeException("Unknown " + pbeVariable);
                       }
                       else
                       {
                            value = props.getProperty((String)entry.getKey());
                       }
                   }




Montag, 10. Dezember 12
Vorher
                          driver: org.postgresql.Driver
                          url: jdbc:postgresql://localhost:5432/efinia
                          username: dbUser
                          password: superGeheim42!




                                         Nachher
                          driver: org.postgresql.Driver
                          url: jdbc:postgresql://localhost:5432/efinia
                          username: dbUser
                          password: ENC(23cdFlcaHt54dZHP1o1TBw6aqTVw4)




Montag, 10. Dezember 12
Don‘t repeat yourself

                                     liquibase-core
                 liquibase.integration.commandline.Main.parsePropertiesFile




                                liquibase-maven-plugin
    org.liquibase.maven.plugins.AbstractLiquibaseMojo.parsePropertiesFile



Montag, 10. Dezember 12
https://github.com/dominik42/liquibase




Montag, 10. Dezember 12
d.hirt@efinia.de




Montag, 10. Dezember 12
Montag, 10. Dezember 12

Weitere ähnliche Inhalte

Andere mochten auch

Llone!! maha,krishna
Llone!! maha,krishnaLlone!! maha,krishna
Llone!! maha,krishnamarudhurimaha
 
Mrinali social studies
Mrinali social studiesMrinali social studies
Mrinali social studiesmarudhurimaha
 
Database Change Management
Database Change ManagementDatabase Change Management
Database Change ManagementDominik Hirt
 
Energy resources pramod2
Energy resources pramod2Energy resources pramod2
Energy resources pramod2marudhurimaha
 
Principles of management Unit-1 BBA
Principles of management Unit-1 BBA Principles of management Unit-1 BBA
Principles of management Unit-1 BBA marudhurimaha
 
Out comes of democracy
Out comes of democracyOut comes of democracy
Out comes of democracymarudhurimaha
 
Challenges of democrqasy
Challenges of democrqasyChallenges of democrqasy
Challenges of democrqasymarudhurimaha
 

Andere mochten auch (9)

Llone!! maha,krishna
Llone!! maha,krishnaLlone!! maha,krishna
Llone!! maha,krishna
 
Maha bio
Maha bioMaha bio
Maha bio
 
Mrinali social studies
Mrinali social studiesMrinali social studies
Mrinali social studies
 
Database Change Management
Database Change ManagementDatabase Change Management
Database Change Management
 
Energy resources pramod2
Energy resources pramod2Energy resources pramod2
Energy resources pramod2
 
Principles of management Unit-1 BBA
Principles of management Unit-1 BBA Principles of management Unit-1 BBA
Principles of management Unit-1 BBA
 
Out comes of democracy
Out comes of democracyOut comes of democracy
Out comes of democracy
 
Vatsala geography
Vatsala geographyVatsala geography
Vatsala geography
 
Challenges of democrqasy
Challenges of democrqasyChallenges of democrqasy
Challenges of democrqasy
 

Ähnlich wie Verschlüsselte Properties in Liquibase

JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführunggedoplan
 
Speeding up Java Persistence
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistencegedoplan
 
Google App Engine. Zwei Jahre im Produktiveinsatz
Google App Engine. Zwei Jahre im ProduktiveinsatzGoogle App Engine. Zwei Jahre im Produktiveinsatz
Google App Engine. Zwei Jahre im ProduktiveinsatzPer Fragemann
 
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...Verein FM Konferenz
 
Powerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesPowerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesSascha Hameister
 

Ähnlich wie Verschlüsselte Properties in Liquibase (6)

JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
 
Beyond HTML Internet Briefing
Beyond HTML Internet BriefingBeyond HTML Internet Briefing
Beyond HTML Internet Briefing
 
Speeding up Java Persistence
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistence
 
Google App Engine. Zwei Jahre im Produktiveinsatz
Google App Engine. Zwei Jahre im ProduktiveinsatzGoogle App Engine. Zwei Jahre im Produktiveinsatz
Google App Engine. Zwei Jahre im Produktiveinsatz
 
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ...
 
Powerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesPowerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-Features
 

Verschlüsselte Properties in Liquibase

  • 1. Verschlüsselte Properties für Liquibase JUG Saxony Happy Hour 06. Dezember 2012 Montag, 10. Dezember 12
  • 6. Problem liquibase.properties | defaultsFile driver: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/efinia username: dbUser password: superGeheim42! Montag, 10. Dezember 12
  • 8. Ursache property member liquibase.integration.commandline.Main.parsePropertiesFile Montag, 10. Dezember 12
  • 9. Lösung + Montag, 10. Dezember 12
  • 10. Lösung Encrypting application Advanced + configuration configuration files Montag, 10. Dezember 12
  • 11. Encrypting application Advanced + configuration configuration files Montag, 10. Dezember 12
  • 12. enc. property decrypt member password Montag, 10. Dezember 12
  • 13. Lösung EnvironmentStringPBEConfig pbeConfig = new EnvironmentStringPBEConfig(); pbeConfig.setPasswordEnvName(pbeVariable); StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setConfig(pbeConfig); EncryptableProperties props = new EncryptableProperties(encryptor); props.load(propertiesInputStream); if (value.startsWith("ENC")) { String env = System.getenv(pbeVariable); if (env == null || env.equals("")) { throw new RuntimeException("Unknown " + pbeVariable); } else { value = props.getProperty((String)entry.getKey()); } } Montag, 10. Dezember 12
  • 14. Vorher driver: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/efinia username: dbUser password: superGeheim42! Nachher driver: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/efinia username: dbUser password: ENC(23cdFlcaHt54dZHP1o1TBw6aqTVw4) Montag, 10. Dezember 12
  • 15. Don‘t repeat yourself liquibase-core liquibase.integration.commandline.Main.parsePropertiesFile liquibase-maven-plugin org.liquibase.maven.plugins.AbstractLiquibaseMojo.parsePropertiesFile Montag, 10. Dezember 12