Databricks workspace has public network access disabled
Azure Databricks workspaces are evaluated for public network access. Disabling public network access ensures the workspace is only reachable through private endpoints, reducing the attack surface and preventing direct exposure of the control plane and data plane to the internet.
Risk
Allowing public network access exposes the Databricks workspace control plane and data plane to the internet. Combined with leaked credentials, personal access tokens, or unpatched vulnerabilities, this enables unauthorized access, brute force, and data exfiltration from any source on the internet.
Run this check with Prowler
Run in Prowler Cloudprowler azure --checks databricks_workspace_public_network_access_disabledRecommendation
Disable public network access on Databricks workspaces and require connectivity via Azure Private Link private endpoints. Before enforcement, validate that all application workloads have private-network connectivity, and pair this control with VNet injection, secure cluster connectivity (no public IP), and least-privilege access to uphold defense in depth.
Remediation
CLI
az databricks workspace update --name <workspace_name> --resource-group <resource_group_name> --public-network-access DisabledTerraform
# Terraform: Disable public network access on a Databricks workspace
resource "azurerm_databricks_workspace" "<example_resource_name>" {
name = "<example_resource_name>"
resource_group_name = "<example_resource_name>"
location = "<region>"
sku = "premium"
public_network_access_enabled = false # CRITICAL: Blocks all public-internet traffic to the workspace
}NativeIaC
// Bicep: Disable public network access on a Databricks workspace
resource workspace 'Microsoft.Databricks/workspaces@2023-02-01' = {
name: '<example_resource_name>'
location: resourceGroup().location
sku: {
name: 'premium'
}
properties: {
managedResourceGroupId: '/subscriptions/<example_resource_id>/resourceGroups/<example_resource_name>'
publicNetworkAccess: 'Disabled' // CRITICAL: Blocks all public-internet traffic to the workspace
}
}Other
Check Code
from prowler.lib.check.models import Check, Check_Report_Azure
from prowler.providers.azure.services.databricks.databricks_client import (
databricks_client,
)
class databricks_workspace_public_network_access_disabled(Check):
"""
Ensure Azure Databricks workspaces have public network access disabled.
This check evaluates whether each Azure Databricks workspace in the subscription restricts connectivity to private endpoints by disabling public network access.
- PASS: The workspace has public network access disabled (public_network_access is "Disabled").
- FAIL: The workspace has public network access enabled (or the value is not set).
"""
def execute(self):
findings = []
for subscription, workspaces in databricks_client.workspaces.items():
subscription_name = databricks_client.subscriptions.get(
subscription, subscription
)
for workspace in workspaces.values():
report = Check_Report_Azure(
metadata=self.metadata(), resource=workspace
)
report.subscription = subscription
if workspace.public_network_access == "Disabled":
report.status = "PASS"
report.status_extended = f"Databricks workspace {workspace.name} in subscription {subscription_name} ({subscription}) has public network access disabled."
else:
report.status = "FAIL"
report.status_extended = f"Databricks workspace {workspace.name} in subscription {subscription_name} ({subscription}) has public network access enabled."
findings.append(report)
return findings