Databricks
Visualize Databricks workspace groups, users, and clusters, map Databrick users to employees, and monitor changes through queries and alerts.
- Installation
- Data Model
- Types
- Release Notes
Installation
To install this integration, you will need to configure settings both within Databricks and on JupiterOne. Before enabling in JupiterOne, ensure that you complete the setup within your Databricks account.
Configuration in Databricks
The integration authenticates against a single Databricks workspace with a personal access token. Follow the steps for the cloud your workspace runs on to find the workspace URL, then generate the token.
Databricks on AWS
- Go to the Databricks AWS account console and log in.
- In the Workspaces section, choose the workspace you want to ingest.
- The workspace URL has the format
https://[deployment-name].cloud.databricks.com, for examplehttps://dbc-c50dbe80-ed72.cloud.databricks.com. Take note of it and supply it on the integration configuration page.
Databricks on GCP
- Go to the Databricks GCP dashboard and log in.
- In the Workspaces section, choose the workspace.
- You will be able to see the URL on the following page that has the following
format:
https://[numbers].[number].gcp.databricks.com - Take note of it and supply it on the integration configuration page. For example,
https://1122334455.6.gcp.databricks.com
Generating the access token
- Click the workspace URL to go to the workspace dashboard. Once there, click on the settings icon (bottom part of left side menu) and choose User settings.
- Click Generate New Token, add comment/description, and press Generate. Retain this for use in JupiterOne.
For additional assistance generating an API Token on Databricks, see their documentation for more information.
Required Permissions in Databricks
The Personal Access Token must have appropriate permissions to access the following resources:
- Groups (
/api/2.0/groups/list) - to retrieve group information - Group Members (
/api/2.0/groups/list-members) - to retrieve user memberships in groups - Clusters (
/api/2.0/clusters/list) - to retrieve cluster configurations
Important: The token user must have CAN_ATTACH_TO permission on clusters to successfully retrieve cluster information. Without this permission, the cluster list will return empty results. This permission can be granted through cluster access control lists (ACLs) in the Databricks workspace settings.
Optional: AWS configuration of a Databricks on AWS workspace
The AWS resources backing a workspace — its region, VPC, subnets, security groups, root S3 bucket, KMS keys and PrivateLink settings — are only exposed through the Databricks account-level API, which a personal access token cannot call: "You can't use personal access tokens to automate Databricks account-level functionality."
To ingest them, additionally configure an account-level service principal with an OAuth secret:
- Go to the Databricks AWS account console and log in as an account admin.
- Copy your Account ID from the user menu in the top right corner.
- Go to User management > Service principals and either select an existing service principal or click Add service principal.
- On the service principal's Roles tab, enable Account admin. Account-level APIs require the service principal to be an account admin.
- On the Secrets tab, click Generate secret. Retain the Client ID and the Secret — the secret is only shown once.
The service principal reads the following account-level endpoints:
GET /api/2.0/accounts/{account_id}/workspaces- to find the account record of the configured workspaceGET /api/2.0/accounts/{account_id}/networks/{network_id}- to retrieve the VPC, subnets and security groupsGET /api/2.0/accounts/{account_id}/storage-configurations/{storage_configuration_id}- to retrieve the root S3 bucketGET /api/2.0/accounts/{account_id}/credentials/{credentials_id}- to retrieve the cross-account IAM role, which identifies the AWS accountGET /api/2.0/accounts/{account_id}/customer-managed-keys/{customer_managed_key_id}- to retrieve the KMS keysGET /api/2.0/accounts/{account_id}/private-access-settings/{private_access_settings_id}- to retrieve the PrivateLink settings
These fields are optional. When they are left empty, the integration ingests the workspace, its groups, users and clusters exactly as before. They have no effect on workspaces hosted on GCP or Azure.
Configuration in JupiterOne
To install the Databricks integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select Databricks. Click New Instance to begin configuring your integration.
Creating an instance requires the following:
-
The Account Name used to identify the Databricks account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNametoggle is enabled. -
Description to assist in identifying the integration instance, if desired.
-
Polling Interval that you feel is sufficient for your monitoring needs. You may leave this as
DISABLEDand manually execute the integration. -
Your Databricks Host and Access token.
-
Optionally, for a Databricks on AWS workspace, your Databricks Account ID, the Service Principal Client ID and the Service Principal OAuth Secret of the account-level service principal described above.
Click Create once all values are provided to finalize the integration.
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Cluster | databricks_cluster | Cluster |
| Group | databricks_group | UserGroup |
| User | databricks_user | User |
| Workspace | databricks_workspace | Account |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
databricks_group | HAS | databricks_user |
databricks_user | CREATED | databricks_cluster |
databricks_workspace | HAS | databricks_group |
databricks_workspace | HAS | databricks_cluster |
Mapped Relationships
The following mapped relationships are created:
Source Entity _type | Relationship _class | Target Entity _type | Direction |
|---|---|---|---|
databricks_cluster | IS | aws_instance | FORWARD |
databricks_workspace | USES | aws_vpc | FORWARD |
databricks_workspace | USES | aws_subnet | FORWARD |
databricks_workspace | USES | aws_s3_bucket | FORWARD |
databricks_workspace | USES | aws_kms_key | FORWARD |
databricks_workspace | USES | aws_cloudwatch | FORWARD |
databricks_workspace | USES | aws_config | FORWARD |
Databricks Cluster
databricks_cluster inherits from Cluster
| Property | Type | Description | Specifications |
|---|---|---|---|
autoTerminationMinutes | number | The idle time in minutes after which the cluster is terminated automatically. Zero disables automatic termination. | |
availabilityZone | string | The AWS availability zone the cluster nodes run in, e.g. us-east-1a. Only set on clusters in a Databricks on AWS workspace. | |
awsAvailability | string | The AWS instance purchasing strategy of the cluster: SPOT, ON_DEMAND or SPOT_WITH_FALLBACK. | |
creator | string | The user name of the principal that created the cluster. | |
ebsVolumeCount | number | The number of EBS volumes attached to each of the cluster nodes. | |
ebsVolumeSize | number | The size in GiB of each EBS volume attached to the cluster nodes. | |
ebsVolumeType | string | The type of the EBS volumes attached to the cluster nodes: GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. | |
enableElasticDisk | boolean | Whether the cluster acquires additional disk space when its workers run low on it. | |
enableLocalDiskEncryption | boolean | Whether the local disks attached to the cluster nodes are encrypted. | |
initScriptsSafeMode | boolean | Whether the cluster runs its init scripts in safe mode, i.e. from workspace-approved locations only. | |
instanceProfileArn | string | The ARN of the AWS instance profile the cluster nodes assume. | |
nodeTypeId | string | The instance type of the cluster worker nodes, e.g. m5d.large. | |
state | string | The current state of the cluster, e.g. PENDING, RUNNING, TERMINATED. | |
terminatedOn | number | The timestamp in milliseconds since epoch when the cluster was last terminated. |
Databricks Workspace
databricks_workspace inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
allowedVpcEndpointIds | array | null | The Databricks VPC endpoint identifiers allowed to connect to the workspace over AWS PrivateLink. | |
awsAccountId | string | null | The AWS account hosting the workspace data plane, taken from the cross-account IAM role Databricks assumes. | |
awsRegion | string | null | The AWS region the workspace data plane is deployed in, e.g. us-east-1. | |
cloud | string | The cloud the workspace data plane runs on: aws, azure or gcp. | |
computeMode | string | The compute mode of the workspace: HYBRID or SERVERLESS. | |
crossAccountRoleArn | string | null | The ARN of the cross-account IAM role Databricks assumes to manage the workspace data plane. | |
databricksAccountId | string | The identifier of the Databricks account the workspace belongs to. | |
deploymentName | string | The subdomain component of the workspace URL, e.g. dbc-c50dbe80-ed72. | |
encryptionKeyRef | string | null | The ARN of the AWS KMS key encrypting the workspace root storage, falling back to the managed services key. | |
isEncrypted | boolean | Whether the workspace is configured with a customer-managed key for either its storage or its managed services. | |
isManagedServicesEncrypted | boolean | Whether the workspace managed services (notebooks, secrets) are encrypted with a customer-managed key. | |
isPrivateEndpointEnabled | boolean | null | Whether the workspace is only reachable over AWS PrivateLink, i.e. public access is explicitly disabled in its private access settings. | |
isStorageEncrypted | boolean | Whether the workspace root storage is encrypted with a customer-managed key. | |
pricingTier | string | The pricing tier (SKU) of the workspace: COMMUNITY_EDITION, STANDARD, PREMIUM, ENTERPRISE or DEDICATED. | |
privateAccessLevel | string | null | Which VPC endpoints may connect to the workspace: ACCOUNT or ENDPOINT. | |
s3BucketName | string | null | The name of the S3 bucket backing the workspace root storage. | |
securityGroupIds | array | null | The identifiers of the AWS security groups attached to the workspace data plane. | |
storageMode | string | The storage mode of the workspace: CUSTOMER_HOSTED or DEFAULT_STORAGE. | |
subnetIds | array | null | The identifiers of the AWS subnets the workspace data plane runs in. | |
vpcEndpointIds | array | null | The Databricks VPC endpoint configuration identifiers registered for the workspace network, covering both the REST API and the data plane relay. | |
vpcId | string | null | The identifier of the AWS VPC hosting the workspace data plane. | |
vpcStatus | string | null | The status of the workspace network configuration: VALID, BROKEN, UNATTACHED or WARNED. | |
workspaceId | string | null | The Databricks-assigned identifier of the workspace, e.g. 6280049833385130. |
Release Notes
- 2022-02-09 — New Databricks integration: ingests workspaces, users, groups, and clusters, providing visibility into Databricks compute environments and access configurations.