Выбрать главу

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

Рис. 2.46. Изменение внешнего вида узла

Масштабирование

При выводе информации в виде графа в правом нижнем углу появляется управление масштабированием графа со следующими функциями:

● увеличение;

● уменьшение;

● выравнивание и отцентровка всего графа.

Рис. 2.47. Управление масштабом графа

Установка плагинов

Neo4j имеет большое количество различных плагинов, которые позволяют улучшить работу с запросами. В книге используется только базовый APOC, поэтому рассмотрим установку плагинов на его примере.

Зайдем на официальный GitHub neo4j с плагинами[10] и скачаем двоичный jar-файл apoc-4.4.0.1-all.jar. Поместим его в папку $NEO4J_HOME/plugins. В моем случае это C: \Tools\Neo4j\plugins.

Информация

Поскольку APOC использует внутренние API neo4j, необходимо использовать правильную версию APOC для вашей установки neo4j. APOC использует согласованную схему управления версиями: <neo4j-версия>.<apoc> версия. Завершающая часть номера версии <apoc> будет увеличиваться с каждым новым выпуском APOC.

Если сейчас мы перезагрузим neo4j и попытаемся воспользоваться процедурами из плагина, то получим ошибку.

Рис. 2.48. Ошибка некорректной настройки процедур

Чтобы исправить ее, нужно открыть файл конфигурации $NEO4J_HOME/conf/neo4j.conf на редактирование. Убрать комментарий со строки dbms.directories.plugins=plugins, затем найти строку dbms.security.procedures.unrestricted=…, после нее добавить строку dbms.security.procedures.unrestricted=algo.*, apoc.* и перезапустить службу:

C: \Tools\Neo4j\bin\neo4j.bat restart

В дальнейшем мы столкнемся с процедурами из этого плагина, а пока перейдем к другой теме.

Создание резервных копий и восстановление

Создание резервных копий полезно при переносе базы данных с одного компьютера на другой или при сохранении результатов проекта для будущих исследований. При дальнейшем изучении книги мы будем несколько раз обращаться к резервным копиям.

Чтобы создать резервную копию, нам необходимо остановить базу данных. Для этого перейдем в директорию $NEO4J_HOME/bin и выполним команду:

.\neo4j.bat stop

Если neo4j запущен в режиме консоли, то можно нажать Сtrl+С или просто закрыть окно.

Теперь создадим резервную копию текущей базы данных, указав имя базы данных neo4j и путь до файла резервной копии:

.\neo4j-admin.bat dump -database="neo4j" -to="c: \tools\neo4j.dump"

После успешного завершения создания резервной копии запустим neo4j:

.\neo4j.bat start

Рис. 2.49. Создание резервной копии

Процедура восстановления похожа на создание копий, изменяется только команда с dump на load. Останавливаем neo4j:

.\neo4j.bat stop

Выполняем команду восстановления данных из дампа, указав полный путь до файла дампа, созданного ранее:

.\neo4j-admin.bat load -database="neo4j" -from="c: \tools\neo4j.dump" -force

Стоит обратить внимание на использование ключа -force: в случае его отсутствия neo4j сообщит, что база данных neo4j уже существует.

Рис. 2.50. Сообщение об ошибке

После успешного восстановления из резервной копии запустим neo4j:

.\neo4j.bat start

Рис. 2.51. Успешное восстановление данных

03. Дрессируем собаку. Язык запросов Cypher

SharpHound, BloodHound и neo4j – это инструменты для сбора, хранения и визуализации информации. Основная магия – это язык запросов Cypher. В интернете можно найти уже готовые запросы и использовать их, но в дополнение к этому хорошо бы разбираться, как они работают, и уметь разрабатывать их самому. В этом разделе мы рассмотрим основные принципы построения запросов и синтаксис языка запросов Cypher.

Внимание

Данный раздел содержит только необходимую для работы с BloodHound информацию. Для более глубокого изучения языка запросов Cypher стоит обратиться к официальной документации[11].

Обычно результаты запросов представляются в виде графов, что удобно для обнаружения связей между объектами. В некоторых случаях данные могут представляться в виде таблиц, что удобно для анализа данных. В BloodHound объекты домена являются вершинами (узлами) графа, а отношения (связи) между этими объектами – ребрами. Также в neo4j узлы графа маркируются меткой (label) по общему принципу. Это позволяет делать выборку только из необходимой группы объектов. Названия связей определяются по типу (type).

вернуться

11

https://neo4j.com/docs/cypher-manual/current/introduction/.