feat: RLS for 8 tables (ai_decision_records, approval_requests, automation_agent_run_steps, roles, sequences, wiki_*) — migration 0129

This commit is contained in:
Agent Zero
2026-08-20 11:25:42 +02:00
parent 36531d24a1
commit 9bf8157667
@@ -0,0 +1,42 @@
"""Enable RLS for 8 tables that need tenant isolation.
Tables excluded (no tenant_id column):
- outbox_deliveries: linked via event_outbox which has tenant_id
- marketplace_listings: global plugin marketplace, not tenant-specific
Revision ID: 0129
Revises: 0128
"""
from alembic import op
revision = "0129"
down_revision = "0128"
branch_labels = None
depends_on = None
TABLES_NEEDING_RLS = [
"ai_decision_records",
"approval_requests",
"automation_agent_run_steps",
"roles",
"sequences",
"wiki_articles",
"wiki_article_versions",
"wiki_categories",
]
def upgrade() -> None:
for table in TABLES_NEEDING_RLS:
op.execute(f"ALTER TABLE {table} ENABLE ROW LEVEL SECURITY;")
op.execute(
f"CREATE POLICY tenant_isolation ON {table} "
f"FOR ALL USING (tenant_id = current_setting('app.tenant_id')::uuid);"
)
def downgrade() -> None:
for table in TABLES_NEEDING_RLS:
op.execute(f"DROP POLICY IF EXISTS tenant_isolation ON {table};")
op.execute(f"ALTER TABLE {table} DISABLE ROW LEVEL SECURITY;")