Об этом проекте
immudb — это лёгкая открытая база данных, построенная на принципах неизменяемости и нулевого доверия. Записи могут добавляться как новые версии, но никогда не изменяются и не удаляются; каждое изменение отслеживается в криптографически согласованной проверяемой истории, которую клиенты могут верифицировать, не доверяя самому серверу базы данных. immudb может работать как реляционная (SQL) база данных, хранилище ключ-значение и документная база данных, а также запускаться как автономный сервис или встраиваться в процесс как библиотека Go.
Ключевые возможности, задокументированные в проекте:
- Многомодельный доступ: SQL с транзакциями и блобами, API ключ-значение с верифицируемыми чтениями/записями и документная модель.
- Совместимость с протоколом PostgreSQL: стандартные клиенты и ORM PostgreSQL (psql, pgAdmin, JDBC, SQLAlchemy, Django, GORM, ActiveRecord, lib/pq, pgx) могут подключаться напрямую. Поддерживаемые возможности SQL включают операторы RETURNING, общие табличные выражения (WITH / WITH RECURSIVE), оконные функции (ROW_NUMBER, RANK, LAG, LEAD и другие), представления, последовательности, широкий набор соединений и подзапросов, операции над множествами, управление транзакциями на основе SAVEPOINT, массовый импорт через COPY FROM stdin, частичные индексы и более 75 встроенных функций. Эмуляция каталога через таблицы pg_catalog и information_schema поддерживает интроспекцию ORM. Задокументированные ограничения включают отсутствие хранимых процедур/PLpgSQL, отсутствие индексов GIN/GiST (только B-tree) и отсутствие сгенерированных столбцов.
- Запросы с путешествием во времени: синтаксис DIFF OF SQL сравнивает состояние таблицы между двумя диапазонами транзакций, помечая строки как INSERT, UPDATE или DELETE.
- Криптографическая верификация через SQL: функции такие как immudb_state(), immudb_verify_row(), immudb_verify_tx() и immudb_history() предоставляют систему доказательств непосредственно в запросах.
- Структурированное журналирование аудита: необязательные неизменяемые события аудита в формате JSON для каждой операции gRPC (время, пользователь, IP, база данных, метод, категория, длительность, ID сессии), хранящиеся в собственном защищённом от подделки хранилище KV immudb и экспортируемые в системы SIEM.
- Варианты развёртывания: готовые бинарные файлы, образы Docker, Helm-чарты для Kubernetes и режим встроенной библиотеки. Данные могут храниться на Amazon S3 или S3-совместимых альтернативах, таких как MinIO, с поддержкой ролей AWS IAM и получения учётных данных Fargate.
- Экосистема клиентов: официальные SDK для Java, Go (включая адаптер GORM), .NET, Python и Node.js; CLI immuclient для интерактивного администрирования; и immugw — REST-шлюз для языков без SDK. Пользователи Rust направляются к стандартным клиентам PostgreSQL или сгенерированному gRPC-коду, так как пакет immudb на crates.io неофициален.
- Усиление безопасности: проверка пути при восстановлении архива, немедленная инвалидация сессий при изменении пользователя/прав, ограниченные права доступа к файлам токенов и предупреждение при запуске, если сервер, совместимый с PostgreSQL, работает без TLS.
Задокументированное реальное применение включает неизменяемое хранение изменений чувствительных полей (например, платёжных данных), защиту рецептов сборки CI/CD, хранение сертификатов и контрольных сумм, защищённые от подделки потоки журналов и запись данных датчиков или геолокации. Документация, веб-консольная демонстрация и песочница Python SDK доступны на сайте проекта.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.