diff --git a/.DS_Store b/.DS_Store index aa504d8..9306b1d 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index f508275..d443429 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Generated files -morbac_pg.sql -morbac_pg--*.sql +pg_morbac.sql +pg_morbac--*.sql # Test database dumps *.dump diff --git a/CHANGELOG.md b/CHANGELOG.md index 18d1ea0..cb1ff8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,4 +41,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Complete documentation - Build and installation automation (Makefile, install.sh) -[1.0.0]: https://github.com/yourusername/morbac_pg/releases/tag/v1.0.0 +[1.0.0]: https://github.com/yourusername/pg_morbac/releases/tag/v1.0.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 828559a..da1392d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to morbac_pg +# Contributing to pg_morbac -Thank you for your interest in contributing to morbac_pg! +Thank you for your interest in contributing to pg_morbac! ## How to Contribute @@ -62,8 +62,8 @@ brew install postgresql # macOS # or use your package manager # Clone your fork -git clone https://github.com/your-username/morbac_pg.git -cd morbac_pg +git clone https://github.com/your-username/pg_morbac.git +cd pg_morbac # Install the extension make install diff --git a/LICENSE b/LICENSE index 7b0ea8a..969d57c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2026 morbac_pg contributors +Copyright (c) 2026 pg_morbac contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index 3e10f4a..f925a28 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ -# Makefile for morbac_pg PostgreSQL Extension +# Makefile for pg_morbac PostgreSQL Extension # Multi-OrBAC: Organization-Based Access Control -EXTENSION = morbac_pg +EXTENSION = pg_morbac # Read version from control file EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed "s/default_version = '\(.*\)'/\1/") @@ -35,7 +35,7 @@ build: # Install extension in PostgreSQL (creates versioned file if needed) .PHONY: install install: build - @echo "Installing morbac_pg extension..." + @echo "Installing pg_morbac extension..." $(MAKE) -f Makefile install # Run tests with development file in temporary database @@ -51,18 +51,18 @@ test: build # Uninstall extension .PHONY: uninstall uninstall: - @echo "Uninstalling morbac_pg extension..." + @echo "Uninstalling pg_morbac extension..." $(MAKE) -f Makefile uninstall # Show help .PHONY: help help: - @echo "morbac_pg Makefile targets:" + @echo "pg_morbac Makefile targets:" @echo "" @echo "Development:" @echo " Edit source files in src/ directory" @echo "" - @echo " make build - Build versioned morbac_pg--X.Y.Z.sql from src/" + @echo " make build - Build versioned pg_morbac--X.Y.Z.sql from src/" @echo " make test - Build and run test suite" @echo " make install - Build and install extension to PostgreSQL" @echo " make uninstall - Uninstall extension from PostgreSQL" @@ -71,7 +71,7 @@ help: @echo "Workflow:" @echo " 1. Edit source files in src/" @echo " 2. make test (build and test changes)" - @echo " 3. Update version in morbac_pg.control" + @echo " 3. Update version in pg_morbac.control" @echo " 4. make build (builds versioned SQL)" @echo " 5. git tag vX.Y.Z && git push --tags" @echo "" diff --git a/README.md b/README.md index 065f67c..6165268 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# morbac_pg +# pg_morbac **Multi-Organization Based Access Control for PostgreSQL** @@ -34,15 +34,15 @@ A PostgreSQL extension implementing the Multi-OrBAC access control model - enabl ```bash # Clone repository -git clone https://github.com/yourusername/morbac_pg.git -cd morbac_pg +git clone https://github.com/yourusername/pg_morbac.git +cd pg_morbac # Build and install extension make build # Build versioned file from src/ sudo make install # Install to PostgreSQL # Enable in your database -psql -d mydb -c "CREATE EXTENSION morbac_pg;" +psql -d mydb -c "CREATE EXTENSION pg_morbac;" ``` ### Alternative: Using install script @@ -59,14 +59,14 @@ sudo ./tools/install.sh ```bash # Build versioned file from source -make build # Concatenates src/ files into morbac_pg--1.0.0.sql +make build # Concatenates src/ files into pg_morbac--1.0.0.sql # Copy files to PostgreSQL extension directory -sudo cp morbac_pg.control $(pg_config --sharedir)/extension/ -sudo cp morbac_pg--1.0.0.sql $(pg_config --sharedir)/extension/ +sudo cp pg_morbac.control $(pg_config --sharedir)/extension/ +sudo cp pg_morbac--1.0.0.sql $(pg_config --sharedir)/extension/ # Enable in PostgreSQL -psql -d mydb -c "CREATE EXTENSION morbac_pg;" +psql -d mydb -c "CREATE EXTENSION pg_morbac;" ``` ## Quick Start @@ -170,13 +170,13 @@ LIMIT 10; # Development workflow # 1. Edit source files in src/ directory # 2. Build and test -make build # Build versioned morbac_pg--X.Y.Z.sql from src/ +make build # Build versioned pg_morbac--X.Y.Z.sql from src/ make test # Build and run test suite # Manual testing make build createdb morbac_test -psql -d morbac_test -f morbac_pg.sql +psql -d morbac_test -f pg_morbac.sql # ... test manually ... dropdb morbac_test ``` @@ -219,8 +219,8 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for guidelines. ```bash -git clone https://github.com/yourusername/morbac_pg.git -cd morbac_pg +git clone https://github.com/yourusername/pg_morbac.git +cd pg_morbac # Edit source files in src/ vim src/authorization.sql @@ -229,9 +229,9 @@ vim src/authorization.sql make test # Run test suite # When ready to release -# 1. Update version in morbac_pg.control +# 1. Update version in pg_morbac.control # 2. Build versioned file -make build # Creates morbac_pg--X.Y.Z.sql +make build # Creates pg_morbac--X.Y.Z.sql # 3. Tag in git git tag v1.0.1 git push --tags @@ -240,13 +240,13 @@ git push --tags ## Support - Read the [documentation](docs/DOCUMENTATION.md) -- Report bugs via [GitHub Issues](https://github.com/yourusername/morbac_pg/issues) -- Ask questions in [Discussions](https://github.com/yourusername/morbac_pg/discussions) +- Report bugs via [GitHub Issues](https://github.com/yourusername/pg_morbac/issues) +- Ask questions in [Discussions](https://github.com/yourusername/pg_morbac/discussions) - Security issues: see [SECURITY.md](docs/SECURITY.md) ## Comparison with Traditional RBAC -| Feature | Traditional RBAC | morbac_pg | +| Feature | Traditional RBAC | pg_morbac | |---------|-----------------|-----------| | Multi-tenancy | No | Yes | | Prohibitions | No | Yes | diff --git a/SECURITY.md b/SECURITY.md index a8a0ac4..17b779f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -8,7 +8,7 @@ ## Security Model -morbac_pg implements the Multi-OrBAC access control model with the following security principles: +pg_morbac implements the Multi-OrBAC access control model with the following security principles: ### Default Deny - No permission = access denied @@ -36,7 +36,7 @@ morbac_pg implements the Multi-OrBAC access control model with the following sec ## Reporting a Vulnerability -If you discover a security vulnerability in morbac_pg, please report it responsibly: +If you discover a security vulnerability in pg_morbac, please report it responsibly: ### DO NOT - Open a public GitHub issue for security vulnerabilities @@ -67,7 +67,7 @@ If you discover a security vulnerability in morbac_pg, please report it responsi ## Security Best Practices -When using morbac_pg: +When using pg_morbac: ### 1. Protect Authorization Headers ```sql @@ -80,7 +80,7 @@ When using morbac_pg: -- Always enable RLS on application tables ALTER TABLE app.documents ENABLE ROW LEVEL SECURITY; --- Use morbac_pg for authorization +-- Use pg_morbac for authorization CREATE POLICY doc_access ON app.documents FOR ALL USING (morbac.rls_check('read', 'documents')); ``` @@ -120,7 +120,7 @@ LIMIT 100; ### 5. Regular Updates - Keep PostgreSQL updated -- Monitor for morbac_pg security advisories +- Monitor for pg_morbac security advisories - Review and test policies regularly ### 6. Principle of Least Privilege @@ -138,4 +138,4 @@ LIMIT 100; ## Acknowledgments -We appreciate responsible disclosure and will acknowledge security researchers who help improve morbac_pg security. +We appreciate responsible disclosure and will acknowledge security researchers who help improve pg_morbac security. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 5eb4b29..17a881e 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4,34 +4,34 @@ This extension uses a single-source version approach: -- **Version source of truth**: `morbac_pg.control` (the `default_version` field) -- **Development file**: `morbac_pg.sql` (unversioned, for daily work) -- **Release files**: `morbac_pg--X.Y.Z.sql` (generated, git-ignored) +- **Version source of truth**: `pg_morbac.control` (the `default_version` field) +- **Development file**: `pg_morbac.sql` (unversioned, for daily work) +- **Release files**: `pg_morbac--X.Y.Z.sql` (generated, git-ignored) ## Daily Development -1. **Edit**: Work on `morbac_pg.sql` (no version numbers in the file) +1. **Edit**: Work on `pg_morbac.sql` (no version numbers in the file) 2. **Test**: Run `make test` to test changes in a temporary database -3. **Commit**: Commit `morbac_pg.sql` to git regularly +3. **Commit**: Commit `pg_morbac.sql` to git regularly ## Release Process When ready to release a new version: -1. **Update version**: Edit `morbac_pg.control` and change `default_version` +1. **Update version**: Edit `pg_morbac.control` and change `default_version` ``` default_version = '1.1.0' ``` 2. **Create release**: Run `make release` - Reads version from `.control` file - - Copies `morbac_pg.sql` → `morbac_pg--X.Y.Z.sql` + - Copies `pg_morbac.sql` → `pg_morbac--X.Y.Z.sql` 3. **Test**: Run `make test` with the versioned file 4. **Tag in git**: ```bash - git add morbac_pg.control morbac_pg--X.Y.Z.sql + git add pg_morbac.control pg_morbac--X.Y.Z.sql git commit -m "Release vX.Y.Z" git tag vX.Y.Z git push origin main --tags @@ -42,7 +42,7 @@ When ready to release a new version: For version migrations, create upgrade scripts: ```bash # Example: upgrade from 1.0.0 to 1.1.0 -touch morbac_pg--1.0.0--1.1.0.sql +touch pg_morbac--1.0.0--1.1.0.sql ``` These contain only the ALTER/ADD statements needed for the upgrade. diff --git a/docs/DOCUMENTATION.md b/docs/DOCUMENTATION.md index 837f422..57e8e88 100644 --- a/docs/DOCUMENTATION.md +++ b/docs/DOCUMENTATION.md @@ -1,4 +1,4 @@ -# morbac_pg Documentation +# pg_morbac Documentation Complete technical documentation for the Multi-OrBAC PostgreSQL extension. @@ -17,7 +17,7 @@ Complete technical documentation for the Multi-OrBAC PostgreSQL extension. ### Design Principles -morbac_pg is built on these principles: +pg_morbac is built on these principles: 1. **Pure PostgreSQL** - No external dependencies (except pgcrypto) 2. **Schema Isolation** - All objects in `morbac` schema @@ -889,7 +889,7 @@ CREATE TABLE app.delegation_audit ( ### Comparison: Multi-OrBAC vs Traditional RBAC -| Aspect | Traditional RBAC | Multi-OrBAC (morbac_pg) | +| Aspect | Traditional RBAC | Multi-OrBAC (pg_morbac) | |--------|-----------------|-------------------------| | **Multi-tenancy** | Single tenant or complex workarounds | Native multi-organization | | **Prohibition** | No standard support | First-class, always wins | diff --git a/docs/PERFORMANCE.md b/docs/PERFORMANCE.md index ae36c24..5b32ec9 100644 --- a/docs/PERFORMANCE.md +++ b/docs/PERFORMANCE.md @@ -1,10 +1,10 @@ # Performance Optimization Guide -This guide explains the performance optimizations built into morbac_pg and how to use them effectively. +This guide explains the performance optimizations built into pg_morbac and how to use them effectively. ## Performance Architecture -morbac_pg includes several layers of optimization: +pg_morbac includes several layers of optimization: 1. **Materialized Views** - Precomputed hierarchy transitive closures 2. **Authorization Cache** - Configurable TTL cache for authorization decisions (default: 5 minutes) @@ -414,7 +414,7 @@ $$; ## Conclusion -With these optimizations, morbac_pg can handle: +With these optimizations, pg_morbac can handle: - **>1000 authorization checks/second** (cached) - **>100 authorization checks/second** (uncached) - **Complex hierarchies** (10+ levels deep) diff --git a/morbac_pg.control b/pg_morbac.control similarity index 78% rename from morbac_pg.control rename to pg_morbac.control index 08dda36..7e2c0cb 100644 --- a/morbac_pg.control +++ b/pg_morbac.control @@ -1,8 +1,8 @@ -# morbac_pg extension +# pg_morbac extension # Multi-OrBAC access control model for PostgreSQL comment = 'Multi-OrBAC: Organization-Based Access Control with multi-organization support' default_version = '1.0.0' -module_pathname = '$libdir/morbac_pg' +module_pathname = '$libdir/pg_morbac' relocatable = false schema = morbac requires = 'pgcrypto' diff --git a/src/config.sql b/src/config.sql index d54984e..1c29afc 100644 --- a/src/config.sql +++ b/src/config.sql @@ -1,7 +1,7 @@ -- ============================================================================= -- CONFIGURATION -- ============================================================================= --- Centralized configuration for morbac_pg extension +-- Centralized configuration for pg_morbac extension -- Edit these values to customize behavior CREATE TABLE morbac.config ( diff --git a/src/header.sql b/src/header.sql index 59354e1..3ff8341 100644 --- a/src/header.sql +++ b/src/header.sql @@ -1,5 +1,5 @@ -- ============================================================================= --- morbac_pg Extension +-- pg_morbac Extension -- ============================================================================= -- Multi-OrBAC: Organization-Based Access Control with Multi-Organization Support -- Based on the CNRS research paper on Multi-OrBAC model diff --git a/tests/00_setup.sql b/tests/00_setup.sql index 26d9e69..673a05c 100644 --- a/tests/00_setup.sql +++ b/tests/00_setup.sql @@ -6,11 +6,11 @@ -- ============================================================================= -- Clean up any previous test -DROP EXTENSION IF EXISTS morbac_pg CASCADE; +DROP EXTENSION IF EXISTS pg_morbac CASCADE; DROP SCHEMA IF EXISTS morbac CASCADE; -- Install the extension -CREATE EXTENSION morbac_pg; +CREATE EXTENSION pg_morbac; -- Verify schema and tables exist \echo '=== Schema and Tables Created ===' diff --git a/tools/build.sh b/tools/build.sh index 345be05..b5013b4 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -1,17 +1,17 @@ #!/bin/bash # ============================================================================= -# Build Script for morbac_pg Extension +# Build Script for pg_morbac Extension # ============================================================================= -# Concatenates SQL source files in src/ into a single morbac_pg.sql file +# Concatenates SQL source files in src/ into a single pg_morbac.sql file # Order: header first, then specific order for dependencies, footer last # ============================================================================= set -e SRC_DIR="src" -OUTPUT="morbac_pg.sql" +OUTPUT="pg_morbac.sql" -echo "Building morbac_pg.sql from source files..." +echo "Building pg_morbac.sql from source files..." # Check if src directory exists if [ ! -d "$SRC_DIR" ]; then diff --git a/tools/install.sh b/tools/install.sh index e718628..128194a 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -1,10 +1,10 @@ #!/bin/bash -# Installation script for morbac_pg extension +# Installation script for pg_morbac extension set -e echo "==================================" -echo "morbac_pg Extension Installer" +echo "pg_morbac Extension Installer" echo "==================================" echo "" @@ -40,10 +40,10 @@ if [ ! -d "$EXTDIR" ]; then fi # Detect version from control file -CONTROL_FILE="morbac_pg.control" +CONTROL_FILE="pg_morbac.control" if [ ! -f "$CONTROL_FILE" ]; then echo "Error: $CONTROL_FILE not found" - echo "Please run this script from the morbac_pg directory" + echo "Please run this script from the pg_morbac directory" exit 1 fi @@ -53,7 +53,7 @@ if [ -z "$VERSION" ]; then exit 1 fi -SQL_FILE="morbac_pg--${VERSION}.sql" +SQL_FILE="pg_morbac--${VERSION}.sql" echo "Detected version: $VERSION" echo "" @@ -67,7 +67,7 @@ fi # Copy extension files echo "Installing extension files..." -cp -v morbac_pg.control "$EXTDIR/" +cp -v pg_morbac.control "$EXTDIR/" cp -v "$SQL_FILE" "$EXTDIR/" echo "" @@ -77,7 +77,7 @@ echo "==================================" echo "" echo "To use the extension in your database:" echo "" -echo " psql -d your_database -c 'CREATE EXTENSION morbac_pg;'" +echo " psql -d your_database -c 'CREATE EXTENSION pg_morbac;'" echo "" echo "To run tests:" echo "" diff --git a/tools/test.sh b/tools/test.sh index 455a36e..fc10d53 100755 --- a/tools/test.sh +++ b/tools/test.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============================================================================= -# Test Runner for morbac_pg Extension +# Test Runner for pg_morbac Extension # ============================================================================= # Runs all tests in order, loading setup data and executing each test file. # Usage: ./tools/test.sh [database_name] @@ -15,14 +15,14 @@ PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" TEST_DIR="$PROJECT_DIR/tests" echo "======================================" -echo "morbac_pg Extension Test Suite" +echo "pg_morbac Extension Test Suite" echo "======================================" echo "Database: $DB" echo "" # Install extension echo "=== Installing Extension ===" -psql -d "$DB" -f "$PROJECT_DIR/morbac_pg.sql" +psql -d "$DB" -f "$PROJECT_DIR/pg_morbac.sql" # Load common setup echo ""