У меня много журналов аудита, поступающих из кластеров Azure Databricks, которыми я управляю. Журналы - это простые журналы аудита приложений в формате JSON
. У вас есть информация о рабочих местах, кластерах, тетрадях и т. Д. c. и вы можете увидеть образец одной записи здесь:
{
"TenantId": "<your tenant id",
"SourceSystem": "|Databricks|",
"TimeGenerated": "2019-05-01T00:18:58Z",
"ResourceId": "/SUBSCRIPTIONS/SUBSCRIPTION_ID/RESOURCEGROUPS/RESOURCE_GROUP/PROVIDERS/MICROSOFT.DATABRICKS/WORKSPACES/PAID-VNET-ADB-PORTAL",
"OperationName": "Microsoft.Databricks/jobs/create",
"OperationVersion": "1.0.0",
"Category": "jobs",
"Identity": {
"email": "mail@contoso.com",
"subjectName": null
},
"SourceIPAddress": "131.0.0.0",
"LogId": "201b6d83-396a-4f3c-9dee-65c971ddeb2b",
"ServiceName": "jobs",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
"SessionId": "webapp-cons-webapp-01exaj6u94682b1an89u7g166c",
"ActionName": "create",
"RequestId": "ServiceMain-206b2474f0620002",
"Response": {
"statusCode": 200,
"result": "{\"job_id\":1}"
},
"RequestParams": {
"name": "Untitled",
"new_cluster": "{\"node_type_id\":\"Standard_DS3_v2\",\"spark_version\":\"5.2.x-scala2.11\",\"num_workers\":8,\"spark_conf\":{\"spark.databricks.delta.preview.enabled\":\"true\"},\"cluster_creator\":\"JOB_LAUNCHER\",\"spark_env_vars\":{\"PYSPARK_PYTHON\":\"/databricks/python3/bin/python3\"},\"enable_elastic_disk\":true}"
},
"Type": "DatabricksJobs"
}
В данный момент я храню журналы в Elasticsearch, и я планировал использовать их инструмент обнаружения аномалий в журналах этого типа. Поэтому мне не нужно реализовывать какой-либо алгоритм, а нужно выбрать правильный атрибут или выполнить правильную агрегацию, или, возможно, объединить больше атрибутов с помощью многомерного анализа. Однако я не знаком с такими топиками c, и у меня нет этого опыта. Я прочитал Обнаружение аномалий: обзор Чандолы и др. , который был довольно полезен, чтобы указать мне на правильное подполе. Итак, я понял, что имею дело с временными рядами, и в зависимости от вида агрегации, которую я буду выполнять, я могу столкнуться с коллективными аномалиями в данных последовательности (например, поле ActionName
этих журналов) или контекстуальными аномалиями в данных последовательности.
Мне было интересно, можете ли вы указать мне правильное направление, поскольку мне не удалось найти какую-либо связанную работу по обнаружению аномалий в журналах аудита. В частности, какие аномалии я должен расследовать? и какой тип агрегации будет полезен?
Пожалуйста, имейте в виду, что у меня достаточно большой объем данных. Более того, я был бы признателен за любые отзывы, даже если они не связаны с Elasticsearch; поэтому, не стесняйтесь предлагать целый неконтролируемый метод машинного обучения для этого вида сценария обнаружения аномалий, а не более простой вариант использования Elasticsearch.