1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
| class SecurityReviewSystem:
def __init__(self):
self.reviews = {}
self.review_templates = {
'monthly': {
'name': 'Revisión Mensual de Seguridad',
'scope': ['Métricas operativas', 'Incidentes', 'Vulnerabilidades'],
'participants': ['CISO', 'Security_Manager', 'IT_Manager'],
'duration': '2 hours'
},
'quarterly': {
'name': 'Revisión Trimestral de Seguridad',
'scope': ['Estrategia', 'Presupuesto', 'Riesgos', 'Controles'],
'participants': ['CISO', 'CEO', 'CTO', 'CFO', 'Legal'],
'duration': '4 hours'
},
'annual': {
'name': 'Revisión Anual de Seguridad',
'scope': ['Estrategia completa', 'Cumplimiento', 'Maturidad', 'Roadmap'],
'participants': ['Board', 'CISO', 'CEO', 'CTO', 'CFO', 'Legal', 'Audit'],
'duration': '8 hours'
}
}
def schedule_review(self, review_id, review_type, scheduled_date, participants):
"""Programar revisión"""
template = self.review_templates.get(review_type, {})
self.reviews[review_id] = {
'review_id': review_id,
'type': review_type,
'name': template.get('name', 'Revisión de Seguridad'),
'scheduled_date': scheduled_date,
'participants': participants,
'scope': template.get('scope', []),
'duration': template.get('duration', '2 hours'),
'status': 'Scheduled',
'agenda': [],
'minutes': None,
'action_items': []
}
def create_review_agenda(self, review_id, custom_items=None):
"""Crear agenda de revisión"""
if review_id not in self.reviews:
return None
review = self.reviews[review_id]
template = self.review_templates.get(review['type'], {})
agenda = [
'Apertura y bienvenida',
'Revisión de minutos anteriores',
'Estado actual de la seguridad'
]
# Añadir items del template
agenda.extend(template.get('scope', []))
# Añadir items personalizados
if custom_items:
agenda.extend(custom_items)
agenda.extend([
'Discusión de problemas y oportunidades',
'Acciones y responsabilidades',
'Próxima revisión'
])
review['agenda'] = agenda
return agenda
def conduct_review(self, review_id, findings, decisions, action_items):
"""Realizar revisión"""
if review_id not in self.reviews:
return None
review = self.reviews[review_id]
review['status'] = 'Completed'
review['completed_date'] = datetime.now()
review['findings'] = findings
review['decisions'] = decisions
review['action_items'] = action_items
# Generar minutos
review['minutes'] = {
'participants': review['participants'],
'findings': findings,
'decisions': decisions,
'action_items': action_items,
'next_review': self.calculate_next_review(review['type'])
}
return review['minutes']
def calculate_next_review(self, review_type):
"""Calcular próxima revisión"""
if review_type == 'monthly':
return datetime.now() + timedelta(days=30)
elif review_type == 'quarterly':
return datetime.now() + timedelta(days=90)
elif review_type == 'annual':
return datetime.now() + timedelta(days=365)
else:
return datetime.now() + timedelta(days=30)
def get_pending_action_items(self, review_id):
"""Obtener items de acción pendientes"""
if review_id not in self.reviews:
return []
review = self.reviews[review_id]
return [item for item in review['action_items'] if item.get('status') != 'Completed']
# Ejemplo de uso
review_system = SecurityReviewSystem()
# Programar revisión mensual
review_system.schedule_review(
'REV-001',
'monthly',
datetime(2025, 11, 1),
['CISO', 'Security_Manager', 'IT_Manager']
)
# Crear agenda
agenda = review_system.create_review_agenda('REV-001', [
'Revisión de incidente de seguridad del mes',
'Estado de implementación de controles'
])
# Realizar revisión
findings = [
'Aumento del 20% en incidentes de phishing',
'Retraso en implementación de firewall'
]
decisions = [
'Implementar capacitación adicional en phishing',
'Acelerar implementación de firewall'
]
action_items = [
{'item': 'Capacitación en phishing', 'owner': 'Security_Manager', 'due_date': '2025-11-15'},
{'item': 'Implementar firewall', 'owner': 'IT_Manager', 'due_date': '2025-11-30'}
]
minutes = review_system.conduct_review('REV-001', findings, decisions, action_items)
print(f"Minutos de revisión: {minutes['decisions']}")
|