Skip to main content

Policy Catalog

Kostavo ships 107 resource policies. Every policy supports Notify mode; the Actions column lists all supported action modes. Add policies to a policy profile to run them.

Clusters & Compute

PolicyIDDescriptionActions
Abandoned Single-User Clusterscluster_abandonedFind single-user clusters whose creator is no longer an active workspace memberREMOVE, NOTIFY
Clusters Without Disk Encryptioncluster_disk_encryptionFind clusters with local disk encryption disabledNOTIFY
Clusters With Custom Docker Containerscluster_docker_containerDetect clusters using custom Docker images, which may contain unvetted dependencies and bypass standard runtime governanceNOTIFY
Cluster Env Vars — Not Using Secret Scopescluster_env_vars_scopeDetect clusters with spark environment variables not backed by Databricks secret scopes ({{secrets/scope/key}})NOTIFY
Cluster Env Vars — Possible Secretscluster_env_vars_secretsDetect clusters whose spark environment variable values appear to contain secrets (API keys, tokens, connection strings, etc.)NOTIFY
Clusters With Init Scriptscluster_init_scriptFlag clusters with init scripts that can inject arbitrary code and bypass governance controlsNOTIFY
Clusters With Legacy Access Modecluster_legacy_access_modeDetect clusters using legacy access modes that lack proper data isolationNOTIFY
Legacy Databricks Runtimecluster_legacy_runtimeFind clusters running outdated or non-LTS Databricks Runtime versionsNOTIFY
Clusters with Failed Librariescluster_library_failedFind clusters that have libraries in FAILED or SKIPPED installation stateNOTIFY
Long-Running Clusterscluster_long_runningFind clusters that have been running for longer than a maximum number of hoursREMOVE, FIX, NOTIFY
No Auto-Terminationcluster_no_autoterminationFind clusters with auto-termination disabled or set above a maximum thresholdFIX, NOTIFY
Clusters Without Policycluster_no_policyFind clusters that are not governed by a cluster policy, bypassing org guardrailsNOTIFY
Clusters Without Tagscluster_no_tagsFind clusters with no custom tags or missing specified required tag keysNOTIFY
Oversized Clusterscluster_oversizedFind clusters where the number of workers exceeds a maximum thresholdNOTIFY
Overly Permissive Cluster Accesscluster_permissions_openFind clusters where broad groups (e.g. 'users') have CAN_ATTACH_TO or CAN_RESTART — this can lead to uncontrolled compute spend and data accessNOTIFY
Permissive Cluster Policiescluster_policy_permissiveFind cluster policies missing constraints on auto-termination, node types, worker count, or runtimeNOTIFY
Single-Node Cluster Misusecluster_single_node_misuseFind clusters with num_workers=0 (single-node mode) that use large or GPU instance types — this wastes resources since Spark parallelism is not usedNOTIFY
Clusters Not Using Spot Instancescluster_spot_policyFind clusters configured with on-demand instances where spot or spot-with-fallback could reduce costs significantlyNOTIFY
Clusters With SSH Accesscluster_ssh_enabledDetect clusters with SSH public keys configured, allowing direct SSH access to nodesNOTIFY
Policy Non-Compliant Clusterspolicy_noncompliant_clusterFind clusters that no longer comply with their assigned cluster policy — policy changes may leave existing clusters out of complianceNOTIFY
Running Compute Clustersrunning_computeFind compute clusters that are currently runningFIX, NOTIFY

SQL Warehouses

PolicyIDDescriptionActions
Stale Saved SQL Queriesstale_saved_queryFind saved SQL queries that have not been updated or run in a long time — workspace clutter that may reference outdated tables or schemasNOTIFY
Excessive Multi-Cluster Warehouseswarehouse_multi_cluster_excessiveFind SQL warehouses where the maximum number of clusters exceeds a thresholdFIX, NOTIFY
Warehouse No Auto-Stopwarehouse_no_autostopFind SQL warehouses with auto-stop disabled or set above a maximum thresholdFIX, NOTIFY
Warehouses Without Tagswarehouse_no_tagsFind SQL warehouses with no custom tags or missing specified required tag keysNOTIFY
Non-Serverless Warehouseswarehouse_not_serverlessFind SQL warehouses not using serverless compute, missing auto-scaling and zero idle cost benefitsNOTIFY
Overly Permissive Warehouse Accesswarehouse_permissions_openFind SQL warehouses where broad groups (e.g. 'users') have CAN_USE or CAN_MANAGE — unrestricted warehouse access can lead to large unexpected compute billsNOTIFY
Warehouses on Preview Channelwarehouse_preview_channelDetect SQL warehouses running on the preview channel, which may have stability issuesFIX, NOTIFY
Running SQL Warehouseswarehouse_runningFind SQL warehouses that are currently runningFIX, NOTIFY
Warehouse Sizewarehouse_sizeFind SQL Warehouses that exceed a specified maximum size and downscale themREMOVE, FIX, NOTIFY

