1. 项目概述:构建一个真正面向企业的安全OpenClaw部署栈

如果你和我一样,既想享受OpenClaw和Codex带来的“用Telegram聊天机器人驱动开发部署”的极致便利,又对把一个拥有 exec 权限的AI助手直接暴露在服务器上感到脊背发凉,那么这个项目就是为你准备的。我们不是在默认的“快速启动”配方上修修补补,而是从头构建了一套新的安全范式。核心问题很简单:如何把一个本质上很“危险”的自动化工具链,封装得足够坚固,以至于你可以放心地把它部署给那些对安全审计(比如SOC2)有严格要求的客户或团队?答案不是增加更多功能,而是系统地、层层递进地 收缩攻击面

这个 openclaw-secure-stack 项目,就是我和AI助手花了几天时间,针对这个具体威胁模型进行推演和实现的结果。它不是一个万能的安全框架,而是一个针对“通过Telegram机器人进行安全自动化”这一特定场景的、深度防御的参考实现。整个项目的设计逻辑都刻在了提交历史里,你可以像读侦探小说一样,跟随每一次提交,理解我们是如何一步步堵上每一个可能的风险点的。

2. 核心安全哲学与设计原则

在开始动手部署之前,理解背后的设计哲学至关重要。这能帮助你在未来根据自己的需求调整时,不至于破坏我们精心构建的安全边界。

2.1 从“默认开放”到“最小权限”的范式转变

默认的OpenClaw+Codex方案是为极客和独立开发者设计的,其哲学是“默认开放,快速迭代”。它赋予LLM代理广泛的 exec 工具权限,让你能通过自然语言指令完成几乎任何操作。这种模式在个人项目中效率惊人,但在企业环境中无异于“敞开大门迎客”。

我们的安全栈彻底扭转了这一范式,其核心是 “默认拒绝,显式允许” 。我们不再问“AI需要什么权限?”,而是问“完成‘从Telegram安全部署代码’这个 具体任务 ,AI 最少 需要什么权限?”。答案被收敛到了三个,且只有三个,经过严格审查的HTTP接口。

2.2 贯穿始终的六大设计原则

这些原则是我们每次技术选型和架构决策的标尺:

  1. 单一入口,层层边界 :整个系统只有一个面向用户的入口(Telegram Bot),一个内部通信入口(Gateway到Bridge)。每跨越一层边界,都必须经过一次身份验证和授权。这确保了攻击链无法“跳跃”前进。
  2. 狭窄、固定的接口,而非通用执行器 :Bridge容器只暴露三个HTTP路由,每个路由对应一个硬编码的脚本和容器。没有“运行任意容器”的API,也没有参数化的 docker exec 。这意味着即使攻击者获得了访问令牌,他能做的事情也被严格限定在三个预定义的、无害的操作内。
  3. 在每一层进行验证 :安全不是单点魔法。我们在Bridge层验证HTTP请求体和JSON格式;在脚本层限制输入长度、通过 stdin 而非命令行参数传递用户输入以避免注入;在Telegram层使用用户ID白名单。这种纵深防御确保单一控制措施的失效不会导致全线崩溃。
  4. 假设令牌会泄露 :这是关键的心态转变。我们不再幻想 BRIDGE_TOKEN 能永远保密。因此,即使攻击者拿到了这个令牌,他能做的也仅仅是调用那三个被严格限制的接口,而无法直接操作Docker或访问主机文件系统。
  5. 假设LLM是对手 :我们承认并接受LLM可能被“提示词注入”攻击所操控。因此,我们从根本上剥夺了LLM代理执行任意命令的能力。它的 exec 工具被限制为只能运行三个预先批准的脚本路径,并且网关层面禁用了所有其他内置工具(如 files network )。
  6. 尽可能只读 :凡是能设置为只读的地方,绝不提供写权限。Bridge容器的根文件系统是只读的,它挂载的脚本目录是只读的,生成的临时文件放在 tmpfs 中,备份文件在执行后立即清理。这极大限制了攻击者在突破后持久化或横向移动的能力。

3. 架构深度解析与组件职责

