feat: нарушители по Методике ФСТЭК от 05.02.2021 (без выдумок)
- attacker_categories.json: 2 категории (внешний/внутренний) с формулировками п. 5.1.6
- attacker_levels.json: 4 уровня возможностей Н1-Н4 (Приложение 8):
базовые, базовые повышенные, средние, высокие — с полным описанием
и видами нарушителей по каждому уровню
- attacker_types.json: 13 видов нарушителей (п. 5.1.3) — спецслужбы ИГ,
террористические группировки, преступные группы, хакеры, конкуренты,
разработчики ПО, поставщики, персонал, пользователи, сисадмины, бывшие работники
- вкладка «Безопасность»: категория (combobox) + уровень Н1-Н4 (combobox) +
виды нарушителей (listbox с кнопками 📚 из словаря)
- модель: attacker_level, attacker_types; маппинги collect/select/copy/import;
генератор: item.attacker_level, item.attacker_types
This commit is contained in:
+36
-2
@@ -993,15 +993,41 @@ class DokoGenApp:
|
||||
# ===== Левая колонка =====
|
||||
ttk.Label(sec_left, text="Категория нарушителя:").pack(anchor=tk.W)
|
||||
self.is_attacker_category_combo = ttk.Combobox(sec_left, state='readonly')
|
||||
self.is_attacker_category_combo.pack(fill=tk.X, pady=(2, 4))
|
||||
self.is_attacker_category_combo.pack(fill=tk.X, pady=(2, 2))
|
||||
try:
|
||||
import json as _json
|
||||
_ac = os.path.join(os.path.dirname(__file__), 'dictionaries', 'attacker_categories.json')
|
||||
with open(_ac, encoding='utf-8') as _f:
|
||||
self.is_attacker_category_combo['values'] = [''] + _json.load(_f)
|
||||
_cats = _json.load(_f)
|
||||
self.is_attacker_category_combo['values'] = [''] + [c['name'] for c in _cats]
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
ttk.Label(sec_left, text="Уровень возможностей нарушителя:").pack(anchor=tk.W)
|
||||
self.is_attacker_level_combo = ttk.Combobox(sec_left, state='readonly')
|
||||
self.is_attacker_level_combo.pack(fill=tk.X, pady=(2, 2))
|
||||
try:
|
||||
import json as _json
|
||||
_al = os.path.join(os.path.dirname(__file__), 'dictionaries', 'attacker_levels.json')
|
||||
with open(_al, encoding='utf-8') as _f:
|
||||
_levels = _json.load(_f)
|
||||
self.is_attacker_level_combo['values'] = [''] + [
|
||||
f"{l['level']} — {l['name']}" for l in _levels]
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
ttk.Label(sec_left, text="Виды нарушителей:").pack(anchor=tk.W)
|
||||
sec_at_row = ttk.Frame(sec_left)
|
||||
sec_at_row.pack(fill=tk.X, pady=(2, 4))
|
||||
self.is_attacker_types_listbox = tk.Listbox(sec_at_row, height=3, exportselection=False)
|
||||
self.is_attacker_types_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
|
||||
sec_at_btn = ttk.Frame(sec_at_row)
|
||||
sec_at_btn.pack(side=tk.RIGHT, padx=(4, 0))
|
||||
ttk.Button(sec_at_btn, text="-", width=2,
|
||||
command=lambda: self._del_sw_item(self.is_attacker_types_listbox)).pack(pady=1)
|
||||
ttk.Button(sec_at_btn, text="📚", width=3,
|
||||
command=lambda: self._select_sw_from_dict(self.is_attacker_types_listbox, 'attacker_types.json')).pack(pady=1)
|
||||
|
||||
ttk.Label(sec_left, text="Основные угрозы БИ:").pack(anchor=tk.W)
|
||||
sec_thr_row = ttk.Frame(sec_left)
|
||||
sec_thr_row.pack(fill=tk.BOTH, expand=True, pady=(2, 4))
|
||||
@@ -1321,6 +1347,10 @@ class DokoGenApp:
|
||||
('is_os_sw_listbox', 'os_sw'),
|
||||
('is_app_sw_listbox', 'app_sw'),
|
||||
('is_attacker_category_combo', 'attacker_category'),
|
||||
('is_attacker_level_combo', 'attacker_level'),
|
||||
('is_attacker_types_listbox', 'attacker_types'),
|
||||
('is_attacker_level_combo', 'attacker_level'),
|
||||
('is_attacker_types_listbox', 'attacker_types'),
|
||||
('is_threats_listbox', 'threats'),
|
||||
('is_incidents_listbox', 'incidents'),
|
||||
('is_criteria_values_listbox', 'criteria_values'),
|
||||
@@ -1634,6 +1664,8 @@ class DokoGenApp:
|
||||
app_sw=src.app_sw,
|
||||
balance_value=src.balance_value,
|
||||
attacker_category=src.attacker_category,
|
||||
attacker_level=src.attacker_level,
|
||||
attacker_types=src.attacker_types,
|
||||
threats=src.threats,
|
||||
incidents=src.incidents,
|
||||
criteria_values=src.criteria_values,
|
||||
@@ -2825,6 +2857,8 @@ class DokoGenApp:
|
||||
app_sw=is_data.get('app_sw', ''),
|
||||
balance_value=is_data.get('balanceValue', is_data.get('balance_value', '')),
|
||||
attacker_category=is_data.get('attacker_category', ''),
|
||||
attacker_level=is_data.get('attacker_level', ''),
|
||||
attacker_types=is_data.get('attacker_types', ''),
|
||||
threats=is_data.get('threats', ''),
|
||||
incidents=is_data.get('incidents', ''),
|
||||
criteria_values=is_data.get('criteria_values', ''),
|
||||
|
||||
Reference in New Issue
Block a user