Статьи

Изменение игры, когда дело доходит до аудита в больших данных — часть 2

В моем предыдущем посте в блоге мы включили аудит на разных уровнях вашего кластера MapR. В этом посте мы проанализируем журналы аудита, используя Apache Drill, чтобы начать отвечать на такие вопросы, как:

  1. Несанкционированные изменения кластера и доступ к данным
  2. Соблюдение нормативно-правовой базы и законодательства
  3. Тепловые карты использования данных на холодных, теплых и горячих данных
  4. Аналитика доступа к данным и улучшения производительности
  5. Политики защиты данных для данных, которые имеют значение с использованием моментальных снимков и зеркалирования

Для начала, файлы журнала аудита, сгенерированные MapR Auditing, включают в себя тип действия, выполняемого над файловой системой или таблицей MapR-DB, дату и время выполнения действия, а также конкретные сведения о файле или таблице, являющейся частью действия.

Давайте рассмотрим пример записи в журнале аудита файловой системы после того, как пользователь создаст файл в томе и каталоге с включенным аудитом. Чтобы создать файл (при условии, что кластер MapR смонтирован с использованием наших уникальных возможностей NFS), выполните следующее:

1
# touch /mapr/demo.mapr.com/myauditvolume/myauditdirectory/myauditfile

Результат создания этого файла выглядит в журнале аудита файловой системы следующим образом:

1
2
3
# cat /mapr/demo.mapr.com/var/mapr/local/maprdemo/audit/FSAudit.log-2015-08-20-001.json |grep myauditfile
 
{"timestamp":{"$date":"2015-08-20T07:28:13.487Z"},"operation":"CREATE","uid":0,"ipAddress":"127.0.0.1","nfsServer":"10.0.2.15","parentFid":"2178.32.131412","childFid":"2178.33.131414","childName":"myauditfile","volumeId":138315622,"status":0}

Большой! Мы записали создание файла с использованием функции аудита. Как вы заметили, в журнале аудита упоминаются различные идентификаторы (например, uid, parentFid, childFid, volumeId и т. Д.). Чтобы преобразовать эти идентификаторы в понятный человеку формат, мы можем использовать утилиту expandaudit. Давайте сделаем это!

Расширение журналов аудита для включения удобочитаемой информации

Чтобы подготовить журналы аудита для анализа, давайте создадим отдельный том для хранения расширенных журналов аудита. Чтобы создать том, выполните следующую команду (не забудьте установить правильные права пользователя, если это необходимо):

1
# maprcli volume create -name myexpandedauditlogs -path /myexpandedauditlogs

Следующим шагом является запуск утилиты лога expandaudit и запись результатов в наш новый том. Следующая команда раскрывает все журналы аудита для тома «myauditvolume» в кластере «demo.mapr.com» и записывает вывод в папку «myexpandedauditlogs» с помощью монтирования NFS:

1
# /opt/mapr/bin/expandaudit -cluster demo.mapr.com -volumename myauditvolume -o /mapr/demo.mapr.com/myexpandedauditlogs/

Теперь, когда мы смотрим на расширенный файл журнала аудита и определяем местонахождение «myauditfile» следующим образом, мы видим, что помимо идентификатора, упомянутого ранее, в лог-файл добавлены соответствующие имена файлов, имена, имена пользователей и т. Д., Соответствующие идентификаторам. :

1
2
# cat /mapr/demo.mapr.com/myexpandedauditlogs/138315622/maprdemo/FSAudit.log-2015-08-20-001.part.json |grep myauditfile
{"timestamp":{"$date":"2015-08-20T07:28:13.487Z"},"operation":"CREATE","user":"root","uid":0,"ipAddress":"127.0.0.1","nfsServer":"10.0.2.15","parentPath":"/myauditvolume/myauditdirectory","parentFid":"2178.32.131412","childPath":"/myauditvolume/myauditdirectory/myauditfile","childFid":"2178.33.131414","childName":"myauditfile","VolumeName":"myauditvolume","volumeId":138315622,"status":0}