光有原则不够,我们来看看它们是如何落地到四个具体的容器中的。下图清晰地展示了数据流与控制流:

                    ┌─────────────────────┐
                    │  Telegram (用户)     │
                    │  白名单:仅限1个用户  │
                    └──────────┬──────────┘
                               │ HTTPS (botToken)
                               ▼
          ┌─────────────────────────────────────┐
          │  OpenClaw 网关 (Gateway)            │
          │  监听 127.0.0.1:8080 ONLY          │
          │  无Docker套接字 · 令牌认证         │
          │  tools.exec = 白名单 (仅3个脚本)   │
          │  gateway.tools.allow = ["exec"]    │
          └───────┬─────────────────────────────┘
                  │ HTTP  Bearer token (BRIDGE_TOKEN)
                  │ 通过 openclaw-internal 网络
                  ▼
          ┌─────────────────────────────────────┐
          │  桥接器 (Bridge)                    │
          │  3个固定路由,无动态分发            │
          │  只读根文件系统 · tmpfs /tmp       │
          │  cap_drop: ALL · no-new-privileges  │
          │  限制并发数 · 审计日志              │
          │  挂载 /var/run/docker.sock          │
          └────┬────────┬────────────┬──────────┘
               │        │            │
          docker exec (通过套接字,固定容器名)
               │        │            │
               ▼        ▼            ▼
       代码执行器   部署运行器     只读查询器
       (codex-worker)(deploy-runner)(db-query-runner)

3.1 OpenClaw 网关:受控的AI代理前台

这是AI代理(LLM)运行的地方,也是唯一直接与Telegram交互的组件。它的安全配置是 第一道也是最重要的防线

  • 网络隔离 gateway 容器 只绑定到 127.0.0.1:8080 。这意味着从公网甚至同一主机的其他网络接口都无法直接访问它。如果你需要从外部访问,必须 主动地、有意识地 在它前面配置一个反向代理(如Nginx),并为其配置TLS和额外的认证。这个设计强迫你进行安全思考,而不是无意中暴露服务。
  • 工具阉割 :通过 gateway.tools.allow = ["exec"] ,我们禁用了OpenClaw所有其他可能危险的内置工具(如读写文件、执行网络请求)。AI现在只剩下一个 exec 工具。
  • 执行策略锁死 exec 工具本身也被戴上了“紧箍咒”。我们将其策略设置为 allowlist (白名单),并且这个白名单里只预先添加了三个脚本路径。AI无法执行 ls cat curl 或任何它临时编造的命令。它只能请求运行 /home/node/.openclaw/run-codex.sh 等这三个脚本。任何不在白名单上的执行请求都会被直接拒绝,或者根据配置触发人工审批(我们设置为 deny 以确保安全)。

实操心得 :很多人在部署OpenClaw时,会跳过配置 exec-policy 这一步,认为有Telegram认证就够了。这是最大的安全隐患。 务必在连接Telegram之前,先完成执行策略的锁定。 我们的快速启动脚本中,这一步是强制性的。

3.2 桥接器:持有Docker套接字的“特权囚徒”

bridge 容器是整个架构中最关键也最敏感的部分。它是唯一一个直接挂载了主机Docker套接字( /var/run/docker.sock )的容器。在Docker的安全模型中,拥有这个套接字几乎等同于拥有主机root权限。因此,我们对它进行了“监狱式”的强化。

  • 极简接口 :它是一个用Python http.server 写的微型HTTP服务器,只有三个路由: /run-codex /deploy-staging /query-readonly 。没有路由解析,没有参数化调用,就是三个硬编码的函数。代码总共不到200行,易于审计。
  • 深度容器强化
    • read-only rootfs :根文件系统只读,防止攻击者写入恶意程序或修改系统配置。
    • cap_drop: ALL :丢弃所有Linux能力(Capabilities)。容器内无法进行任何特权操作(如修改网络、加载内核模块)。
    • no-new-privileges: true :防止进程通过SUID二进制文件或其他方式提升权限。
    • tmpfs /tmp :临时目录使用内存文件系统,进程退出后数据消失。
  • 内部网络与令牌认证 bridge 只加入Docker内部网络 openclaw-internal ,不暴露任何端口到主机。 gateway 调用它时,必须在HTTP头中携带正确的 Bearer BRIDGE_TOKEN 。这个令牌在启动时通过环境变量注入,避免了在配置文件或镜像中硬编码。
  • 输入验证与并发控制 :对每个请求的JSON结构、字段类型、字符串长度进行严格校验。使用信号量(Semaphore)限制并发请求数(默认4),防止资源耗尽型攻击。

