GrantForge управляет доступом к 17 системам. Для каждой сервисный плагин на сервере GrantForge описывает ресурсы и типы доступа системы, ищет ресурсы для редактора политик и проверяет подключение; агент применяет политики в системе и сообщает о каждом доступе в аудит доступа. Плагины ниже упорядочены по типу системы, как в меню.
Как агенты применяют политики
Агент применяет политики одним из трёх способов:
В системе
Система спрашивает агента при каждом запросе: это авторизатор, сопроцессор, контроль доступа или плагин, загруженный в процессы самой системы. Каждый запрос решается сразу по снимку в памяти, вплоть до того, что лежит ниже ресурса. Агент устанавливается в систему и загружается при её перезапуске.
Системы: Apache Hadoop HDFS, Apache Hadoop YARN, Apache ZooKeeper, Apache Hive, Apache HBase, Trino, Apache Kafka, Apache Pulsar, Apache Solr
Рядом с системой
Сервис рядом с системой согласует собственный контроль доступа системы, её роли, права и политики строк, с политиками. В систему ничего не устанавливается, и система сама проверяет каждый запрос по любому протоколу. Изменение вступает в силу при следующей синхронизации, по умолчанию через десять секунд; права, выданные вне GrantForge, остаются, и агент предупреждает о тех, что запрещает политика.
Системы: ClickHouse, Apache Doris, PostgreSQL, Elasticsearch, OpenSearch, MongoDB, Redis
Перед системой
Сетевой прокси, к которому клиенты подключаются вместо сервера. Инструкции проверяются, фильтруются и маскируются до того, как дойдут до сервера; клиенты подключаются через прокси.
Системы: MySQL
Системы
| Тип | Система | Применение | Фильтры строк | Маскирование | Проверенные версии |
|---|---|---|---|---|---|
| Реляционная база данных | MySQL · агент | Перед системой | Да | Да | 8.0, 8.4 |
| Реляционная база данных | PostgreSQL · агент | Рядом с системой | Да | Нет (в PostgreSQL нет маскирования столбцов) | 15, 16, 17, 18 |
| Аналитическая база данных (OLAP) | Apache Doris · агент | Рядом с системой | Да | Нет (Doris маскирует значения только через Apache Ranger) | 2.1, 3.1, 4.0, 4.1 |
| Аналитическая база данных (OLAP) | ClickHouse · агент | Рядом с системой | Да | Нет (ClickHouse маскирует столбцы только в своём облаке) | 24.8, 25.3, 25.8, 26.3, 26.8 |
| Широкостолбцовая база данных (NoSQL) | Apache HBase · агент | В системе | Нет | Нет | 2.5.16, 2.6.7, 3.0.0 |
| Документная база данных | MongoDB · агент | Рядом с системой | Нет | Нет | 6.0, 7.0, 8.0, 9.0 |
| Хранилище ключ-значение | Redis · агент | Рядом с системой | Нет | Нет | Redis 7.2, 7.4, 8.2, 8.10; Valkey 8.1, 9.1 |
| Хранилище данных и движок запросов | Apache Hive · агент | В системе | Да | Да | 3.1.3, 4.0.1, 4.1.0 |
| Хранилище данных и движок запросов | Trino · агент | В системе | Да | Да | 470, 476, 479, 484 |
| Сообщения и потоки | Apache Kafka · агент | В системе | Нет | Нет | 3.7.2, 3.9.2, 4.1.2, 4.3.1 |
| Сообщения и потоки | Apache Pulsar · агент | В системе | Нет | Нет | 3.0.17, 3.3.9, 4.0.14, 4.2.5 |
| Поисковый движок | Apache Solr · агент | В системе | Нет | Нет | 9.8.1, 9.10.1, 9.11.0, 10.0.0 |
| Поисковый движок | Elasticsearch · агент | Рядом с системой | Да | Нет (Elasticsearch не маскирует значения) | 8.19, 9.3, 9.4, 9.5 |
| Поисковый движок | OpenSearch · агент | Рядом с системой | Да | Да | 2.19, 3.3, 3.6, 3.9 |
| Распределённое хранилище | Apache Hadoop HDFS · агент | В системе | Нет | Нет | 2.7.7, 2.10.2, 3.2.4, 3.3.6, 3.4.3, 3.5.0 |
| Управление ресурсами | Apache Hadoop YARN · агент | В системе | Нет | Нет | 3.2.4, 3.3.6, 3.4.3, 3.5.0 |
| Координация | Apache ZooKeeper · агент | В системе | Нет | Нет | 3.9.5 (агент собран для ZooKeeper 3.6.4) |
Версии — те, на которых работают интеграционные тесты Testcontainers в репозитории; другие версии не сертифицированы. Подробности — на страницах каждого плагина и его агента.
Что делает каждый агент
Каждый агент загружает снимок политик своего сервиса, проверяет его подпись Ed25519 перед использованием и хранит последний действительный на диске, поэтому продолжает применять политики, пока сервер GrantForge недоступен. Доступы уходят пакетами в аудит доступа, одинаковые разрешённые объединяются в одно событие со счётчиком, а пока сервер недоступен, записываются на диск.
