--- title: "Databricks Setup" slug: "databricks-setup" updated: 2026-08-23T16:23:32Z published: 2026-08-23T16:23:32Z canonical: "docs.plainid.io/databricks-setup" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.plainid.io/llms.txt > Use this file to discover all available pages before exploring further. # Databricks Setup This guide outlines the **prerequisites** and **configuration** steps required to enable SaaS Authorization Management for Databricks using PlainID. --- ## Prerequisites **PlainID POP Service Principal** Ensure that you have a PlainID POP Service Principal. This must be assigned to PlainID and granted sufficient privileges to perform all Orchestration-related operations in Databricks. **To create a PlainID POP Service Principal**: - Create a dedicated **PlainID POP Service Principal** in Databricks. It must have the appropriate privileges for both **LEARN** and **MANAGE** modes. - This Service Principal will own any Databricks functions created by PlainID in Manage Mode. - It should have sufficient access to support Policy Discovery, Orchestration, and Management. > For more information, see [Service Principals in Databricks](https://docs.databricks.com/aws/en/admin/users-groups/service-principals.html). --- ### Required Privileges To support PlainID integration, you must configure a **Databricks Service Principal**. All required privileges should be granted either directly to the service principal or to a group it is a member of. **A group that includes the service principal** must be assigned to the **Databricks workspace** where you intend to manage Policies. > For more information, refer to the [Databricks documentation](https://docs.databricks.com/aws/en/admin/users-groups/manage-groups#assign-a-group-to-a-workspace). Privileges in Databricks are **hierarchical** and **inherited**. Granting privileges to a Service Principal automatically applies to all existing and future objects in the top-level scope. #### Privileges for Learn Mode To use Learn mode, use the following privileges in Databricks: | Privilege | Purpose | | --- | --- | | SYSTEM.Information_Schema: `SELECT` | To enable full metadata access, grant SELECT privileges on the following under SYSTEM.Information_Schema: `catalogs`, `schemata`, `catalog_privileges`, `schema_privileges`, `table_privileges`, `routine_privileges`, `views`, `routines`, `parameters`, `row_filters`, `column_masks`, `tables`, and `columns` | | SYSTEM CATALOG: `USE` CATALOG: `USE` (On Catalog) | Grants the ability to reference objects within the catalog. | | CATALOG: `BROWSE` (On Catalog) | Grants the ability to view object metadata (via Catalog Explorer, schema browser, search results, lineage graph, `information_schema`, REST API). **Required if using SCHEMA: `USE`** *Note: This privilege is currently in Public Preview.* | | SYSTEM.Information_Schema SCHEMA: `USE` SCHEMA: `USE` (On Schema) | Grants the ability to reference objects (Tables or Iceberg Tables, functions, etc.) within the catalog. **Required if using TABLE: `SELECT`** **Recommended**: Use SCHEMA: `USE` on the Catalog level if you wish to grant permissions to all Schemas under the Catalog. | | TABLE: `SELECT`, VIEW: `SELECT` | Grants the ability to query/read data from the Table or Iceberg Tables. *Note: This privilege is required on Tables used as Identity Sources and for connecting functions to row filtering or column masking.* **Recommended** Use SCHEMA: `SELECT` on the schema level if you wish to grant permissions to all Tables/Views under the schema. | --- #### Additional Privileges for Manage Mode In **Manage Mode**, a POP Service Principal must also be granted the following additional privileges **in addition to [Learn Mode privileges](/v1/docs/databricks-setup#privileges-for-learn-mode)**: | Privilege | Purpose | | --- | --- | | FUNCTION: `CREATE` (On Schema) | Grants the ability to create a function in the schema. | | TABLE: `MODIFY`, VIEW: `MODIFY` | Grants the ability to modify, drop, or update the signature of functions on securable objects (for relevant tables). **Recommended**: Use SCHEMA: `MODIFY` on the Schema level if you wish to grant permissions to all Tables/Views under the schema. | | TABLE: `MANAGE`, VIEW: `MANAGE` | Grants the ability to assign/unassign functions on securable objects (for relevant schemas). *Note: `Manage` is currently in Public Preview* **Recommended**: Use SCHEMA: `MANAGE` on the Schema level if you wish to grant permissions to all Tables/Views under the schema. | Refer to the official Databricks documentation for more information on [Unity Catalog privileges](https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges/privileges). --- ## Creating a Databricks Policy Orchestration Point (POP) Once the POP Service Principal is configured with the required privilege. Ensure you have the following: - An **Orchestration Workspace**. To create one, refer to [Managing Workspaces](/v1/docs/managing-workspaces). - A Databricks POP. Refer to [Managing POPs](/v1/docs/managing-pops) to create one. To learn about switching modes, refer to our [Orchestration Workspace](https://docs.plainid.io/v1/docs/orchestration-workspace) documentation. --- ## Connection Settings To connect Databricks to PlainID, define the following connection fields: | **Connection Field** | **Description** | | --- | --- | | **Discover Views** | To Discover Views, enable Discover Views to include Views along with Tables in the discovery process. (Default is false) | | **Authentication Method** | Use a Service Principal for Databricks integration. | | **Secret Store** | Choose a Secret Store where your credentials are stored. The default is **PlainID Internal Store**. Fields below are modified based on the chosen Store. For more information about **External Secret Stores** like **HashiCorp**, **Azure KeyVault**, or **AWS IAM for RDS or SM**, refer to [About Secret Stores](/v1/docs/about-secret-stores). | | **Host** | The Host URL is the base address of your Databricks workspace, used for API access and integrations. (eg., https://.cloud.databricks.com or https://.azuredatabricks.net (for Azure)). | | **Client ID** | A unique identifier for the service principal. | | **Client Secret** | A confidential credential associated with the Client ID, used to authenticate and authorize the service principal. Only for use with the **PlainID Internal Store**. | | **Secret Key** | The Secret Key of the External Secret Store. Only for use with **[External Secret Stores](/v1/docs/about-secret-stores)**. *Note: If opting to use a Secret Key, ensure that your Client Secret is set in your External Secret Store.* | | **Warehouse ID** | Unique identifier for a SQL warehouse in Databricks. (e.g., 1234abcd-56ef-78gh-90ij-123456klmno) | --- ## Function Discovery in PlainID PlainID requires visibility into relevant functions to support policy discovery. Only functions that are applied to Tables used for **row filtering** or **column masking** are discovered, and only if the **Databricks POP service principal** is either the **Owner** or has the **EXECUTE privilege** on them. --- ## Authentication Method ### Access to Databricks resources with a service principal PlainID leverages service principal authentication to establish a secure integration with Databricks. A service principal is a non-human identity used for automation and programmatic access, enabling tools to interact with Databricks CLI commands or REST API calls using scoped credentials while ensuring fine-grained access control. > For more information, see [Service Principals in Databricks](https://docs.databricks.com/aws/en/admin/users-groups/service-principals.html).