Apache Accumulo Access Control Library

Clone this repo:
  1. 7586010 Improved README introduction (#101) by Keith Turner · 2 days ago main
  2. be1b160 Remove duplicate method calls in AccessEvaluator methods (#99) by Dave Marion · 14 days ago
  3. c48e028 fixes code example in javadoc (#100) by Keith Turner · 2 weeks ago
  4. fc6b8a4 adds new class to API list by Keith Turner · 2 weeks ago
  5. 8cefd87 adds new class to API list by Keith Turner · 2 weeks ago

Accumulo Access Library

Java library implementing the access expression DSL which can be used to determine if data is visible to an entity with a set of authorizations. For a conceptual overview of what an access expression is, see the specification document. See the Getting Started section for an example of how to use this java library.

This library provides the same functionality, semantics, and syntax as the Apache Accumulo ColumnVisibility and VisibilityEvaluator classes. This functionality is provided in a standalone java library that has no dependencies (for example no Hadoop, Zookeeper, Thrift, etc dependencies).

Public API

The following types constitute the public API of this library. All other types are package private and are not part of the public API.

Getting Started

Add the library to your CLASSPATH. For Maven, use:

<dependencies>
  <dependency>
    <groupId>org.apache.accumulo</groupId>
    <artifactId>accumulo-access</artifactId>
    <version>${version.accumulo-access}</version>
  </dependency>
</dependencies>

Running the Examples

To run AccessExample

mvn clean package

java --module-path=core/target/accumulo-access-core-1.0.0-SNAPSHOT.jar:examples/target/accumulo-access-examples-1.0.0-SNAPSHOT.jar  --module=accumulo.access.examples/org.apache.accumulo.access.examples.AccessExample
java --module-path=core/target/accumulo-access-core-1.0.0-SNAPSHOT.jar:examples/target/accumulo-access-examples-1.0.0-SNAPSHOT.jar  --module=accumulo.access.examples/org.apache.accumulo.access.examples.AccessExample RED BLUE

Note that data6 is always returned, because it has no access expression. And remember, authorizations are case-sensitive.

To run ParseExamples

mvn clean package
java --module-path=core/target/accumulo-access-core-1.0.0-SNAPSHOT.jar:examples/target/accumulo-access-examples-1.0.0-SNAPSHOT.jar --module=accumulo.access.examples/org.apache.accumulo.access.examples.ParseExamples

For an ANTLRv4 example, see its README.

Running the Benchmark

This project includes a JMH Benchmark. To run it:

mvn clean verify -pl core -Pbenchmark