Spring Boot Configuration(yaml,properties) dosyası üzerinde şifreleme — Yazılım Notlarım

Spring Boot üzerinde configurasyon dosyaları içerisindeki gizli kalmasını istediğimiz password, database url gibi kısımları jasypt kütüphanesini kullanarak şifreleyebiliriz.

Configurasyon(yaml) dosyamdaki pw alanını şifrelemek istiyorum. (application.yml)

secret:
pw: bunu sifreliyorum

İlk olarak şifreleme işlemini yapabilmek amacıyla http://www.jasypt.org/ üzerinden en son sürümün jasypt-dist kısmını indirebilirsiniz. Bölyece yapacağımız işlemler için çalışan sh/bat dosyalarını elde etmiş olacağız. Dosyaya eriştiğimizde; jasypt-1.9.3/bin içerisinde aşağıdaki dosyalar bulunmalıdır.

encrypt.sh’ı kullanarak şifreleme işlemimizi gerçekleştirebiliriz.

./encrypt.sh input=’bunu sifreliyorum’ password=’sifrelemeparalom’

ve çıktısı;

 — — ENVIRONMENT — — — — — — — — -Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.201-b09 — — ARGUMENTS — — — — — — — — — -input: bunu sifreliyorumpassword: sifrelemeparalom — — OUTPUT — — — — — — — — — — — ByOkfyheu3DHAYBYczugSNsfzKXyrdCO3T3FTg2nYWY=

şifrelenmiş şekline OUTPUT kısmında kavuşmuş oldum.

Artık şifreli halini yaml yada properties configurasyon dosyasına koyabilirim ve bunu kullandığım kütüphanenin şifreli olduğunu anlaması amacıyla ENC(sifreli) olarak belirtmem gerekiyor.

secret:
pw: ENC(ByOkfyheu3DHAYBYczugSNsfzKXyrdCO3T3FTg2nYWY=)

İlk olarak build.gradle dosyasına ilgili dependency eklenmelidir.

compile group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '2.1.0'

Daha sonra jasypt kütüphanesi sayesinde şifreleme işlemini yapabileceğimiz anlamına gelir. Bunun için Spring Boot uygulamamızın main classında @EnableEncryptableProperties anotasyonunu eklmemiz gerekiyor.

@EnableEncryptableProperties
@SpringBootApplication
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

Bir servis çalıştırılırken ilgili configleri decrypt edebilmesi için
-Djasypt.encryptor.password=***** argumanını VM options olarak verilmelidir.

Böylece ilgili alanları şifreli bir config dosyası elde etmiş oldum.

— Bana ulaşmak için: Twitter, Linkedin

— Kodlar konuşsun: Github

— 1:1 görüşmeler için: Superpeer

https://gokhana.dev

Kaynak;

--

--

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices • https://gokhana.dev

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Gökhan Ayrancıoğlu

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices • https://gokhana.dev