3.3 三个工作容器:功能单一的执行单元

bridge 通过Docker套接字,在三个专用的工作容器中执行具体任务。这种职责分离进一步限制了破坏范围。

  1. codex-worker :这是运行 codex-cli 的容器。它挂载了你的项目代码目录( workspace ),并配置了Codex的API密钥。当 bridge 收到执行代码的请求时,它会在 codex-worker 容器内执行 codex 命令,处理结果再返回。AI无法直接访问这个容器的shell。
  2. deploy-runner :一个极简的Alpine Linux容器,只包含执行 预定义 的、 零参数 的部署脚本所需的最小工具。在我们的示例中,它只是一个占位符。你需要根据你的技术栈(如 kubectl apply , ansible-playbook , docker compose up )来填充 deploy-staging.sh 。关键点是:这个脚本不应接受来自外部的动态参数,所有配置都应内化或从安全的位置(如加密的存储卷)读取。
  3. db-query-runner :另一个Alpine容器,包含数据库客户端(如 psql , mysql )。它的脚本 query-readonly.sh 会进行严格的SQL验证:只允许 SELECT WITH 语句,并拒绝包含 INSERT , UPDATE , DELETE , DROP , ALTER 等关键词的查询,同时自动为所有查询附加 LIMIT 100 以防止数据大量泄露。

4. 完整部署与强化实操指南

理论讲完了,我们动手把它跑起来。请严格按照顺序操作,尤其是安全配置步骤,一步都不能错。

4.1 环境准备与秘密生成

首先,克隆项目并进入目录:

git clone git@github.com:jieyao-MilestoneHub/openclaw-secure-stack.git
cd openclaw-secure-stack

接下来是 最关键的一步 :生成并配置所有密钥和令牌。这些文件都被 .gitignore 排除,且权限会被设置为 600 (仅所有者可读)。

  1. 生成桥接令牌 :这个令牌用于 gateway bridge 之间的内部认证。

    # 生成一个32字节的随机十六进制字符串作为令牌
    openssl rand -hex 32 | sed 's/^/BRIDGE_TOKEN=/' > bridge/.env
    chmod 600 bridge/.env
    # 创建软链接,方便docker compose读取
    ln -s bridge/.env .env
    

    这会在 bridge/.env 文件中生成类似 BRIDGE_TOKEN=abc123... 的内容。 务必保管好这个文件

  2. 配置Codex API密钥 :Codex是执行AI生成代码的引擎,你需要自己的API密钥。

    cp codex-worker/.env.example codex-worker/.env
    chmod 600 codex-worker/.env
    

    然后编辑 codex-worker/.env 文件,填入你的 CODEX_API_KEY

  3. 配置OpenClaw网关与Telegram :这是主配置文件。

    cp gateway/config/openclaw.json.example gateway/config/openclaw.json
    chmod 600 gateway/config/openclaw.json
    

    编辑 gateway/config/openclaw.json ,需要修改以下几处:

    • gateway.auth.token :生成一个网关自身的认证令牌(用于未来可能的直接API调用)。
      openssl rand -hex 24
      
    • channels.telegram.botToken :从Telegram的 @BotFather 那里获取你的机器人令牌。
    • channels.telegram.allowFrom :这是一个 字符串数组 ,填入你的Telegram用户ID(可以通过 @userinfobot 等机器人获取)。 非常重要:初始配置请保持 enabled: false ,等我们完成所有安全验证后再开启。
  4. (可选)准备项目代码 codex-worker 容器期望在 /workspace 目录下有你的代码。你可以提前克隆进去。

    mkdir -p codex-worker/workspace
    git clone <你的项目Git地址> codex-worker/workspace/your-project
    

4.2 启动服务与锁定安全策略

现在可以启动Docker Compose服务了:

docker compose up -d

服务启动后, 千万不要立即启用Telegram! 我们必须先完成最关键的安全策略配置——锁定AI的 exec 工具。

执行以下命令,这会将AI的执行能力严格限制在那三个脚本上:

docker exec openclaw-gateway sh -c '
  openclaw exec-policy set --security allowlist --ask on-miss --ask-fallback deny --host gateway &&
  openclaw approvals allowlist add --agent main "/home/node/.openclaw/run-codex.sh" &&
  openclaw approvals allowlist add --agent main "/home/node/.openclaw/deploy-staging.sh" &&
  openclaw approvals allowlist add --agent main "/home/node/.openclaw/query-readonly.sh" &&
  openclaw config set gateway.tools.allow --json "[\"exec\"]"
