Мрежови и TLS граници
Системата има два единствени официални DNS адреса:
HOSPITAL_CLINICAL_DOMAINобслужва Web, мобилното/PWA приложение, API и Status на/status/;HOSPITAL_RESEARCH_DOMAINобслужва само Research Browser.
Адресите трябва да са различни и двата да сочат към системата. Research и Status имат отделни списъци с разрешени мрежи. Заявка извън такъв списък трябва да получи HTTP 403; това е работеща граница, а не прекъсване.
Точни CIDR списъци
HOSPITAL_RESEARCH_ALLOWED_CIDRS ограничава от кои мрежи може да се отвори
уебсайтът Research Browser. Той не огражда изследователските данни: акаунт с
research grant може да достигне разрешените му данни през API на клиничния
адрес. Там ги пазят влизането в акаунта и авторизацията по grant, а не мрежата.
HOSPITAL_STATUS_ALLOWED_CIDRS е по-тясната граница за ИТ управление.
Воденият инсталатор не пита за нито един от двата списъка. След инсталиране
Status отговаря на трите RFC1918 диапазона с
HOSPITAL_NETWORK_ALLOW_ALL_PRIVATE=confirmed, за да може ИТ екипът да го отвори
и да зададе истинските списъци (за вход все пак са нужни парола и MFA), а
Research е 127.0.0.1/32, на което не отговаря нито един клиент. Status показва
и двата под Изисква внимание днес и спира Готовност, докато не се зададат в
Поддръжка → Настройки на сайта; промяната, след която нито един списък не
съдържа трите диапазона, изключва и превключвателя. Status може само да го
изключва.
Проверката приема IPv4 и IPv6 CIDR мрежи, разделени с интервали или запетаи, преобразува адресите в каноничната им мрежа, премахва повторенията и отказва:
- празна или невалидна стойност;
0.0.0.0/0и::/0;- трите общи RFC1918 диапазона, освен ако
HOSPITAL_NETWORK_ALLOW_ALL_PRIVATE=confirmed.
Стойностите в .env.example са само документационни мрежи и не съвпадат с
реален болничен клиент. Заменете ги при инсталиране.
Променяйте граница на инсталирана система чрез защитената процедура за връщане:
sudo sh /opt/lospor-hospital/current/scripts/configure-network-boundaries.sh \
--research '10.24.30.0/24 fd12:3456:789a:30::/64' \
--status '10.24.40.0/24 fd12:3456:789a:40::/64'
Командата канонизира двете стойности, проверява Compose и точната Caddy
конфигурация за избрания режим, защитава предишните стойности и възстановява
старите site.env и .env, ако edge услугата не може да се стартира. След това изпълнете:
sudo sh /opt/lospor-hospital/current/scripts/readiness-check.sh --strict
Само ако болницата официално е документирала трите RFC1918 диапазона като една граница, са необходими и двата изрични флага. Те никога не разрешават мрежа, обхващаща целия интернет:
sudo sh /opt/lospor-hospital/current/scripts/configure-network-boundaries.sh \
--research '10.0.0.0/8 172.16.0.0/12 192.168.0.0/16' \
--status '10.24.40.0/24' \
--unsafe-all-rfc1918 --confirm-all-rfc1918
TLS режими
HOSPITAL_TLS_MODE е единственият избор за TLS:
| Режим | Сертификат | Порт 80 на сървъра |
|---|---|---|
operator | secrets/tls/fullchain.pem и secrets/tls/private.key, издадени от ИТ екипа | не се публикува |
acme | публичен ACME удостоверяващ орган | публикува се от фиксирания профил tls-acme |
local | локален орган на Caddy, само за тест | не се публикува |
COMPOSE_PROFILES се извежда автоматично: точно tls-acme при ACME и празна
стойност при другите режими. Свободните настройки
HOSPITAL_CADDY_GLOBAL_EXTRA и HOSPITAL_CADDY_SITE_EXTRA са забранени,
защото добавена Caddy директива може да изпревари мрежовата граница.
При режим operator задайте HOSPITAL_TLS_VERIFY_CA към доверения CA на
болницата. Строгата проверка за готовност проверява режима на файла с ключа,
съответствието ключ/сертификат, двете DNS имена, предназначението за TLS сървър,
срока, пълната верига и CA и изисква поне 30 оставащи дни. Инсталирането и
обновяването проверяват и Caddyfile преди стартиране на нов listener:
sudo sh /opt/lospor-hospital/current/scripts/validate-caddy-config.sh
sudo sh /opt/lospor-hospital/current/scripts/readiness-check.sh --strict
Промяната на TLS режима е ИТ дейност в прозорец за поддръжка. Променете
HOSPITAL_TLS_MODE, изведения COMPOSE_PROFILES, CA пътя/файловете при нужда и
изпълнете двете проверки преди пресъздаване на caddy (и acme-http само при
ACME). Не стартирайте частично променена двойка; готовността умишлено я отчита
като грешка.
Система, която се обновява от 1.1.x, няма официални полета за режим/профил. Обновяването до 1.2.1 умишлено не отгатва начина за издаване на болничния сертификат и не запазва широка стойност по подразбиране за Status. ИТ екипът трябва еднократно да избере реалния TLS режим, свързания профил и двете точни CIDR граници. При липса на решение обновяването спира безопасно и никога не преминава мълчаливо към ACME.
След това scripts/doctor.sh проверява Web, PWA, API, Status, Research Browser
и действащия сертификат за двете имена на конфигурирания HTTPS порт. За
клиничния/Research вход никога не използва --insecure.