QUA-1632: Add required permissions for each connector on the connections page#1086
Conversation
…connections page Add detailed Setup Guide sections with minimum permissions, SQL grant examples, and troubleshooting tables for 18 connectors: PostgreSQL, MySQL, MariaDB, TimescaleDB, Microsoft SQL Server, Synapse, Oracle, DB2, Redshift, Databricks, Teradata, Hive, Presto, Trino, Dremio, Fabric Analytics, Azure Datalake Storage, and Google Cloud Storage. Each connector now documents: - Minimum permissions for source datastore (read-only) - Additional permissions for enrichment datastore (read-write) where supported - Ready-to-use SQL scripts or IAM policies - Troubleshooting common errors table
…pts for all connectors Standardize all 18 connector permission sections to match the Athena documentation pattern. Each connector now includes: - Example scripts: Added ready-to-copy code blocks for Presto (rules.json), Trino (rules.json), Dremio (SQL GRANT), Fabric Analytics (Azure CLI), Azure Data Lake Storage (az role assignment), and Google Cloud Storage (gsutil iam ch) - Detailed Troubleshooting Notes: Added subsections for Authentication Errors, Permission Errors, and Connection Errors with bullet-point common causes and debugging tips for all 18 connectors - Admonitions: Added missing notes for DB2 (SYSCAT system catalogs) and Trino (connector-level security)
Greptile SummaryThis PR adds detailed permissions documentation and troubleshooting guides for 18 connector types that were previously missing Setup Guide sections. Each connector now documents minimum required privileges for source and/or enrichment datastores, includes copy-paste-ready SQL/CLI grant examples, and provides a structured troubleshooting table plus detailed notes for authentication, permission, and connection errors.\n\nKey observations:\n\n- The documentation is comprehensive, consistently formatted, and technically accurate across the vast majority of connectors.\n- MySQL and MariaDB: The Confidence Score: 4/5Safe to merge after fixing the PROCESS privilege omission in the MySQL and MariaDB grant examples. The PR is a large, well-structured documentation addition that is accurate across 16 of 18 connectors. The one concrete fix needed is adding a global GRANT PROCESS ON . TO ... statement to the MySQL and MariaDB grant examples, since PROCESS is listed as required but absent from the copy-paste examples. This would leave users with an incomplete setup for those two connectors. All other content — permissions tables, SQL/CLI examples, troubleshooting tables, and detailed notes — is technically sound and consistently formatted. docs/source-datastore/add-datastores/mysql.md and docs/source-datastore/add-datastores/maria-db.md — both are missing the global PROCESS privilege grant in their example SQL blocks. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Qualytics Connector] --> B{Auth Method}
B -->|SQL Auth / Basic| C[Username + Password]
B -->|Service Principal / PAT / OAuth| D[Token / Client Credentials]
B -->|Access Key| E[Account Key / HMAC Key]
C --> F{Check Permissions}
D --> F
E --> F
F -->|Source Datastore| G[Read-Only Grants\nSELECT / USAGE / CONNECT\nObjectViewer / Data Reader]
F -->|Enrichment Datastore| H[Read-Write Grants\n+ CREATE TABLE / INSERT\n+ UPDATE / DELETE\n+ Contributor Role]
G --> I{Supported?}
H --> J{Supported?}
I -->|Yes - all connectors| K[Source Datastore Ready]
J -->|No - Oracle, Hive, TimescaleDB\nTeradata, Dremio, Presto, Fabric| L[Use Different Enrichment Datastore]
J -->|Yes - PostgreSQL, MySQL, MariaDB\nSQL Server, Synapse, Redshift\nDatabricks, DB2, Trino\nAzure ADLS, GCS| M[Enrichment Datastore Ready]
|
…nrichment permissions, and document missing connection properties Add Troubleshooting Common Errors and Detailed Troubleshooting Notes sections to BigQuery, Snowflake, and Amazon S3 to match the Athena documentation pattern. Fix enrichment permissions tables with missing DROP TABLE (PostgreSQL, SQL Server, Synapse), ALTER TABLE + DROP TABLE (Redshift, Trino), and DROPIN (DB2) based on actual dataplane write operations. Document missing connection properties found in controlplane code: - Databricks: OAuth M2M authentication (Service Principal + OAuth Secret) - Oracle: TCP/TCPS protocol selector - Hive: ZooKeeper HA toggle - DB2: SSL toggle - Teradata: SELECT ON DBC.DatabasesV permission for catalog discovery - PostgreSQL: track_commit_timestamp config for incremental profiling Add Example IAM Policy JSON sections to Azure Data Lake Storage and Google Cloud Storage with ready-to-copy role assignments.
…GRANT examples Add GRANT PROCESS ON *.* to both source and enrichment SQL examples in MySQL and MariaDB. PROCESS is a global-level privilege that cannot be granted at database scope — it was listed in the permissions table but missing from the copy-paste examples, leaving users with an incomplete setup.
Overview
This PR adds detailed permissions documentation for all connectors on the Connections page, addressing QUA-1632. Each connector now documents the minimum database/cloud permissions required to configure it as a source and/or enrichment datastore in Qualytics, following the same standardized format established by the Athena connector (QUA-1634).
The documentation was cross-referenced against the controlplane (
connection.py,specifications/), dataplane (JDBCStore.scala,DFSStore.scala,NativeStore.scala,EnrichmentConfig.scala), and frontend (data-models.ts,datastore-form.ts) codebases to ensure all permissions, authentication methods, and connection properties are accurately documented.Key Changes
Permissions and SQL/IAM Examples (18 connectors)
ALTER DEFAULT PRIVILEGESfor future tablessys.schemas/sys.database_principalsdiscovery notes and Service Principal authentication guidanceCREATE SESSIONandSELECTgrants with both schema-level and role-based access control examples, plus TCP/TCPS protocol documentationSYSCAT.SCHEMATA/SYSCAT.TABLESsystem catalog access,CREATEIN/ALTERIN/DROPINgrants for enrichment, and SSL toggle documentationALTER DEFAULT PRIVILEGESfor future tablesUSAGE,SELECT,MODIFY,CREATE TABLE),CAN USEcompute requirement, and OAuth M2M authentication documentationLOGON,SELECT,SHOW, andSELECT ON DBC.DatabasesVpermissions with system database filtering details and LDAP authentication notesSELECTpermissions with Kerberos authentication and ZooKeeper HA toggle documentationrules.json) and connector-level security model examplesGRANTexamples with PAT and Basic authentication method detailsStorage Blob Data Reader/Storage Blob Data Contributor) with Example IAM Role Assignment JSON and Azure CLI commandsroles/storage.objectViewer/roles/storage.objectAdmin), GCS Roles Summary table, and gcloud CLI commandsTroubleshooting (all 21 connectors)
Every connector now includes:
Enrichment Permissions Fix
Updated enrichment permissions tables to match actual dataplane write operations (
JDBCStore.scala,EnrichmentConfig.scala):DROP TABLEto PostgreSQL, SQL Server, SynapseALTER TABLE+DROP TABLEto Redshift, TrinoDROPIN ON SCHEMAto DB2Connection Properties from Controlplane
Documented missing connection properties found in
connection.py:track_commit_timestampconfig for incremental profilingSELECT ON DBC.DatabasesVfor catalog discoveryGreptile Review Fix
GRANT PROCESS ON *.*to both source and enrichment SQL examples --PROCESSis a global-level privilege that cannot be granted at database scopeSpell Check
CREATEINandALTERINto.typos.tomldictionaryScreenshots
N/A -- text-only documentation changes.