235 lines
5.3 KiB
JSON
235 lines
5.3 KiB
JSON
{
|
|
"date": "2026-10-07",
|
|
"source": "673e5ba",
|
|
"authRequired": true,
|
|
"denials": [
|
|
{
|
|
"label": "anonymous",
|
|
"method": "GET",
|
|
"path": "backup",
|
|
"status": 401,
|
|
"error": "Unauthorized"
|
|
},
|
|
{
|
|
"label": "anonymous",
|
|
"method": "POST",
|
|
"path": "restore",
|
|
"status": 401,
|
|
"error": "Unauthorized"
|
|
},
|
|
{
|
|
"label": "settings-writer",
|
|
"method": "GET",
|
|
"path": "backup",
|
|
"status": 403,
|
|
"error": "Недостаточно прав: mm:settings:admin"
|
|
},
|
|
{
|
|
"label": "settings-writer",
|
|
"method": "POST",
|
|
"path": "restore",
|
|
"status": 403,
|
|
"error": "Недостаточно прав: mm:settings:admin"
|
|
},
|
|
{
|
|
"label": "wrong-app",
|
|
"method": "GET",
|
|
"path": "backup",
|
|
"status": 403,
|
|
"error": "Нет доступа к приложению MikrotikManager"
|
|
},
|
|
{
|
|
"label": "wrong-app",
|
|
"method": "POST",
|
|
"path": "restore",
|
|
"status": 403,
|
|
"error": "Нет доступа к приложению MikrotikManager"
|
|
},
|
|
{
|
|
"label": "wrong-issuer",
|
|
"method": "GET",
|
|
"path": "backup",
|
|
"status": 401,
|
|
"error": "Unauthorized"
|
|
},
|
|
{
|
|
"label": "wrong-issuer",
|
|
"method": "POST",
|
|
"path": "restore",
|
|
"status": 401,
|
|
"error": "Unauthorized"
|
|
}
|
|
],
|
|
"backup": {
|
|
"status": 200,
|
|
"bytes": 475225,
|
|
"sha256": "a6b66402b28bdb146cae9712c384979aa1c1000fee19cbc97c0ec045b673c002",
|
|
"signature": "PGDMP",
|
|
"filename": "attachment; filename=\"mikrotik-manager_2026-10-07_15-31-18.dump\"",
|
|
"outcome": {}
|
|
},
|
|
"conflict": {
|
|
"date": "2026-10-07",
|
|
"scenario": "PG-5",
|
|
"authRequired": false,
|
|
"activeDump": [
|
|
{
|
|
"application_name": "pg_dump",
|
|
"wait_event_type": "Lock",
|
|
"wait_event": "relation"
|
|
}
|
|
],
|
|
"second": {
|
|
"method": "POST",
|
|
"path": "restore",
|
|
"status": 409,
|
|
"body": {
|
|
"error": "Операция с базой приложения уже выполняется"
|
|
}
|
|
},
|
|
"first": {
|
|
"method": "GET",
|
|
"path": "backup",
|
|
"status": 200,
|
|
"bytes": 478793,
|
|
"signature": "PGDMP"
|
|
}
|
|
},
|
|
"controls": {
|
|
"mmapp": {
|
|
"servers": [
|
|
{
|
|
"id": "1",
|
|
"host": "194.226.121.150"
|
|
},
|
|
{
|
|
"id": "2",
|
|
"host": "104.165.244.7"
|
|
}
|
|
],
|
|
"uptimeSettings": [
|
|
{
|
|
"id": "1",
|
|
"retention_days": 14
|
|
}
|
|
],
|
|
"migrations": [
|
|
{
|
|
"id": "0000_postgresql"
|
|
},
|
|
{
|
|
"id": "0002_compact_schema"
|
|
},
|
|
{
|
|
"id": "0003_backup_s3"
|
|
},
|
|
{
|
|
"id": "0004_geoip_settings"
|
|
},
|
|
{
|
|
"id": "0005_flow_facts"
|
|
},
|
|
{
|
|
"id": "0006_config_revisions"
|
|
},
|
|
{
|
|
"id": "0007_flow_buckets_nat"
|
|
},
|
|
{
|
|
"id": "0008_alert_outbox_outcomes"
|
|
},
|
|
{
|
|
"id": "0009_alert_outbox_resolution"
|
|
}
|
|
],
|
|
"speed": {
|
|
"count": 5,
|
|
"digest": "6d82b65f9ca64a309d5bf6a60163135a"
|
|
},
|
|
"serversSequence": {
|
|
"last_value": "2",
|
|
"is_called": true
|
|
}
|
|
},
|
|
"mmapp_acceptance_20261007": {
|
|
"servers": [
|
|
{
|
|
"id": "1",
|
|
"host": "194.226.121.150"
|
|
},
|
|
{
|
|
"id": "2",
|
|
"host": "104.165.244.7"
|
|
}
|
|
],
|
|
"uptimeSettings": [
|
|
{
|
|
"id": "1",
|
|
"retention_days": 14
|
|
}
|
|
],
|
|
"migrations": [
|
|
{
|
|
"id": "0000_postgresql"
|
|
},
|
|
{
|
|
"id": "0002_compact_schema"
|
|
},
|
|
{
|
|
"id": "0003_backup_s3"
|
|
},
|
|
{
|
|
"id": "0004_geoip_settings"
|
|
},
|
|
{
|
|
"id": "0005_flow_facts"
|
|
},
|
|
{
|
|
"id": "0006_config_revisions"
|
|
},
|
|
{
|
|
"id": "0007_flow_buckets_nat"
|
|
},
|
|
{
|
|
"id": "0008_alert_outbox_outcomes"
|
|
},
|
|
{
|
|
"id": "0009_alert_outbox_resolution"
|
|
}
|
|
],
|
|
"speed": {
|
|
"count": 5,
|
|
"digest": "6d82b65f9ca64a309d5bf6a60163135a"
|
|
},
|
|
"serversSequence": {
|
|
"last_value": "2",
|
|
"is_called": true
|
|
}
|
|
}
|
|
},
|
|
"controlsMatch": true,
|
|
"scratchRestore": {
|
|
"database": "mmapp_acceptance_20261007",
|
|
"exitCode": 0,
|
|
"method": "pg_restore --single-transaction --exit-on-error",
|
|
"apiRestoreTested": false
|
|
},
|
|
"limits": [
|
|
"No live database restore performed",
|
|
"PG-6 pending: scheduler jobs and flow flush are not awaited",
|
|
"JWT generated in memory with test issuer; real Portal SSO not tested",
|
|
"No pg_dump/pg_restore process tracing during denied requests; PG-7 only HTTP RBAC evidence",
|
|
"Initial PG-5 observer reused transaction snapshot; rerun used separate observer connection",
|
|
"Initial control query used incorrect table name; corrected to uptime_speed_test_runs"
|
|
],
|
|
"archiveValidation": {
|
|
"tocEntries": 907,
|
|
"requiredObjects": {
|
|
"servers": true,
|
|
"uptime_settings": true,
|
|
"uptime_speed_test_runs": true,
|
|
"schema_migrations": true
|
|
},
|
|
"clientVersion": "pg_restore (PostgreSQL) 18.6 (Debian 18.6-1.pgdg12+2)"
|
|
}
|
|
} |