<НА ГЛАВНУЮ

Mangle от Google: язык на базе Datalog для работы с разрозненными данными

Google представил Mangle, расширение Datalog в виде библиотеки на Go для объединения и анализа разрозненных данных в задачах безопасности и управления зависимостями.

Mangle — новый проект с открытым исходным кодом от Google, который расширяет логический язык Datalog для современных задач дедуктивного программирования баз данных. Реализованный как библиотека на Go, Mangle упрощает выполнение запросов и рассуждений по данным, хранящимся в разных местах и форматах.

Борьба с фрагментацией данных

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

Расширения Datalog для практических задач

Mangle опирается на классический Datalog, добавляя полезные для реальных проектов возможности:

  • Рекурсивные правила: поддержка рекурсии позволяет компактно выражать транзитивные отношения, такие как полные деревья зависимостей или иерархии прав доступа.
  • Унифицированный доступ к данным: язык может подгружать факты из файлов, API или других хранилищ, что позволяет объединять данные независимо от их физического размещения.
  • Агрегации и внешние функции: Mangle поддерживает агрегатные функции, такие как count и sum, а также вызов внешних функций. Это расширяет чистую логику и позволяет выполнять более сложные вычисления и интеграцию с существующим кодом.

Эти дополнения сохраняют декларативную простоту Datalog и делают язык применимым к сложному практическому анализу.

Практические сценарии применения

Mangle особенно подходит для задач в области безопасности, анализа цепочек поставок и построения графов знаний:

  • Обнаружение уязвимостей: команды безопасности могут описывать политики и структуру кода в виде фактов и правил. Например, правило может отметить проект как уязвимый, если он зависит от библиотеки с известной CVE; Mangle рекурсивно проверит граф зависимостей и выявит затронутые проекты.
  • Анализ зависимостей ПО: Mangle помогает ориентироваться в современных цепочках поставок ПО. Язык можно использовать для анализа SBOM, контроля версий в организации или поиска проектов, затронутых устаревшими библиотеками.
  • Моделирование графов знаний: представляя сущности и связи в виде логических фактов, организации могут обнаруживать скрытые связи и выполнять сложные рассуждения над взаимосвязанными наборами данных.

Реализация и удобство для разработчиков

Реализация Mangle как библиотеки на Go позволяет встраивать язык в существующие приложения и инструменты анализа без необходимости разворачивать отдельную систему баз данных. Такой подход предоставляет возможности дедуктивного запроса прямо разработчикам и соответствует распространенным стекам разработки. Документация проекта ориентирована на практику и помогает разработчикам, более знакомым с императивными или объектно-ориентированными подходами, освоить логику на практике.

С чего начать

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

🇬🇧

Switch Language

Read this article in English

Switch to English