Files
EvoFirewall/packages/db/migrations/017_policy_snapshots.sql
T
Denozordec 9fa6269174
quality / changes (push) Successful in 7s
quality / commitlint (push) Skipped
quality / openapi (push) Successful in 30s
quality / web (push) Successful in 1m3s
quality / api (push) Successful in 1m15s
quality / linux-agent-smoke (push) Failing after 27s
quality / docker-check (push) Failing after 2m28s
CD / quality (push) Failing after 5m52s
CD / publish (push) Skipped
feat: harden firewall policies telemetry and operations
Implement reliable agent apply, telemetry v2, analytics retention, guarded rollouts, enrollment, labels and webhooks. Improve ReUI frontend data safety and bounded list loading, and add Docker smoke, recovery and resource checks. Document local verification and pending native acceptance.
2026-10-26 13:10:58 +07:00

43 lines
1.8 KiB
SQL

CREATE TABLE policy_snapshots (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
source_agent_id TEXT,
source_generation INTEGER NOT NULL,
hash TEXT NOT NULL,
content_hash TEXT NOT NULL UNIQUE,
payload_json TEXT NOT NULL CHECK(length(CAST(payload_json AS BLOB)) <= 8388608),
payload_bytes INTEGER NOT NULL CHECK(payload_bytes >= 0 AND payload_bytes <= 8388608),
created_at TEXT NOT NULL
);
CREATE TABLE policy_rollouts (
id TEXT PRIMARY KEY,
snapshot_id TEXT NOT NULL REFERENCES policy_snapshots(id),
state TEXT NOT NULL CHECK(state IN ('canary','confirmed','rolled_back')),
version INTEGER NOT NULL DEFAULT 1,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE policy_rollout_targets (
rollout_id TEXT NOT NULL REFERENCES policy_rollouts(id) ON DELETE CASCADE,
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
previous_snapshot_id TEXT NOT NULL REFERENCES policy_snapshots(id),
baseline_generation INTEGER NOT NULL,
previous_delivered_hash TEXT,
previous_delivered_revision INTEGER,
previous_applied_hash TEXT,
previous_applied_revision INTEGER,
is_canary INTEGER NOT NULL CHECK(is_canary IN (0,1)),
phase TEXT NOT NULL CHECK(phase IN ('pending','candidate','rollback','released')),
desired_revision INTEGER,
activated_at TEXT,
PRIMARY KEY(rollout_id,agent_id)
);
CREATE TABLE policy_pins (
agent_id TEXT PRIMARY KEY REFERENCES agents(id) ON DELETE CASCADE,
snapshot_id TEXT NOT NULL REFERENCES policy_snapshots(id),
rollout_id TEXT NOT NULL REFERENCES policy_rollouts(id)
);
CREATE INDEX idx_policy_rollout_targets_agent ON policy_rollout_targets(agent_id);
CREATE INDEX idx_policy_rollouts_created ON policy_rollouts(created_at,id);
CREATE INDEX idx_policy_snapshots_created ON policy_snapshots(created_at,id);