chore(github): generic example.com in docs, remove mirror scripts
Replace sac.kalinamall.ru with sac.example.com in public docs/deploy. Remove Push-Mirror and Rewrite-GitHostUrls scripts from repo. Simplify workspace-three-repos.md for GitHub-only workflow. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
| Параметр | Пример |
|
||||
|----------|--------|
|
||||
| FQDN | `sac.kalinamall.ru` |
|
||||
| FQDN | `sac.example.com` |
|
||||
| IP | `10.0.0.50` |
|
||||
| Каталог | `/opt/security-alert-center` |
|
||||
| Пользователь сервиса | `sac` |
|
||||
@@ -144,7 +144,7 @@ sudo chmod 600 /opt/security-alert-center/config/sac-api.env
|
||||
|
||||
- `DATABASE_URL` — с паролем PostgreSQL из шага 4 (если в пароле есть `#`, `@`, `%` — возьмите значение в **кавычки**: `DATABASE_URL="postgresql+psycopg2://..."`)
|
||||
- `JWT_SECRET` — `openssl rand -hex 32`
|
||||
- `SAC_PUBLIC_URL` — `https://sac.kalinamall.ru`
|
||||
- `SAC_PUBLIC_URL` — `https://sac.example.com`
|
||||
- `SAC_BOOTSTRAP_API_KEY` — `python3.12 -c "import secrets; print('sac_'+secrets.token_urlsafe(32))"`
|
||||
- `SAC_ADMIN_PASSWORD` — пароль входа в веб-UI (отдельно от API key агентов)
|
||||
- `EVENT_SCHEMA_PATH=/opt/security-alert-center/schemas/event-schema-v1.json`
|
||||
@@ -195,7 +195,7 @@ journalctl -u sac-api -f
|
||||
## 9. nginx и TLS
|
||||
|
||||
Для KalinaMall: **корпоративный wildcard VeriSign** (или DigiCert), не Let's Encrypt.
|
||||
Хост `sac.kalinamall.ru` должен попадать под `*.kalinamall.ru`.
|
||||
Хост `sac.example.com` должен попадать под `*.example.com`.
|
||||
|
||||
**Подробно:** форматы, scp с Windows/Linux, `.pfx` → PEM, права — **[ssl-certificate.md](ssl-certificate.md)**.
|
||||
|
||||
@@ -223,7 +223,7 @@ sudo usermod -aG ssl-cert www-data
|
||||
|
||||
```bash
|
||||
# с вашего компьютера:
|
||||
scp fullchain.pem privkey.pem papatramp@<IP_SAC>:/tmp/
|
||||
scp fullchain.pem privkey.pem deploy@<IP_SAC>:/tmp/
|
||||
|
||||
# на сервере:
|
||||
sudo mv /tmp/fullchain.pem /tmp/privkey.pem /etc/ssl/sac/
|
||||
@@ -263,28 +263,28 @@ sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
Шаблон `sac.conf.tls.example` содержит **default_server** с `return 444` (:80) и `ssl_reject_handshake` (:443) для любого Host, кроме `sac.kalinamall.ru`. Это защищает от ситуации, когда на IP SAC (например `192.168.160.145`) по ошибке DNS попадает `ext.kalinamall.ru` и открывается форма входа SAC.
|
||||
Шаблон `sac.conf.tls.example` содержит **default_server** с `return 444` (:80) и `ssl_reject_handshake` (:443) для любого Host, кроме `sac.example.com`. Это защищает от ситуации, когда на IP SAC (например `<SAC_SERVER_IP>`) по ошибке DNS попадает `ext.example.com` и открывается форма входа SAC.
|
||||
|
||||
Проверка после reload:
|
||||
|
||||
```bash
|
||||
curl -sS -o /dev/null -w '%{http_code}\n' --resolve sac.kalinamall.ru:443:127.0.0.1 https://sac.kalinamall.ru/health
|
||||
curl -sS -o /dev/null -w '%{http_code}\n' --resolve sac.example.com:443:127.0.0.1 https://sac.example.com/health
|
||||
# ожидается 200
|
||||
|
||||
curl -sS -o /dev/null -w '%{http_code}\n' --resolve ext.kalinamall.ru:443:127.0.0.1 https://ext.kalinamall.ru/ 2>/dev/null || echo "connection closed (444/reject OK)"
|
||||
curl -sS -o /dev/null -w '%{http_code}\n' --resolve ext.example.com:443:127.0.0.1 https://ext.example.com/ 2>/dev/null || echo "connection closed (444/reject OK)"
|
||||
```
|
||||
|
||||
Проверка:
|
||||
|
||||
```bash
|
||||
curl -sS https://sac.kalinamall.ru/health | jq .
|
||||
curl -sS https://sac.example.com/health | jq .
|
||||
```
|
||||
|
||||
В `config/sac-api.env` должно быть: `SAC_PUBLIC_URL=https://sac.kalinamall.ru`
|
||||
В `config/sac-api.env` должно быть: `SAC_PUBLIC_URL=https://sac.example.com`
|
||||
|
||||
### 9.3. Агенты (ssh-monitor, RDP) и доверие к CA
|
||||
|
||||
- Агенты ходят на `https://sac.kalinamall.ru/api/v1/events`.
|
||||
- Агенты ходят на `https://sac.example.com/api/v1/events`.
|
||||
- Если используется **внутренний корневой CA**, а не публичный VeriSign/DigiCert в системном store — на Linux/Windows может понадобиться установка корневого сертификата в доверенные (или корпоративный прокси с подменой TLS).
|
||||
- Для публичного коммерческого wildcard от известного УЦ обычно **дополнительных действий на агентах не нужно**.
|
||||
|
||||
@@ -299,7 +299,7 @@ curl -sS https://sac.kalinamall.ru/health | jq .
|
||||
```bash
|
||||
sudo cp deploy/nginx/sac.conf.example /etc/nginx/sites-available/sac
|
||||
# ... nginx -t, reload, затем:
|
||||
sudo certbot --nginx -d sac.kalinamall.ru
|
||||
sudo certbot --nginx -d sac.example.com
|
||||
```
|
||||
|
||||
---
|
||||
@@ -317,7 +317,7 @@ ls -la dist/index.html
|
||||
sudo systemctl restart sac-api
|
||||
```
|
||||
|
||||
В `config/sac-api.env` задайте `SAC_ADMIN_PASSWORD`, затем откройте `https://sac.kalinamall.ru/` (логин `SAC_ADMIN_USERNAME`, по умолчанию `admin`).
|
||||
В `config/sac-api.env` задайте `SAC_ADMIN_PASSWORD`, затем откройте `https://sac.example.com/` (логин `SAC_ADMIN_USERNAME`, по умолчанию `admin`).
|
||||
|
||||
После обновления с multi-user (миграция `009_sac_users`): выполните `alembic upgrade head` в каталоге `backend/`. При первом старте API создаст пользователя **admin** из `SAC_ADMIN_*`, если таблица `sac_users` пуста.
|
||||
|
||||
@@ -343,7 +343,7 @@ curl -sS http://127.0.0.1:8000/health | jq .
|
||||
Через nginx (после TLS):
|
||||
|
||||
```bash
|
||||
curl -sS https://sac.kalinamall.ru/health | jq .
|
||||
curl -sS https://sac.example.com/health | jq .
|
||||
```
|
||||
|
||||
Тест ingest (подставьте `SAC_BOOTSTRAP_API_KEY`):
|
||||
|
||||
Reference in New Issue
Block a user