7.3.1. Giriş#
Uygulama Paketi (Instances)#
Config Server docker instance'ına buradan ulaşabilirsiniz.
Uygulama Parametreleri (Environments)#
Uygulama ile ilgili tüm parametrelere buradan ulaşabilirsiniz.
Kullanım#
Kullanım için 2 temel adım mevcuttur.
- Config server'ın çalıştırılması.
- Uygulamanın config server'a bağlanarak ayağa kaldırılması.
Config Server'ın Çalıştırılması#
Config server'ı çalıştırmak için EKSEN tarafından hvl-infra
projesi içinde sağlanan docker-compose dosyaları kullanılabilir. Örneğin development ortamı için sağlanan docker-compose dosyasına buradan erişilebilir.
Uygulamanın Bağlanması#
Config server çalıştırıldıktan sonra uygulamanın resource klasörüne bootstrap.yml
dosyası eklenmelidir. Örnek bootstrap.yml
aşağıdaki gibidir.
spring:
config:
import:
- optional:configserver:${spring.cloud.config.uri}
cloud:
config:
uri: ${SERVER_CONFIGURATION_REMOTE_URL:http://localhost:8888/config}
profile: ${SERVER_CONFIGURATION_CLOUD_PROFILE:cloud-eureka,cloud-tracing,management,hvl-context,hvl-security,hvl-web-security,hvl-service,instance,kafka,swagger,apm,hvl-logger}
label: ${SERVER_CONFIGURATION_LABEL:framework(_)spring}
enabled: ${SERVER_CONFIGURATION_REMOTE_ENABLED:true}
username: ${CONFIG_AUTH_USERNAME:admin}
password: ${CONFIG_AUTH_PASSWORD:123456}
logging:
config: ${LOGGING_CONFIG:${spring.cloud.config.uri}/${spring.application.name}/default/framework(_)log4j2(_)instance(_)logger/log4j2.yml}
auth:
username: ${LOGGING_AUTH_USERNAME:${spring.cloud.config.username}}
password: ${LOGGING_AUTH_PASSWORD:${spring.cloud.config.password}}
EKSEN tarafından sağlanan config server için uyumlu değerler örnekteki gibi verilmiştir.
spring.cloud.config.uri: Config server'ın url bilgisidir.
spring.cloud.config.profile: Uygulamanın ihtiyaç duyduğu konfigürasyonlara göre bu alan ayarlanmalıdır. Buradaki değerler hvl-infra
içinde bulunan konfigürasyon pathlerine karşılık gelmektedir.
spring.cloud.config.label: Profileda yazan konfigürasyonların hangi path'den okunacağı bilgisidir. Varsayılan olarak verilen değer framework(_)spring
olup hvl-infra
içerisinde spring konfigürasyonları path'ine karşılık gelmektedir.
logging.config: Uygulama log4j2 dosyasını config server üzerinden okuyabileceği url bilgisidir. hvl-infra
içerisinde log4j2 dosyaları log4j2 pathi altında bulunmaktadır.
Public ve Secure Dosyalar#
Config server üzerinde 3 tip dosya güvenliği vardır.
- Public
- EKSEN Security
- Basic Authentication
Public Dosyalar#
Config server'dan erişim engeli olmadan alınması gereken konfigürasyon dosyaları olabilir. Örneğin login ekranındaki konfigürasyonlar config server'dan alınıyorsa, bu ekranda henüz bir güvenlik olmadığından konfigürasyonu da güvenliksiz bir şekilde alınabilmelidir.
Bunun için config server'da varsayılan olarak aşağıdaki konfigürasyon yapılmıştır.
Permit olarak verilen path'ler güvenlik önlemine takılmadan dosyalara erişim sağlanmasına imkan tanır.
Örnek bir public dosya pathi aşağıdaki gibidir;
http://localhost:8888/config/public/default/framework(_)ui(_)eksen/config.json
EKSEN Security#
UI'dan config server'a gelme ihtiyacı olduğunda ve alınan dosyanın içerisinde güvenlik gereği herkesin görmemesi gereken bir veri olduğu durumlarda kullanılacak güvenlik yapısıdır. Bu durumda basic authentication kullanılamaz çünkü UI üzerinden basic authentication ile gelinmesi, config server'ın şifre bilgisini ortaya çıkaran bir güvenlik açığına sebep olmaktadır.
Örneğin; UI tarafında kullanılan yardım portali gibi bir sistemin api key bilgisinin alınması gerekiyor ancak bu bilgi kullanıcı login olduktan sonra alınması gereken bir bilgidir. Aksi durumda bu sistemin login sayfasını açan herkes bu bilgiyi network'ü takip ederek görebilecektir.
Bunun için config server'da varsayılan olarak aşağıdaki konfigürasyon yapılmıştır.
hvl:
cloud:
config:
secure-paths:
- /default/framework/ui/eksen/secure
- /default/framework(_)ui(_)eksen(_)secure
Secure olarak verilen path'ler EKSEN security güvenlik yapısından geçmesi gerekmektedir. Yani kullanıcının login olmuş olması ve token almış olması gerekmektedir.
Örnek bir secure dosya pathi aşağıdaki gibidir;
http://localhost:8888/config/private/default/framework(_)ui(_)eksen(_)secure/config_secure.json
Not
Bu dosya içerisindeki datanın şifrelenmesi JKS yöntemi ile yapılmış olup, dosya config server'dan alındığı durumda şifresi çözülerek gelmektedir. encryptor-shell uygulaması kullanılarak şifreleme işlemleri yapılabilir.
Basic Authentication#
Backend uygulamarı tarafından alınması gereken konfigürasyon dosyalarına basic authentication güvenliği sağlanmıştır. bootstrap.yml
içindeki spring.cloud.config.username
ve spring.cloud.config.password
alanları ile erişim sağlanır.
Güvenlik sebebi ile production ortamlarında bu dosyalara gateway üzerinden erişim kısıtlanmıştır. Kısıtlanan pathlere hvl-infra
da bulunan application-cloud-gateway.yml
dosyasından ulaşılabilir.