GrantForge

    Plug-ins

    Overview

    Every system GrantForge manages access to, how its agent enforces the policies, what it can filter and mask, and the versions the integration tests verify.

    GrantForge manages access to 15 systems. For each, a service plugin in the GrantForge server describes the system's resources and access types, looks resources up for the policy editor and tests the connection; an agent enforces the policies in the system and reports every access to the access audit. The plugins below are sorted by kind of system, as in the menu.

    How agents enforce

    An agent enforces the policies in one of three ways:

    In the system

    The system asks the agent at every request: an authorizer, coprocessor, access control or plugin loaded into the system's own processes. Each request is decided at once from the snapshot in memory, down to what lies below a resource. The agent is installed in the system and loaded when it restarts.

    Systems: Apache Hadoop HDFS, Apache Hadoop YARN, Apache ZooKeeper, Apache Hive, Apache HBase, Trino, Apache Kafka, Apache Pulsar, Apache Solr

    Beside the system

    A service next to the system keeps the system's own access control, its roles, grants and row policies, in step with the policies. Nothing is installed in the system, and the system checks every request itself, over every protocol. A change applies at the next sync, ten seconds later by default; grants made outside GrantForge stay, and the agent warns of those a policy denies.

    Systems: ClickHouse, Apache Doris, PostgreSQL, Elasticsearch, OpenSearch

    In front of the system

    A network proxy that clients connect to instead of the server. Statements are checked, filtered and masked before they reach the server; clients connect through the proxy.

    Systems: MySQL

    Systems

    Kind System Enforcement Row filters Masking Verified versions
    Relational database MySQL · agent In front of the system Yes Yes 8.0, 8.4
    Relational database PostgreSQL · agent Beside the system Yes No (PostgreSQL has no column masking) 15, 16, 17, 18
    Analytical database (OLAP) Apache Doris · agent Beside the system Yes No (Doris masks values only through Apache Ranger) 2.1, 3.1, 4.0, 4.1
    Analytical database (OLAP) ClickHouse · agent Beside the system Yes No (ClickHouse masks columns only in its cloud) 24.8, 25.3, 25.8, 26.3, 26.8
    Wide-column database (NoSQL) Apache HBase · agent In the system No No 2.5.16, 2.6.7, 3.0.0
    Data warehouse and query engine Apache Hive · agent In the system Yes Yes 3.1.3, 4.0.1, 4.1.0
    Data warehouse and query engine Trino · agent In the system Yes Yes 470, 476, 479, 484
    Messaging and streaming Apache Kafka · agent In the system No No 3.7.2, 3.9.2, 4.1.2, 4.3.1
    Messaging and streaming Apache Pulsar · agent In the system No No 3.0.17, 3.3.9, 4.0.14, 4.2.5
    Search engine Apache Solr · agent In the system No No 9.8.1, 9.10.1, 9.11.0, 10.0.0
    Search engine Elasticsearch · agent Beside the system Yes No (Elasticsearch masks no values) 8.19, 9.3, 9.4, 9.5
    Search engine OpenSearch · agent Beside the system Yes Yes 2.19, 3.3, 3.6, 3.9
    Distributed storage Apache Hadoop HDFS · agent In the system No No 2.7.7, 2.10.2, 3.2.4, 3.3.6, 3.4.3, 3.5.0
    Resource management Apache Hadoop YARN · agent In the system No No 3.2.4, 3.3.6, 3.4.3, 3.5.0
    Coordination Apache ZooKeeper · agent In the system No No 3.9.5 (the agent is built against ZooKeeper 3.6.4)

    Versions are those the repository's Testcontainers integration tests run against; other releases are not certified. Each plugin's page and its agent's page give the details.

    What every agent does

    Every agent downloads its service's policy snapshot, checks its Ed25519 signature before using it and keeps the last good one on disk, so it keeps enforcing while the GrantForge server is away. Accesses go to the access audit in batches, identical allowed ones folded into one event with a count, and are spooled to disk while the server cannot be reached.

    Edit this page on GitHub