İçeriğe geç

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.

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.

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.

Terminal window
# YANLIŞ — makinedeki her kullanıcı ana anahtarı okuyabilir
java -Dins.master.key=... -jar inscada.jar
# DOĞRU
export INS_MASTER_KEY=...
java -jar inscada.jar

Uygulama 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.

Varsayılanı boş olan her değer, verilmesi gereken değerdir.

DeğişkenVarsayılanAçıklama
INS_MASTER_KEY—Zorunlu. Yukarıya bakın
DB_URLjdbc:postgresql://localhost:5432/inscadaPostgreSQL adresi
DB_USERNAME · DB_PASSWORDboşVeritabanı kimlik bilgileri
REDIS_HOST · REDIS_PORTlocalhost · 6379Redis
INFLUX_URL · INFLUX_DBhttp://localhost:8086 · inscadaTarihçe veritabanı
SSL_KEYSTORE · SSL_KEYSTORE_PASSWORDboşTLS anahtar deposu
APP_TRUSTSTORE · APP_TRUSTSTORE_PASSWORDboşGiden bağlantılar için güven deposu
LOG_FILE./logs/inscada.logGünlük dosyası
AyarVarsayılanİçeriği
ins.data.path./dataŞifreli sır demetinin yedeği ve çalışma verisi
ins.filesystem.path./fsYü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.

PortNe
8082Uygulama ve API
8083Sandbox

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).

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.

AyarKatmanVarsayılanAnlamı
INS_SANDBOX_ADDRESSbağlanmaboş → tüm arayüzlerSandbox’ın dinleyeceği adres. Aynı makinedeki bir vekil genel portu üstlendiğinde 127.0.0.1 verin
server.sandbox.portbağlanma8083Sandbox portu
INS_SANDBOX_URLduyurulanhttps://localhost:8083İstemcinin göreceği tam sandbox adresi
INS_APP_URLduyurulanhttps://localhost:8082Arka 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şimINS_SANDBOX_ADDRESSDuyurulan sandboxDuyurulan uygulama
Vekilsiz tek makineboşhttps://<makine>:8083https://<makine>:8082
Aynı makinede vekil127.0.0.1Vekilin genel adresiArka uç adresi
Ayrı makinede DMZiç ağ arayüzünün adresiGenel adresDMZ 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”).

  • /actuator/health — vekil göstergesi beklenen kipte, hiçbir bileşen DOWN değil. Kümelenmiş bir düğümde yük dengeleyiciyi ham /actuator/health yerine /actuator/health/readiness ile 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 8082 ve 8083 dışarıdan doğrudan erişilebilir değil, ve vekil X-Forwarded-Proto: https gö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.