feat(dlp): add enterprise phase scaffolds (policy role, content analysis, siem, case, compliance, cli)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import pathlib
|
||||
import re
|
||||
from typing import Any
|
||||
|
||||
from checksum_validator import validate_inn, validate_snils
|
||||
|
||||
|
||||
def _validate(kind: str, value: str) -> bool:
|
||||
if kind == "inn":
|
||||
return validate_inn(value)
|
||||
if kind == "snils":
|
||||
return validate_snils(value)
|
||||
return True
|
||||
|
||||
|
||||
def match_text(text: str, dictionary_path: str) -> list[dict[str, Any]]:
|
||||
rules = json.loads(pathlib.Path(dictionary_path).read_text(encoding="utf-8"))
|
||||
results: list[dict[str, Any]] = []
|
||||
for name, rule in rules.items():
|
||||
regex = re.compile(rule["regex"])
|
||||
checksum_kind = rule.get("checksum", "none")
|
||||
for m in regex.finditer(text):
|
||||
token = m.group(0)
|
||||
if _validate(checksum_kind, token):
|
||||
results.append(
|
||||
{
|
||||
"name": name,
|
||||
"description": rule.get("description", name),
|
||||
"value": token,
|
||||
"start": m.start(),
|
||||
"end": m.end(),
|
||||
}
|
||||
)
|
||||
return results
|
||||
Reference in New Issue
Block a user