Блог Amazon Web Services
Генерация инсайтов безопасности с помощью машинного обучения на данных Amazon Security Lake используя Amazon SageMaker
Перевод оригинальной статьи (авторы: Jonathan Nguyen, Madhunika Reddy Mikkili).
Amazon Security Lake автоматически централизует сбор логов и событий, относящихся к контексту информационной безопасности, как с сервисов AWS, так и со сторонних. С ростом объема таких данных, возникает необходимость понимания на что именно обратить внимание и какие инструменты должны быть использованы. Такие сервисы как Amazon QuickSight, Amazon OpenSearch, и Amazon SageMaker Studio могут быть использованы для визуализации, анализа и интерактивного определения тех аспектов на которых следует сосредоточиться, а также помогут приоритизировать усилия по повышению уровня безопасности ваших систем в AWS.
В этой статье мы расскажем о том, как генерировать информационно-значимые инсайты безопасности по данным Amazon Security Lake с помощью Amazon SageMaker Studio — веб-интегрированной среды разработки (IDE) для машинного обучения. Предлагаемое в этой статье решение, содержит базовый набор блокнотов Python, ориентированных на данные AWS Security Hub findings в Amazon Security Lake, которые при необходимости могут быть обогащены событиями и из других источников AWS или пользовательских источников данных. После запуска блокнотов, вы можете использовать полученные результаты для определения представляющих интерес, с точки зрения безопасности, функциональных областей ваших нагрузок AWS и, как следствие, вы можете внедрить дополнительные меры безопасности или создать собственные детекторы подозрительной активности.
Предварительные требования
- Определите учетную запись делегированного администратора для управления конфигурацией Amazon Security Lake для всех аккаунтов-участников в вашей организации.
- Amazon Security Lake должен быть включен в учетной записи делегированного администратора.
- Как часть решения в этой статье мы сфокусируемся на AWS Security Hub как источнике данных. AWS Security Hub должен быть включен для учетных записей входящих в Вашу AWS Organizations. При включении Amazon Security Lake, выберите пункт All log and event sources для включения AWS Security Hub findings.
- Настройте доступ для запросов к Amazon Security Lake. Amazon Security Lake использует функциональность AWS Lake Formation для организации доступа, в части предоставления и контроля общего доступа к таблицам озера данных для учетных записей в Организации. Примите запрос на совместный доступ к ресурсам в учетной записи AWS подпиcчика (где будет развертываться это решение) в консоли AWS Resource Access Manager (AWS RAM). Подписчики с авторизованным доступом могут запрашивать данные, которые собирает Amazon Security Lake. Эти подписчики выполняют запросы к данным таблиц AWS Lake Formation, в которых содержаться данные Amazon Security Lake, и которые храняться в Amazon Simple Storage Service (Amazon S3), с помощью такого сервиса как Amazon Athena.
Обзор решения
На диаграмме 1 показана архитектура решения
В процессе развертывания указанная архитектура создается путем выполнения следующих шагов:
- В выбранной учетной записи AWS настраивается озеро данных с интеграцией нативных источников— такие как Amazon VPC Flow Logs, AWS Security Hub, AWS CloudTrail, и Amazon Route53.
- Настраиваем доступ к таблицам озера данных в учетной записи Amazon Security Lake для аккаунтов подписчиков
Заметка: cм. Пункт 4 из предварительных требований для дополнительной информации. - Запрос AWS RAM на совместный доступ к ресурсам (таблицам) должен быть принят в учетной записи аккаунта подписчика AWS, в котором данное решение и будет развернуто.
Заметка: cм. Пункт 4 из предварительных требований для дополнительной информации. - Создаем ссылку на базу данных в AWS Lake Formation в учетной записи подписчика и предоставляем доступ сервису Amazon Athena к таблицам.
- Для SageMaker создается VPC с IGW(Internet Gateway), NAT GW и точками доступа VPC (VPC endpoints) для сервисов AWS, используемых в решении. IGW и NAT необходимы для доступа к Internet для установки дополнительных пакетов с открытым исходным кодом.
- Amazon SageMaker Domain для Amazon SageMaker Studio создается в режиме VPCOnly с единственным профилем пользователя Amazon SageMaker права которого определены AWS Identity and Access Management (IAM) ролью.
- Специальная роль IAM создается для определения прав доступа к API AWS, а также определяет CIDR с которого можно получить доступ к домену Amazon SageMaker в котором содержаться описываемые блокноты.
- Репозитарий AWS CodeCommit содержит блокноты Python, и доступны из под определенного ранее пользовательского профиля Amazon SageMaker.
- Определяем рабочую группу для сервиса Amazon Athena для выполнения запросов к AWS Security Lake, в настройках группы также определен бакет S3 в качестве хранения выходных данных (с активированным журналированием доступа).
Развертывание решения
Вы можете развернуть данное решение используя AWS Management Console или AWS Cloud Development Kit (AWS CDK).
Вариант 1: Развертывание решения с помощью AWS CloudFormation из консоли
Используйте консоль для входа в учетную запись подписчика и затем выберете кнопку Launch Stack для открытия консоли AWS CloudFormation в которой уже будет шаблон автоматизации для запуска описываемого решения. Развертывание занимает приблизительно 10 минут.
Вариант 2: Развертывание решения с помощью AWS CDK
Актуальная версия описываемого решения располагается в репозитарии SageMaker machine learning insights GitHub repository, где вы также можете внести свой вклад в код примера. Инструкции и дополнительные сведения об использовании AWS CDK можете найти в разделе Get Started with AWS CDK.
Для развертывания решения с помощью AWS CDK, выполним следующие шаги:
- Чтобы собрать приложение перейдите в корневую папку проекта и выполните следующие команды:
npm install -g aws-cdk-lib
npm install
- Замените значения по умолчанию IAM_role_assumption_for_sagemaker_presigned_urlи security_lake_aws_account в файле source/lib/sagemaker_domain.ts.
- Выполните следующие команды в терминале, авторизовавшись в своей учетной записи подписчика AWS. Обязательно замените <INSERT_AWS_ACCOUNT> номером вашей учетной записи и замените <INSERT_REGION> регионом AWS, в котором вы хотите развернуть решение:
cdk bootstrap aws://INSERT_AWS_ACCOUNT/INSERT_REGION
cdk deploy
Необходимые действия после развертывания решения
Теперь, когда вы развернули решение, вы должны предоставить доступ пользовательского профиля Amazon SageMaker к Amazon Security Lake. Предоставить права доступа (Grant) можно в разделе сервиса AWS Lake Formation.
Предоставление доступа к базе данных
- Скопируйте ресурсное имя (ARN) пользовательского профиля Amazon SageMaker вида arn:aws:iam::<account-id>:role/sagemaker-user-profile-for-security-lake
- Зайдите в Lake Formation консоль.
- Выберете БД amazon_security_lake_glue_db_us_east_1.
- Из выпадающего списка Actions, выберете Grant.
- В Grant Data Permissions, выберете SAML Users and Groups.
- Вставьте ARN пользовательского профиля из Шага 1.
- В Database Permissions, выберете Describe и затем Grant.
Предоставление доступа к таблице Amazon Security Lake – Security Hub
- Скопируйте ресурсное имя (ARN) пользовательского профиля Amazon SageMaker вида arn:aws:iam::<account-id>:role/sagemaker-user-profile-for-security-lake
- Зайдите в Lake Formation консоль.
- Выберете БД amazon_security_lake_glue_db_us_east_1.
- Выберете View Tables.
- Выберете таблицу amazon_security_lake_table_us_east_1_sh_findings_1_0.
- Из выпадающего списка Actions, выберете Grant.
- В Grant Data Permissions, выберете SAML Users and Groups.
- Вставьте ARN пользовательского профиля из Шага 1.
- В Table Permissions, выберете Describe и затем Grant.
Запуск приложения Amazon SageMaker Studio
Теперь, когда вы предоставили необходимые права, мы можем перейти к запуску приложения Amazon SageMaker, связанного с этим пользовательским профилем.
- Перейдите в SageMaker Studio domain в консоли Amazon SageMaker.
- Выберете Amazon SageMaker домен security-lake-ml-insights-<account-id>.
- Выберете пользователя sagemaker-user-profile-for-security-lake.
- Выберете Launch из выпадающего списка и выберете Studio
Клонирование блокнотов Python
Вы будете работать преимущественно в Amazon SageMaker Studio под определенным ранее профилем. Вам необходимы блокноты Python c необходимым кодом, хранящиеся в репозитарии AWS CodeCommit, которые Вам нужно будет клонировать.
Для клонирования необходимо:
- Перейдите в сервис CloudFormation в консоли.
- В разделе Stacks выберете SageMakerDomainStack.
- Выберете вкладку Outputs
- Скопируйте значение переменной sagemakernotebookmlinsightsrepositoryURL. (Пример: https://git-codecommit.us-east-1.amazonaws.com/v1/repos/sagemaker_ml_insights_repo)
- Вернитесь в Amazon SageMaker Studio
- На левой боковой панели, выберете значок Git (ромб с двумя ветвями), затем Clone a Repository.
- Скопируйте ссылку на репозиторий Git repository URL (.git) CodeCommit из Шага После этого вставьте значение URL, выбрав Clone “https://git-codecommit.us-east-1.amazonaws.com/v1/repos/sagemaker_ml_insights_repo”, затем нажав Clone.
Примечание: если не выбрать значение из автоматически заполняемого выпадающего списка, SageMaker не сможет клонировать репозиторий.
Генерация инсайтов безопасности с помощью машинного обучения используя Amazon SageMaker Studio
После того как вы склонировали базовый набор блокнотов Python в Amazon SageMaker Studio, они будут расположены по пути sagemaker_ml_insights_repo/notebooks/tsat/. Эти блокноты служат отправной точкой для проведения анализа на базе машинного обучения с использованием данных Amazon Security Lake. Эти блокноты можно использовать как на нативных, так и на пользовательских источниках данных Amazon Security Lake.
Блокнот #1 – Настройка среды окружения
Блокнот 0.0-tsat-environ-setup выполняет установку необходимых библиотек и зависимостей для остальных блокнотов, которые будут использованы в этой статье. В нашем решении мы используем библиотеку Python c открытым исходным кодом Kats — легковесный фреймворк для анализа временных рядов.
- Выберете блокнот 0.0-tsat-environ-setup.ipynb
Примечание: Если вы уже запустили ядро, вы можете пропустить шаги 2 и 3.
- В правом углу выберете No Kernel
- Во всплывающем окне Set up notebook environment оставьте значения по умолчанию и нажмите Select.
- После того как ядро успешно запуститься, выберете значокTerminal для запуска терминала.
- Чтобы установить пакеты с открытым исходным кодом по https протоколу, а не с http, необходимо обновить файл list. После открытия терминала выполните следующие команды:
cd /etc/apt
sed -i 's/http:/https:/g' sources.list
- Вернитесь в блокнот 0.0-tsat-environ-setup.ipynb, выберете Run и из выпадающего списка Run All Cells. Также можно запускать каждую ячейку в блокноте отдельно, но это не обязательно. Установка займет около 10 минут.
ВАЖНО: Если вы завершите установку не по порядку или обновите файл requirements.txt, вы не сможете успешно установить Kats, и вам придется переустанавливать окружение заново, используя новый профиль пользователя SageMaker.
- После успешной установки всех зависимостей, проверьте установку Kats.
- Установите PyAthena (Python DB API клиент для Amazon Athena) который используется для выполнения запросов данных из Amazon Security Lake.
Выполнив указанные действия, вы успешно настроили среду приложения Amazon SageMaker! Теперь вы можете загрузить соответствующий набор данных и создать временной ряд.
Блокнот #2 – Загрузка данных
Блокнот 0.1-load-data запрашивает данные Amazon Security Lake через Amazon Athena и создает результирующий набор в виде временного ряда. Временной ряд будет использоваться в далее для выявления трендов, выбросов и точек изменения.
- Выберете блокнот 0.1-load-data.ipynb.
- Если вы развернули стек решения не в Регионе us-east-1, обновите переменную con установив соответствующий Регион. В этом примере мы анализируем данные из Security Hub. Если вы хотите изменить источник данных для анализа измените значение TABLE.
- В разделе Query вы найдете запрос Amazon Athena для получения определенной выборки данных из Security Hub. Выборка, может быть, как ограничена подмножеством, так и содержать весь набор данных Security Hub. Например, по запросу представленному ниже получаем информацию на дату 01:00:00 1/1/2022 по сервисам (продуктам), определенным в списке productname.
- После того как все значения будут обновлены, вы сможете создать свой набор данных во временных рядах. Для этого блокнота, мы рекомендуем запускать каждую ячейку отдельно для того чтобы более подробно ознакомиться с процессом.
Выберете первую ячейку и нажмите значок Run.
- Запустите последовательно остальные ячейки следуя инструкциям из Шага 4.
Примечание: В случае возникновения ошибок, проверьте настройки произведенные на шаге Предоставление доступа к таблице Amazon Security Lake – Security Hub.
Вы успешно загрузили данные и создали временной ряд! Теперь вы можете перейти к генерированию инсайтов с помощью машинного обучения на основе вашего временного ряда.
Блокнот #3 – Определение трендов
Блокнот 1.1-trend-detector.ipynb позволяет обнаружить тренды (тенденции) в ваших данных. Тренд представляет собой направленное изменение в показателях временного ряда. Это направление может быть как восходящим (увеличение показателей), так и нисходящим (уменьшение уровней). Обнаружение тенденций помогает выявить изменения, игнорируя шум, вызванный естественной изменчивостью. Каждое окружение отличается от другого, и тренды помогают нам определить, где нужно присмотреться внимательнее, чтобы определить, почему тенденция является положительной или отрицательной.
- Выберете блокнот 1.1-trend-detector.ipynb для определения тренда.
- Для выявления зависимости между x (время) и y (количество) служат наклоны – показатели крутизны линии, или скорость изменения данных с течением времени.
- Если количество событий увеличивается со временем, то речь идет о положительном наклоне, в противном случае мы говорим об отрицательном наклоне. Положительный наклон не обязательно говорит о положительной динамике так как в идельном случае мы должны наблюдать уменьшение количества AWS Security Hub findingsс течением времени.
- Теперь вы можете построить график пяти наиболее динамичных положительных и отрицательных тенденций, чтобы определить основные движущиеся компоненты временного ряда.
Блокнот #4 – Определение выбросов
Блокнот 1.2-outlier-detection.ipynb предназначен для определение выбросов (резко выделяющиеся наблюдения). Этот блокнот выполняет декомпозицию (разложение) входного временного ряда для выявления сезонности, используя как аддитивную так и мультипликативную (по умолчанию аддитивная) модели. Он использует остаточный временной ряд, удаляя либо только тренд, либо и тренд, и сезонность, если сезонность сильно выражена. Цель — обнаружить полезные, аномальные и нерегулярные закономерности в массивах данных, что позволит Вам выявить области, представляющие интерес.
- Для начала он обнаруживает точки в остаточном ряде, которые превышают межквартильный размах в 5 раз.
- Межквартильный размах (Inter-quartile range – IQR) это разница между 75-м и 25-м р остатков или разброс данных в пределах двух средних квартилей всего набора данных. IQR полезен для выявления наличия выбросов, поскольку позволяет увидеть значения, которые могут лежать за пределами двух средних квартилей.
- Множитель IQR управляет чувствительностью диапазона и решением о выявлении выбросов. При использовании большего значения параметра iqr_mult_thresh в OutlierDetector выбросы будут считаться точками данных, в то время как меньшее значение позволит идентифицировать точки данных как выбросы.
Примечание: при недостаточности данных, уменьшайте значение iqr_mult_thresh к нижнему порогу значений (например iqr_mult_thresh=3).
- Наряду с графиками обнаружения выбросов будут также отображаться запросы SQL к таблице озера данных, которые помогут в дальнейшем изучении выбросов.
На следующем изображении вы можете отметить наличие нескольких выбросов из числа результатов проверок политик AWS Firewall Manager, которые обозначены вертикальными красными линиями на линейном графике. Они являются выбросами, поскольку отклоняются от нормального поведения и количества обнаружений на ежедневной основе. Когда вы видите отклонения, вы можете посмотреть на ресурсы, которые могли вызвать необычное увеличение числа нарушений политики AWS Firewall Manager. В зависимости от результатов проверок, это может быть связано с чрезмерно разрешительной или несоответствующей требованиям группой безопасности или неправильно настроенной группой правил AWS WAF.
Блокнот #5 – Определение точек изменения
Блокнот 1.3-changepoint-detector.ipynb выполняет определение точек изменения. Определение точки изменения — это метод обнаружения изменений во временном ряду, которые сохраняются с течением времени, например, изменение среднего значения. Обнаружение базового уровня показателей позволяет определить, когда с этой точки могло произойти несколько изменений. Точки изменения возникают при увеличении или уменьшении среднего числа обнаруженных результативных проверок (findings) в наборе данных.
- Наряду с определением точек изменения в наборе данных, генерируется SQL запрос, для дальнейшего изучения конкретной точки изменения, если это необходимо.
На следующем изображени видно, что точка изменения уменьшилась после 27 июля 2022 года с достоверностью 99,9 процента. Важно отметить, что точки изменения отличаются от выбросов, которые представляют собой внезапные изменения в наблюдаемом наборе данных. Эта диаграмма означает, что в развернутой инфраструктуре произошло какое-то изменение, которое привело к общему снижению количества детектированных срабатываний проверок безопасности для бакетов S3 по включенным настройками блокирования общего доступа. Это изменение может быть результатом обновления пайплайна CI/CD, или автоматизации для включения блокировки публичного доступа для всех бакетов S3. И наоборот, если вы увидели точку изменения, которая привела к увеличению детектируемых событий, это может означать, что произошло изменение, в результате которого большее количество бакетов S3 было настроено с отключенной блокировкой публичного доступа.
К этому моменту вы должны были ознакомиться с настройкой и развертыванием Amazon SageMaker Studio, а также с тем, как использовать блокноты Python для получения инсайтов с помощью машинного обучения для данных Amazon Security Lake. Вы можете воспользоваться полученными знаниями и приступить к обработке определенных наборов данных и источников данных в Amazon Security Lake, созданию временных рядов, выявлению тенденций, определению выбросов и точек изменения. Таким образом, вы сможете ответить на множество вопросов, связанных с безопасностью, таких как:
- CloudTrail
Наблюдается ли большой объем команд, направленных на загрузку или копирования с Amazon S3 на внешние ресурсы? Наблюдается ли большой объем команд по удалению объектов S3? Возможно, происходит событие, связанное с ransomware (зловредное программное обеспечение, предназначенное для вымогательства)? - VPC Flow Logs
Увеличивается ли количество запросов с вашей VPC на внешние IP? Увеличилось ли количество запросов из вашего VPC ко внутренним адресатам? Существует ли вероятность утечки данных из внутренних или внешних источников? - Amazon Route 53
Какие ресурсы выполняют запросы DNS, которые они обычно не выполняли в течение последних 30-45 дней? Когда это началось? Существует ли потенциальная возможность что получен неавторизованный доступ к инстансуAmazon Elastic Compute Cloud (Amazon EC2)?
Важно отметить что данное решение не заменяет Amazon GuardDuty, которое использует базовые источники данных для обнаружения связи с известными вредоносными доменами и IP-адресами и выявляет аномальное поведения, или Amazon Detective, который предоставляет клиентам готовые агрегации, сводки и визуализации данных, чтобы помочь командам безопасности проводить быстрые и эффективные расследования. Одним из главных преимуществ использования Amazon Security Lake и Amazon SageMaker Studio является возможность интерактивного создания и настройки инсайтов с помощью машинного обучения с учетом особенностей ваших приложений и систем в AWS.
Clean up
Если вы развернули решение SageMaker machine learning insights с помощью кнопки Launch Stack в AWS Management Console или шаблона CloudFormation sagemaker_ml_insights_cfn, выполните следующие действия для очистки:
- В консоли CloudFormationучетной записи и Регионе, где было развернуто решение, выберете стек SageMakerML
- Выберете опцию Delete для стека
Если решение было развернуто при помощи AWS CDK, выполните команду cdk destroy.
Заключение
Amazon Security Lake позволяет нормализовать и централизованно хранить данные безопасности из различных источников, чтобы помочь вам анализировать, визуализировать и сопоставлять соответствующие журналы безопасности. Затем вы можете использовать эти данные для повышения общего уровня безопасности путем внедрения дополнительных защитных механизмов или принятия соответствующих мер по исправлению ситуации в развернутых окружениях в AWS.
В этой статье вы узнали, как с помощью Amazon SageMaker можно генерировать инсайты безопасности с помощью машинного обучения для AWS Security Hub findings. Хотя в примере решения рассматривается лишь один источник данных в Amazon Security Lake, вы можете расширить функциональность этих блокнотов, чтобы включить в них другие нативные или пользовательские источники данных.
Существует множество различных вариантов использования Amazon Security Lake, которые могут быть адаптированы к вашим окружениям в AWS. Взгляните на эту статью чтобы научиться как собирать, преобразовывать и передавать данные из Amazon Security Lake в Amazon OpenSearch и помочь вашим командам безопасности быстро анализировать данные для ваших нагрузок в AWS. В поддерживаемых Регионах владельцы учетных записей могут попробовать сервис бесплатно в течении 15 дней и получить доступ к его функционалу.