'

让我们拆解一下这条命令:

  • openclaw exec-policy set ... :设置执行策略为“白名单”模式。如果AI尝试执行不在白名单上的命令,策略是 deny (拒绝)。 --ask on-miss --ask-fallback deny 是额外的安全网,但我们的白名单已经足够严格。
  • openclaw approvals allowlist add ... :将三个脚本路径添加到AI代理( main )的白名单中。
  • openclaw config set gateway.tools.allow ... :在网关级别,只允许 exec 这一个工具。其他如 files network 等工具被彻底禁用。

配置完成后,重启网关容器使配置生效:

docker compose restart gateway

4.3 部署后安全验证清单

在打开Telegram开关之前,请逐项完成以下验证,确保每一道防线都按预期工作。我们的 HARDENING.md 文件里记录了完整的检查项,这里是最关键的几个。

  1. 验证Bridge内部健康检查 :从 gateway 容器内部访问 bridge 的健康检查接口,应该成功。

    docker exec openclaw-gateway sh -c \
      'node -e "require(\"http\").get({host:\"openclaw-bridge\",port:8005,path:\"/healthz\"},r=>r.pipe(process.stdout))"'
    

    预期输出 {"ok":true}

  2. 验证Bridge外部不可达 :尝试从 宿主机 直接访问 bridge 的端口, 必须失败 。这证明 bridge 没有暴露给主机网络。

    # 这条命令应该超时或连接被拒绝
    curl -sS --max-time 3 http://127.0.0.1:8005/healthz && echo “网络泄漏风险!” || echo “安全:Bridge外部不可达”
    

    预期输出 安全:Bridge外部不可达 。如果输出 {"ok":true} ,说明你的 docker-compose.yml bridge 服务的端口映射配置有误,必须修正。

  3. 验证Gateway仅监听本地 :检查 gateway 容器的端口绑定。

    docker port openclaw-gateway
    

    预期输出 :类似 8080/tcp -> 127.0.0.1:8080 。如果显示 0.0.0.0:8080 ,则配置错误,需要检查 openclaw.json gateway.listen 配置或 docker-compose.yml 的端口映射。

  4. 验证容器安全配置 :检查 bridge 容器的安全选项是否生效。

    docker inspect openclaw-bridge --format='{{json .HostConfig}}' | jq '. | {CapDrop: .CapDrop, SecurityOpt: .SecurityOpt, ReadonlyRootfs: .ReadonlyRootfs}'
    

    预期输出 CapDrop 应为 ["ALL"] SecurityOpt 应包含 no-new-privileges:true ReadonlyRootfs 应为 true

只有以上所有检查都通过后 ,你才能编辑 gateway/config/openclaw.json ,将 channels.telegram.enabled 设置为 true ,然后重启网关: docker compose restart gateway

5. 威胁模型、已知局限与进阶加固

没有任何安全方案是完美的。清晰地了解我们防御了什么、接受了什么风险、以及什么不在防御范围内,对于在实际生产环境中评估和使用本项目至关重要。

5.1 我们明确防御的攻击向量

攻击向量 防御措施 实现层级
网络攻击者直接访问Bridge Bridge服务仅绑定在Docker内部网络,无主机端口映射。 Docker网络配置
未授权Telegram用户访问 Telegram频道/私聊的严格用户ID白名单。 OpenClaw配置
通过/query-readonly的SQL注入 脚本层SQL语法验证(仅允许SELECT/WITH)+ 关键词黑名单 + 自动附加LIMIT 100。 db-query-runner脚本
恶意提示词导致的Shell注入 AI的 exec 工具被限制为仅运行三个固定脚本;用户输入通过 stdin 传递,而非命令行参数,避免了参数注入。 OpenClaw执行策略 + 脚本设计
被提示词注入的LLM尝试权限提升 exec 工具白名单 + 网关级别禁用所有其他工具。 OpenClaw配置

5.2 我们接受并缓释的已知风险

核心风险:Bridge容器持有Docker套接字。 如果攻击者成功在 bridge 容器内实现远程代码执行,由于它挂载了 /var/run/docker.sock ,攻击者将能控制主机上所有Docker容器,进而可能获得主机root权限。