При запуске утилиты журнала expandaudit через определенный промежуток времени (например, один раз в день) аналитики всегда имеют самые последние доступные расширенные файлы журнала аудита. Обратите внимание, что для расширения журналов аудита требуются ресурсы кластера, такие как память и процессор. Поэтому, пожалуйста, спланируйте выполнение этой утилиты соответствующим образом в вашем производственном кластере.

Последнее действие, которое необходимо выполнить перед началом анализа данных с использованием Apache Drill, — разделить журналы аудита файловой системы и MapR-DB на разные папки:

1
2
3
4
mkdir /mapr/demo.mapr.com/myexpandedauditlogs/fsaudit && \
find /mapr/demo.mapr.com/myexpandedauditlogs/ -name 'FS*.json' -exec mv {} /mapr/demo.mapr.com/myexpandedauditlogs/fsaudit/ \; &&\
mkdir /mapr/demo.mapr.com/myexpandedauditlogs/dbaudit && \
find /mapr/demo.mapr.com/myexpandedauditlogs/ -name 'DB*.json' -exec mv {} /mapr/demo.mapr.com/myexpandedauditlogs/dbaudit/ \;

Вот и все, давайте проанализируем эти журналы аудита с помощью Apache Drill!

Анализ журналов аудита с использованием Apache Drill

Поскольку файлы журнала аудита хранятся в формате файла JSON, мы можем использовать Apache Drill для анализа файлов журнала с использованием языка ANSI SQL и инструментов бизнес-аналитики.

Прежде чем мы сможем получить доступ к данным аудита, нам нужно сообщить Apache Drill, где хранятся данные. Мы можем сделать это, добавив следующие строки в плагин хранилища распределенной файловой системы (DFS). Как установить Apache Drill и добавить плагин для хранения выходит за рамки этого поста в блоге, информацию об этом можно найти на веб-сайте документации Apache Drill.

1
2
3
4
5
"myexpandedauditlogs": {
  "location": "/myexpandedauditlogs",
  "writable": true,
  "defaultInputFormat": "json"
}

С настроенным модулем хранения и указанием на нашу папку «myexpandedauditlogs» в кластере мы можем начать анализировать журналы с помощью любого инструмента SQL или Business Intelligence.

Использование sqlline для анализа журналов аудита

Используя утилиту командной строки sqlline, мы можем выполнять команды ANSI SQL для Apache Drill для анализа журналов аудита. Чтобы подключиться к кластеру Apache Drill с помощью sqlline, выполните:

1
/opt/mapr/drill/drill-1.1.0/bin/sqlline -u jdbc:drill:zk=localhost:5181 -n admin -p admin

Мы будем использовать представления базы данных в файлах журналов аудита JSON, чтобы упростить типизацию и подготовить данные для анализа в вашем любимом инструменте Business Analytics. Чтобы создать представление для файлов журнала аудита файловой системы:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
0: jdbc:drill:zk=localhost:5181> create or replace view dfs.myexpandedauditlogs.fsaudit_view as
select
cast(`fsaudit`.`timestamp` AS TIMESTAMP) as `timestamp`,
cast(`fsaudit`.`operation` as varchar(255)) as `operation`,
cast(`fsaudit`.`user` as varchar(255)) as `user`,
cast(`fsaudit`.`uid` as int) as `uid`,
cast(`fsaudit`.`ipAddress` as varchar(255)) as `ipAddress`,
cast(`fsaudit`.`srcPath` as varchar(65536)) as `srcPath`,
cast(`fsaudit`.`srcFid` as varchar(255)) as `srcFid`,
cast(`fsaudit`.`volumename` as varchar(255)) as `volumename`,
cast(`fsaudit`.`volumeid` as int) as `volumeid`,
cast(`fsaudit`.`status` as varchar(255)) as `status`,
cast(`fsaudit`.`nfsServer` as varchar(255)) as `nfsServer`,
cast(`fsaudit`.`srcName` as varchar(255)) as `srcName`,
cast(`fsaudit`.`parentPath` as varchar(65536)) as `parentPath`,
cast(`fsaudit`.`parentFid` as varchar(255)) as `parentFid`,
cast(`fsaudit`.`childPath` as varchar(65536)) as `childPath`,
cast(`fsaudit`.`childFid` as varchar(255)) as `childFid`,
cast(`fsaudit`.`childName` as varchar(255)) as `childName`,
cast(`fsaudit`.`dstPath` as varchar(65536)) as `dstPath`,
cast(`fsaudit`.`dstFid` as varchar(255)) as `dstFid`
from dfs.myexpandedauditlogs.`/fsaudit` fsaudit;