Jobs

PolicyIDDescriptionActions
Jobs Using All-Purpose Clustersjob_all_purpose_clusterFind jobs with tasks running on all-purpose clusters instead of job clusters or serverless, which is more expensiveNOTIFY
Job Cluster Env Vars — Not Using Secret Scopesjob_cluster_env_vars_scopeDetect job cluster definitions with spark environment variables not backed by Databricks secret scopes ({{secrets/scope/key}})NOTIFY
Job Cluster Env Vars — Possible Secretsjob_cluster_env_vars_secretsDetect job cluster definitions whose spark environment variable values appear to contain secrets (API keys, tokens, connection strings, etc.)NOTIFY
Job Clusters Without Tagsjob_cluster_no_tagsFind jobs with new_cluster definitions missing custom tags for cost trackingNOTIFY
Job Clusters With SSH Accessjob_cluster_sshFind jobs with new_cluster definitions that have SSH public keys configuredNOTIFY
Continuous Jobs Runningjob_continuous_runningFind jobs configured in continuous mode that are actively running — these incur ongoing compute costs and may be forgottenFIX, NOTIFY
Excessive Job Concurrencyjob_excessive_concurrencyFind jobs configured to allow too many concurrent runs, risking resource contention and cost spikesFIX, NOTIFY
Repeatedly Failing Jobsjob_failing_repeatedlyFind triggered jobs where the last N consecutive runs have all failedFIX, NOTIFY
Long-Running Job Runsjob_long_running_runDetect active job runs that have been executing longer than a configurable thresholdFIX, NOTIFY
Jobs With No/Inactive Creatorjob_no_creatorFind jobs whose creator is missing or is no longer an active workspace user (account deleted/deactivated)FIX, NOTIFY
Jobs Without Failure Notificationsjob_no_notificationFind scheduled/triggered jobs with no email or webhook notifications configured for failuresNOTIFY
Jobs Without Retry Policyjob_no_retry_policyFind scheduled/triggered jobs with tasks that have no retry policy, making them vulnerable to transient failuresNOTIFY
Jobs Without Timeoutjob_no_timeoutFind scheduled/triggered jobs with no timeout configured, risking runaway executionNOTIFY
Jobs Not From Asset Bundlejob_not_asset_bundleFlag jobs not deployed using Databricks Asset Bundles (DABs), indicating ad-hoc or manually created jobs outside CI/CD governanceNOTIFY
Overly Permissive Job Accessjob_permissions_openFind jobs where broad groups (e.g. 'users') have CAN_MANAGE or CAN_MANAGE_RUN — this can lead to unintended job modifications or costly runsNOTIFY
Jobs Without Queue Enabledjob_queue_disabledFind scheduled/triggered jobs without queue enabled — new runs fail instead of queuing when max concurrent runs is reachedFIX, NOTIFY
High-Frequency Scheduled Jobsjob_schedule_frequencyFind jobs scheduled to run more frequently than a threshold — very high-frequency jobs may be better served by streaming or continuous modeNOTIFY
Jobs with Triggersjob_with_triggerFind jobs that have active triggers or schedules configuredREMOVE, FIX, NOTIFY
Policy Non-Compliant Jobspolicy_noncompliant_jobFind jobs with compute that no longer complies with the assigned cluster policy — policy changes may leave existing job configurations out of complianceNOTIFY

Pipelines

PolicyIDDescriptionActions
Continuous Pipelinespipeline_continuous_modeFind Lakeflow Declarative Pipelines in continuous mode that run 24/7FIX, NOTIFY
Pipelines in Development Modepipeline_development_modeFind Lakeflow Declarative Pipelines in development mode — development pipelines skip retries and data quality enforcement, and are not suitable for productionNOTIFY
Pipeline Editionpipeline_editionFind Lakeflow Declarative Pipelines not using the expected edition. Higher editions (PRO, ADVANCED) incur additional cost.NOTIFY
Failed Pipelinespipeline_failedDetect Lakeflow Declarative Pipelines stuck in FAILED stateNOTIFY
Pipelines Without Notificationspipeline_no_notificationFind Lakeflow Declarative Pipelines with no email or webhook notifications configured for failuresNOTIFY
Pipelines Without Target Schemapipeline_no_targetFind Lakeflow Declarative Pipelines with no target schema or catalog, meaning output goes to an unmanaged locationNOTIFY
Pipelines Not From Asset Bundlepipeline_not_asset_bundleFlag Lakeflow Declarative Pipelines not deployed using Databricks Asset Bundles, indicating ad-hoc or manually created pipelines outside CI/CD governanceNOTIFY
Pipelines on Preview Channelpipeline_preview_channelFind Lakeflow Declarative Pipelines using the preview channel, which may have stability issues compared to the current (stable) channelNOTIFY

