Files
AWatch-rus/aw-server/dlp-policy-engine/policy_schema.py
T

72 lines
1.7 KiB
Python

from __future__ import annotations
from datetime import datetime
from typing import Any
from pydantic import BaseModel, Field, ConfigDict
class PolicyDocument(BaseModel):
model_config = ConfigDict(extra="allow")
version: int = 1
defaults: dict[str, Any] = Field(
default_factory=lambda: {
"enabled": True,
"cooldownSeconds": 300,
"action": "alert",
"severity": "medium",
}
)
endpoint: dict[str, list[dict[str, Any]]] = Field(
default_factory=lambda: {
"clipboard": [],
"usb": [],
"print": [],
}
)
class PolicyCreateRequest(BaseModel):
name: str = Field(min_length=1, max_length=128)
description: str | None = Field(default=None, max_length=2048)
policy: PolicyDocument
activate: bool = False
actor: str | None = Field(default="api")
class PolicyUpdateRequest(BaseModel):
name: str | None = Field(default=None, min_length=1, max_length=128)
description: str | None = Field(default=None, max_length=2048)
policy: PolicyDocument | None = None
activate: bool = False
actor: str | None = Field(default="api")
class PolicyActivateRequest(BaseModel):
actor: str | None = Field(default="api")
class PolicyStatusRequest(BaseModel):
actor: str | None = Field(default="api")
comment: str | None = Field(default=None, max_length=2048)
class PolicyRecord(BaseModel):
id: int
name: str
description: str | None
is_active: bool
current_version: int
checksum: str
created_at: datetime
updated_at: datetime
class PolicyVersionRecord(BaseModel):
policy_id: int
version: int
checksum: str
created_at: datetime
created_by: str | None