GitOps
Управление политиками и конфигурацией FlowLink как кодом в Git. Все изменения проходят ревью через Pull Request перед применением к агентам.
--features gitopsКак работает
1 Git Push2 │3 ▼4 Webhook (GitHub / GitLab)5 │6 ▼7 FlowLink валидирует8 │9 ▼10 PR комментарий с diff11 ├── Риск-оценка12 ├── Compliance проверка13 └── Статус одобрения14 │15 ▼16 Merge17 │18 ▼19 Auto-apply к агентам
Цикл начинается с push в репозиторий и заканчивается автоматическим применением политик ко всем агентам после успешного merge.
Структура репозитория
1flowlink-policies/2├── policies/ # Политики Shield и Relay3│ ├── shield/4│ │ ├── prompt-injection.yaml5│ │ └── pii-filter.yaml6│ └── relay/7│ ├── rate-limit.yaml8│ └── content-filter.yaml9├── config/ # Конфигурация агентов и сервисов10│ ├── relay.yaml11│ ├── shield.yaml12│ └── alerts.yaml13├── agents/ # Специфичные настройки агентов14│ ├── agent-prod.yaml15│ └── agent-staging.yaml16└── secrets/ # Зашифрованные секреты (SOPS/GPG)17 ├── api-keys.enc.yaml18 └── tls-certs.enc.yaml
Рекомендуемая структура репозитория. Секреты должны быть зашифрованы с помощью SOPS или GPG.
Policy as Code
Политики определяются в YAML-файлах с метаданными, версией и правилами. Каждое изменение видно в diff PR - можно ревьюировать изменения политик как обычный код.
1# policies/shield/prompt-injection.yaml2apiVersion: flowlink.ai/v13kind: ShieldPolicy4metadata:5 name: prompt-injection6 version: "1.2.0"7 description: "Блокировка prompt-injection атак"8 author: security-team9 created: "2026-01-15"1011spec:12 mode: enforce # enforce | monitor | dry-run13 severity: critical14 rules:15 - id: injection-pattern-116 pattern: "ignore previous instructions"17 action: block18 confidence: 0.9519 - id: injection-pattern-220 pattern: "you are now"21 action: block22 confidence: 0.9023 response:24 block_message: "Запрос заблокирован: обнаружена попытка prompt-injection"25 log: true26 alert: true
Версионирование
Каждая политика имеет version и описание. История изменений хранится в Git.
Diff Review
Изменения политик видны в PR diff. Можно сравнить старую и новую версию.
Валидация
FlowLink проверяет схему YAML и корректность правил перед применением.
Configuration as Code
Конфигурация всех компонентов FlowLink хранится в YAML-файлах. Включая настройки Relay, Shield и алертов.
1# config/relay.yaml2apiVersion: flowlink.ai/v13kind: RelayConfig4metadata:5 name: relay-prod6spec:7 listen: "0.0.0.0:8080"8 tls:9 enabled: true10 cert_secret: "secrets/tls-certs.enc.yaml"11 rate_limits:12 requests_per_minute: 100013 burst: 5014 backends:15 - name: gpt416 endpoint: "https://api.openai.com/v1"17 model: "gpt-4"18 timeout: 30s1920---21# config/shield.yaml22apiVersion: flowlink.ai/v123kind: ShieldConfig24metadata:25 name: shield-prod26spec:27 default_mode: enforce28 scan_body: true29 max_request_size: "1MB"30 policies:31 - "policies/shield/prompt-injection.yaml"32 - "policies/shield/pii-filter.yaml"3334---35# config/alerts.yaml36apiVersion: flowlink.ai/v137kind: AlertConfig38metadata:39 name: alerts-prod40spec:41 channels:42 - type: slack43 webhook_url_secret: "secrets/slack-webhook.enc.yaml"44 severity: [critical, high]45 - type: pagerduty46 integration_key_secret: "secrets/pagerduty.enc.yaml"47 severity: [critical]48 rules:49 - event: policy_violation50 severity: high51 threshold: 1052 window: 5m
Настройка Webhook
FlowLink принимает вебхуки от GitHub и GitLab для автоматического обнаружения изменений в репозитории политик.
GitHub
1# Настройка GitHub webhook2gh api repos/${ORG}/${REPO}/hooks \3 --input - <<'EOF'4{5 "name": "web",6 "active": true,7 "events": ["push", "pull_request"],8 "config": {9 "url": "https://flowlink.example.com/api/v1/gitops/webhook",10 "content_type": "json",11 "secret": "YOUR_WEBHOOK_SECRET"12 }13}14EOF
GitLab
1# Настройка GitLab webhook2# Settings -> Webhooks -> Add new webhook3# URL: https://flowlink.example.com/api/v1/gitops/webhook4# Secret: YOUR_WEBHOOK_SECRET5# Triggers: Push events, Merge request events
POST /api/v1/gitops/webhook - единый эндпоинт для обработки вебхуков GitHub и GitLab. Определяет источник автоматически по заголовкам.
PR интеграция
FlowLink автоматически публикует комментарии в Pull Request с результатами анализа изменений.
🤖 FlowLink GitOps Bot
Diff политик
1 policy/prompt-injection.yaml2 ~ version: "1.1.0" → "1.2.0"3 + pattern: "you are now"
Риск-оценка
1 Уровень риска: LOW2 Изменения затрагивают только правила блокировки
Compliance
1SOC2: OK | PCI-DSS: OK | GDPR: OK
Статус
1Одобрено - готово к merge
Auto-Apply
После merge в основную ветку политики автоматически применяются к агентам. Режим применения настраивается.
1# config/gitops.yaml2apiVersion: flowlink.ai/v13kind: GitOpsConfig4metadata:5 name: gitops6spec:7 apply_mode: auto # auto | manual | staged89 # Ручное одобрение10 # apply_mode: manual11 # Требует подтверждения через UI или API1213 # Поэтапное применение14 # apply_mode: staged15 # staged_rollout:16 # steps:17 # - agents: 10%18 # wait: 5m19 # - agents: 50%20 # wait: 10m21 # - agents: 100%2223 auto_rollback: true # Автоматический откат при ошибках24 rollback_timeout: 300s # Таймаут перед откатом
Auto
Применяется сразу после merge. Быстрый деплой для доверенных политик.
Manual
Требует ручного подтверждения через UI или API перед применением.
Staged
Поэтапное применение: 10% - 50% - 100% агентов с паузами между этапами.
Откат (Rollback)
Git revert автоматически запускает откат политик на агентах. FlowLink отслеживает историю применений и восстанавливает предыдущую версию.
1# Откат через git revert - FlowLink обнаружит и применит автоматически2git revert HEAD3git push origin main45# Или ручной откат через API6curl -X POST https://flowlink.example.com/api/v1/gitops/rollback \7 -H "Authorization: Bearer $TOKEN" \8 -d '{"version": "1.1.0", "reason": "rollback due to false positives"}'
⚠ При staged rollout откат применяется ко всем агентам одновременно, независимо от текущего этапа.
API
| Method | Path | Описание |
|---|---|---|
| GET | /api/v1/gitops/status | Статус синхронизации репозитория и агентов |
| POST | /api/v1/gitops/sync | Принудительная синхронизация с репозиторием |
| GET | /api/v1/gitops/history | История применений и откатов политик |
| POST | /api/v1/gitops/webhook | Обработка вебхуков GitHub / GitLab |
| POST | /api/v1/gitops/rollback | Ручной откат к указанной версии |
1# Пример: проверка статуса2curl -s https://flowlink.example.com/api/v1/gitops/status \3 -H "Authorization: Bearer $TOKEN" | jq .45# Пример: история применений6curl -s "https://flowlink.example.com/api/v1/gitops/history?limit=10" \7 -H "Authorization: Bearer $TOKEN" | jq .