Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/exasol/row-level-security-lua

Lua implementation of Exasol's row-level-security
https://github.com/exasol/row-level-security-lua

access-management exasol exasol-integration lua security virtual-schema

Last synced: 6 days ago
JSON representation

Lua implementation of Exasol's row-level-security

Awesome Lists containing this project

README

        

# Row Level Security (Lua)

[![Build Status](https://github.com/exasol/row-level-security-lua/actions/workflows/ci-build.yml/badge.svg)](https://github.com/exasol/row-level-security-lua/actions/workflows/ci-build.yml)

Protect access to database tables on a per-row level based on roles and / or tenants.

## Features

Restrict access to rows (datasets) in tables to …

* set of roles
* tenants (owners)
* group of users
* combination of tenant and role
* combination of tenant and group

## Table of Contents

### Information for Users

* [User Guide](doc/user_guide/user_guide.md)
* [Tutorial](doc/user_guide/tutorial.md)
* [Changelog](doc/changes/changelog.md)

### Information for Contributors

Requirement, design documents and coverage tags are written in [OpenFastTrace](https://github.com/itsallcode/openfasttrace) format.

* [Developer Guide](doc/developer_guide/developer_guide.md)

### Runtime Dependencies

#### Lua Dependencies

Running the RLS Lua Virtual Schema requires a Exasol with built-in Lua 5.1 or later.

| Dependency | Purpose | License |
|------------------------------------------|--------------------------------------------------------|-------------------------------|
| [Lua CJSON][luacjson] | JSON parsing and writing | MIT License |
| [remotelog][remotelog] | Logging through a TCP socket | MIT License |

`remotelog` has a transitive dependency to [LuaSocket][luasocket] (MIT License). Note that Lua CSON and LuaSucket are pre-installed on an Exasol database.

For local unit testing you need to install them on the test machine though.

[luacjson]: https://www.kyne.com.au/~mark/software/lua-cjson.php
[luasocket]: https://github.com/diegonehab/luasocket
[remotelog]: https://github.com/exasol/remotelog-lua

### Test Dependencies

#### Unit Test Dependencies

Unit tests are written in Lua.

| Dependency | Purpose | License |
|------------------------------------------|--------------------------------------------------------|-------------------------------|
| [luaunit][luaunit] | Unit testing framework | BSD License |
| [Mockagne][mockagne] | Mocking framework | MIT License |

[luaunit]: https://github.com/bluebird75/luaunit
[mockagne]: https://github.com/vertti/mockagne

#### Integration Test Dependencies

The integration tests require `exasol-testcontainers` to provide an Exasol instance. They are written in Java and require version 11 or later.

See also: Java [Dependencies](dependencies.md).

### Build Dependencies

This project has a complex build setup due to the mixture of Lua and Java. [Apache Maven](https://maven.apache.org/) serves as the main build tool.

Lua build steps are also encapsulated by Maven.

| Dependency | Purpose | License |
|-------------------------------------------|--------------------------------------------------------|-------------------------------|
| [Amalg][amalg] | Bundling Lua modules (and scripts) | MIT License |
| [LuaRocks][luarocks] | Package management | MIT License |

[amalg]: https://github.com/siffiejoe/lua-amalg
[luarocks]: https://luarocks.org/

See also: Java [Dependencies](dependencies.md).