Skip to content
ВозможностиДокументацияЦеныПартнёрыPlaygroundFAQ

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

✅ Auto-approve

>20 выполнений, 0 блокировок, risk < 10 → безопасная команда

⚠️ Monitor

Новое поведение, <5 выполнений → требует наблюдения

🚫 Auto-block

>10 блокировок, severity=critical → постоянный запрет

Типы паттернов

Pattern Learning анализирует команды по 4 измерениям, создавая комбинированную рекомендацию с confidence score.

Command Prefix

Группировка по префиксу команды: "docker ps", "kubectl get pods", "npm test". Рассчитывается частота, success rate и avg risk score для каждого уникального префикса.

Agent Pattern

Паттерны конкретного агента: какие команды чаще всего выполняет, в какое время суток, с какими результатами. Позволяет выявить нетипичное поведение конкретного агента.

Time Pattern

Временные паттерны: команды, которые выполняются только в рабочие часы (9-18) vs после часов. Команды, выполняющиеся впервые в нерабочее время, получают повышенный risk.

Failure Pattern

Паттерны ошибок: команды, которые часто завершаются с ошибкой (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Предложение в dashboard0.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+

Схема паттерна

ПолеТипОписание
idstringУникальный ID паттерна
command_prefixstringПрефикс команды (regexp)
total_executionsintegerОбщее количество выполнений
blocked_countintegerКоличество блокировок
approved_countintegerКоличество approvals
avg_risk_scorefloatСредний risk score (0-100)
last_executedstringПоследнее выполнение (ISO 8601)
agentsarrayСписок агентов, использовавших команду
recommendationstringauto_approve, suggest_approve, monitor, suggest_block, auto_block
confidencefloatConfidence score (0.0-1.0)
created_atstringДата первого обнаружения

API Reference

GET /api/v1/patterns

bash
1# Все паттерны
2curl -s "https://api.flowlink.io/v1/patterns?limit=10" \
3 -H "Authorization: Bearer $TOKEN" | jq
4
5# Только auto_approve рекомендации
6curl -s "https://api.flowlink.io/v1/patterns?recommendation=auto_approve&confidence_min=0.9" \
7 -H "Authorization: Bearer $TOKEN" | jq
8
9# Паттерны конкретного агента
10curl -s "https://api.flowlink.io/v1/patterns?agent_id=agent-prod-01" \
11 -H "Authorization: Bearer $TOKEN" | jq
json
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": 5
16 },
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": true
41 }
42}

Применение рекомендаций

POST /api/v1/patterns/{id}/apply

Подтверждение рекомендации создаёт политику автоматически. Политика привязывается к паттерну через source: pattern_learning.

bash
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 }'
json
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}
bash
1# Отклонить рекомендацию
2curl -X POST "https://api.flowlink.io/v1/patterns/pat_docker_ps_01/reject" \
3 -H "Authorization: Bearer $TOKEN"
json
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Настроить thresholds
POST /api/v1/patterns/dry-runТестовая классификация команды

Тестовая классификация

Перед применением можно проверить, какая рекомендация будет сгенерирована для команды.

bash
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 }'
json
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.99
10 },
11 "would_create_policy": {
12 "match": { "command": "kubectl get pods*" },
13 "action": "allow"
14 }
15}

Хранение данных

ДанныеRetentionПримечание
Raw commands90 днейПолный текст команды и context
Агрегированные паттерны1 годСтатистика и рекомендации
Созданные политикиБессрочноПолитики из рекомендаций

Пример: от команды к политике

Полный walkthrough процесса автоматического создания политики из паттерна.

1. Агент выполняет "kubectl get pods" 25 раз за неделю — все разрешены, risk score avg = 5
2. Pattern Learner анализирует: 25 выполнений, 0 блокировок, avg risk = 5, 3 агента
3. Генерируется рекомендация: auto_approve с confidence 0.95
4. Администратор видит рекомендацию в dashboard и подтверждает через API
5. Автоматически создаётся policy: {"match": {"command": "kubectl get pods*"}, "action": "allow", "source": "pattern_learning"}
6. Последующие выполнения "kubectl get pods" одобряются автоматически без approval workflow

Устранение неполадок

Паттерны не генерируются

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.

Edit this page