Yapılandırma
inSCADA yerinde kurulumda ortam değişkenleriyle yapılandırılır. Dosya düzenlemeden önce bilinmesi gereken iki şey vardır: uygulamanın onsuz açılmadığı bir ana anahtar, ve sırların sürece nasıl geçirileceği.
Ana anahtar — INS_MASTER_KEY
Section titled “Ana anahtar — INS_MASTER_KEY”Kurulumun tek elle verilen sırrı budur. Boşsa uygulama başlamaz.
Geri kalan anahtarlar — arayüz oturum anahtarı, veritabanındaki şifreli sütunları açan öznitelik anahtarı, küme anahtarı, kod bütünlük anahtarı ve elektronik imza anahtarı — ilk açılışta kendiliğinden üretilir ve şifreli olarak saklanır. Bunları siz belirlemezsiniz, bir yere yazmazsınız. Şifreli demet Redis’te ve yedek olarak ${ins.data.path}/secrets.json dosyasında durur; onu açan anahtar ise INS_MASTER_KEY’den türetilir (PBKDF2).
Anahtar kurulum başına bir kez seçilir; sonradan döndürmek için bir yol yoktur.
Sırlar komut satırına yazılmaz
Section titled “Sırlar komut satırına yazılmaz”Değeri sır olan her ayar sürece ortam değişkeni olarak verilir — java komut satırında -D ile veya program argümanı olarak değil.
Bu bir biçim tercihi değil: bir sürecin argümanları herkese açıktır. Makinede oturumu olan her hesap çalışan süreçlerin komut satırını okuyabilir; ayrıcalık gerekmez. Ortam değişkeni böyle değildir, yalnız sürecin sahibi okuyabilir.
# YANLIŞ — makinedeki her kullanıcı ana anahtarı okuyabilirjava -Dins.master.key=... -jar inscada.jar
# DOĞRUexport INS_MASTER_KEY=...java -jar inscada.jarUygulama bunu açılışta söyler: komut satırından gelen her hassas ayar için günlüğe bir uyarı satırı düşer — ayarın adını yazar, değerini asla. Açılış başarısız olmaz, çünkü doğru bir değer yüzünden tesisi durdurmak doğru olmaz. Dağıtımdan sonra açılış günlüğüne bakın; temiz bir başlangıçta bu satırlardan hiçbiri yoktur.
Aynısı süreci saran her şey için geçerlidir. Bir systemd birimi sırları ExecStart= satırına koymak yerine EnvironmentFile= ile okur (dosya yalnız servis hesabına okunur olacak şekilde); bir konteyner --env-file veya sır bağlama kullanır. Windows’ta bir servis sarmalayıcı kullanıyorsanız ortamı aynı şekilde, komut satırından değil, kısıtlı izinli bir ortam dosyasından yükleyin.
Temel ayarlar
Section titled “Temel ayarlar”Varsayılanı boş olan her değer, verilmesi gereken değerdir.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
INS_MASTER_KEY | — | Zorunlu. Yukarıya bakın |
DB_URL | jdbc:postgresql://localhost:5432/inscada | PostgreSQL adresi |
DB_USERNAME · DB_PASSWORD | boş | Veritabanı kimlik bilgileri |
REDIS_HOST · REDIS_PORT | localhost · 6379 | Redis |
INFLUX_URL · INFLUX_DB | http://localhost:8086 · inscada | Tarihçe veritabanı |
SSL_KEYSTORE · SSL_KEYSTORE_PASSWORD | boş | TLS anahtar deposu |
APP_TRUSTSTORE · APP_TRUSTSTORE_PASSWORD | boş | Giden bağlantılar için güven deposu |
LOG_FILE | ./logs/inscada.log | Günlük dosyası |
Dizinler
Section titled “Dizinler”| Ayar | Varsayılan | İçeriği |
|---|---|---|
ins.data.path | ./data | Şifreli sır demetinin yedeği ve çalışma verisi |
ins.filesystem.path | ./fs | Yüklenen dosyalar |
Yollar çalışma dizinine görelidir. Kurulum dizinini yedeklerken bu ikisini kapsadığınızdan emin olun.
Birden fazla kurulum aynı Redis’i paylaşıyorsa
Section titled “Birden fazla kurulum aynı Redis’i paylaşıyorsa”Bir kurulumun Redis’te tuttuğu her şey — sır demeti, küme liderlik kaydı, canlı değerler, oturumlar — tek bir mantıksal veritabanında durur (ayarlanmadığında 0). Aynı Redis’e bakan ikinci bir kurulum (üretimin yanındaki bir test örneği, ya da ikinci bir tesis) farklı bir veritabanı numarası kullanmalıdır; aksi hâlde ikisi aynı alanı paylaşır.
Portlar ve kaynaklar
Section titled “Portlar ve kaynaklar”| Port | Ne |
|---|---|
8082 | Uygulama ve API |
8083 | Sandbox |
Sandbox ayrı bir kaynak (origin) olarak tasarlanmıştır: Custom HTML sayfaları ve animasyon script’leri yalıtılmış bir çerçevede çalışır ve bu ayrım yalıtımın sınırıdır.
Çerezler ana makineye bağlı olduğundan, sandbox kaynağı uygulamayla aynı ana makinede olmalıdır. Farklı makinelerde olurlarsa çerezler çerçeveye ulaşmaz; çözüm çerezin alanını genişletmek değil, sandbox’ı aynı ana makineye çekmektir (genelde :8083’ü önüne alan aynı makinedeki bir vekil ile).
Bağlanan ve duyurulan ayarlar
Section titled “Bağlanan ve duyurulan ayarlar”Dört ayar yerleşimi belirler. İkisi bağlanma (sunucunun nerede dinlediği), ikisi duyurulan (istemciye hangi adresin söylendiği) ayarıdır. Bunlar bilinçli olarak ayrıdır: bir vekilin arkasında sunucunun dinlediği port ile istemcinin gördüğü adres meşru biçimde farklı olur.
| Ayar | Katman | Varsayılan | Anlamı |
|---|---|---|---|
INS_SANDBOX_ADDRESS | bağlanma | boş → tüm arayüzler | Sandbox’ın dinleyeceği adres. Aynı makinedeki bir vekil genel portu üstlendiğinde 127.0.0.1 verin |
server.sandbox.port | bağlanma | 8083 | Sandbox portu |
INS_SANDBOX_URL | duyurulan | https://localhost:8083 | İstemcinin göreceği tam sandbox adresi |
INS_APP_URL | duyurulan | https://localhost:8082 | Arka uç / API adresi |
Duyurulan adresler tam eşleşmeli bir izin listesidir, joker kabul etmez. Yanlış bir değer yalnızca kendi kurulumunuzu bozar — çerçeve render edilmez ya da bir kaynak güvenilmez sayılır.
Üç yerleşim
Section titled “Üç yerleşim”| Yerleşim | INS_SANDBOX_ADDRESS | Duyurulan sandbox | Duyurulan uygulama |
|---|---|---|---|
| Vekilsiz tek makine | boş | https://<makine>:8083 | https://<makine>:8082 |
| Aynı makinede vekil | 127.0.0.1 | Vekilin genel adresi | Arka uç adresi |
| Ayrı makinede DMZ | iç ağ arayüzünün adresi | Genel adres | DMZ adresi |
Aynı makinede vekil kullanırken genel portu vekilde makinenin gerçek adresine bağlayın ve 127.0.0.1:8083’e yönlendirin; çıplak bir :8083 bloğu tüm arayüzlere bağlanır ve loopback dinleyicisiyle çakışır (“address already in use”).
Kurulum sonrası kontrol listesi
Section titled “Kurulum sonrası kontrol listesi”/actuator/health— vekil göstergesi beklenen kipte, hiçbir bileşenDOWNdeğil. Kümelenmiş bir düğümde yük dengeleyiciyi ham/actuator/healthyerine/actuator/health/readinessile yoklayın.- Açılış günlüğünde vekil uyarısı yok ve komut satırından sır geldiğini bildiren satır yok.
- Ters vekil kullanılıyorsa
8082ve8083dışarıdan doğrudan erişilebilir değil, ve vekilX-Forwarded-Proto: httpsgönderiyor. - Tarayıcıda bir Custom HTML sayfası ya da animasyon açılıyor — bu, sandbox kaynağını ve çerez akışını uçtan uca sınar.
INS_MASTER_KEYürünün dışında bir yere kaydedildi.