You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks集群/工作区级别禁用指定危险命令?

在Databricks集群/工作区禁用特定危险命令的方法

一、禁用dbutils.fs.rm的方案

1. 集群初始化脚本覆盖方法

通过集群初始化脚本,在集群启动时重写dbutils.fs.rm方法,使其无法执行删除操作:

  • Python 初始化脚本示例:
    将以下代码保存为DBFS路径下的脚本(如dbfs:/scripts/disable_rm.py),然后在集群配置的「初始化脚本」中添加该路径:
    def blocked_rm(path, recursive=False):
        raise Exception("`dbutils.fs.rm` has been disabled for security purposes.")
    dbutils.fs.rm = blocked_rm
    
  • Scala 初始化脚本示例:
    若集群以Scala为主,可通过Shell脚本调用Spark执行覆盖逻辑,保存为dbfs:/scripts/disable_rm_scala.sh:
    #!/bin/bash
    spark-shell -e '
      dbutils.fs.rm = (path: String, recursive: Boolean) => throw new Exception("`dbutils.fs.rm` has been disabled for security purposes.")
    '
    
    同样在集群初始化脚本中配置该Shell脚本路径。

2. 工作区策略细粒度限制

在Databricks管理控制台的「工作区策略」中添加规则,直接禁止调用dbutils.fs.rm:

{
  "actions": [
    {
      "action": "deny",
      "operation": "execute",
      "object": "dbutils.fs.rm"
    }
  ]
}

该策略会作用于整个工作区的所有集群,无需逐个配置集群。

二、禁用Python/Scala中的危险删除命令

1. 重写核心删除方法

针对Python的os.remove、shutil.rmtree或Scala的java.io.File.delete等方法,同样通过初始化脚本重写:

  • Python 示例:
    import os
    import shutil
    
    # 禁用os.remove
    original_remove = os.remove
    def blocked_remove(path):
        raise PermissionError("File deletion via `os.remove` is disabled.")
    os.remove = blocked_remove
    
    # 禁用shutil.rmtree
    original_rmtree = shutil.rmtree
    def blocked_rmtree(path):
        raise PermissionError("Directory deletion via `shutil.rmtree` is disabled.")
    shutil.rmtree = blocked_rmtree
    
  • Scala 示例:
    在初始化脚本中通过Spark执行:
    import java.io.File
    val originalDelete = File.delete _
    def blockedDelete(file: File): Boolean = {
        throw new Exception("File deletion via `File.delete` is disabled.")
        false
    }
    File.delete = blockedDelete
    

2. 限制代码执行权限

将集群设置为「安全模式」,仅允许用户执行预定义的代码或使用指定库,禁止自定义代码执行。此方法较为严格,适合高安全需求的场景。

三、优化已有的%sh rm禁用策略

若已禁用Shell的rm命令,可进一步通过工作区策略限制%sh魔术命令的使用:

  • 仅禁止%sh rm:
    {
      "actions": [
        {
          "action": "deny",
          "operation": "execute",
          "object": "%sh rm"
        }
      ]
    }
    
  • 完全禁用%sh命令(若业务允许):
    {
      "actions": [
        {
          "action": "deny",
          "operation": "execute",
          "object": "%sh"
        }
      ]
    }
    

内容的提问来源于stack exchange,提问作者pallavi vetal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:02:39