- Audit Log Generator Expert
- Эксперт в проектировании и реализации логов аудита для безопасности, соответствия требованиям и мониторинга.
- Основные элементы лога
- Каждая запись должна содержать:
- Timestamp
-
- UTC с точностью до миллисекунд
- Event ID
-
- Уникальный идентификатор
- Actor
-
- Кто выполнил действие
- Action
-
- Что было выполнено (CREATE, READ, UPDATE, DELETE)
- Resource
-
- На что было воздействие
- Source
-
- IP адрес, приложение
- Result
-
- Успех/неудача
- Risk Level
- Классификация критичности
JSON формат (рекомендуется)
{
"timestamp"
:
"2024-01-15T14:30:45.123Z"
,
"event_id"
:
"evt_7f4a9b2c8e1d"
,
"version"
:
"1.0"
,
"actor"
:
{
"user_id"
:
"john.doe@company.com"
,
"session_id"
:
"sess_abc123"
,
"role"
:
"admin"
}
,
"action"
:
"DELETE"
,
"resource"
:
{
"type"
:
"database_record"
,
"id"
:
"customer_12345"
,
"table"
:
"customers"
,
"classification"
:
"PII"
}
,
"context"
:
{
"source_ip"
:
"192.168.1.100"
,
"user_agent"
:
"Mozilla/5.0..."
,
"application"
:
"customer_portal"
,
"api_endpoint"
:
"/api/v1/customers/12345"
}
,
"result"
:
{
"status"
:
"SUCCESS"
,
"response_code"
:
200
,
"affected_records"
:
1
}
,
"metadata"
:
{
"risk_level"
:
"HIGH"
,
"compliance_tags"
:
[
"GDPR"
,
"SOX"
]
,
"retention_years"
:
7
,
"checksum"
:
"sha256:a1b2c3d4..."
}
}
CEF (Common Event Format)
CEF:0|CompanyName|CustomerPortal|2.1|1001|User Data Deletion|8|
rt=Jan 15 2024 14:30:45 UTC src=192.168.1.100
suser=john.doe@company.com act=DELETE dst=customer_db
cs1Label=Table cs1=customers cs2Label=RecordID cs2=12345
Классификация событий
События аутентификации
Попытки входа (успех/неудача)
Смена паролей
Активации MFA
Блокировки аккаунтов
Повышения привилегий
События доступа к данным
{
"action"
:
"READ"
,
"data_classification"
:
"SENSITIVE"
,
"access_method"
:
"API"
,
"record_count"
:
150
,
"query_hash"
:
"sha256:..."
}
Административные события
Изменения конфигурации
Предоставление/отзыв доступа
Изменения разрешений
Операции резервного копирования
События безопасности
Неудачные попытки авторизации
Аномальные паттерны доступа
Нарушения политик безопасности
Compliance Requirements
GDPR
{
"gdpr_context"
:
{
"lawful_basis"
:
"legitimate_interest"
,
"data_subject_id"
:
"ds_789"
,
"processing_purpose"
:
"customer_service"
,
"retention_justified"
:
true
,
"cross_border_transfer"
:
false
}
}
SOX
Отслеживание доступа к финансовым данным
Разделение обязанностей
Документация изменений
Мониторинг доступа руководства
HIPAA
{
"hipaa_context"
:
{
"phi_involved"
:
true
,
"minimum_necessary"
:
true
,
"covered_entity"
:
"hospital_system"
,
"patient_authorization"
:
"auth_456"
}
}
Отслеживание изменений
{
"change_tracking"
:
{
"before_state"
:
{
"customer_tier"
:
"silver"
,
"credit_limit"
:
5000
}
,
"after_state"
:
{
"customer_tier"
:
"gold"
,
"credit_limit"
:
10000
}
,
"change_reason"
:
"promotion_campaign"
,
"approver"
:
"manager.smith@company.com"
}
}
Batch Operations
{
"batch_context"
:
{
"batch_id"
:
"batch_2024_01_15_001"
,
"total_records"
:
10000
,
"successful_records"
:
9987
,
"failed_records"
:
13
,
"processing_duration_ms"
:
45678
,
"error_summary"
:
[
"validation_failed: 13"
]
}
}
Контроли безопасности
Шифрование
AES-256 для данных в покое
TLS 1.3 для данных в передаче
Отдельные ключи для разных типов логов
Регулярная ротация ключей
Контроли доступа
{
"log_access_policy"
:
{
"read_access"
:
[
"audit_team"
,
"compliance_officer"
]
,
"search_access"
:
[
"security_analyst"
]
,
"export_access"
:
[
"legal_team"
]
,
"retention_management"
:
[
"data_governance"
]
}
}
Обнаружение вмешательства
Дерево Меркла для целостности
Цифровые подписи с PKI
Регулярная проверка целостности
Неизменяемые временные метки
Реализация на Python
import
json
import
hashlib
from
datetime
import
datetime
from
typing
import
Dict
,
Any
,
Optional
from
enum
import
Enum
class
AuditAction
(
Enum
)
:
CREATE
=
"CREATE"
READ
=
"READ"
UPDATE
=
"UPDATE"
DELETE
=
"DELETE"
LOGIN
=
"LOGIN"
LOGOUT
=
"LOGOUT"
class
RiskLevel
(
Enum
)
:
LOW
=
"LOW"
MEDIUM
=
"MEDIUM"
HIGH
=
"HIGH"
CRITICAL
=
"CRITICAL"
class
AuditLogger
:
def
init
(
self
,
service_name
:
str
)
:
self
.
service_name
=
service_name
def
log
(
self
,
action
:
AuditAction
,
actor_id
:
str
,
resource_type
:
str
,
resource_id
:
str
,
result
:
str
=
"SUCCESS"
,
risk_level
:
RiskLevel
=
RiskLevel
.
LOW
,
context
:
Optional
[
Dict
[
str
,
Any
]
]
=
None
,
before_state
:
Optional
[
Dict
]
=
None
,
after_state
:
Optional
[
Dict
]
=
None
)
-
Dict [ str , Any ] : event_id = self . _generate_event_id ( ) timestamp = datetime . utcnow ( ) . isoformat ( ) + "Z" log_entry = { "timestamp" : timestamp , "event_id" : event_id , "service" : self . service_name , "actor" : { "user_id" : actor_id } , "action" : action . value , "resource" : { "type" : resource_type , "id" : resource_id } , "result" : { "status" : result } , "metadata" : { "risk_level" : risk_level . value } } if context : log_entry [ "context" ] = context if before_state or after_state : log_entry [ "change_tracking" ] = { "before_state" : before_state , "after_state" : after_state } log_entry [ "metadata" ] [ "checksum" ] = self . _calculate_checksum ( log_entry ) self . _persist_log ( log_entry ) return log_entry def _generate_event_id ( self ) -
str : import uuid return f"evt_ { uuid . uuid4 ( ) . hex [ : 12] } " def _calculate_checksum ( self , entry : Dict ) -
str : content = json . dumps ( entry , sort_keys = True ) return f"sha256: { hashlib . sha256 ( content . encode ( ) ) . hexdigest ( ) [ : 16] } " def _persist_log ( self , entry : Dict ) :
Отправка в систему логирования
print ( json . dumps ( entry , indent = 2 ) ) Политики хранения retention_policies = { "authentication" : { "years" : 3 , "hot_storage_days" : 90 } , "data_access" : { "years" : 7 , "hot_storage_days" : 365 } , "administrative" : { "years" : 10 , "hot_storage_days" : 180 } , "security_incidents" : { "years" : 10 , "hot_storage_days" : 1095 } } Мониторинг и алерты Real-time алерты Всплески неудачных аутентификаций Паттерны привилегированного доступа Индикаторы эксфильтрации данных Нарушения политик соответствия Регулярная отчетность Ежедневные сводки доступа Еженедельные дашборды соответствия Ежемесячный анализ трендов Ежеквартальные отчеты готовности к аудиту Лучшие практики Неизменяемость — логи только на добавление Криптографическая защита — подписи и checksums Отдельное хранение — изолировано от операционных систем Регулярная верификация — проверка целостности Документация — цепочка поставки данных