Model Serving

PolicyIDDescriptionActions
Model Serving Provisioned Throughputmodel_serving_provisionedFind model serving endpoints with provisioned throughput enabledREMOVE, FIX, NOTIFY
Serving Allowed Entity Typesserving_entity_typesDetect served entities using disallowed entity types (foundation model, external model, custom)NOTIFY
Serving Env Vars — Not Using Secret Scopesserving_env_vars_scopeDetect served entities and models with environment variables not backed by Databricks secret scopes ({{secrets/scope/key}})NOTIFY
Serving Env Vars — Possible Secretsserving_env_vars_secretsDetect served entities and models whose environment variable values appear to contain secrets (API keys, tokens, connection strings, etc.)NOTIFY
Serving Deployment Stateserving_model_stateDetect served entities and models in failed, aborted, or recovering deployment statesREMOVE, NOTIFY
Serving Provisioned Concurrency Limitsserving_provisioned_concurrencyDetect served entities and models with provisioned concurrency outside allowed min/max rangeFIX, NOTIFY
Serving Scale-to-Zero Disabledserving_scale_to_zeroDetect served entities and models with scale-to-zero disabled, burning compute 24/7REMOVE, FIX, NOTIFY
Serving Maximum Workload Sizeserving_workload_sizeDetect served entities and models exceeding a specified maximum workload sizeFIX, NOTIFY
Serving Allowed Workload Typesserving_workload_typeDetect served entities and models using disallowed workload types (GPU, multi-GPU)NOTIFY

Lakebase

PolicyIDDescriptionActions
Lakebase Excessive Branch Countlakebase_branch_count_excessiveDetect Lakebase projects with too many branches, which increases cost and operational complexityNOTIFY
Lakebase Branch No Expirylakebase_branch_no_expiryDetect non-default Lakebase branches without expiry, which accumulate and waste storageNOTIFY
Lakebase Default Branch Unprotectedlakebase_default_branch_unprotectedDetect Lakebase default branches not protected from accidental deletion or resetFIX, NOTIFY
Lakebase Endpoint Excessive Max CUlakebase_endpoint_autoscaling_max_excessiveDetect Lakebase endpoints with autoscaling max compute units above threshold, risking runaway costsFIX, NOTIFY
Lakebase Endpoint Excessive Min CUlakebase_endpoint_autoscaling_min_too_highDetect Lakebase endpoints with autoscaling min compute units above threshold, incurring high baseline costsFIX, NOTIFY
Lakebase Endpoint No Suspensionlakebase_endpoint_no_suspensionDetect Lakebase endpoints with suspension disabled, wasting compute resourcesFIX, NOTIFY
Lakebase Endpoint Excessive Suspend Timeoutlakebase_endpoint_suspend_timeout_excessiveDetect Lakebase endpoints with a suspend timeout longer than allowed, wasting idle computeFIX, NOTIFY
Lakebase HA Policylakebase_ha_policyEnforce or disallow high availability on Lakebase endpoints based on organisational policyFIX, NOTIFY
Lakebase Legacy Postgres Versionlakebase_legacy_pg_versionDetect Lakebase projects running a Postgres version below the required minimumNOTIFY
Lakebase Native Login Enabledlakebase_native_login_enabledDetect Lakebase projects with PG native password login enabled, which is less secure than OAuthFIX, NOTIFY
Lakebase Insufficient PITR Retentionlakebase_pitr_retention_insufficientDetect Lakebase projects with history retention below the required minimum, risking data lossFIX, NOTIFY
Lakebase Project No Tagslakebase_project_no_tagsDetect Lakebase projects without custom tags, which hinders cost tracking and governanceNOTIFY
Lakebase Role Dangerous Attributeslakebase_role_dangerous_attributesDetect Lakebase roles with dangerous Postgres attributes that grant excessive capabilitiesNOTIFY
Lakebase Role Password Authlakebase_role_password_authDetect Lakebase roles using Postgres password authentication (SCRAM-SHA-256) instead of OAuthNOTIFY
Lakebase Role Superuserlakebase_role_superuserDetect Lakebase roles with DATABRICKS_SUPERUSER membership, which grants excessive privilegesNOTIFY

