Setup Omni Connector¶
This page describes how to create an Omni Connector on a Runtime Plane. See the Overview for the supported platforms and deployment modes.
Prerequisites on the data platform¶
Create a dedicated credential for the connector and grant it only what it needs.
- A workspace with Unity Catalog and a running SQL warehouse. The connector reads metadata and grants through JDBC.
- A service principal (OAuth M2M, recommended) or a personal access token.
- To scan, the credential needs
USE CATALOG,USE SCHEMAandBROWSEon every catalog it should see. Unity Catalog has no wildcard grant, so grant on each catalog:SQL - To enforce policies, the credential must be able to
GRANTandREVOKEon the objects it manages, for example as the owner or withMANAGE. - To read the grants of a foreign catalog, grant
MANAGEon it. To link a foreign catalog to its source, grantUSE CONNECTIONon its connection.
- A workspace with a running SQL warehouse that can reach the hive metastore.
- A service principal (OAuth M2M, recommended) or a personal access token.
- The credential must be able to read and grant on the legacy table ACLs of the databases it manages.
- If you turn on access audits, the credential must be a workspace admin, so that it can see other users' queries.
- A role that can create a role, warehouse and user (
ACCOUNTADMIN, orSECURITYADMINwithSYSADMIN). - A small, auto-suspending warehouse. Reading
INFORMATION_SCHEMAneeds compute. - A least-privilege role and user for the connector:
- To enforce policies, the role needs the authority to
GRANTandREVOKE. The scoped option is to make the role the owner of managed-access schemas. The broad option isGRANT MANAGE GRANTS ON ACCOUNT. - For key-pair authentication, generate an RSA key pair and register the public key on the user:
Bash SQL
Coverage follows grants
A database the role cannot use does not appear. A database visible only through a PUBLIC grant shows no schemas until the role is granted USAGE on them. An under-privileged role produces a partial scan without an error.
- The connector user must be a superuser, or have
SYSLOG ACCESS UNRESTRICTEDtogether with the authority to grant. Redshift lets only the owner, aWITH GRANT OPTIONholder or a superuser grant on objects, and the catalog views the connector reads return only the current user's own objects to a non-privileged user. - For IAM authentication, the AWS identity must be allowed to get database credentials for the cluster (
GetClusterCredentials) or the serverless workgroup (GetCredentials). - If you turn on access audits, run the following for the connector login (not needed for a superuser):
SQL
- The connector's AWS identity needs
glue:GetCatalogs,glue:GetCatalog,glue:GetDatabases,glue:GetDatabase,glue:GetTables,glue:GetTable,lakeformation:ListPermissions,lakeformation:ListResources,lakeformation:ListRLSPolicyAttachments,lakeformation:GetRLSPolicyandsts:GetCallerIdentity, plus Lake Formation read access: a read-only data lake administrator, orDESCRIBEon each governed database. - To enforce policies, it also needs
lakeformation:GrantPermissions,lakeformation:RevokePermissions,lakeformation:BatchGrantPermissionsandlakeformation:BatchRevokePermissions, and the authority to grant (a data lake administrator in the region, or grant option). - To apply row filters, it also needs
lakeformation:CreateRLSPolicy,lakeformation:AttachRLSPolicy,lakeformation:DetachRLSPolicyandlakeformation:DeleteRLSPolicy. - The recommended credential source is the pod's IAM role (IRSA), which keeps keys out of the configuration. To use another account, use an assumed role: the base identity must be allowed
sts:AssumeRoleon it, and its trust policy must allow the base identity.
Create a connector¶
- In the Trust3 AI portal, go to Settings → Runtime Plane and open your Self-Managed or Partially Managed (D2P) Runtime Plane.
- Open the Connectors tab and select Add New.
- Select the connector card for your platform (see Supported platforms).
- On BASIC INFO, enter the following, then select Continue:
- Name: lowercase letters, numbers and hyphens, with a single space allowed only between words. It must start and end with a letter or number, and be unique within the Runtime Plane.
- Deployment Mode: Shared or Dedicated. See Deployment mode.
- Description: optional.
- On ACCESS CONTROL CONFIGS, fill in the connection settings and managed resources, and optionally the other sections. Fields marked with an asterisk (*) are required. For a Dedicated connector on a Self-Managed plane, also fill in Metadata Service authentication.
- Select Save.
- Verify the connector in the Connector Plane UI: it appears in the Directory with Liveness
ONLINE. Use Rescan to run the first metadata scan, then open the run in Connector Runs.
Secrets
Credential fields are password fields, and are encrypted before they leave your browser. If the Runtime Plane uses an external secret store (AWS Secrets Manager, Google Secret Manager, Azure Key Vault or Kubernetes), the value you enter is the key name inside that store, not the secret. On a plane that holds the keys itself, enter the secret directly. See How Sensitive Data is Handled.
A bad connection value can stop the shared pod
A connector with a bad connection value can hold down the shared pod. See Troubleshooting.
Connection settings¶
| Field | Description |
|---|---|
| SQL warehouse JDBC URL * | jdbc:databricks://<host>:443/default;httpPath=/sql/1.0/warehouses/<id>. Host and httpPath only. Remove any inline UID, PWD or AuthMech. The connector fails to start without it. |
| Auth type | OAuth M2M (service principal) (default, recommended) or Personal access token (PAT). |
| OAuth client ID (M2M) / OAuth client secret (M2M) | The service principal's application ID and OAuth secret. Shown for OAuth M2M. |
| Access token (PAT) | The personal access token. Shown for PAT. |
The Lake Formation Federation section is optional. See Lake Formation Federation.
| Field | Description |
|---|---|
| SQL warehouse JDBC URL * | jdbc:databricks://<host>:443/default;httpPath=/sql/1.0/warehouses/<id>, for the warehouse that holds the hive metastore. Remove any inline UID, PWD or AuthMech. |
| Auth type | OAuth M2M (service principal) (default, recommended) or Personal access token (PAT). |
| OAuth client ID (M2M) / OAuth client secret (M2M) | Shown for OAuth M2M. |
| Access token (PAT) | Shown for PAT. |
| Session catalog | The catalog the warehouse session is pinned to. Default hive_metastore. Governed names are two-part (database.table), so this decides which catalog a grant lands in. On a Unity Catalog workspace, the warehouse's own default may not be hive_metastore. Enter - to skip the pin for a warehouse that rejects USE CATALOG. |
| Targeted read batch size | Object names per SHOW TABLE EXTENDED ... LIKE batch when reading individual changes. Default 500. |
| Field | Description |
|---|---|
| Account * | The account locator, <org>-<account>, for example myorg-myaccount. It is used to build the JDBC URL. |
| User * | The user the connector signs in as. |
| Auth type | Key-pair (RSA JWT) (default, recommended), Programmatic access token (PAT), OAuth token, or Password (legacy). |
| Private key (PEM) / Private key passphrase | For key-pair. Paste the full PKCS#8 key, including the -----BEGIN and -----END lines. Leave the passphrase empty for an unencrypted key. |
| Token | For PAT and OAuth. |
| Password | For Password. Discouraged. |
| Role * | The role used to run scan and grant statements. |
| Warehouse * | The warehouse used for the connector's queries. |
| Grant source | How existing grants are read for drift detection. INFORMATION_SCHEMA (default, fresh), SHOW GRANTS (fresh, no warehouse, one statement per object), or ACCOUNT_USAGE (bulk, but about one hour stale or more). |
Each scan resumes the warehouse, and Snowflake bills a 60-second minimum. Use an XSMALL warehouse with AUTO_SUSPEND = 60, and keep the scan schedule modest.
| Field | Description |
|---|---|
| JDBC URL * | jdbc:redshift://<host>:5439. The Database is appended. A URL that already includes the database is used as it is. |
| Database * | The database the connector connects to and governs. |
| Auth type * | Password (default) or AWS IAM. |
| User / Password | For Password. |
| AWS region / Database user (IAM) / AWS profile (IAM) | For AWS IAM. Leave the profile blank to use the default credential chain or the pod's IRSA role. On a Shared connector, profiles come from the pod's file system and are not isolated per connector. |
| Serverless workgroup | Select Yes when the IAM target is a Redshift Serverless workgroup. |
| Field | Description |
|---|---|
| Regions * | Comma-separated AWS regions, for example us-east-1,us-west-2. One connector covers many regions. The region is the first segment of an object name. |
| Auth mode | Default credential chain (IRSA) (default, recommended), Assume role, or Static access keys (development only). |
| Assume role ARN / Assume role external ID | For Assume role. The external ID is needed if the trust policy requires one. |
| AWS access key ID / AWS secret access key / AWS session token | For static keys. The session token is optional. |
| Allowed principal accounts | Comma-separated AWS account IDs whose principals may be granted access. * (default) allows any. |
Metadata Service authentication¶
On a Self-Managed Runtime Plane, the connector authenticates to the Omni Metadata Service with a JWT token. The MDS Authentication section has these fields:
| Field | Description |
|---|---|
| Enable Metadata Service authentication | On by default. The connector uses a JWT token to authenticate with the Metadata Service. |
| Metadata Service JWT auth token * | The token the connector presents. Shown when Enable Metadata Service authentication is on. |
Where you set these fields depends on the deployment mode:
- Dedicated: in the connector form. The section appears after you select Dedicated.
- Shared: once for all Shared connectors, in the OmniConnector system application under System Applications. See Shared application settings.
The section is not shown on Partially Managed (D2P) planes.
To create the token:
- In the Trust3 AI portal, go to Settings → System Configurations and turn on the Crypto UI feature. This enables Token Management.
- Go to Settings → Token Management and create a token with Type set to
MDS. Select the scopes for the token and generate it. - Enter the token in Metadata Service JWT auth token, then save the connector or the system application.
Managed resources¶
Managed Resources controls what the connector governs. It applies to the metadata scan, the permission sweep, and grants and revokes.
| Field | Description |
|---|---|
| Include | One object name or wildcard pattern per line. |
| Exclude | One object name or wildcard pattern per line. Exclude takes precedence over Include. |
| Resource types governed | The resource types to govern. Empty uses the connector defaults in the table below. |
A new connector governs nothing until you add an Include entry
Include is empty by default, which means deny-all. Enter * alone to govern everything. We recommend starting with one test catalog, database or schema, and widening once you are comfortable.
- Names are dot-separated and use the shape for the platform shown in Supported platforms, for example
analytics.sales.orders. *and?match within one segment. There is no**.- A shorter pattern covers everything below it. For example,
analytics.salescovers every object in that schema. - Use object names as they appear on the platform.
- Narrowing the scope never deletes anything. Objects that fall out of scope are kept and marked as ungoverned, and are restored if you widen the scope again. Their existing grants stay in place.
- Emptying Include on an existing connector removes the whole scope and the connector governs nothing. You are asked to confirm.
| Platform | Resource types you can govern | Governed by default |
|---|---|---|
| Databricks Unity Catalog | CATALOG, SCHEMA, TABLE, VIEW, MATERIALIZED_VIEW, VOLUME, FUNCTION, MODEL (listed, not scanned yet), EXTERNAL_LOCATION, STORAGE_CREDENTIAL, CONNECTION, SERVICE_CREDENTIAL, EXTERNAL_METADATA (listed, not scanned yet), CLEAN_ROOM (listed, not scanned yet) | SCHEMA, TABLE, VIEW |
| Databricks SQL | DATABASE, TABLE, VIEW, UDF | DATABASE, TABLE, VIEW, UDF |
| Snowflake | DATABASE, SCHEMA, TABLE, VIEW, MATERIALIZED_VIEW, WAREHOUSE | SCHEMA, TABLE, VIEW |
| Amazon Redshift | DATABASE, SCHEMA, TABLE, VIEW, MATERIALIZED_VIEW | DATABASE, SCHEMA, TABLE, VIEW |
| AWS Lake Formation | REGION, CATALOG, DATABASE, TABLE, VIEW, MATERIALIZED_VIEW, DATA_LOCATION, DATABASE_RESOURCE_LINK, TABLE_RESOURCE_LINK | CATALOG, DATABASE, TABLE, VIEW, MATERIALIZED_VIEW, DATABASE_RESOURCE_LINK, TABLE_RESOURCE_LINK, DATA_LOCATION |
A governed type and the types below it are governed. Types above it are only traversed. For example, with the Unity Catalog defaults, the catalog is traversed but not itself governed. Add CATALOG to govern catalog-level policies.
Resource types that sit at the top of the hierarchy, such as Snowflake warehouses and Unity Catalog external locations, are governed only when you add their type to Resource types governed. Then use Include to name them, for example GOV_WH for a warehouse.
Examples¶
| Platform | Goal | Include | Exclude | Resource types governed |
|---|---|---|---|---|
| Unity Catalog | Govern the analytics catalog, plus its volumes | analytics | SCHEMA, TABLE, VIEW, VOLUME | |
| Databricks SQL | Govern two databases, except scratch tables | sales, hr | sales.tmp_* | (empty) |
| Snowflake | Govern two databases, except a scratch schema | SALES, HR | SALES.SCRATCH | (empty) |
| Snowflake | Also govern a warehouse | SALES, GOV_WH | SCHEMA, TABLE, VIEW, WAREHOUSE | |
| Redshift | Govern one schema | dev.public | (empty) | |
| Lake Formation | Govern one database in one region | us-east-1.123456789012.sales | (empty) |
Scan schedule¶
Both schedules take a six-field Spring cron expression in UTC, or - to disable the schedule. A manual trigger always works.
| Field | Default | Example | Meaning |
|---|---|---|---|
| Metadata scan schedule | - (off) | 0 0 */4 * * * | Full resource scan, every 4 hours. |
| Permission sweep schedule | - (off) | 0 0 */8 * * * | Drift detection, every 8 hours. |
Scheduling is off by default. A new connector runs only when triggered manually, until you set a cron.
A permission sweep reads the real grants, so it is heavier than a scan. Stagger it and run it less often. On Databricks SQL and Snowflake, every run resumes the warehouse (60-second minimum billing), so prefer an infrequent schedule, for example 0 0 */4 * * * for scans and 0 0 */8 * * * for sweeps.
Next
Optional features, such as access audits, Lake Formation federation and event ingestion, are in Advanced Configuration.
- Prev topic: Overview
- Next topic: Advanced Configuration