Pattern Learning
Адаптивные рекомендации политик на основе паттернов выполнения команд с автоматическим approval automation
Обзор
Pattern Learning анализирует историю выполнения команд и автоматически формирует рекомендации по политикам. Система отслеживает частоту, контекст и результаты каждой команды. На основе этих данных она предлагает auto-approve для безопасных команд, эскалацию для подозрительных, и permanent deny для опасных. Поддерживается автоматическое создание политик на основе подтверждённых рекомендаций.
Авто-обнаружение
4 типа паттернов
Team+
Рекомендации
Auto-approve, block, monitor
Team+
Confidence
0.0-1.0 score
Team+
Auto-apply
Автоматическое создание политик
Enterprise
Как работает
Каждая выполненная команда проходит через Pattern Learner — компонент, который агрегирует статистику и рассчитывает рекомендации. Процесс полностью автоматический и происходит в реальном времени.
# Pattern Learning pipeline
1. Сбор:
Command executed → PatternLearner records (prefix, agent, time, result, risk_score)
# 2. Анализ:
frequency, success_rate, avg_risk, time_distribution, agent_spread
# 3. Классификация:
auto_approve / suggest_approve / monitor / suggest_block / auto_block
# 4. Рекомендация:
Dashboard notification → admin review → apply/reject → policy update
>20 выполнений, 0 блокировок, risk < 10 → безопасная команда
Новое поведение, <5 выполнений → требует наблюдения
>10 блокировок, severity=critical → постоянный запрет
Типы паттернов
Pattern Learning анализирует команды по 4 измерениям, создавая комбинированную рекомендацию с confidence score.
Группировка по префиксу команды: "docker ps", "kubectl get pods", "npm test". Рассчитывается частота, success rate и avg risk score для каждого уникального префикса.
Паттерны конкретного агента: какие команды чаще всего выполняет, в какое время суток, с какими результатами. Позволяет выявить нетипичное поведение конкретного агента.
Временные паттерны: команды, которые выполняются только в рабочие часы (9-18) vs после часов. Команды, выполняющиеся впервые в нерабочее время, получают повышенный risk.
Паттерны ошибок: команды, которые часто завершаются с ошибкой (exit code != 0) или блокируются Shield. Высокий failure rate → подозрительная активность.
Пороги рекомендаций
Система классифицирует каждый паттерн на основе configurable thresholds. Thresholds можно настроить через конфигурацию организации.
| Рекомендация | Условие | Действие | Confidence |
|---|---|---|---|
| Auto-approve | >20 выполнений, 0 блокировок, risk < 10 | Авто-создание allow-правила | 0.95+ |
| Suggest approve | >10 выполнений, блокировок < 10%, risk < 30 | Предложение в dashboard | 0.80-0.94 |
| Monitor | Новое поведение, <5 выполнений | Уведомление администратора | 0.50-0.79 |
| Suggest block | >5 блокировок, risk > 70 | Предложение deny-правила | 0.80-0.94 |
| Auto-block | >10 блокировок, severity=critical | Авто-создание deny-правила | 0.95+ |
Схема паттерна
| Поле | Тип | Описание |
|---|---|---|
| id | string | Уникальный ID паттерна |
| command_prefix | string | Префикс команды (regexp) |
| total_executions | integer | Общее количество выполнений |
| blocked_count | integer | Количество блокировок |
| approved_count | integer | Количество approvals |
| avg_risk_score | float | Средний risk score (0-100) |
| last_executed | string | Последнее выполнение (ISO 8601) |
| agents | array | Список агентов, использовавших команду |
| recommendation | string | auto_approve, suggest_approve, monitor, suggest_block, auto_block |
| confidence | float | Confidence score (0.0-1.0) |
| created_at | string | Дата первого обнаружения |
API Reference
GET /api/v1/patterns
1# Все паттерны2curl -s "https://api.flowlink.io/v1/patterns?limit=10" \3 -H "Authorization: Bearer $TOKEN" | jq45# Только auto_approve рекомендации6curl -s "https://api.flowlink.io/v1/patterns?recommendation=auto_approve&confidence_min=0.9" \7 -H "Authorization: Bearer $TOKEN" | jq89# Паттерны конкретного агента10curl -s "https://api.flowlink.io/v1/patterns?agent_id=agent-prod-01" \11 -H "Authorization: Bearer $TOKEN" | jq
1{2 "patterns": [3 {4 "id": "pat_docker_ps_01",5 "command_prefix": "docker ps",6 "pattern_type": "command_prefix",7 "total_executions": 342,8 "blocked_count": 0,9 "approved_count": 0,10 "avg_risk_score": 3,11 "last_executed": "2026-01-15T14:30:00Z",12 "agents": ["agent-prod-01", "agent-prod-02", "agent-prod-03"],13 "time_distribution": {14 "work_hours_pct": 95,15 "after_hours_pct": 516 },17 "recommendation": "auto_approve",18 "confidence": 0.98,19 "created_at": "2025-12-01T00:00:00Z"20 },21 {22 "id": "pat_rm_rf_01",23 "command_prefix": "rm -rf",24 "pattern_type": "command_prefix",25 "total_executions": 12,26 "blocked_count": 11,27 "approved_count": 1,28 "avg_risk_score": 92,29 "last_executed": "2026-01-14T09:15:00Z",30 "agents": ["agent-prod-01"],31 "recommendation": "auto_block",32 "confidence": 0.97,33 "created_at": "2025-12-20T00:00:00Z"34 }35 ],36 "pagination": {37 "total": 156,38 "limit": 10,39 "offset": 0,40 "has_more": true41 }42}
Применение рекомендаций
POST /api/v1/patterns/{id}/apply
Подтверждение рекомендации создаёт политику автоматически. Политика привязывается к паттерну через source: pattern_learning.
1# Подтвердить рекомендацию (создать политику)2curl -X POST "https://api.flowlink.io/v1/patterns/pat_docker_ps_01/apply" \3 -H "Authorization: Bearer $TOKEN" \4 -H "Content-Type: application/json" \5 -d '{6 "action": "auto_approve",7 "policy_name": "auto: docker ps",8 "description": "Auto-approved based on pattern learning (342 executions, 0 blocks)"9 }'
1{2 "status": "applied",3 "policy_created": {4 "id": "pol_auto_docker_ps",5 "name": "auto: docker ps",6 "match": {7 "command": "docker ps*"8 },9 "action": "allow",10 "source": "pattern_learning",11 "pattern_id": "pat_docker_ps_01",12 "confidence": 0.98,13 "created_at": "2026-01-15T14:35:00Z"14 },15 "message": "Policy created. Commands matching 'docker ps*' will be auto-approved."16}
1# Отклонить рекомендацию2curl -X POST "https://api.flowlink.io/v1/patterns/pat_docker_ps_01/reject" \3 -H "Authorization: Bearer $TOKEN"
1{2 "status": "rejected",3 "pattern_id": "pat_docker_ps_01",4 "reason": "manual_rejection",5 "message": "Recommendation dismissed. Pattern will continue to be monitored."6}
Управление паттернами
GET /api/v1/patternsСписок паттернов (с фильтрами)GET /api/v1/patterns/{id}Детали паттернаPOST /api/v1/patterns/{id}/applyПодтвердить рекомендациюPOST /api/v1/patterns/{id}/rejectОтклонить рекомендациюGET /api/v1/patterns/{id}/historyИстория выполнения командыGET /api/v1/patterns/{id}/agentsАгенты, использовавшие командуPATCH /api/v1/patterns/configНастроить thresholdsPOST /api/v1/patterns/dry-runТестовая классификация командыТестовая классификация
Перед применением можно проверить, какая рекомендация будет сгенерирована для команды.
1curl -X POST "https://api.flowlink.io/v1/patterns/dry-run" \2 -H "Authorization: Bearer $TOKEN" \3 -H "Content-Type: application/json" \4 -d '{5 "command": "kubectl get pods",6 "agent_id": "agent-prod-01"7 }'
1{2 "command": "kubectl get pods",3 "existing_pattern": {4 "id": "pat_kubectl_get_pods",5 "total_executions": 287,6 "blocked_count": 0,7 "avg_risk_score": 2,8 "recommendation": "auto_approve",9 "confidence": 0.9910 },11 "would_create_policy": {12 "match": { "command": "kubectl get pods*" },13 "action": "allow"14 }15}
Хранение данных
| Данные | Retention | Примечание |
|---|---|---|
| Raw commands | 90 дней | Полный текст команды и context |
| Агрегированные паттерны | 1 год | Статистика и рекомендации |
| Созданные политики | Бессрочно | Политики из рекомендаций |
Пример: от команды к политике
Полный walkthrough процесса автоматического создания политики из паттерна.
Устранение неполадок
Паттерны не генерируются
Pattern Learning требует минимум 5 выполнений команды для генерации рекомендации. Проверьте, что feature включена для организации: GET /patterns/config.
Confidence score низкий
Низкий confidence означает недостаточно данных. Подождите накопления статистики. Для ускорения можно увеличить время наблюдения или количество агентов.
Неверная рекомендация (false positive)
Отклоните рекомендацию через POST /patterns/{id}/reject. Паттерн продолжит мониторинг. При необходимости отрегулируйте thresholds через PATCH /patterns/config.
Auto-apply создал неверную политику
Удалите политику через DELETE /policies/{id}. Отключите auto-apply через PATCH /patterns/config {"auto_apply": false}. На Enterprise тарифе auto-apply требует admin confirmation.
Лучшие практики
Дайте системе время обучиться
Не применяйте рекомендации в первые 2 недели. Дождитесь accumulation достаточной статистики (50+ выполнений для high confidence).
Используйте dry-run перед apply
Проверяйте классификацию через POST /patterns/dry-run перед подтверждением рекомендации.
Начните с suggest, не auto-apply
Сначала используйте ручное подтверждение рекомендаций. Переключайтесь на auto-apply только после проверки качества рекомендаций.
Регулярно просматривайте отклонённые
Отклонённые рекомендации тоже полезны — они показывают edge cases. Просматривайте их еженедельно для калибровки thresholds.
Мониторьте новые паттерны
Используйте webhook event pattern_new для уведомлений о новых обнаруженных паттернах. Это помогает быстро реагировать на аномалии.
Калибруйте thresholds
Thresholds по умолчанию подходят для большинства случаев, но могут быть настроены под специфику вашей среды через PATCH /patterns/config.