Skip to main content

Configure Datasette to block operations using the SQLite set_authorizer mechanism

Project description

datasette-sqlite-authorizer

PyPI Changelog Tests License

Configure Datasette to block operations using the SQLite set_authorizer mechanism

Installation

Install this plugin in the same environment as Datasette.

datasette install datasette-sqlite-authorizer

Usage

This plugin currently offers a single configuration option: read_only_tables. You can use this to specify a list of tables that should be read-only.

If a table is read-only, any attempt to write to it - insert, update, delete, drop table, alter table - will be denied with an error message.

To configure read-only tables, add the following to your metadata.yaml file:

plugins:
  datasette-sqlite-authorizer:
    read_only_tables:
    - table: my_table
      database: my_database

You can omit the database key if you want to apply the same rule to all databases.

Here's how to use this plugin to make all tables relating to Litestream synchronization read-only, across all attached databases:

plugins:
  datasette-sqlite-authorizer:
    read_only_tables:
    - table: _litestream_lock
    - table: _litestream_seq

Logging actions

To enable debug output (to standard error) for specific action checks, add them to a debug_actions list. For example, to log all SQLITE_INSERT actions:

plugins:
  datasette-sqlite-authorizer:
    debug_actions:
    - SQLITE_INSERT
    - SQLITE_DELETE

Logged output will look something like this:

authorizer: {"action": "SQLITE_INSERT", "arg1": "foo", "arg2": null, "db_name": "main", "trigger_name": null, "result": "OK"}
authorizer: {"action": "SQLITE_DELETE", "arg1": "foo", "arg2": null, "db_name": "main", "trigger_name": null, "result": "OK"}

Development

To set up this plugin locally, first checkout the code. Then create a new virtual environment:

cd datasette-sqlite-authorizer
python3 -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datasette-sqlite-authorizer-0.2.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file datasette-sqlite-authorizer-0.2.tar.gz.

File metadata

File hashes

Hashes for datasette-sqlite-authorizer-0.2.tar.gz
Algorithm Hash digest
SHA256 cd4aec28e9bc86fc1856b88190e2ddd36b2796a321f7286448f861f0d51ffa0d
MD5 f924d6bd23ffe744256ae049ee2fe9fc
BLAKE2b-256 bea060248eafcbbd6dc44dd87d0f1f3260b0890203270c2d0b3eb1457dcf51c4

See more details on using hashes here.

File details

Details for the file datasette_sqlite_authorizer-0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for datasette_sqlite_authorizer-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c24f641b234d72ad6c9e601e9ae1bdbe1a09049493367b422d6f75d12eedd395
MD5 6cb14a050c72b24add34efe3be3986b3
BLAKE2b-256 15685d214c257ee7e66c95b850e08a05c5d285d5cb39697ccb4a3744d900f8e9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page