23 lines
925 B
Python
23 lines
925 B
Python
"""suspicious_events table (Chapter 06) — Security section (Ch10)."""
|
|
from __future__ import annotations
|
|
|
|
from app.extensions import db
|
|
|
|
|
|
class SuspiciousEvent(db.Model):
|
|
__tablename__ = "suspicious_events"
|
|
|
|
id: int = db.Column(db.Integer, primary_key=True)
|
|
log_file_id: int = db.Column(db.Integer, db.ForeignKey("log_files.id", ondelete="CASCADE"), nullable=False)
|
|
ip: str = db.Column(db.String(45), nullable=False)
|
|
timestamp = db.Column(db.DateTime, nullable=False)
|
|
path: str = db.Column(db.Text, nullable=False)
|
|
rule_matched: str = db.Column(db.String(128), nullable=False)
|
|
severity: str = db.Column(db.String(8), nullable=False) # low|medium|high (provisional; Ch10 escalates)
|
|
|
|
__table_args__ = (
|
|
db.Index("ix_suspicious_events_timestamp", "timestamp"),
|
|
db.Index("ix_suspicious_events_ip", "ip"),
|
|
db.Index("ix_suspicious_events_severity", "severity"),
|
|
)
|