Google prezentuje Mangle: język programowania dla dedukcyjnych baz danych
Współczesne ekosystemy oprogramowania generują ogromne ilości danych, które są rozproszone w różnych formatach i lokalizacjach. Informacje o zależnościach, lukach w zabezpieczeniach, konfiguracjach i infrastrukturze są często trudne do skoordynowania i analizy. Google dostrzegło ten problem i zaproponowało rozwiązanie w postaci Mangle.
Mangle to język programowania, który rozszerza możliwości Datalog, deklaratywnego języka programowania logicznego wywodzącego się z teorii baz danych. Tradycyjny Datalog, choć potężny w wyrażaniu złożonych zapytań, często nie posiada funkcji potrzebnych w praktycznych, rzeczywistych zastosowaniach. Mangle ma wypełnić tę lukę, wprowadzając kluczowe rozszerzenia, zachowując jednocześnie prostotę swojego poprzednika.
Kluczowe cechy i rozszerzenia
Mangle wzbogaca tradycyjny Datalog o funkcje niezbędne w nowoczesnym rozwoju oprogramowania i w procesach związanych z bezpieczeństwem:
Reguły rekurencyjne: Mangle w pełni obsługuje reguły rekurencyjne, umożliwiając eleganckie wyrażanie relacji przechodnich. Jest to kluczowe np. przy śledzeniu pełnego drzewa zależności projektu lub mapowaniu praw dostępu w hierarchii.
Jednolity dostęp do danych: Mangle traktuje wiele źródeł danych jako jedną, logiczną bazę danych. Może pobierać dane z plików, API lub innych magazynów, umożliwiając pisanie zapytań, które bezproblemowo łączą informacje bez martwienia się o podstawowe źródło.
Agregacja i wywoływanie funkcji: Mangle zawiera praktyczne rozszerzenia, takie jak funkcje agregujące (np. count, sum) i możliwość wywoływania funkcji zewnętrznych. Umożliwia to bardziej złożone obliczenia i integrację z istniejącymi bazami kodu, pozwalając na wzbogacenie analizy logicznej o niestandardową logikę biznesową.
Praktyczne zastosowania
Dzięki swojej konstrukcji, Mangle jest szczególnie dobrze przystosowany do kilku kluczowych obszarów:
- Wykrywanie luk w zabezpieczeniach: Zespoły ds. bezpieczeństwa mogą używać Mangle do modelowania zasad bezpieczeństwa i baz kodu jako zestawu faktów i reguł. Na przykład, można napisać regułę, która stwierdza, że projekt jest zagrożony, jeśli zależy od biblioteki ze znanym CVE. Mangle może następnie rekurencyjnie sprawdzić cały graf zależności, aby oznaczyć dotknięte projekty.
- Analiza zależności oprogramowania: Mangle idealnie nadaje się do analizy złożoności nowoczesnych łańcuchów dostaw oprogramowania. Może być używany do analizy Software Bill of Materials (SBOM), egzekwowania zasad wersjonowania w całej organizacji lub identyfikowania projektów dotkniętych przestarzałą biblioteką.
- Modelowanie grafów wiedzy: Język ten stanowi potężne narzędzie do budowania i przeszukiwania grafów wiedzy. Reprezentując encje i ich relacje jako fakty logiczne, organizacje mogą używać Mangle do odkrywania ukrytych powiązań i przeprowadzania analiz na dużych, połączonych zbiorach danych.
Implementacja i dostępność dla programistów
Implementacja Mangle jako biblioteki Go zapewnia łatwą integrację z istniejącymi aplikacjami i narzędziami analitycznymi. Takie podejście eliminuje narzut związany z samodzielnym systemem baz danych i oddaje potężne możliwości zapytań dedukcyjnych bezpośrednio w ręce programistów. Dokumentacja projektu kładzie nacisk na praktyczność, mając na celu uczynienie programowania logicznego dostępnym dla programistów, którzy mogą być bardziej zaznajomieni z paradygmatami imperatywnymi lub obiektowymi.
Mangle stanowi obiecujące narzędzie dla każdego programisty, inżyniera SRE lub specjalisty ds. bezpieczeństwa, którego zadaniem jest zrozumienie złożonych, rozproszonych informacji. Łącząc deklaratywną elegancję Datalog z praktycznymi funkcjami potrzebnymi w nowoczesnym oprogramowaniu, Google dostarcza rozwiązanie, które może uprościć wiele zadań, od analizy bezpieczeństwa po zarządzanie infrastrukturą.
