rules/findings/azure/databricks/azure-databricks-not-deployed-under-managed-vnet.json

{
    "provider": "Azure",
    "serviceType": "Databricks",
    "serviceName": "Analytics Services",
    "displayName": "Ensure that Azure Databricks is deployed in a customer-managed virtual network (VNet)",
    "description": "Networking for Azure Databricks can be set up in a few different ways. Using a customer-managed Virtual Network (VNet) (also known as VNet Injection) ensures that compute clusters and control planes are securely isolated within the organization’s network boundary. By default, Databricks creates a managed VNet, which provides limited control over network security policies, firewall configurations, and routing.",
    "rationale": "Using a customer-managed VNet ensures better control over network security and aligns with zero-trust architecture principles. It allows for:\n• Restricted outbound internet access to prevent unauthorized data exfiltration.\n• Integration with on-premises networks via VPN or ExpressRoute for hybrid connectivity.\n• Fine-grained NSG policies to restrict access at the subnet level.\n• Private Link for secure API access, avoiding public internet exposure.",
    "impact": "
        * Requires additional configuration during Databricks workspace deployment.
        * Might increase operational overhead for network maintenance.
        * May impact connectivity if misconfigured (e.g., restrictive NSG rules or missing routes).
    ",
    "remediation": {
        "text": "#### Remediate from Azure Portal
                1. Delete the existing Databricks workspace (migration required).
                2. Create a new Databricks workspace with VNet Injection:
                3. Go to Azure Portal → Create Databricks Workspace.
                4. Select Advanced Networking.
                5. Choose Deploy into your own Virtual Network.
                6. Specify a customer-managed VNet and associated subnets.
                7. Enable Private Link for secure API access.
        ",
        "code": {
            "powerShell": null,
            "iac": null,
            "terraform": null,
            "other": null
        }
    },
    "recommendation": null,
    "references": [],
    "compliance": [
        {
            "name": "CIS Microsoft Azure Foundations",
            "version": "6.0.0",
            "reference": "2.1.1",
            "profile": [
                "Level 1"
            ]
        }
    ],
    "level": "medium",
    "tags": [],
    "rule": {
        "path": "",
        "subPath": null,
        "selectCondition": {},
        "query": [
        ],
        "shouldExist": null,
        "returnObject": null,
        "removeIfNotExists": null
    },
    "output": {
        "html": {
            "data": {
                "properties": {},
                "expandObject": null
            },
            "table": "default",
            "decorate": [],
            "emphasis": [],
            "actions": {
                "objectData": {
                    "properties": [],
                    "expandObject": null,
                    "limit": null
                },
                "showGoToButton": "True",
                "showModalButton": "True",
                "directLink": null
            }
        },
        "text": {
            "data": {
                "properties": {},
                "expandObject": null
            },
            "status": {
                "keyName": ["name"],
                "message": "Ensure that Azure Databricks is deployed in a customer-managed virtual network",
                "defaultMessage": null
            },
            "properties": {
                "resourceName": "name",
                "resourceId": "id",
                "resourceType": "type"
            },
            "onlyStatus": false
        }
    },
    "idSuffix": "azure_databricks_not_deployed_managed_vnet",
    "notes": [],
    "categories": [],
    "immutable_properties": [
        "name",
        "id"
    ],
    "id": "az_databricks_001"
}