我们的缓释措施(纵深防御):

  1. 网络隔离 :Bridge对外完全不可见。
  2. 接口极简 :只有3个固定路由,极大减少了攻击面。
  3. 强认证 :需要Bearer Token。
  4. 容器强化 :只读根文件系统、丢弃所有能力、禁止权限提升。
  5. 输入验证 :多层严格的请求与输入校验。

进阶加固建议 : 对于安全性要求极高的环境,可以考虑用 tecnativa/docker-socket-proxy 替代直接挂载Docker套接字。这个代理可以配置为只允许 POST /containers/{name}/exec 这样的特定API调用,并且可以限制目标容器名称(例如只允许对 codex-worker deploy-runner db-query-runner 执行 exec )。这将把风险从“主机root权限”降级为“在三个特定容器内执行命令”。

5.3 明确不在防御范围内的场景

  • 主机级已沦陷 :如果攻击者已经获得了宿主机的root权限,那么整个Docker环境都在其控制之下,本方案的所有防御都将失效。主机安全是前提。
  • 基础镜像供应链攻击 :我们使用了官方Docker镜像(如 node:23-alpine , docker:27-cli )。如果这些官方镜像被植入恶意代码,我们无法防御。缓解措施是定期更新并pin住主要版本号。
  • Telegram平台本身被攻破 :如果攻击者控制了你的Telegram账户或BotFather,安全模型即告失效。建议启用Telegram的双重认证。

6. 定制化开发与生产部署建议

这个项目是一个安全基线参考实现。要用于你的实际项目,免不了要进行定制。

6.1 如何定制三个核心脚本

  1. run-codex.sh (Gateway端与Bridge端)

    • gateway/config/run-codex.sh 是发起请求的客户端脚本。它构造JSON请求体,其中 prompt 字段是AI生成的代码或指令。
    • bridge/scripts/run-codex.sh 是接收请求并实际执行 docker exec 的服务器端脚本。你需要确保 docker exec 命令中指定的容器名( codex-worker )和命令( codex )与你的 codex-worker 容器配置一致。
  2. deploy-staging.sh

    • 这是你的 部署流水线入口 。示例中是一个占位符。
    • 生产建议 :不要在此脚本中硬编码密码或密钥。应该使用Docker Secrets(在Swarm中)或通过只读卷挂载的加密配置文件。脚本内容可以是调用一个更复杂的部署工具,如:
      #!/bin/sh
      # 从安全的位置读取配置
      export KUBECONFIG=/run/secrets/staging-kubeconfig
      kubectl apply -f /app/deploy/manifests/
      
    • 关键 :保持它 零参数 或参数完全受控。部署行为应该是确定性的。
  3. query-readonly.sh

    • 脚本内置了简单的SQL验证器。如果你的数据库是PostgreSQL,它使用 psql ;如果是MySQL,则需要替换为 mysql 客户端。
    • 务必修改 DB_* 环境变量 ,指向你的只读数据库副本。 永远不要直接连接生产主库。
    • 考虑增强验证逻辑,例如使用正式的SQL解析库进行更精确的语法树分析,只放行特定的查询模式。

6.2 监控、日志与审计

  • Bridge审计日志 bridge/server.py 中实现了结构化的请求日志(输出到stdout)。在生产中,你应该将Docker容器的日志收集到集中式日志系统(如Loki, ELK)中,并设置告警规则,例如针对频繁的认证失败或非预期的路由访问。
  • OpenClaw日志 :配置 openclaw.json 中的日志级别,将网关的审计日志也收集起来。
  • 健康检查与告警 :为 /healthz 端点配置健康检查。如果服务异常,应及时告警。

6.3 高可用与扩展性考虑

当前设计为单机部署。如果需要高可用:

  1. 无状态扩展 gateway 容器可以水平扩展,前面用负载均衡器(需自行配置TLS和认证)。但需要注意,OpenClaw的会话状态可能默认保存在内存中,需要查阅其文档配置持久化存储。
  2. Bridge成为瓶颈 bridge 是唯一持有Docker套接字的组件,且限制了并发数。在高并发场景下,它可能成为瓶颈。一个思路是将其重构为更高效的服务(如Go),或者如前述,引入 docker-socket-proxy 并部署多个实例,每个实例负责一组特定的容器操作。
  3. 秘密管理 :生产环境应使用专业的秘密管理服务(如HashiCorp Vault, AWS Secrets Manager, Azure Key Vault)或在Docker Swarm/Kubernetes中使用其原生的Secrets机制,而不是 .env 文件。

