Verschlüsselte Properties in Liquibase

Dominik Hirt
Dominik HirtGründer, Software Architect und Entwickler
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
1 von 18

Recomendados

OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz von
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzOpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzDigicomp Academy AG
1.3K views37 Folien
Bankkonten im Internet überwachen von
Bankkonten im Internet überwachenBankkonten im Internet überwachen
Bankkonten im Internet überwachenDominik Hirt
381 views21 Folien
Laporan tugas2 interface_kelompok2 von
Laporan tugas2 interface_kelompok2Laporan tugas2 interface_kelompok2
Laporan tugas2 interface_kelompok2Leuly Dzulfiqar
464 views13 Folien
Agiles Modellieren mit Domain Specific Languages von
Agiles Modellieren mit Domain Specific LanguagesAgiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesDominik Hirt
1.2K views40 Folien
Maha bio von
Maha bioMaha bio
Maha biomarudhurimaha
288 views14 Folien
ozone layer von
ozone layerozone layer
ozone layermarudhurimaha
381 views5 Folien

Más contenido relacionado

Destacado

Llone!! maha,krishna von
Llone!! maha,krishnaLlone!! maha,krishna
Llone!! maha,krishnamarudhurimaha
612 views30 Folien
Maha bio von
Maha bioMaha bio
Maha biomarudhurimaha
302 views14 Folien
Mrinali social studies von
Mrinali social studiesMrinali social studies
Mrinali social studiesmarudhurimaha
431 views9 Folien
Database Change Management von
Database Change ManagementDatabase Change Management
Database Change ManagementDominik Hirt
468 views26 Folien
Energy resources pramod2 von
Energy resources pramod2Energy resources pramod2
Energy resources pramod2marudhurimaha
2.1K views34 Folien
Principles of management Unit-1 BBA von
Principles of management Unit-1 BBA Principles of management Unit-1 BBA
Principles of management Unit-1 BBA marudhurimaha
15.3K views34 Folien

Destacado(9)

Similar a Verschlüsselte Properties in Liquibase

JEE-Microservices mit Quarkus – eine Einführung von
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführunggedoplan
43 views50 Folien
Beyond HTML Internet Briefing von
Beyond HTML Internet BriefingBeyond HTML Internet Briefing
Beyond HTML Internet BriefingJens-Christian Fischer
1.1K views100 Folien
Speeding up Java Persistence von
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistencegedoplan
299 views51 Folien
Google App Engine. Zwei Jahre im Produktiveinsatz von
Google App Engine. Zwei Jahre im ProduktiveinsatzGoogle App Engine. Zwei Jahre im Produktiveinsatz
Google App Engine. Zwei Jahre im ProduktiveinsatzPer Fragemann
9.4K views46 Folien
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ... von
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
2.4K views62 Folien
Powerful mostly unknown Javascript-Features von
Powerful mostly unknown Javascript-FeaturesPowerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesSascha Hameister
1.1K views66 Folien

Similar a Verschlüsselte Properties in Liquibase(6)

JEE-Microservices mit Quarkus – eine Einführung von gedoplan
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
gedoplan43 views
Speeding up Java Persistence von gedoplan
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistence
gedoplan299 views
Google App Engine. Zwei Jahre im Produktiveinsatz von Per Fragemann
Google App Engine. Zwei Jahre im ProduktiveinsatzGoogle App Engine. Zwei Jahre im Produktiveinsatz
Google App Engine. Zwei Jahre im Produktiveinsatz
Per Fragemann9.4K views
FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard ... von Verein FM Konferenz
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 Konferenz2.4K views
Powerful mostly unknown Javascript-Features von Sascha Hameister
Powerful mostly unknown Javascript-FeaturesPowerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-Features
Sascha Hameister1.1K views

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