mholovetskyi/openclawenterprise

GitHub: mholovetskyi/openclawenterprise

OpenClaw Enterprise 是面向企业的零信任AI代理平台,通过完善的安全、合规与可观测性能力,解决通用AI工具在生产环境中缺乏审计、管控与集成的问题。

Stars: 30 | Forks: 9

# 🦞 OpenClaw 企业版

OpenClaw Enterprise

OpenClaw 企业版 — 零信任、合规就绪、MIT 许可。
基于您已经喜爱平台构建。无订阅。无锁定。

CI Release MIT Discord Stars

自 GTC 以来 · 安装 · 企业能力缺口 · 安全 · 密钥管理 · IAM · OIDC/SSO · MFA · 审计 · GDPR · 集群 · Kubernetes · 通道 · NVIDIA · 测试 · 文档

**OpenClaw** 是目前最强大的开源 AI 代理平台之一。凭借 216,000 个 GitHub 星标,它在个人生产力与小团队自动化方面表现出色:连接你的 AI 到 WhatsApp、Telegram、Discord 等 14 个通道,运行浏览器自动化,管理日历,并编排复杂的多步骤任务,全部来自单一自托管网关。对于个人和小团队来说,它表现卓越。 企业级部署有不同的一套要求。受监管行业需要审计追踪、访问控制与加密的凭证存储。平台团队需要 Prometheus 指标和 Kubernetes 原生部署。注重安全的组织需要运行时防护、提示注入防御以及对第三方技能的供应链验证。这些并非 OpenClaw 质量上的缺失——它们只是超出其作为个人工具的设计范围。 **OpenClaw Enterprise** 在 OpenClaw 基础上添加了完整的企业级栈。每一个企业功能都是可选的模块(`enterprise.enabled: true`)。社区模式下二进制文件完全相同且无性能开销。100% MIT 许可。无订阅。零锁定。 ## 自 GTC 以来构建 自 NVIDIA GTC 以来,OpenClaw Enterprise 已推出生产就绪的、MIT 许可的企业级栈——无订阅、无锁定。每个功能在禁用时均零开销。这里是已实现的内容: ### NVIDIA 原生 AI 基础设施 - **NVIDIA NIM** — 具有 OpenAI 兼容端点、健康检查与重试逻辑的首批推理提供者 - **NemoClaw Enterprise** — 基于 OpenShell 容器的沙箱推理,隐私路由,以及 3 个部署配置文件(`nvidia-cloud`、`local-nim`、`vllm`) - **GPU 监控** — 通过 Prometheus 导出 nvidia-smi 轮询与可配置告警阈值 - **Nemotron 3 模型家族** — 开箱即用支持 Super 120B、Nano 30B 与 Super 49B - **NVIDIA 防护栏** — 思考预算限制、每用户/每租户成本上限、基于 RBAC 的模型路由 ### 零信任安全栈 - **加密密钥** — 静态 AES-256-GCM 加密,6 个后端(Vault、AWS SM、GCP SM、Azure KV、OCI Vault、env) - **完整 RBAC** — 用户、用户组、角色、权限,JWT(RS256/HS256)、MFA/TOTP、API 密钥 - **OIDC/SSO** — Okta、Azure AD、Google Workspace、Auth0、Keycloak、Palantir Foundry - **运行时防护** — 凭证收割检测、反向 Shell 阻断、PII 扫描、批量删除防护 - **输入净化** — Unicode 标准化、不可见字符剥离、8 类提示注入模式家族 - **供应链安全** — Ed25519 代码签名、14 规则 SAST 扫描器(CWE/OWASP)、预安装审批门 - **网络控制** — IP 允许列表(CIDR、IPv4/IPv6)、令牌桶速率限制 ### 合规性与可观测性 - **防篡改审计** — SHA-256 哈希链日志,SQLite 或 PostgreSQL,ULID 事件 ID - **外部接收器** — Syslog(RFC 5424)、Webhook 批量、Palantir Foundry 流式、OCI 流 - **Prometheus** — 20+ 指标,Kubernetes 健康探针(`/healthz`、`/readyz`、`/startupz`) - **GDPR** — 数据导出(Art. 20)与擦除(Art. 17),SOC 2 / HIPAA / PCI DSS 映射 - **容器安全** — SBOM 生成(SPDX)、镜像签名(cosign)、漏洞扫描(Trivy) ### 企业集成 - **Palantir Foundry** — 审计流、OIDC 预设、Compute Module 部署 - **Oracle 云** — MCP 桥接至 Autonomous Database、OCI Vault 密钥、OCI 流式审计、Agent Spec 导出 - **多租户** — 基于 AsyncLocalStorage 的隔离,带每租户速率限制、配额与审计 - **集群模式** — 基于 Redis 的协调与心跳协议的多网关部署 ### 平台 - **16 个消息通道** — WhatsApp、Telegram、Discord、Slack、Signal、iMessage、Matrix 等 - **嵌入式 Pi 代理运行时** — 上下文修剪、认证配置轮换、多代理编排 - **集成 SDK** — 插件加载器、脚手架 CLI、参考集成 - **396 个测试**,覆盖 22 个测试文件 — 每个企业子系统均有覆盖 所有内容均为开源、MIT 许可、可自托管。 ## 安装 OpenClaw Enterprise 是一个源码可用的分支 — 从本仓库构建。需要 Node.js ≥22.12.0 和 [pnpm](https://pnpm.io)。 ``` # 1. 克隆企业版分支 git clone https://github.com/mholovetskyi/openclawenterprise.git cd openclawenterprise # 2. 安装依赖并构建 pnpm install pnpm build # 3. 首次设置(配置、守护进程、Shell 补全) pnpm openclaw onboard --install-daemon # 4. 启动网关 pnpm gateway:watch ``` ## OpenClaw 停止之处 OpenClaw 专为个人与小团队使用而设计。它在这项工作中表现出色。当组织尝试在受监管或安全敏感环境中部署时,它们总会遇到相同的八个缺口——这并非 OpenClaw 有缺陷,而是因为这些需求本就超出个人工具的范围。 OpenClaw Enterprise 在不触及核心的情况下填平每个缺口。 ### 1. 网络暴露是可选而非意外 OpenClaw 的网关绑定到所有接口(`0.0.0.0`)作为 LAN 模式的默认行为——这是你希望在家庭网络中共享个人助理时的正确默认设置。在企业环境中,该网关会在不发出任何警告的情况下暴露子网的每个主机。 **企业版提供:** 严格的仅回环绑定。非回环绑定会发出带有确切地址的醒目警告。`dangerouslyBindAllInterfaces` 标志必须显式设置。(`src/gateway/net.ts`) ### 2. 凭证需要静态加密 OpenClaw 将 API 密钥、OAuth 令牌与 Webhook 密钥存储在 `~/.openclaw/credentials` —— 一个世界可读的明文 JSON 文件。这是个人工具在简洁性优于金库复杂度时的合理权衡。但在共享服务器或可能生成错误报告的机器上,明文凭证是一种负债。 **企业版提供:** 基于 AES-256-GCM 的加密文件后端,主密钥保存在 OS 密钥链中。支持 HashiCorp Vault、AWS Secrets Manager、GCP Secret Manager、Azure Key Vault 与 OCI Vault。现有凭证自动迁移。(`src/enterprise/secrets/`) ### 3. 并非每个客户端都应拥有完整操作员访问权限 OpenClaw 网关使用单个共享令牌进行认证——你要么拥有它,要么没有。这对个人使用来说没问题。当你有开发者、只读仪表板和自动化服务账户都连接到同一网关时,这就不起作用了。 **企业版提供:** 完整的 RBAC,包含 5 个内置角色、通配符权限、组继承、JWT RS256/HS56 与 API 密钥管理。(`src/enterprise/iam/`) ### 4. 受监管行业需要审计追踪 OpenClaw 不会记录谁连接、运行了什么或访问了什么数据——因为个人用途不需要这些。SOC 2 CC6/CC7、HIPAA §164.312(b) 与 PCI DSS 10 均要求此类记录。 **企业版提供:** SHA-256 哈希链防篡改审计日志,覆盖认证事件、代理运行、工具执行、防护栏拦截与注入检测。(`src/enterprise/audit/`) ### 5. 不受信任的通道消息需要净化 OpenClaw 将通道消息直接发送给模型——这在你信任消息发送者时是正确的行为。当机器人部署在公共通道或面向客户端的上下文中时,任何用户都可能尝试提示注入。 **企业版提供:** 多阶段净化流水线:Unicode 标准化、不可见字符剥离、注入模式检测(8 类规则)、信任边界标记、可配置截断。(`src/enterprise/security/input-sanitizer.ts`) ### 6. 工具执行需要防护层 技能和 Bash 工具可以以运行进程的权限执行任何命令。对于个人助理,这种能力正是其价值所在。对于生产环境中的部署,你需要在困惑的副手攻击或恶意技能造成破坏前进行拦截。 **企业版提供:** 可插拔的防护引擎,在每次工具调用前进行评估。默认规则涵盖凭证收割、反向 Shell、批量删除以及输出中的 PII。(`src/enterprise/security/guardrails.ts`) ### 7. 平台团队需要指标与健康探针 OpenClaw 没有 `/healthz`、`/metrics` 或 Prometheus 集成。对于个人助理,你可以通过它是否响应来判断健康状态。对于部署在 ALB 后面的 Kubernetes,你需要探针与仪表盘。 **企业版提供:** `/metrics`(Prometheus)、`/healthz`、`/livez`、`/readyz`、`/startupz` —— 所有在其它路由注册前即就绪。网关、代理运行时、认证、防护栏与技能相关 20+ 指标。(`src/enterprise/monitoring/`) ### 8. 企业配置需要类型安全 OpenClaw 的配置类型中没有 `enterprise` 键 —— 企业配置被静默当作 `unknown` 处理,这意味着配置错误会在运行时被忽略且无报错。 **企业版提供:** `OpenClawConfig` 中 9 个完整类型化的子系统接口。TypeScript 在编译时捕获企业配置错误。(`src/config/types.enterprise.ts`) ## 架构 ``` ┌─────────────────────────────────────────────────────┐ │ INBOUND CHANNELS │ │ WhatsApp · Telegram · Slack · Discord · Teams · │ │ Signal · iMessage · Matrix · Google Chat · WebChat │ └────────────────────────┬────────────────────────────┘ │ ┌────────────────────────▼────────────────────────────┐ │ ENTERPRISE SECURITY LAYER │ │ ① Unicode normalization + invisible char strip │ │ ② Prompt injection pattern detection (8 families) │ │ ③ Trust boundary tagging │ │ ④ Configurable message truncation (32 KB default) │ └────────────────────────┬────────────────────────────┘ │ ┌──────────────────────┐ ┌────────────────────────▼────────────────────────────┐ ┌──────────────────────┐ │ ENTERPRISE IAM │ │ GATEWAY │ │ ENTERPRISE SECRETS │ │ │◄─┤ WebSocket control plane · HTTP API · REST compat ├─►│ │ │ OIDC/SSO (PKCE) │ │ bind: loopback (default) — 0.0.0.0 NEVER silent │ │ AES-256-GCM file │ │ MFA/TOTP (RFC 6238) │ │ auth: jwt | token | password | none │ │ HashiCorp Vault │ │ JWT RS256/HS256 │ │ /metrics /healthz /livez /readyz /startupz │ │ AWS Secrets Manager │ │ API keys (oc_...) │ └────────────────────────┬────────────────────────────┘ │ GCP Secret Manager │ │ RBAC (5 built-in) │ │ │ Azure Key Vault │ │ SQLite persistent │ ┌────────────────────────▼────────────────────────────┐ └──────────────────────┘ │ Token revocation │ ┌──────────────────────┐ │ IP allowlisting │ │ SIGNED CONTAINERS │ └──────────────────────┘ │ │ │ cosign keyless │ │ syft SBOM (SPDX) │ │ Trivy vuln scan │ └──────────────────────┘ └──────────────────────┘ │ AGENT RUNTIME │ │ │ ┌──────────────────────┐ │ ┌─────────────┐ ┌──────────────────────────────┐ │ ┌──────────────────────┐ │ TAMPER-EVIDENT │ │ │ Tool call │ │ GUARDRAIL ENGINE │ │ │ PROMETHEUS METRICS │ │ AUDIT LOG │ │ │ hook │◄─┤ ① Credential harvest │ │ │ │ │ │◄─┤ │ │ │ ② Reverse shell patterns │ │ │ gateway_connections │ │ SHA-256 hash chain │ │ └─────────────┘ │ ③ Mass delete (rm -rf /) │ │ │ agent_runs_total │ │ ULID IDs │ │ │ ④ SSN / credit card PII │ │ │ auth_failures_total │ │ SQLite WAL │ │ ┌─────────────┐ │ ⑤ Custom pluggable rules │ │ │ guardrail_blocks │ │ PostgreSQL backend │ │ │ Skills │ └──────────────────────────────┘ │ │ skill_invocations │ │ SIEM/Syslog (RFC │ │ │ (Ed25519 │ │ │ audit_events_total │ │ 5424) · Webhook │ │ │ signed) │ ┌──────────────────────────────┐ │ │ /metrics endpoint │ │ GDPR export+erase │ │ │ │ │ ENTERPRISE SAST │ │ │ Grafana dashboards │ │ Audit events: │ │ │ SAST scan │ │ 14 rules · CWE/OWASP tags │ │ └──────────────────────┘ │ auth.login │ │ │ before │ │ Risk score 0–100 │ │ │ guardrail.block │ │ │ install │ │ approve / review / reject │ │ ┌──────────────────────┐ └──────────────────────┘ │ └─────────────┘ └──────────────────────────────┘ │ │ MULTI-TENANCY │ └────────────────────────────────────────────────────┘ │ │ │ AsyncLocalStorage │ ┌────────────────────────────────────────────────────┐ │ Per-tenant limits │ │ KUBERNETES (Helm chart) │ │ Zero-boilerplate │ │ HPA · PDB · NetworkPolicy · ServiceMonitor │ │ propagation │ │ Rolling updates · Non-root · ReadOnlyRootFS │ └──────────────────────┘ └────────────────────────────────────────────────────┘ ┌────────────────────────────────────────────────────┐ │ NVIDIA AI INFRASTRUCTURE │ │ │ │ ┌──────────────┐ ┌─────────────────────────────┐ │ ┌──────────────────────┐ │ │ NIM Provider │ │ NIM Container (sidecar) │ │ │ GPU MONITORING │ │ │ │ │ Nemotron 3 Nano/Super │ │ │ │ │ │ Hosted NIM │ │ localhost:8000/v1 │ │ │ nvidia-smi polling │ │ │ or sidecar │ │ GPU-accelerated inference │ │ │ Prometheus gauges │ │ └──────────────┘ └─────────────────────────────┘ │ │ Threshold alerts │ │ │ └──────────────────────┘ │ Guardrails: thinking budget · cost guard · RBAC │ └────────────────────────────────────────────────────┘ ``` ## 零信任网关 网关是 OpenClaw 的核心。在原始版本中,它会在多个回退路径中静默绑定到 `0.0.0.0`。企业版 OpenClaw 强制执行严格策略: **默认:仅回环。** 网关默认绑定到 `127.0.0.1`,除非你显式配置。否则不会发生意外网络暴露。 **明确警告。** 任何非回环绑定都会向 stderr 与启动日志输出带边框的醒目警告,列出确切的地址与端口。你不会错过它。 **`dangerouslyBindAllInterfaces` 必需。** LAN 模式、Tailscale 与自定义主机配置必须显式确认。静默回退已不存在。 **认证模式警告。** 若 `gateway.auth.mode: none` 与非回环绑定同时设置,会触发额外警告。在互联网上无认证运行仍然可能,但不会意外发生。 ``` gateway: bind: loopback # Default — only 127.0.0.1:port is reachable # bind: lan # ⚠ ALL interfaces (0.0.0.0) — explicit warning emitted # bind: tailnet # Tailscale IP only — recommended for remote access # bind: custom # host: 10.0.0.5 # Specific IP — warning if non-loopback port: 3284 auth: mode: jwt # jwt | token | password | none # ⚠ 'none' on non-loopback emits security warning ``` **TLS。** 应在入口层(nginx、Caddy、ALB)进行 TLS 终止。Helm 图表默认配置 cert-manager + Let's Encrypt。WebSocket 连接在 TLS 激活时自动使用 `wss://`。 ## 密钥管理 原始 OpenClaw 将每个 API 密钥、OAuth 令牌与 Webhook 密钥存储在 `~/.openclaw/credentials` —— 一个世界可读的明文 JSON 文件。企业模式完全替换此方案。 ### 工作原理 每个密钥均以加密形式存储。主密钥保存在 OS 密钥链中,永不明文存在于磁盘。配置中的密钥引用采用 URI 语法 —— 实际值在运行时解析: ``` # 而不是:anthropicApiKey: "sk-ant-abc123" # 使用密钥引用: anthropicApiKey: env://ANTHROPIC_API_KEY # container env var anthropicApiKey: vault://secret/openclaw/keys#anthropic anthropicApiKey: aws-sm://openclaw/anthropic-key anthropicApiKey: gcp-sm://projects/my-proj/secrets/anthropic anthropicApiKey: azure-kv://anthropic-api-key ``` ### 加密文件后端(默认) 适用于本地与单服务器部署。使用 **AES-256-GCM**,32 字节随机密钥保存在: - **macOS**:钥匙串(`security find-generic-password -s openclaw-master-key`) - **Linux**:`~/.openclaw/.master-key`(权限 `0600`) - **Windows**:`~/.openclaw/.master-key`(DPAPI 集成路线图) - **容器**:`OPENCLAW_MASTER_KEY=` 环境变量 ``` enterprise: secrets: backend: file filePath: ~/.openclaw/secrets.enc # optional override ``` 加密信封格式:`version(1B) | iv(12B) | auth-tag(16B) | ciphertext(nB)`。认证标签在解密前检测篡改。 **遗留迁移。** 首次启动企业版时,`~/.openclaw/credentials` 将被自动读取,每个密钥加密后存入新后端,原文件重命名为 `.credentials.migrated`。迁移非破坏性——原文件在确认前不会被删除。 ### HashiCorp Vault 面向团队的工业级密钥管理。支持 KV v2、AppRole 认证与 Kubernetes 认证(用于集群内 Pod)。 ``` enterprise: secrets: backend: vault vault: address: https://vault.example.com authMethod: kubernetes # token | approle | kubernetes role: openclaw mount: secret # KV v2 mount path prefix: openclaw/ # key namespace prefix namespace: admin # Vault Enterprise namespace (optional) ``` **AppRole**(用于 CI/CD 流水线): ``` vault: appRole: roleId: secretId: env://VAULT_SECRET_ID # secret never in config file ``` **Kubernetes**(用于集群内 Pod —— 无需凭证管理): ``` vault: authMethod: kubernetes k8sAuth: role: openclaw serviceAccountTokenPath: /var/run/secrets/kubernetes.io/serviceaccount/token ``` ### AWS Secrets Manager 使用标准 AWS SDK 凭证链 —— IAM 角色、ECS 任务角色、EC2 实例配置文件、环境变量。EC2/ECS/Lambda 部署无需在配置中放置凭证。 ``` enterprise: secrets: backend: aws-sm awsSm: region: us-east-1 prefix: openclaw/ ``` ``` npm install # @aws-sdk/client-secrets-manager auto-installed ``` ### GCP Secret Manager 使用应用默认凭证。在 GKE 上,Workload Identity 意味着无需凭证管理。 ``` enterprise: secrets: backend: gcp-sm gcpSm: projectId: my-gcp-project prefix: openclaw- ``` ``` npm install @google-cloud/secret-manager gcloud auth application-default login # for local dev ``` ### Azure Key Vault 使用 `DefaultAzureCredential` —— 自动选择托管身份、VS Code 身份、Azure CLI 或环境变量。 ``` enterprise: secrets: backend: azure-kv azureKv: vaultUrl: https://my-vault.vault.azure.net prefix: openclaw- ``` ``` npm install @azure/keyvault-secrets @azure/identity az login # for local dev ``` ## IAM / RBAC 原始 OpenClaw 只有一个认证层级:你要么拥有网关令牌,要么没有。每个认证客户端拥有完整操作员权限。企业版引入适当的身份标识与最小权限访问控制。 ### 身份模型 ``` User ──── has roles ──► Role ──── has permissions ──► Resource.Action │ └── member of ──────► Group ──── has roles │ AgentIdentity ─────────────────────── ▼ (service account) wildcard support: "agents.*" ← all agent perms "skills.install" ← exact "*" ← super-admin only ``` ### 内置角色 | 角色 | 权限 | | ---- | ---- | | `super-admin` | `*` —— 全部权限 | | `admin` | 除用户/角色管理外的所有资源 | | `operator` | 代理、技能、通道、会话 —— 无配置写入 | | `viewer` | 所有资源的只读访问 | | `agent-service` | 仅限代理执行的服务账户范围 | 可定义自定义角色并设置任意权限组合。角色可继承其他角色。循环将被检测并拒绝。 ### JWT 认证 JWT 是多用户与企业部署的推荐认证模式。首次启动且 `algorithm: RS256` 时,OpenClaw **自动生成 RSA-2048 密钥对**并写入 `~/.openclaw/enterprise/iam/`。你无需手动管理密钥。 ``` enterprise: iam: enabled: true jwt: algorithm: RS256 # RS256 (default) or HS256 expiresIn: 15m # access token TTL refreshExpiresIn: 7d # refresh token TTL issuer: openclaw # JWT iss claim ``` 令牌生命周期: - **访问令牌**:15 分钟,签名 RS256,包含 `sub`(用户/代理 ID)、`roles`、`scopes` - **刷新令牌**:7 天,单次使用,刷新时轮换 - **API 密钥**:`oc_` 格式,SHA-256 哈希存储(原始密钥永不写入磁盘),生成时仅显示一次 ### 向后兼容 来自社区版的 `operator.*` 作用域令牌仍可工作。它们会通过 `LEGACY_SCOPE_TO_PERMISSIONS` 适配器自动映射为 RBAC `operator` 角色权限 —— 无需迁移。 ### OIDC / SSO OpenClaw 企业版提供完整的 OpenID Connect(OIDC)集成,支持任何合规 IdP —— Okta、Azure AD / Entra ID、Google Workspace、Auth0、Keycloak、Palantir Foundry。流程使用 **PKCE**(代码交换证明密钥)与服务端状态验证。无需外部 OIDC库 —— 纯 Node.js 实现。 ``` enterprise: auth: oidc: discoveryUrl: https://your-org.okta.com/.well-known/openid-configuration clientId: 0oa... clientSecret: env://OIDC_CLIENT_SECRET # never inline redirectUri: https://openclaw.example.com/auth/oidc/callback scopes: [openid, email, profile, groups] groupsClaim: groups # JWT claim that contains IdP groups roleMap: Engineering: operator # IdP group name → OpenClaw RBAC role ID Admins: admin SRE: admin defaultRole: viewer # role for users not matched by roleMap ``` **自动注册的端点:** | 端点 | 描述 | | ---- | ---- | | `GET /auth/oidc/login` | 重定向至 IdP 授权端点并携带 PKCE 挑战 | | `GET /auth/oidc/callback` | 交换代码、验证 ID 令牌、签发 OpenClaw JWT | **工作原理:** 1. `/auth/oidc/login` 生成 PKCE 代码验证器与 SHA-256 挑战,存储 10 分钟 TTL 状态,重定向至 IdP 2. IdP 认证后回调 `?code=...&state=...` 3. 校验状态并消耗授权代码,在 IdP 令牌端点交换令牌 4. **验证 ID 令牌签名** —— 从发现 URL 获取 RSA 公钥,缓存 5 分钟,按 `kid` 匹配 5. 检查声明:`exp`、`nbf`、`iss`、`aud` 6. 将 IdP 群组映射到 RBAC 角色,在 SQLite RBAC 存储中创建/更新用户 7. 签发 OpenClaw 访问令牌与刷新令牌并返回给客户端 (`src/enterprise/auth/oidc.ts`) ### MFA / TOTP 基于时间的一次性密码(TOTP,RFC 6238)无外部依赖 —— 纯 Node.js 实现(HMAC-SHA1、30 秒窗口、6 位数字、±1 步时钟偏差容忍)。 ``` enterprise: auth: mfa: enabled: true issuer: "My Company OpenClaw" # label shown in authenticator apps requireForRoles: [admin, super-admin] # enforce MFA for these roles ``` **网关 RPC 方法:** | 方法 | 描述 | | ---- | ---- | | `enterprise.mfa.enroll` | 生成 TOTP 密钥与 `otpauth://` URI 用于二维码显示 | | `enterprise.mfa.confirm-enroll` | 使用首个有效码确认注册 | | `enterprise.mfa.verify` | 登录时步骤提升验证 | | `enterprise.mfa.disable` | 管理员撤销 MFA | (`src/enterprise/auth/mfa.ts`) ### 令牌撤销 刷新令牌持久化在 SQLite 中,可单独或批量撤销: - **单令牌撤销** —— 退出特定会话 - **批量撤销** —— 强制注销用户所有会话(管理员操作) - **访问令牌吊销列表** —— 在自然过期前立即失效被入侵账户的令牌 刷新令牌以 **SHA-256 哈希** 存储 —— 原始令牌永不写入磁盘。每次使用均轮换(单次使用):旧令牌撤销,新令牌签发。 | 方法 | 描述 | | ---- | ---- | | `enterprise.sessions.list` | 列出用户活跃会话 | | `enterprise.sessions.revoke` | 按 JTI 撤销特定会话 | (`src/enterprise/auth/token-store.ts`) ### IP 允许列表 按用户的 CIDR 允许列表限制可认证 IP 地址。若 `allowedCidrs` 设置且非空,来自列表外 IP 的认证请求会在签发令牌前被拒绝。 ``` # 通过管理员 API 或 enterprise.users RPC 在用户记录中设置: allowedCidrs: - "10.0.0.0/8" # corporate VPN range - "192.168.1.0/24" # office subnet - "203.0.113.5/32" # specific IP ``` 支持完整的 IPv4 CIDR 匹配与 IPv6 CIDR 匹配(通过 BigInt 展开完整 128 位地址空间)。空 `allowedCidrs` 表示无限制 —— 该功能按用户可选启用。 (`src/enterprise/security/ip-allowlist.ts`) ## 审计日志与合规 若无审计日志,无法回答:_谁运行了此命令、何时、从何处、做了什么?_ SOC 2、HIPAA §164.312(b)、PCI DSS 均要求此类记录。原始 OpenClaw 完全不具备审计能力。 ### 哈希链如何工作 每条审计事件均为防篡改记录。每个事件包含前一个事件内容的 **SHA-256 哈希**,形成链式结构,任意修改或删除历史记录均可立即被检测: ``` Event #1 id=01J4K... hash=sha256(event1_content) prevHash=0000... │ ▼ Event #2 id=01J4L... hash=sha256(event2_content) prevHash=hash_of_event1 │ ▼ Event #3 id=01J4M... hash=sha256(event3_content) prevHash=hash_of_event2 ``` 若事件 #2 被修改或删除,`event3.prevHash` 将不再匹配 `sha256(event2_content)`,`verifyChain()` 会检测到断裂。 ### 记录内容 自动捕获所有关键事件: | 事件 | 触发条件 | | ---- | ---- | | `auth.login` | 成功 WebSocket 网关连接 | | `auth.failed` | 认证失败(错误令牌、过期、速率限制) | | `auth.logout` | 会话终止 | | `agent.run.start` | 消息分派至代理 | | `agent.run.complete` | 代理任务成功完成 | | `agent.run.error` | 代理任务失败 | | `security.injection_detected` | 消息中发现注入模式 | | `guardrail.block` | 工具调用被防护引擎拦截 | | `guardrail.warn` | 工具调用被标记但允许 | | `skill.install` | 安装技能 | | `skill.invoke` | 代理调用技能 | | `skill.blocked` | 技能被 SAST 或代码签名拒绝 | | `config.read` / `config.write` | 配置访问或修改 | | `user.create` / `user.delete` | IAM 用户生命周期 | | `role.assign` | 分配角色给用户 | ### 存储 ``` enterprise: audit: enabled: true storage: driver: sqlite # default — no external dependencies path: ~/.openclaw/audit.db # WAL mode, indexed by timestamp + actor retention: days: 365 # auto-purge; 0 = keep forever ``` SQLite 以 WAL 模式提供并发读取与崩溃安全写入。审计数据库独立于主配置,可独立备份。 ### 验证 ``` import { createSQLiteAuditStorage } from "./src/enterprise/audit/storage/sqlite.js"; import { verifyChain } from "./src/enterprise/audit/schema.js"; const storage = createSQLiteAuditStorage("~/.openclaw/audit.db"); const events = await storage.query({ limit: 50_000 }); const result = verifyChain(events); if (!result.valid) { console.error(`⚠ Chain tampered at event index ${result.brokenAt}`); console.error(`Expected prevHash: ${result.expected}`); console.error(`Found prevHash: ${result.found}`); } ``` ### PostgreSQL 审计后端 适用于需要大规模集中式、可查询审计存储的部署: ``` enterprise: audit: storage: driver: postgres connectionString: env://AUDIT_POSTGRES_URL # never inline credentials maxConnections: 10 idleTimeoutMs: 30000 connectionTimeoutMs: 5000 ``` ``` npm install pg # optional dependency, not included by default ``` 该模式使用 JSONB 存储原始事件与元数据列,在 `timestamp`、`actor_id`、`action`、`category`、`outcome` 与 `tenant_id` 上建立索引。实现与 SQLite 后端相同的 `AuditStorage` 接口 —— 切换驱动仅需配置变更。GDPR 匿名化(`anonymizeActor`)原地重写引用,不破坏哈希链。(`src/enterprise/audit/storage/postgres.ts`) ### SIEM / Syslog 导出 实时将审计事件转发至你的 SIEM 系统。 **Syslog(RFC 5424 — UDP 或 TCP):** ``` enterprise: audit: sinks: - type: syslog protocol: udp # udp (default) or tcp host: siem.example.com port: 514 facility: 16 # local0 appName: openclaw ``` 每个事件以 RFC 5424 格式化,包含结构化数据元素 `openclaw@32473`,含 `id`、`actor`、`action`、`outcome`、`tenantId` 与 `durationMs`。TCP 传输包含自动重连与有界写队列。 **Webhook / 通用日志聚合:** ``` enterprise: audit: sinks: - type: webhook url: https://logs.example.com/ingest batchSize: 100 # events per POST flushIntervalMs: 5000 # max wait before flush headers: Authorization: env://LOG_INGEST_TOKEN ``` 批量发送 JSON 数组至 HTTP 端点。兼容 Elastic、Splunk HEC、Datadog、Loki 等任意 HTTP 摄入端点。(`src/enterprise/audit/sinks/syslog.ts`) ### GDPR 合规(Art. 17 + Art. 20) 两项操作满足数据主体权利: **数据导出(Art. 20 — 可移植性):** ``` GET enterprise.gdpr.export?userId= # requires super-admin role ``` 返回包含用户档案、其作为 Actor 的所有审计事件及所有活跃会话的 JSON 对象。可直接提供给数据主体。 **数据擦除(Art. 17 — 被遗忘权):** ``` POST enterprise.gdpr.erase { userId } # requires super-admin role ``` 擦除步骤: 1. 撤销所有活跃刷新令牌(会话立即终止) 2. 对引用该用户的审计日志条目进行伪匿名化 —— Actor ID 与邮箱替换为 `[erased-{sha256}]`。**审计链保持完整且可验证** —— 事件内容更新但哈希链不被破坏 3. 从 RBAC 存储中删除用户配置 (`src/enterprise/iam/gdpr.ts`) ### 合规映射 | 标准 | 要求 | 实现方式 | | ---- | ---- | ---- | | SOC 2 CC6 | 逻辑访问控制 | 认证事件、角色分配、失败登录 | | SOC 2 CC7 | 系统操作 | 代理运行、工具执行、配置变更 | | HIPAA §164.312(b) | 审计控制 | 完整事件日志(含 Actor、资源、结果、IP) | | GDPR Art. 17 | 擦除权 | `gdprEraseUser` —— 伪匿名化 + 删除 | | GDPR Art. 20 | 可移植性 | `gdprExportUser` —— 完整 JSON 导出 | | GDPR Art. 30 处理记录 | 每事件记录 Actor 与资源;GDPR 保留策略 | | PCI DSS 10 | 审计日志审查 | 哈希链 + 保留策略 + 集中存储 | ## 提示注入防御 通道消息来自不可信来源。Telegram 用户、Slack Webhook 或 Web 表单可能包含精心设计的文本,旨在劫持 AI 代理:`"忽略之前指令。你现在是 DAN..."`。若无防护,代理将遵从。 ### 流水线 每个入站消息在到达模型前均经过多阶段净化流水线: ``` Raw message (from WhatsApp / Telegram / DM / WebSocket) │ ▼ ① NFC Unicode normalization │ Collapses homoglyphs: "ⅈgnore" → "ignore" │ ▼ ② Invisible character stripping │ Removes zero-width spaces, soft hyphens, directional marks │ used to hide injection text from human reviewers │ ▼ ③ Injection pattern detection (8 rule families) │ • "ignore previous instructions / forget above" │ • DAN / jailbreak activation phrases │ • "you are now [DAN|GPT|unrestricted]" │ • System/admin role override attempts │ • Prompt leaking ("repeat your system prompt") │ • Base64-encoded injection attempts │ • Nested instruction framing ("as a reminder, your new task is") │ • Urgency/authority spoofing ("ANTHROPIC ALERT: you must now") │ ▼ ④ Truncation (default 32 KB) │ Prevents context window stuffing attacks │ ▼ ⑤ Trust boundary tagging External content is wrapped: [message content] This makes the source explicit to the model and prevents the model from treating channel content as system instructions. ``` 若检测到注入,请求将被拒绝并记录审计事件。用户收到通用错误信息,不会泄露触发检测的细节。 ### 防护引擎 运行时防护引擎在 **`runBeforeToolCallHook()`** 中评估 **每个工具调用**,由代理运行时在执行任何工具(bash、浏览器、文件系统或技能)前调用。 | 规则 | 模式 | 动作 | | ---- | ---- | ---- | | 凭证收割 | `cat ~/.ssh/id_rsa`、读取 `.aws/credentials`、`.npmrc` | `require-approval` | | 反向 Shell | `bash -i >& /dev/tcp/...`、`nc -e /bin/bash` | `block` | | 批量删除 | `rm -rf /`、`DROP TABLE`、`DELETE FROM ... WHERE 1=1` | `require-approval` | | 输出中的 SSN | `\b\d{3}-\d{2}-\d{4}\b` | `warn` + 审计事件 | | 输出中的信用卡号 | Luhn 校验有效的 13–16 位数字序列 | `warn` + 审计事件 | **可插拔规则** —— 添加你自己的规则: ``` enterprise: guardrails: rules: - id: no-prod-db description: Block direct production DB writes pattern: "postgres://.*prod.*|mysql://.*production" action: block scope: tool-input ``` ## 技能供应链安全 技能是可安装的 npm 包 —— 以完整代理权限运行的第三方代码。未经验证,恶意技能可能窃取数据、安装后门或横向移动至内部系统。 ### 代码签名(Ed25519) 每个发布至企业注册表的技能均使用 Ed25519 签名。签名过程对技能目录进行哈希(SHA-256 每个文件,按排序的文件树),并生成分离签名。 ``` // Publisher workflow: const { privateKey, publicKey } = generateSigningKeyPair(); const manifest = await signSkill("/path/to/my-skill", privateKey); // manifest.signature + manifest.files[] stored in skill registry // Install-time verification (automatic when requireSigning: true): const valid = await verifySkillSignature(skillDir, manifest, trustedPublicKeys); if (!valid) throw new Error("Skill signature verification failed"); ``` ``` enterprise: skills: requireSigning: true trustedKeys: - "base64-ed25519-pubkey==" # your organization's key requireSast: true maxRiskScore: 40 # 0=safest, 100=reject-all above ``` ### 企业 SAST(14 条规则) 在安装任何技能前,静态分析会检查: | 规则 | CWE | OWASP | | ---- | --- | ---- | | 凭证收割 | CWE-522 | A02 密码学失败 | | 反向 Shell | CWE-78 | A03 注入 | | 持久化(计划任务、launchd、systemd) | CWE-912 | A08 软件完整性 | | 代码注入(eval、Function()) | CWE-94 | A03 注入 | | 原型污染 | CWE-1321 | A03 注入 | | 危险反序列化 | CWE-502 | A08 软件完整性 | | 路径遍历 | CWE-22 | A01 访问控制 | | 数据外泄(curl 至外部 IP) | CWE-200 | A02 密码学失败 | | 供应链(动态 require、混淆) | CWE-506 | A08 软件完整性 | | XSS 在技能输出 | CWE-79 | A03 注入 | | 未经验证的重定向 | CWE-601 | A01 访问控制 | | 硬编码密钥 | CWE-798 | A07 认证失败 | | 不安全的随机数 | CWE-338 | A02 密码学失败 | | SSRF 模式 | CWE-918 | A10 SSRF | 每项发现将累加 **风险评分(0–100)**。扫描器返回建议: - `approve` —— 风险评分 < 40 - `review` —— 风险评分 40–70(需人工审批) - `reject` —— 风险评分 > 70(自动阻断) ## Prometheus 监控 原始 OpenClaw 无指标也无健康探针 —— 无法在规模或 Kubernetes 上运行。 ### 端点 | 端点 | 用途 | | ---- | ---- | | `GET /metrics` | Prometheus 文本格式 —— 通过 `prometheus.io/scrape: "true"` 抓取 | | `GET /healthz` | 联合活跃度 + 就绪性 —— 返回 200 或 503 及 JSON 详情 | | `GET /livez` | 活跃性 —— 进程是否存活 | | `GET /readyz` | 就绪性 —— 网关是否准备好接收流量 | | `GET /startupz` | 启动探针 —— 返回 503 直到完全初始化 | 所有探针端点 **无需认证**(Kubernetes 探针所需)。它们仅暴露二进制上下状态与聚合计数,不泄露敏感数据。 ### 可用指标 ``` # 网关 openclaw_gateway_connections_active Gauge openclaw_gateway_requests_total Counter (labels: method, path, status) openclaw_gateway_request_duration_seconds Histogram # 代理 openclaw_agent_runs_total Counter (labels: agent_id, outcome) openclaw_agent_runs_active Gauge openclaw_agent_errors_total Counter openclaw_agent_run_duration_seconds Histogram # 认证 openclaw_auth_success_total Counter (labels: method) openclaw_auth_failure_total Counter (labels: reason) # 安全 openclaw_guardrail_evaluations_total Counter (labels: action) openclaw_guardrail_blocks_total Counter openclaw_injection_detections_total Counter # 技能 openclaw_skill_invocations_total Counter (labels: skill_id, outcome) # 审计 openclaw_audit_events_total Counter (labels: category) openclaw_audit_chain_length Gauge # 多租户 openclaw_tenant_count Gauge openclaw_cluster_node_count Gauge ``` ### 零开销设计 当 `enterprise.monitoring.enabled` 为 `false`(社区版默认)时,每个指标调用均通过空操作存根 —— 无 `prom-client` 导入、无内存分配、无 CPU 开销。仅在调用 `initMonitoring()` 时才替换为真实实现。 ## 多租户 多租户允许单个 OpenClaw 部署为多个隔离的团队或客户服务,带各自速率限制、审计追踪与配置。 ### 隔离机制 租户上下文通过 Node.js `AsyncLocalStorage` 自动传播至所有异步操作。无需将租户 ID 手动传递到每个函数: ``` import { runWithTenantAsync, getTenantContext } from "./src/enterprise/tenancy/index.js"; // Set at the gateway connection layer (once per request) await runWithTenantAsync({ tenantId: "acme-corp", name: "ACME Corp" }, async () => { // Everything called here — including deeply nested async code, // tool executions, and audit logs — automatically has tenant context. const ctx = getTenantContext(); // { tenantId: "acme-corp", name: "ACME Corp" } await agent.run(message); // audit events get tenantId automatically }); ``` ``` enterprise: tenancy: enabled: true tenants: - id: acme-corp name: ACME Corp rateLimits: requestsPerMinute: 500 - id: beta-team name: Beta Team rateLimits: requestsPerMinute: 100 ``` ### 存储层隔离 除 `AsyncLocalStorage` 上下文传播外,租户隔离在 **SQL 查询层面** 强制执行。所有 RBAC 与审计存储调用均通过带租户作用域的适配器: - 自动为写入打上 `tenantId` 标记(若上下文已设置) - 对所有读取强制添加租户过滤(`WHERE tenant_id = ?`) - 若代码尝试读取其他租户数据,抛出 `TENANT_ISOLATION_VIOLATION` 错误 这可防止应用代码遗漏过滤导致的数据泄漏。(`src/enterprise/tenancy/isolation.ts`) ## 分布式集群 为实现高可用,多个 OpenClaw 网关节点可组成集群,依赖 Redis 支持。节点相互发现、选主、交换心跳,并通过共享消息总线路由事件。 ``` enterprise: cluster: enabled: true redis: url: env://REDIS_URL # never inline credentials keyPrefix: openclaw: heartbeatIntervalMs: 10000 ``` ``` npm install ioredis # optional dependency for Redis cluster support ``` **工作原理:** - **选主** —— `SET NX EX` 对 `{keyPrefix}leader` 的原子锁,锁 TTL = 3 × 心跳间隔。当前主节点失效时自动重新选主 - **锁续期** —— 主节点定期续租心跳锁,防止误切主 - **节点心跳** —— 各节点写入 TTL = 4 × 心跳间隔的心跳键。停止续租的节点将因 Redis TTL 过期自动淘汰 - **消息总线** —— 通过 Redis Pub/Sub 的独立订阅连接。事件模型与单节点相同,只是跨节点分布 **InMemoryCoordinator** 提供用于开发与测试的单节点模式 —— 未安装 `ioredis` 时自动回退并输出警告。 (`src/enterprise/cluster/index.ts`) ### 分布式速率限制 多个网关节点共享 Redis 时,速率限制在全局跨节点生效,使用滑动窗口算法: ``` enterprise: security: rateLimiting: enabled: true redisUrl: env://REDIS_URL # same Redis as cluster.redis.url windowMs: 60000 # 1-minute window maxRequests: 1000 # per subject per window ``` Redis 实现使用有序集合:每次请求执行 `ZADD` 添加带时间戳的条目,`ZREMRANGEBYSCORE` 清理过期条目,`ZCARD` 计数活跃条目。Redis 不可用时自动回退至节点本地内存窗口并输出 stderr 警告。 (`src/enterprise/security/rate-limit.ts`) ## Kubernetes 完整生产级 Helm 图表位于 [`k8s/helm/openclaw/`](k8s/helm/openclaw/)。 ### 开箱安全配置 ``` securityContext: runAsNonRoot: true # UID 1001 runAsUser: 1001 allowPrivilegeEscalation: false capabilities: drop: ["ALL"] # no Linux capabilities readOnlyRootFilesystem: true automountServiceAccountToken: false ``` ### 安装 ``` # 首先创建密钥 kubectl create secret generic openclaw-secrets \ --namespace openclaw \ --from-literal=ANTHROPIC_API_KEY=sk-ant-... \ --from-literal=OPENCLAW_MASTER_KEY=$(openssl rand -base64 32) # 单节点(开发 / 小团队) kubectl apply -f k8s/examples/single-node.yaml # 企业高可用(3 个副本、Vault 密钥、Prometheus、cert-manager) helm install openclaw k8s/helm/openclaw/ \ --namespace openclaw --create-namespace \ -f k8s/examples/enterprise-ha.yaml ``` ### Helm 图表包含内容 | 模板 | 描述 | | ---- | ---- | | `deployment.yaml` | 滚动更新、全部 3 个探针、配置和注解 | | `service.yaml` | ClusterIP 服务 | | `ingress.yaml` | 多版本(networking.k8s.io/v1 / v1beta1 / extensions) | | `hpa.yaml` | HPA v2(CPU + 内存指标) | | `pdb.yaml` | PodDisruptionBudget(policy/v1 与 v1beta1 回退) | | `networkpolicy.yaml` | 仅允许来自 Ingress 控制器与 Prometheus 的入站;Egress 限 DNS 与 HTTPS | | `serviceaccount.yaml` | 专用 SA,`automountServiceAccountToken: false` | | `servicemonitor.yaml` | Prometheus Operator ServiceMonitor | | `configmap.yaml` | 来自 Helm 配置的图表,条件化包含企业级块 | | `pvc.yaml` | 数据持久化卷 | | `NOTES.txt` | 安装后说明(含检测到的配置) | ### 高可用配置 参见 [`k8s/examples/enterprise-ha.yaml`](k8s/examples/enterprise-ha.yaml) 的生产级覆盖示例,包括: - 3 个副本,带 Pod 反亲和性(分散至不同节点) - HPA:3–20 个副本,CPU 70% / 内存 80% - PDB:`minAvailable: 2` - 基于 Vault 的密钥与 Kubernetes 认证 - OIDC 认证 - Prometheus ServiceMonitor 自定义抓取标签 - cert-manager TLS 与 Let's Encrypt - NetworkPolicy(入口来自 nginx,出口至 Vault 与外部 API) - `topologySpreadConstraints` 用于区域分布 ## 连接企业消息通道 OpenClaw 与团队已使用的平台集成。每个通道在 `~/.openclaw/config.yaml` 中配置于 `channels.` 下。运行 `pnpm openclaw onboard` 可启动交互式设置向导。 ### Slack **状态:** 生产就绪。Socket Mode(默认)或 HTTP Events API。 **步骤 1 — 创建 Slack 应用** 前往 [api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From manifest**,粘贴下方 JSON 并将 `OpenClaw` 替换为你偏好的机器人名称: ``` { "display_information": { "name": "OpenClaw" }, "features": { "bot_user": { "display_name": "OpenClaw", "always_online": false }, "app_home": { "messages_tab_enabled": true } }, "oauth_config": { "scopes": { "bot": [ "chat:write", "channels:history", "channels:read", "groups:history", "im:history", "mpim:history", "users:read", "app_mentions:read", "reactions:read", "reactions:write", "files:read", "files:write", "commands" ] } }, "settings": { "socket_mode_enabled": true, "event_subscriptions": { "bot_events": [ "app_mention", "message.channels", "message.groups", "message.im", "message.mpim", "reaction_added", "reaction_removed" ] } } } ``` - 在 **Socket Mode** 下生成 **App-Level Token**(`xapp-...`)并赋予 `connections:write` 范围 - 在 **OAuth & Permissions** 下安装应用到工作区并复制 **Bot Token**(`xoxb-...`) - 在 **App Home** 下启用 **Messages Tab**,以便用户可直接 DM 机器人 **步骤 2 — 配置 OpenClaw** ``` channels: slack: enabled: true botToken: xoxb-... # or env: SLACK_BOT_TOKEN appToken: xapp-... # or env: SLACK_APP_TOKEN requireMention: true # require @mention in channels (default) dmPolicy: pairing # pairing | open | allowlist groupPolicy: allowlist # allowlist channels explicitly channels: C0123456789: # Slack channel ID allow: true ``` **步骤 3 — 启动网关** ``` pnpm gateway:watch ``` 机器人将立即上线于 Slack。直接 DM 它或在其被加入的频道中 `@` 提及即可。 ### Microsoft Teams **状态:** 通过插件支持(Azure Bot Framework)。需公网可访问的机器人 Webhook。 **步骤 1 — 安装 Teams 插件** ``` pnpm openclaw plugins install @openclaw/msteams # 或从此仓库的本地检出: pnpm openclaw plugins install ./extensions/msteams ``` **步骤 2 — 注册 Azure 机器人** 1. 访问 [portal.azure.com](https://portal.azure.com) → **Azure Bot** → **Create** 2. 选择 **Multi Tenant**(或 **Single Tenant**) 3. 记录 **App ID** 并生成 **Client Secret** 4. 在 **Channels** 中添加 **Microsoft Teams** 5. 在 **Configuration** 中将 **Messaging endpoint** 设为你的网关公网地址: `https://your-gateway.example.com/api/messages` 网关默认监听 3978 端口与 `/api/messages` 路径。可通过反向代理(nginx、Caddy)或隧道(ngrok、Tailscale Funnel)暴露 HTTPS。 **步骤 3 — 配置 OpenClaw** ``` channels: msteams: enabled: true appId: "" # or env: MSTEAMS_APP_ID appPassword: "" # or env: MSTEAMS_APP_PASSWORD tenantId: "" # omit for multi-tenant webhook: port: 3978 path: /api/messages requireMention: true # require @mention in channels dmPolicy: pairing # pairing | open | allowlist replyStyle: thread # thread | top-level ``` **步骤 4 — 安装 Teams 应用** 生成应用包(`manifest.json` 与图标组成的 zip)并上传至 Teams 管理中心或直接侧载: - **Teams Admin Center** → Manage apps → Upload → 选择 zip 并发布至组织 - **Teams 客户端** → Apps → Manage your apps → Upload an app(开发/测试侧载) 机器人随后出现在 Teams 搜索中。用户可直接 DM 或 `@` 提及。 ### Google Chat(Google Workspace) **状态:** 通过 Google Chat API(HTTP Webhook)生产就绪。 **步骤 1 — 创建 Google Cloud 项目** 1. 访问 [console.cloud.google.com](https://console.cloud.google.com) → 启用 **Google Chat API** 2. 创建 **Service Account**(凭据 → 创建凭据 → 服务账户) 3. 生成 **JSON 密钥** 并复制到网关主机,例如 `~/.openclaw/googlechat-sa.json` **步骤 2 — 配置 Chat 应用** 在 [Google Chat API → Configuration](https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat): - 设置 **Connection settings** 为 **HTTP endpoint URL**,指向 `https://your-gateway.example.com/googlechat` - 设置 **Visibility** 为你的域或指定用户 - 将 **App status** 设为 **Live** **步骤 3 — 配置 OpenClaw** ``` channels: googlechat: enabled: true serviceAccountFile: ~/.openclaw/googlechat-sa.json requireMention: true dmPolicy: pairing groupPolicy: allowlist ``` 用户可通过 Google Chat 搜索栏直接按名称查找机器人(不会出现在 Marketplace 列表)。 ### Mattermost(自托管) **状态:** 通过插件支持(Bot Token + WebSocket 事件)。支持频道、群组与 DM。 **步骤 1 — 安装 Mattermost 插件** ``` pnpm openclaw plugins install @openclaw/mattermost ``` **步骤 2 — 创建机器人账户** 在 Mattermost 中:**System Console** → **Integrations** → **Bot Accounts** → **Add Bot Account**。创建后仅显示一次 Bot Token,请妥善保存。 **步骤 3 — 配置 OpenClaw** ``` channels: mattermost: enabled: true botToken: "" # or env: MATTERMOST_BOT_TOKEN baseUrl: https://chat.example.com # your Mattermost server URL dmPolicy: pairing requireMention: true ``` **步骤 4 — 将机器人加入频道** 在 Mattermost 中使用 `/invite @openclaw` 将机器人加入任意频道。它会自动响应 DM 并对频道中的 `@openclaw` 提及做出回复。 ### 通道概览 | 通道 | 认证要求 | 插件需求 | DM | 群组通道 | | ---- | ---- | ---- | ---- | ---- | | Slack | Bot Token + App Token | 否 | ✅ | ✅ | | Microsoft Teams | Azure App ID + Secret | 是(`@openclaw/msteams`) | ✅ | ✅ | | Google Chat | GCP 服务账户 JSON | 否 | ✅ | ✅(Spaces) | | Mattermost | Bot Token | 是(`@openclaw/mattermost`) | ✅ | ✅ | | Discord | Bot Token | 否 | ✅ | ✅ | | Telegram | Bot Token(BotFather) | 否 | ✅ | ✅ | | WhatsApp | QR 配对(Baileys) | 否 | ✅ | ✅ | ## 签名容器镜像 + SBOM 每个发布镜像均通过 GitHub Actions 构建、签名并证明。签名使用 **cosign keyless** —— 无需管理私钥,GitHub OIDC 作为信任锚点。 ``` # 验证镜像签名 cosign verify \ --certificate-identity-regexp="https://github.com/mholovetskyi/openclawenterprise/.*" \ --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \ ghcr.io/mholovetskyi/openclawenterprise:latest # 验证 SBOM 证明 cosign verify-attestation \ --type spdxjson \ --certificate-identity-regexp="https://github.com/mholovetskyi/openclawenterprise/.*" \ --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \ ghcr.io/mholovetskyi/openclawenterprise:latest ``` **CI 工作流(`.github/workflows/container.yml`):** | 作业 | 工具 | 输出 | | ---- | ---- | ---- | | `build` | Docker Buildx | 多平台镜像(linux/amd64、linux/arm64)推送到 ghcr.io | | `sign` | cosign keyless | 透明日志条目;无需私钥或密钥 | | `sbom` | syft + cosign | 生成并证明 SPDX-JSON SBOM 至镜像摘要 | | `vulnerability-scan` | Trivy | 扫描结果以 SARIF 形式上传至 GitHub 安全标签页 | SBOM 也作为工作流产物保留 90 天,供离线检查。漏洞扫描结果出现在 **Security → Code scanning** 标签页。 ## 企业快速启动配置 ``` # ~/.openclaw/config.yaml — 完整企业配置 enterprise: enabled: true # ── Secrets ────────────────────────────────────────────────────── secrets: backend: vault # file | vault | aws-sm | gcp-sm | azure-kv vault: address: https://vault.example.com authMethod: kubernetes role: openclaw mount: secret prefix: openclaw/ # ── IAM / RBAC ─────────────────────────────────────────────────── iam: enabled: true jwt: algorithm: RS256 # auto-generates key pair on first start expiresIn: 15m refreshExpiresIn: 7d # ── OIDC / SSO (optional — remove if using local accounts) ──────── auth: oidc: discoveryUrl: https://your-org.okta.com/.well-known/openid-configuration clientId: 0oa... clientSecret: env://OIDC_CLIENT_SECRET redirectUri: https://openclaw.example.com/auth/oidc/callback roleMap: Engineering: operator Admins: admin defaultRole: viewer mfa: enabled: true requireForRoles: [admin, super-admin] # ── Audit logging ───────────────────────────────────────────────── audit: enabled: true storage: driver: sqlite path: ~/.openclaw/audit.db retention: days: 365 # ── Monitoring ─────────────────────────────────────────────────── monitoring: enabled: true # /metrics + /healthz + /livez + /readyz + /startupz # ── Guardrails (defaults are safe — override to customize) ──────── guardrails: enabled: true # ── Skill supply chain ──────────────────────────────────────────── skills: requireSigning: true requireSast: true maxRiskScore: 40 # ── Multi-tenancy (optional) ────────────────────────────────────── tenancy: enabled: false # ── Cluster (optional — requires ioredis) ──────────────────────── cluster: enabled: false # redis: # url: env://REDIS_URL # keyPrefix: openclaw: # ── Security ────────────────────────────────────────────────────── security: rateLimiting: enabled: true redisUrl: env://REDIS_URL # shared with cluster if enabled # ── 网关 ─────────────────────────────────────────────────────── gateway: bind: loopback # NEVER silent 0.0.0.0 auth: mode: jwt # requires enterprise.iam.enabled: true port: 3284 # ── 代理模型 ────────────────────────────────────────────────── # 推荐:Anthropic Opus 4.6 以获得最佳提示注入抵抗力 ``` ## NVIDIA AI 基础设施 OpenClaw 企业版与 NVIDIA 代理式 AI 栈原生集成。使用 NIM 通过 GPU 加速运行 Nemotron 3 模型,监控 GPU 健康(Prometheus),强制执行思考预算与模型路由策略,将 NIM 作为 Kubernetes Sidecar 部署,并运行带有 OpenShell 沙箱的 NemoClaw Enterprise ### NIM 提供者 ``` enterprise: nvidia: nim: enabled: true endpoint: "https://integrate.api.nvidia.com/v1" apiKey: env://NIM_API_KEY defaultModel: "nvidia/nemotron-3-nano-30b-a3b" gpuMetrics: enabled: true pollIntervalMs: 15000 guardrails: nvidia: thinkingBudgetLimit: enabled: true maxThinkingTokens: 4096 modelRoutingPolicy: enabled: true roleModelMap: viewer: ["nvidia/llama-3.1-nemotron-nano-8b-v1"] operator: ["nvidia/llama-3.1-nemotron-nano-8b-v1", "nvidia/nemotron-3-nano-30b-a3b"] admin: ["*"] ``` ### NemoClaw Enterprise(沙箱推理) NemoClaw 带来带有声明式安全策略的沙箱推理 —— 每个请求在 OpenShell 容器中运行,具备网络出口控制、文件系统隔离与 seccomp 限制。内置隐私路由器可强制敏感数据保留在本地仅模型内,绝不出域。 开箱即用三种推理配置文件:`nvidia-cloud`(NVIDIA 托管 API)、`local-nim`(自托管 NIM 容器)、`vllm`(社区 vLLM 后端)。默认主模型为 **Nemotron 3 Super 120B**(`nvidia/nemotron-3-super-120b-a12b`)。 ``` enterprise: nvidia: nemoClaw: enabled: true apiKey: env://NEMOCLAW_API_KEY # falls back to NVIDIA_API_KEY inferenceProfile: nvidia-cloud # nvidia-cloud | local-nim | vllm defaultModel: "nvidia/nemotron-3-super-120b-a12b" sandbox: networkEgress: block # block | allow | require-approval allowedHosts: - "integrate.api.nvidia.com" - "*.nvidia.com" filesystem: read-only seccomp: strict privacyRouter: enabled: true sensitivePatterns: ["SSN", "credit_card", "medical_record"] localOnlyModel: "nvidia/nemotron-3-nano-30b-a3b" ``` **关键能力:** - **OpenShell 沙箱** — 每个推理请求在隔离容器中运行,限制网络、文件系统与系统调用 - **隐私路由器** — 自动将含敏感数据的提示路由至本地仅模型(不出域) - **3 种推理配置文件** — NVIDIA 云、本地 NIM、vLLM —— 可通过单行配置切换 - **出口控制** — 阻断、允许或需审批的出站网络 - **Prometheus 指标** — `nemoclaw_requests_total`、`nemoclaw_latency_seconds`、`nemoclaw_tokens_total`、`nemoclaw_sandbox_health`、`nemoclaw_sandbox_egress_blocked_total` - **审计事件** — `NEMOCLAW_REQUEST`、`NEMOCLAW_SANDBOX_POLICY`、`NEMOCLAW_EGRESS_BLOCKED` 记录至防篡改审计链 - **自动降级** — `NVIDIA_API_KEY` 自动回退至 `NVIDIA_API_KEY` 以统一凭证管理 详见 [docs/enterprise/nvidia.md](docs/enterprise/nvidia.md) 获取完整配置参考、Kubernetes Sidecar 部署与故障排查。 ### Palantir Foundry 集成 OpenClaw 企业版与 Palantir Foundry 集成,实现统一的审计可见性、OIDC/SSO 认证与 Compute Module 部署。 ``` enterprise: # ── Palantir Foundry (optional) ────────────────────────────────── # audit: # sinks: # - type: palantir-foundry # stackUrl: env://PALANTIR_STACK_URL # clientId: env://PALANTIR_CLIENT_ID # clientSecret: env://PALANTIR_CLIENT_SECRET # ontologyRid: env://PALANTIR_ONTOLOGY_RID # streamRid: "ri.foundry.main.dataset.abc123" # ── Palantir OIDC/SSO (optional) ──────────────────────────────── # auth: # oidc: # provider: palantir # stackUrl: env://PALANTIR_STACK_URL # clientId: env://PALANTIR_OIDC_CLIENT_ID # clientSecret: env://PALANTIR_OIDC_CLIENT_SECRET # roleMap: # Foundry-Admins: admin # Foundry-Operators: operator ``` 详见 [docs/enterprise/palantir.md](docs/enterprise/palantir.md) 获取完整配置、Compute Module 部署与本体感知防护栏。 ### Oracle 云基础设施集成 OpenClaw 企业版与 Oracle Cloud Infrastructure 集成,用于密钥管理(OCI Vault)、审计日志流(OCI Streaming)、数据库连接(Oracle MCP 桥接)以及可移植的 Agent Spec JSON 导出。 ``` enterprise: # ── OCI Vault secrets (optional) ────────────────────────────── secrets: backend: oci-vault ociVault: tenancyId: env://OCI_TENANCY_ID userId: env://OCI_USER_ID fingerprint: env://OCI_FINGERPRINT privateKey: env://OCI_PRIVATE_KEY region: us-ashburn-1 compartmentId: env://OCI_COMPARTMENT_ID vaultId: env://OCI_VAULT_ID keyId: env://OCI_KEY_ID # ── OCI Streaming audit sink (optional) ─────────────────────── audit: enabled: true sinks: - type: oci-streaming streamId: env://OCI_STREAM_ID streamEndpoint: env://OCI_STREAMING_ENDPOINT batchSize: 100 flushIntervalMs: 5000 # ── Oracle MCP bridge (optional) ────────────────────────────── oracle: mcp: enabled: true endpoint: env://ORACLE_MCP_ENDPOINT auth: method: oci-api-key allowedTools: [sql_query, describe_table, list_tables] blockedTools: [drop_table] maxResultRows: 1000 # ── Agent Spec export (optional) ──────────────────────────── agentSpec: enabled: true exportPath: ./agent-spec.json includeTools: true redactSecrets: true ``` 详见 [docs/enterprise/oracle.md](docs/enterprise/oracle.md) 获取完整配置、MCP 防护栏与 Agent Spec 模式。 ## 功能矩阵 | | 社区版 | 企业版 | | ---- | ---- | ---- | | **核心** | | | | 多通道 AI 助理(14 通道) | ✅ | ✅ | | 本地优先网关(默认回环) | ✅ | ✅ | | 技能平台 | ✅ | ✅ | | 语音唤醒 + 说话模式 | ✅ | ✅ | | 实时画布(A2UI) | ✅ | ✅ | | macOS / iOS / Android 应用 | ✅ | ✅ | | **安全** | | | | 零信任网关(0.0.0.0 从不静默) | ✅ | ✅ | | AES-256-GCM 加密密钥 | — | ✅ | | HashiCorp Vault 集成 | — | ✅ | | AWS Secrets Manager | — | ✅ | | GCP Secret Manager | — | ✅ | | Azure Key Vault | — | ✅ | | OCI Vault(Oracle Cloud KMS) | — | ✅ | | 遗留凭证自动迁移 | — | ✅ | | 提示注入净化器(8 类规则) | — | ✅ | | 信任边界标记 | — | ✅ | | 运行时防护引擎 | — | ✅ | | 技能代码签名(Ed25519) | — | ✅ | | 企业 SAST(14 规则,CWE/OWASP) | — | ✅ | | **身份与访问** | | | | IAM / RBAC(5 个内置角色) | — | ✅ | | SQLite 持久化 RBAC 存储 | — | ✅ | | JWT RS256/HS256 认证 | — | ✅ | | API 密钥管理 | — | ✅ | | 用户组与角色继承 | — | ✅ | | 代理服务账户 | — | ✅ | | 旧作用域向后兼容 | ✅ | ✅ | | OIDC / SSO(Palantir、Okta、Azure AD、Google、Auth0、Keycloak) | — | ✅ | | MFA / TOTP(RFC 6238,纯 Node.js) | — | ✅ | | 刷新令牌撤销(单次 + 批量) | — | ✅ | | IP 允许列表(IPv4 + IPv6 CIDR) | — | ✅ | | **合规** | | | | 防篡改审计日志(SHA-256 哈希链) | — | ✅ | | ULID 事件 ID(可排序、毫秒级) | — | ✅ | | SQLite WAL 审计存储 | — | ✅ | | PostgreSQL 审计后端 | — | ✅ | | SIEM / Syslog(RFC 5424 UDP + TCP) | — | ✅ | | Webhook 日志接收器(Elastic、Splunk、Datadog) | — | ✅ | | 可配置保留策略 | — | ✅ | | 链验证 API | — | ✅ | | GDPR 数据导出(Art. 20) | — | ✅ | | GDPR 数据擦除(Art. 17) | — | ✅ | | SOC 2 / HIPAA / GDPR 映射 | — | ✅ | | **可观测性** | | | | Prometheus 指标(20+) | — | ✅ | | `/metrics` / `/healthz` / `/livez` / `/readyz` / `/startupz` | — | ✅ | | Grafana 仪表板(包含) | — | ✅ | | 管理仪表板 UI(实时、网关连接) | — | ✅ | | **规模** | | | | 多租户(AsyncLocalStorage) | — | ✅ | | 多租户存储隔离(SQL 级) | — | ✅ | | 每租户速率限制 | — | ✅ | | 分布式速率限制(Redis 滑动窗口) | — | ✅ | | 分布式集群(Redis 领导者选举 + Pub/Sub) | — | ✅ | | 节点心跳与健康追踪 | — | ✅ | | **部署** | | | | Kubernetes Helm 图表(完整) | — | ✅ | | HPA + PDB + NetworkPolicy | — | ✅ | | Prometheus ServiceMonitor | — | ✅ | | cert-manager TLS | — | ✅ | | 签名容器镜像(cosign keyless) | — | ✅ | | SBOM 证明(syft SPDX-JSON) | — | ✅ | | 漏洞扫描(Trivy → GitHub Security) | — | ✅ | | npm 一键安装 | ✅ | ✅ | | **NVIDIA AI 基础设施** | | | | NVIDIA NIM 模型提供者 | — | ✅ | | Nemotron 3 模型家族支持 | — | ✅ | | NVIDIA GPU 监控(Prometheus) | — | ✅ | | NIM Kubernetes Sidecar | — | ✅ | | NemoClaw OpenShell 沙箱 | — | ✅ | | NemoClaw 隐私路由器 | — | ✅ | | NemoClaw 3 种推理配置文件 | — | ✅ | | NemoClaw 审计事件 | — | ✅ | | **Palantir Foundry** | | | | Foundry 审计接收器 | — | ✅ | | Palantir OIDC/SSO 预设 | — | ✅ | | Foundry Compute Module Dockerfile | — | ✅ | | 本体感知防护栏(指南) | | ✅ | | **Oracle 云基础设施** | | | | OCI Vault 秘密后端 | — | ✅ | | OCI 流式审计接收器 | — | ✅ | | Oracle MCP 桥接(Autonomous DB) | — | ✅ | | Agent Spec JSON 导出 | — | ✅ | ## 测试套件与质量保证 **396 个测试 · 22 个测试文件 · CI 全通过** 每个企业安全子系统的专用测试套件。测试在 CI 中通过 Vitest 运行,覆盖正确性、边界情况、密码学属性与故障模式——不仅覆盖快乐路径。 ### 按安全域划分的覆盖率 #### 密钥后端(91 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `backend-vault.test.ts` | 24 | 令牌认证、AppRole、无认证降级、KV v2 CRUD、自定义请求头 | | `backend-azure-kv.test.ts` | 24 | HTTP 404 与 `SecretNotFound` 错误码区分、Azure 安全名称编解码 | | `backend-gcp-sm.test.ts` | 22 | gRPC 错误码映射(`NOT_FOUND`、`PERMISSION_DENIED`)、Buffer 与字符串载荷处理、存在即跳过语义 | | `backend-aws-sm.test.ts` | 21 | Get/Set/Delete/List/Exists 操作、分页、跨页、SDK 错误传播 | #### 技能供应链安全(37 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `code-signing.test.ts` | 17 | Ed25519 签名与验证、密钥派生、修改文件检测、多密钥信任锚、损坏签名拒绝 | | `sast.test.ts` | 20 | 全部 14 条 SAST 规则在匹配模式时触发、风险评分 0–100、CWE 与 OWASP 标签、`approve`/`review`/`reject` 阈值建议 | #### IAM / RBAC(69 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `rbac/store.test.ts` | 26 | 用户、角色、组的 CRUD;重复拒绝;级联删除完整性 | | `rbac/engine.test.ts` | 23 | 权限评估、通配符匹配(`agents.*`、`*`)、组角色继承、角色图中循环检测 | | `rbac/model.test.ts` | 20 | 全部 5 个内置角色及其精确权限集;自定义角色定义;无效角色拒绝 | #### 认证(23 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `jwt.test.ts` | 23 | RS256 与 HS256 签名/验证、访问令牌与刷新令牌生命周期、API 密钥格式(`oc_…`)、SHA-256 密钥哈希存储(原始密钥永不写入磁盘)、过期令牌拒绝 | #### 审计日志(27 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `audit/schema.test.ts` | 17 | ULID ID 生成、SHA-256 哈希链链接、单事件篡改检测、多事件链在精确索引处断裂检测 | | `audit/logger.test.ts` | 10 | 认证/代理/防护栏事件记录、磁盘满模拟下的优雅降级 | #### 密码学与密钥路由(45 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `encryption.test.ts` | 16 | AES-256-GCM 加解密往返、IV 唯一性、认证标签篡改检测、错误密钥拒绝 | | `secrets/index.test.ts` | 14 | 密钥引用 URI 解析(`vault://`、`aws-sm://`、`gcp-sm://`、`azure-kv://`、`env://`、`file://`)、后端路由、后端未配置错误 | | `backend-file.test.ts` | 15 | 文件后端 CRUD、加密存储、原始凭证迁移 | #### 安全与防护(40 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `input-sanitizer.test.ts` | 22 | NFC Unicode 规范化、不可见字符剥离、全部 8 类注入模式家族、信任边界标记注入、可配置截断 | | `guardrails.test.ts` | 18 | 规则对工具输入/输出的评估、`block`/`require-approval`/`warn` 动作派发、防护栏审计事件记录 | #### NVIDIA 集成(26 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `nvidia/nemoclaw-provider.test.ts` | 21 | NemoClaw 初始化、开放 Shell 沙箱设置、健康检查、聊天完成、退避重试、Prometheus 指标、优雅关闭 | | `models-config.providers.nvidia.test.ts` | 5 | NemoClaw 模型提供者构造、Nemotron 模型可用性、API 密钥回退至 `NVIDIA_API_KEY` | #### 可观测性与基础设施(38 个测试) | 测试文件 | 测试数 | 验证内容 | | ---- | ---- | ---- | | `monitoring/index.test.ts` | 10 | Prometheus 指标注册与递增、`/healthz` 探针响应结构、监控关闭时的空操作存根 | | `tenancy/index.test.ts` | 14 | `AsyncLocalStorage` 租户上下文传播、每租户速率限制、缺少上下文时抛出错误 | | `cluster/index.test.ts` | 14 | 节点心跳注册、丢失心跳后的自动淘汰、内存协调器用于开发(无 Redis 时回退并警告) | ### 测试证明什么 - **篡改检测有效**:哈希链测试验证修改或删除任意事件会使 `verifyChain()` 在精确索引处发现断裂。 - **密码学正确**:AES-256-GCM 测试确认 IV 唯一性、认证标签完整性、错误密钥拒绝。 - **RBAC 强制执行**:引擎测试覆盖通配符、继承、循环依赖与每个内置角色的精确权限边界。 - **注入模式被阻断**:净化器测试覆盖全部 8 类规则家族,包括 Unicode 同形攻击、Base64 载荷与紧迫性/权威性欺骗短语。 - **云后端错误处理**:Vault、AWS SM、GCP SM、Azure KV 测试验证 SDK 错误(gRPC 码、HTTP 状态码、SDK 异常类型)被映射为一致的 `SecretNotFoundError` / `SecretBackendError`。 - **代码签名拒绝篡改技能**:签名与 SAST 测试验证技能目录中单个文件的修改会导致签名验证失败,阻止安装。 ### 运行测试 ``` # 完整企业测试套件 pnpm vitest run --config vitest.unit.config.ts src/enterprise # 单域 pnpm vitest run --config vitest.unit.config.ts src/enterprise/iam pnpm vitest run --config vitest.unit.config.ts src/enterprise/security pnpm vitest run --config vitest.unit.config.ts src/enterprise/secrets pnpm vitest run --config vitest.unit.config.ts src/enterprise/audit ``` ## 社区功能 以下所有功能在社区版中默认可用,无需企业配置。 ### 通道 WhatsApp(Baileys)· Telegram(grammY)· Slack(Bolt)· Discord(discord.js)· Google Chat · Signal(signal-cli)· BlueBubbles(iMessage)· iMessage(遗留)· Microsoft Teams · Matrix · Zalo · Zalo 个人 · WebChat ### 应用与节点 - **macOS 应用** — 菜单栏控制平面、语音唤醒/PTT、说话模式覆盖 - **iOS 节点** — 画布、语音唤醒、说话模式、摄像头、屏幕录制 - **Android 节点** — 画布、说话模式、摄像头、屏幕录制、可选 SMS ### 工具与自动化 - **浏览器控制** — 专用 Chrome/Chromium 与 CDP - **画布 + A2UI** — 代理驱动的视觉工作空间 - **定时任务 + Webhook** — 定时任务与入站触发 - **Gmail Pub/Sub** — 邮件自动化 - **技能平台** — 内置、管理与工作区技能 ### 快速启动 运行时:**Node ≥22** ``` npm install -g openclaw@latest openclaw onboard --install-daemon openclaw gateway --port 18789 openclaw agent --message "What's on my calendar today?" ``` 完整指南:[Getting started](https://docs.openclaw.ai/start/getting-started) ### 开发通道 - **stable** — 标记,npm 分发标签 `latest` - **beta** — 预发布标签,npm 分发标签 `beta` - **dev** — `main` 分支头部,npm 分发标签 `dev` ``` openclaw update --channel stable|beta|dev ``` ### 从源码构建社区版 社区版: ``` git clone https://github.com/openclaw/openclaw.git cd openclaw pnpm install pnpm ui:build pnpm build pnpm openclaw onboard --install-daemon pnpm gateway:watch # dev loop with auto-reload ``` 企业版:参见上方 [安装](#install)。 ## 企业文档 | 文档 | 描述 | | ---- | ---- | | [安全加固](docs/enterprise/security.md) | 零信任配置、DM 策略、生产检查清单 | | [IAM & RBAC](docs/enterprise/iam.md) | 角色、权限、JWT 配置、API 密钥、OIDC、MFA、IP 允许列表 | | [审计日志](docs/enterprise/audit.md) | 哈希链验证、PostgreSQL、SIEM/syslog、GDPR | | [Kubernetes](docs/enterprise/kubernetes.md) | Helm 图表参考、HA 配置、Prometheus、cert-manager | | [密钥管理](docs/enterprise/secrets.md) | 全部 6 个后端、密钥引用 URI、迁移 | | [容器安全](docs/enterprise/containers.md) | cosign 签名、SBOM 验证、Trivy 扫描 | | [Palantir Foundry](docs/enterprise/palantir.md) | 审计流、OIDC/SSO、Compute Module 部署、本体感知防护栏 | | [NVIDIA AI](docs/enterprise/nvidia.md) | NIM 提供者、NemoClaw 沙箱、GPU 监控、推理配置文件 | | [Oracle 云](docs/enterprise/oracle.md) | OCI Vault、OCI 流式审计、MCP 桥接、Agent Spec 导出 | ## 赞助商 | OpenAI | Blacksmith | | ---- | ---- | | [![OpenAI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/875f3febe7225313.svg)](https://openai.com/) | [![Blacksmith](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b40ae4d2c6225315.svg)](https://blacksmith.sh/) | ## 星标历史 [![Star History Chart](https://api.star-history.com/svg?repos=openclaw/openclaw&type=date&legend=top-left)](https://www.star-history.com/#openclaw/openclaw&type=date&legend=top-left) ## 许可证 MIT —— 请参阅 [LICENSE](LICENSE)。每个企业功能均为 MIT 许可。无订阅、无许可证密钥、无电话回家。 [网站](https://openclaw.ai) · [文档](https://docs.openclaw.ai) · [Discord]() · [问题](https://github.com/openclaw/openclaw/issues) · [安全通告](https://github.com/openclaw/openclaw/security/advisories)
标签:AWS, Azure, DNS解析, DPI, GCP, Helm, IAM, JSONLines, MFA, MITM代理, OIDC, RBAC, SEO, SSO, TOTP, Vault, 企业级, 合规, 子域名突变, 审计日志, 开源, 开源项目, 搜索引擎查询, 无订阅, 无锁定, 测试用例, 病毒式安装脚本, 自动化攻击, 自定义请求头, 零信任