7. 故障排查与常见问题实录

在实际部署和测试中,你可能会遇到以下问题。这里记录了我的排查思路和解决方法。

7.1 基础连接问题

问题:Telegram Bot 无响应。

  • 检查0 :确认 openclaw.json channels.telegram.enabled true 且已重启网关。
  • 检查1 :查看网关容器日志。
    docker logs openclaw-gateway
    
    关注是否有关于Telegram token认证失败或网络连接错误的日志。
  • 检查2 :确认Bot Token正确,且你的Telegram用户ID已正确添加到 allowFrom 数组中(是字符串数组,如 ["123456789"] )。
  • 检查3 :如果使用了代理,确保网关容器有正确的网络设置访问外部互联网。

问题:AI可以聊天,但执行任何命令都失败/被拒绝。

  • 检查 :确认已成功执行了 4.2 章节中的 docker exec ... openclaw exec-policy set ... 命令来锁定执行策略。
  • 验证 :进入网关容器,检查当前配置。
    docker exec -it openclaw-gateway sh
    openclaw config get gateway.tools.allow
    openclaw approvals allowlist list --agent main
    
    输出应分别为 ["exec"] 和你的三个脚本路径。

7.2 Bridge服务相关问题

问题:健康检查 /healthz 失败。

  • 检查1 :确认 bridge 容器正在运行。
    docker compose ps openclaw-bridge
    
  • 检查2 :查看 bridge 容器日志,看是否有启动错误。
    docker logs openclaw-bridge
    
    常见错误: BRIDGE_TOKEN 环境变量未设置或 .env 文件格式错误(确保是 BRIDGE_TOKEN=xxx ,没有多余空格或引号)。
  • 检查3 :确认 gateway 容器内能解析 openclaw-bridge 这个主机名。在 gateway 容器内执行 ping openclaw-bridge

问题:从Gateway调用Bridge接口返回403或401。

  • 检查 :对比 bridge/.env 文件中的 BRIDGE_TOKEN gateway/config/bridge-client.js 中使用的令牌是否一致。确保你在生成 .env 后,重启了所有服务( docker compose down && docker compose up -d )。

7.3 容器权限与执行问题

问题: bridge 容器执行 docker exec 失败,提示权限不足。

  • 检查1 bridge 容器是否成功挂载了主机Docker套接字?检查 docker-compose.yml volumes 配置。
    # bridge服务配置中应有
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro # 注意这里是只读挂载
    
  • 检查2 :即使挂载了套接字,如果主机Docker守护进程设置了用户组权限(如 docker 组),需要确保 bridge 容器内的进程属于该组。我们的 Dockerfile 中使用了 docker:27-cli 镜像,其默认用户 root ,通常拥有权限。如果遇到问题,可以尝试在 docker-compose.yml 中为 bridge 服务设置 user: root (尽管这不是最佳实践)。

问题: codex-worker 容器内执行 codex 命令失败。

  • 检查1 codex-worker/.env 文件中的 CODEX_API_KEY 是否正确。
  • 检查2 :进入 codex-worker 容器,手动测试 codex 命令。
    docker exec -it openclaw-codex-worker sh
    cd /workspace/your-project
    codex "print('hello')"
    
  • 检查3 :项目代码目录是否成功挂载?检查 docker-compose.yml codex-worker 服务的 volumes 绑定。

7.4 安全验证失败

问题:从宿主机能访问到Bridge的端口(安全验证2失败)。

  • 原因 docker-compose.yml bridge 服务的 ports 配置错误地映射到了主机端口。
  • 解决 :确保 bridge 服务 没有 ports 配置,或者其端口仅映射到 127.0.0.1 。在我们的设计中, bridge 服务应该只有 expose: - 8005 ,而没有 ports 。检查并修正 docker-compose.yml

整个项目的精髓在于对攻击面的持续压缩和每一层防御的深思熟虑。它可能看起来比简单的 docker run openclaw 复杂得多,但这份复杂性换来的,是你可以安心地让一个AI助手在企业的服务器上执行命令。记住,安全不是一个开关,而是一个层层设防的体系。这个项目为你提供了一个坚实的起点,你可以基于它,根据自己业务的实际威胁模型,进行更深入的加固或调整。

更多推荐