Это представление позволяет нам анализировать журналы аудита файловой системы, используя ваши любимые инструменты Business Intelligence. Давайте также создадим представление для анализа журналов аудита MapR-DB:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
0: jdbc:drill:zk=localhost:5181> create or replace view dfs.myexpandedauditlogs.dbaudit_view as
select
cast(`dbaudit`.`timestamp` AS TIMESTAMP) as `timestamp`,
cast(`dbaudit`.`operation` as varchar(255)) as `operation`,
cast(`dbaudit`.`user` as varchar(255)) as `user`,
cast(`dbaudit`.`uid` as int) as `uid`,
cast(`dbaudit`.`ipAddress` as varchar(255)) as `ipAddress`,
cast(`dbaudit`.`srcName` as varchar(255)) as `srcName`,
cast(`dbaudit`.`VolumeName` as varchar(255)) as `VolumeName`,
cast(`dbaudit`.`volumeId` as int) as `volumeId`,
cast(`dbaudit`.`parentPath` as varchar(65536)) as `parentPath`,
cast(`dbaudit`.`parentFid` as varchar(255)) as `parentFid`,
cast(`dbaudit`.`tablePath` as varchar(65536)) as `tablePath`,
cast(`dbaudit`.`tableFid` as varchar(255)) as `tableFid`,
cast(`dbaudit`.`status` as varchar(255)) as `status`,
cast(`dbaudit`.`columnFamily` as varchar(255)) as `columnFamily`,
cast(`dbaudit`.`columnQualifier` as varchar(255)) as `columnQualifier`
from dfs.myexpandedauditlogs.`/dbaudit` dbaudit;

Итак, теперь у нас есть наши представления SQL, давайте проверим их перед анализом наших журналов аудита, используя простой запрос SQL для подсчета количества записей аудита файловой системы и MapR-DB:

Чтобы подсчитать количество записей аудита FileSystem с использованием вновь созданного представления:

1
0: jdbc:drill:zk=localhost:5181> select count(1) from dfs.myexpandedauditlogs.fsaudit_view;

Чтобы подсчитать количество записей аудита MapR-DB с использованием вновь созданного представления:

1
0: jdbc:drill:zk=localhost:5181> select count(1) from dfs.myexpandedauditlogs.dbaudit_view;

Это оно! У вас все готово для анализа журналов аудита, просто указав свой инструмент бизнес-аналитики на вновь созданные представления. В следующем видео мой коллега Ник Амато показывает вам, как использовать Tableau в качестве одного из инструментов BI для анализа журналов аудита: https://www.youtube.com/watch?v=AwEgOixs4ZU

С этим вы готовы начать отвечать на такие вопросы, как:

  1. Несанкционированные изменения кластера и доступ к данным
  2. Соблюдение нормативно-правовой базы и законодательства
  3. Тепловые карты использования данных на холодных, теплых и горячих данных
  4. Аналитика доступа к данным и улучшения производительности
  5. Политики защиты данных для данных, которые имеют значение с использованием моментальных снимков и зеркалирования

Вывод

В своем предыдущем посте в блоге я описал мощные возможности аудита MapR и провел простую настройку этой функции. В этом последующем посте я показал вам, как настроить среду MapR для анализа информации журнала аудита. Это позволяет вам отвечать на очень важные вопросы, например, кто что делает с точки зрения управления кластером и использования данных, а также на другие случаи использования политик соответствия, производительности и защиты данных.