Databricks Apps

PolicyIDDescriptionActions
App Compute Sizeapp_compute_sizeFlag Databricks Apps whose compute size exceeds the allowed maximumNOTIFY
Running Databricks Appsapp_runningFind Databricks Apps that are currently running and optionally stop themREMOVE, FIX, NOTIFY
App Schedule (Start/Stop)app_scheduleAutomatically start Databricks Apps before operating hours and stop them after operating hoursFIX

Instance Pools

PolicyIDDescriptionActions
Idle Instance Poolsinstance_pool_idleFind instance pools with high minimum idle instances burning pre-warmed VM costsFIX, NOTIFY
Instance Pool No Autoterminationinstance_pool_no_autoterminationFind instance pools where idle instances are kept alive too long, burning pre-warmed VM costsFIX, NOTIFY
Oversized Instance Poolsinstance_pool_oversizedFind instance pools where the minimum idle instances far exceed actual usage — idle instances in pools still incur cloud infrastructure costsNOTIFY
Unused Instance Poolsinstance_pool_unusedFind instance pools not referenced by any running or configured cluster — wasted reserved capacity with no consumersREMOVE, NOTIFY
PolicyIDDescriptionActions
Empty Vector Search Endpointsvector_search_emptyFind Vector Search endpoints without indexesREMOVE, FIX, NOTIFY
Running Vector Search Endpointsvector_search_runningFind Vector Search endpoints that are provisioned and runningFIX, NOTIFY

Alerts & Dashboards

PolicyIDDescriptionActions
SQL Alerts (v2) Without Notification Destinationalert_v2_no_destinationFind scheduled SQL alerts (v2) with no notification subscribers — alerts fire silently with nobody receiving them. FIX pauses the alert schedule; REMOVE trashes the alert.REMOVE, FIX, NOTIFY
High-Frequency SQL Alerts (v2)alert_v2_schedule_frequencyFind SQL alerts (v2) scheduled more frequently than a threshold — very frequent alerts drive unnecessary warehouse usage and cost. FIX pauses the alert schedule.FIX, NOTIFY
SQL Alerts (v2) on Oversized Warehousealert_v2_warehouse_sizeFind SQL alerts (v2) attached to a warehouse larger than the allowed maximum — large warehouses are expensive and alerts rarely need them. FIX pauses the alert schedule.FIX, NOTIFY
Stale Lakeview Dashboardslakeview_dashboard_staleFind Lakeview (AI/BI) dashboards that haven't been updated recently — stale dashboards with scheduled refreshes waste warehouse computeNOTIFY
Legacy SQL Alertslegacy_alert_enabledFind legacy SQL alerts using the deprecated v1 API — these should be migrated to v2 alerts for proper scheduling and notification management. REMOVE deletes the alert.REMOVE, NOTIFY
Legacy SQL Dashboardslegacy_dashboardFind legacy Redash-based SQL dashboards — these are deprecated and should be migrated to Lakeview (AI/BI) dashboardsNOTIFY

Workspace Security & Hygiene

PolicyIDDescriptionActions
Init Scripts in DBFSdbfs_init_scriptsFind init scripts stored in /databricks/init which can cause unexpected behaviorNOTIFY
DBFS Large Filesdbfs_large_filesFind files exceeding size threshold in DBFS rootREMOVE, FIX, NOTIFY
Global Init Scriptsglobal_init_scriptDetect global init scripts that run on every cluster, representing a broad security riskNOTIFY
Missing IP Access Listsno_ip_access_listFlag workspaces with no IP access lists configured or all lists disabledNOTIFY
Secrets Managementsecret_scope_existsVerify that at least one secret scope exists in the workspace, indicating proper use of Databricks Secrets for credential managementNOTIFY
Permissive Secret Scope ACLssecret_scope_permissiveFind secret scopes that grant MANAGE permission too broadlyNOTIFY
Excessive Service Principalsservice_principal_countFlag workspaces with an unusually high number of service principals — may indicate abandoned automation or poor identity lifecycle managementNOTIFY
Inactive Service Principalsservice_principal_inactiveFind service principals that are deactivated but still exist in the workspace — they may still own resources or have stale tokensNOTIFY
Excessive Token Counttoken_excess_countAlert when a workspace has too many personal access tokens, increasing the attack surfaceNOTIFY
Tokens Without Expirytoken_no_expiryFind personal access tokens that have no expiry date or exceed a maximum lifetimeREMOVE, NOTIFY
Excessive Workspace Adminsworkspace_admin_countDetect when the workspace admins group has too many members, increasing the blast radius of compromised accountsNOTIFY