能否禁用Azure Databricks托管存储账户的公共访问?
问题解答
核心结论
目前无法通过Terraform配置、Databricks控制台设置或常规Azure CLI命令禁用该默认托管存储账户的公共访问——这个存储账户属于Databricks的托管资源,其配置完全由Databricks服务管控,用户无直接修改权限(Deny Assignment也验证了这一权限限制)。
原因分析
- 该托管存储账户是Databricks为标准Hive Metastore自动创建的基础资源,即便你未使用该元存储,Databricks仍会保留它用于内部操作(如临时作业日志、缓存数据存储等)。
- 托管资源的核心配置权限由Databricks独占,Azure层面通过Deny Assignment阻止用户变更这类资源的关键属性,包括公共访问设置。
合规规避方案
1. Azure政策豁免(推荐)
针对该托管存储账户创建政策豁免,由于它是Databricks运行必需的托管资源,符合合规政策豁免的合理场景。可通过Terraform配置豁免规则:
resource "azurerm_policy_exemption" "databricks_managed_storage_exemption" { name = "databricks-managed-storage-public-access-exemption" scope = "/subscriptions/<你的订阅ID>/resourceGroups<Databricks托管资源组名>/providers/Microsoft.Storage/storageAccounts/<托管存储账户名>" policy_assignment_id = "/subscriptions/<你的订阅ID>/providers/Microsoft.Authorization/policyAssignments<禁止公共访问的政策分配ID>" exemption_category = "Mitigated" description = "豁免Databricks托管存储账户(仅用于内部操作,不存储客户业务数据)" }
2. 减少对默认托管存储的依赖(辅助)
若所有数据操作均基于Unity Catalog,可通过配置工作区参数降低对默认存储的依赖:
- 启用
spark.databricks.delta.multiClusterWrites.enabled,优化多集群写入的存储路径 - 为所有作业、笔记本指定Unity Catalog管控的存储位置,避免默认存储的不必要使用
3. 提交Databricks支持请求
向Azure Databricks官方支持团队提交需求,说明合规场景,询问是否有内部配置或预览功能可禁用该存储账户的公共访问。针对企业级客户,微软可能提供定制化的合规支持方案。
内容的提问来源于stack exchange,提问作者Roelof
相关产品推荐
相关产品推荐

