Начинающий подход к использованию машинного обучения для анализа инцидентов
Начало
В больших наборах данных алгоритмы машинного обучения могут обнаруживать закономерности и выявлять аномалии. Мы можем создавать модели, которые изучают исторические данные и распознают отклонения от типичного поведения, применяя машинное обучение для обнаружения событий безопасности. Модели машинного обучения могут одновременно анализировать несколько источников данных, таких как журналы, сетевой трафик, шаблоны доступа пользователей и т. д. Модели могут быть обучены распознавать различные события безопасности, включая атаки вредоносного ПО, попытки несанкционированного доступа, кражу данных и неустойчивое поведение сети. Да, для меня это слишком много данных, как бы вы ни любили абзацы в личных сообщениях WhatsApp от любимого человека, эти абзацы сбивают с толку.
Нам необходимо использовать методический подход, который включает в себя подготовку и сбор данных, проектирование и выбор функций, обучение и оценку модели, создание предупреждений и реагирование, чтобы создать эффективные сценарии для обнаружения событий безопасности.
Разработка функций и сбор данных
Первым шагом является сбор соответствующих данных о событиях безопасности из многочисленных источников, включая Cloud SCC, Cloud Logging и Cloud Monitoring. Предварительная обработка и преобразование формата необходимы, чтобы сделать эти данные подходящими для обучения модели ML. Например, нерелевантные характеристики могут быть удалены, пропущенные значения могут быть обработаны, а категориальные переменные могут быть закодированы как часть предварительной обработки данных. По сути, ваши данные готовы к использованию для дальнейших шагов, точно так же, как вы не любите открытые разговоры, машина также ненавидит нечистые данные.
Процесс проектирования функций превращает неструктурированные данные в информативные функции, точно отражающие инциденты безопасности. Создание признаков на основе времени, агрегирование данных с различной степенью детализации и извлечение статистических характеристик — вот несколько примеров задач, которые могут быть включены в этот шаг. Наиболее подходящие характеристики для обучения модели машинного обучения можно найти с помощью подходов к выбору признаков, таких как корреляционный анализ и оценка важности признаков.
Следующие шаги?
Обучение и оценка модели. На предварительно обработанных данных и выбранных функциях модели машинного обучения обучаются на этом этапе. Деревья решений, случайные леса, машины опорных векторов и модели глубокого обучения, такие как нейронные сети, — это лишь несколько примеров из многих методов машинного обучения, которые можно использовать. Обученные модели оцениваются с использованием соответствующих критериев оценки, таких как точность, точность, полнота и оценка F1. Перекрестная проверка и настройка гиперпараметров — это методы, улучшающие обобщение и производительность моделей.
Предупреждения и реагирование. Модели машинного обучения можно использовать для создания предупреждений об обнаруженных инцидентах безопасности после их обучения и оценки. Эти предупреждения можно рассылать конкретным группам безопасности или связывать с уже установленными инструментами реагирования на инциденты. Действия и ответные меры, которые должны быть выполнены в соответствии с серьезностью и типом наблюдаемых событий безопасности, указаны в правильно составленных сценариях.
Давайте возьмем несколько примеров
Сбор данных: Импорт данных журнала для анализа из облачной утилиты ведения журнала для нашего проекта с определенной отметкой времени и отправка вновь полученных данных в препроцессор для возврата чистого фрейма данных в включить удаление ненужного беспорядка и полей из данных
# Import necessary libraries from google.cloud import logging # Create a client for Cloud Logging client = logging.Client() # Retrieve logs from the specified time range and filter based on log types logs = client.list_entries(filter_='timestamp >= TIMESTAMP("2023-06-01T00:00:00Z") AND logName="projects/your-project-name/logs/cloudaudit.googleapis.com%2Factivity"') # Preprocess and transform the logs into a pandas DataFrame # Perform necessary data cleaning, feature engineering, and encoding # Return the preprocessed DataFrame def preprocess_logs(logs): # Code for preprocessing the logs return preprocessed_logs # Call the preprocessing function on the retrieved logs preprocessed_logs = preprocess_logs(logs)
Разработка функций: здесь мы используем критерий хи-квадрат и SelectKBest, чтобы облегчить очистку полученного набора данных и удалить поля, которые нам не нужны, вручную заполнив метки полей данных, тем самым подогнав данные. в обработанный фрейм данных, с которым мы можем работать сейчас!
import pandas as pd from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 # Define the feature engineering and selection function def feature_engineering_selection(preprocessed_logs): # Perform feature engineering tasks # Create new features, aggregate data, extract statistical features, etc. # Select the most relevant features using SelectKBest and chi-squared test X = preprocessed_logs.drop(columns=['label']) y = preprocessed_logs['label'] selector = SelectKBest(chi2, k=10) selected_features = selector.fit_transform(X, y) # Return the preprocessed logs with selected features return selected_features # Call the feature engineering and selection function selected_features = feature_engineering_selection(preprocessed_logs)
Обучение нашей модели: А, да, теперь наша работа здесь сделана, дайте компьютеру поработать. Используя простой подход train_test_split с RandomForestClassifier, мы обучаем данные для обнаружения событий, подпадающих под критические, высокие или любые другие категории серьезности, указанные метками в облачном аудите, и регистрируем подходящие данные, которые мы сгенерировали на предыдущем шаге. Не стесняйтесь настраивать модель, чтобы получить точность по вашему желанию.
from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split( selected_features, preprocessed_logs['label'], test_size=0.2, random_state=42) # Train a Random Forest classifier clf = RandomForestClassifier(n_estimators=100, random_state=42) clf.fit(X_train, y_train) # Evaluate the model on the test set y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Model accuracy:", accuracy)
Предупреждение и генерация ответа. Теперь мы, наконец, отправляем оповещение в нашу модель и позволяем ей принять решение об инцидентах высокой степени серьезности в этом случае. Идите вперед и наполните его своими данными и сделайте его лучше.
# Generate alerts based on the trained model's predictions def generate_alerts(X_test, y_pred): alerts = [] for i in range(len(X_test)): if y_pred[i] == 1: alert = { 'event_id': X_test[i]['event_id'], 'severity': 'High', 'description': 'Potential security event detected.', 'timestamp': X_test[i]['timestamp'] } alerts.append(alert) return alerts # Call the alert generation function alerts = generate_alerts(X_test, y_pred) # Perform appropriate actions and responses based on the generated alerts # For example, send alerts to the security team, trigger incident response workflows, etc.
Если вы хотите упростить процесс с помощью VertexAI
а. Объедините зависимости и код машинного обучения в модуль Python.
b. Укажите сценарий обучения и любые дополнительные параметры настройки при создании пользовательского задания AI Platform в Vertex AI.
c. При необходимости настройте задание на использование необходимых аппаратных ускорителей и версии среды выполнения для машинного обучения.
d. Дайте Vertex AI задание, и он настроит необходимые ресурсы и начнет процесс обучения.
e. Следите за развитием задачи и, когда она будет завершена, извлеките обученную модель.
Мы не будем углубляться в процесс VertexAI в этом блоге, но обязательно вернемся к использованию этого удивительного инструмента в следующей статье ;)
Случаи использования
Может показаться немного странным использовать этот подход для создания предупреждений и управления данными, когда Центр управления безопасностью и другие облачные подходы могут сделать это с легкостью. Обсуждаемый подход часто используется для рекомендации результатов для пользовательского трафика на портах и службах, использующих нестандартные рабочие порты. Также в незначительных случаях использования, таких как:
- Обнаружение аномалий сетевого трафика.Аномалии, такие как странные шаблоны связи, неожиданная передача данных или подозрительные IP-адреса, можно обнаружить, просматривая журналы сетевого трафика и используя модели машинного обучения.
- Обнаружение злонамеренной активности в журналах доступа пользователей.Чтобы выявить потенциальные нарушения безопасности, модели машинного обучения могут распознавать необычные модели доступа пользователей, такие как повторные неудачные попытки входа в систему, попытки несанкционированного доступа или подозрительные действия. деятельность по счету.
- Обнаружение несанкционированного доступа к конфиденциальным данным.Попытки несанкционированного доступа к конфиденциальным данным, хранящимся в базах данных или файловых системах хранения, можно обнаружить путем мониторинга журналов доступа и использования алгоритмов машинного обучения.
Кроме того, в случае журналов, поступающих из источников, которые не являются строго идентифицированными, такими как внешние инструменты, интегрированная инфраструктура и настраиваемые приемники журналов используют такие решения для обеспечения наилучших результатов.
Заключить
Организации могут заблаговременно выявлять возможные атаки и быстро реагировать, разрабатывая сценарии для обнаружения событий безопасности в Google Cloud. Мы можем мгновенно анализировать огромные объемы данных, автоматически выявлять аномалии и создавать оповещения для более тщательного расследования с помощью алгоритмов машинного обучения. Начиная с предлагаемых примеров кода и пояснений, пользователи Google Cloud могут разработать обнаружение событий безопасности на основе машинного обучения. Чтобы опережать изменяющиеся риски безопасности, крайне важно адаптировать эти стратегии с учетом конкретных потребностей и постоянно совершенствовать модели. Потому что, даже если вы не можете понять, машина может, если вы тоже понимаете. Ах, это рекурсия, пока!
Хотите поболтать? Свяжитесь со мной