全部产品
Search
文档中心

密钥管理服务:OpenClaw集成KMS凭据管家

更新时间:Mar 25, 2026

在阿里云ECS上部署OpenClaw时,配置文件中通常包含明文API Key,存在安全风险。通过集成KMS凭据管家,您可以将明文API Key托管到KMS,并利用ECS实例RAM角色实现免AccessKey访问,确保ECS上不存在任何明文密钥。本文介绍如何将OpenClaw与KMS凭据管家集成。

方案背景

OpenClaw是一款AI编程助手工具。在ECS上部署OpenClaw时,需要在配置文件中填写大模型的API Key。默认情况下,API Key以明文形式存储在openclaw.json配置文件中,存在泄露风险。通过集成KMS凭据管家,可以有效减少泄露风险。

对比项

KMS 未托管 API Key

KMS 托管 API Key

存储安全性

静态明文:存储在 openclaw.json或环境变量中。

加密存储:加密存储在KMS,受硬件安全模块(HSM)保护。

分发与传输

高风险:通过邮件、IM、共享文档传递明文,容易二次泄露。

身份授权:通过 RAM 角色授权,全程不传递明文 Key。

运维响应速度

低效手动:需逐台登录服务器手动修改配置并重启服务

一键生效:在 KMS 控制台统一轮转,业务动态获取,零停机

可观测性/审计

盲区:无法获知谁在何时使用或导出了 API Key

全链审计:ActionTrail 实时记录每次解密调用的身份与来源

权限控制粒度

粗粒度:依赖 OS 文件权限,一旦被入侵则密钥全失

细粒度策略:基于 IP、时间、身份的 API 级管控策略

泄露风险等级

:配置文件误传仓库即意味着 API Key 永久作废

:配置文件仅含凭据名称,源码即便公开也无法拿到 API Key

方案原理

方案的核心是利用KMS凭据管家、实例RAM角色和OpenClaw的外部插件命令(exec)获取凭据,构建一个安全、自动化的凭据获取链路。

  1. 配置阶段

    • 将大模型的API Key作为凭据值,存储在KMS凭据管家中。

    • 创建一个RAM角色,并授予其访问该特定KMS凭据的最小权限。

    • 为运行OpenClaw的ECS实例授予该RAM角色。

  2. 运行阶段

    • OpenClaw启动时,根据openclaw.json配置文件中的secrets定义,执行指定的外部命令。

    • kmscli利用ECS实例被授予的RAM角色身份,向KMS服务发起请求,无需配置AccessKey。

    • KMS验证RAM角色的权限后,返回加密的凭据值。

    • KMS 客户端(由 CLI 集成)接收凭据值,并通过标准输出返回给 OpenClaw 进程。

    • OpenClaw获取凭据值并用于后续对大模型服务的API调用。

实施步骤

步骤一:购买和启用KMS实例

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 实例管理

  2. 实例管理页面单击创建实例,参考如下配置,选择要购买的KMS实例规格,单击立即购买

    • 密钥管理类型:选择软件密钥管理硬件密钥管理

    • 凭据数量:根据业务需求规划,例如100

  3. 购买完成后,返回实例管理页面,在软件密钥管理硬件密钥管理页面页签,定位到目标KMS软件密钥管理实例,单击操作列的启用

说明

更多内容,请参见购买和启用KMS实例

步骤二:创建KMS凭据

在KMS凭据管家中创建一个凭据,用于存储大模型的API Key。

  1. 创建密钥

    1. 在顶部菜单栏选择地域后,在左侧导航栏单击资源 > 密钥管理

    2. 密钥管理页面,单击用户主密钥页签,实例ID选择软件密钥管理实例,单击创建密钥

      • 密钥别名:为密钥设置一个易于识别的别名,例如cmk/openclaw/bailiansk

      • 密钥类型:选择对称密钥

    说明

    凭据创建完成后,请记录密钥ARN,在步骤三中创建RAM策略时需要使用,可以在密钥详情页查看这些信息。

  2. 创建凭据

    1. 在左侧导航栏单击资源 > 凭据管理

    2. 单击通用凭据页签,选择实例ID后,单击创建凭据,参考如下配置完成各项配置。

      • 凭据名称:输入secret/openclaw/bailiansk

      • 设置凭据值:粘贴大模型的API Key,例如sk-xxxxxxxxxxxxxxxxxxxxxxxx。若何获取百炼API key,请参见获取API Key

      • 加密主密钥:上一步创建的密钥cmk/openclaw/bailiansk

    3. 单击确定

    说明

    凭据创建完成后,请记录凭据的ARN,在步骤三中创建RAM策略时需要使用,可以在凭据详情页查看这些信息。

步骤三:创建RAM角色并授权

创建一个RAM角色,授予其获取KMS凭据的最小权限,后续将此角色绑定到ECS实例。

  1. 创建RAM权限策略。

    1. 使用阿里云账号(主账号)或拥有RAM管理员权限(AliyunRAMFullAccess)的RAM用户登录RAM控制台

    2. 在左侧导航栏,选择权限管理>权限策略

    3. 单击创建权限策略,切换到JSON编辑模式,输入以下策略内容。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:GetSecretValue"
                  ],
                  "Resource": "acs:kms:<region>:<uid>:secret/secret/openclaw/bailiansk",/*凭据的ARN*/
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "kms:Decrypt"
                  ],
                  "Resource": "acs:kms:<region>:<uid>:key/key-hkk69a823******",/*密钥的ARN*/
                  "Effect": "Allow"
              }
          ]
      }
      重要

      凭据的ARN和密钥的ARN,填写步骤二中创建的密钥和凭据详情页获取。

  2. 创建RAM角色并绑定权限策略

    1. 在左侧导航栏,选择身份管理>角色

    2. 单击创建角色,信任主体类型选择阿里云服务,信任主体名称选择云服务器ECS

    3. 在权限管理页签,选择上一步创建的权限策略并绑定到该角色。

步骤四:创建ECS实例并绑定RAM角色

  1. 购买一台ECS实例,具体操作,请参见一键购买包年包月实例

  2. 为ECS实例绑定步骤三中创建的RAM角色。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 单击目标ECS实例ID,在实例详情页单击全部操作,选择实例设置 > 授予/收回RAM角色

    3. 在对话框中,操作类型选择授予,然后选择步骤三创建的RAM角色,单击确定

说明

更多操作说明,请参见实例RAM角色

步骤五:安装 kmscli 命令

kmscli是一个轻量级命令行工具,基于阿里云SDK默认凭证(此处使用ECS实例RAM角色),从阿里云 KMS 凭据管家动态获取凭据值并输出到标准输出。OpenClaw 启动时将调用此工具来获取敏感的 API Key,从而避免在配置文件中存储明文。

  1. 下载二进制文件

    根据 ECS 操作系统架构,下载对应的 kmscli 二进制文件。以下以最常见的 Linux AMD64 架构为例:

    # 在本地机器或直接在 ECS 上执行
    curl -L -o kmscli-linux-amd64 "https://github.com/aliyun/alibabacloud-kms-cli/releases/latest/download/kmscli-linux-amd64"
    说明
    • 如果使用的是 ARM 架构(如倚天实例),请下载 kmscli-linux-arm64

    • 如果使用的是 macOS,请下载 kmscli-darwin-amd64 或 kmscli-darwin-arm64

    • 完整版本列表请访问 GitHub Releases

  2. 上传至目标目录

    将下载好的文件移动到配置目录(如 /usr/bin/),并重命名为 kmscli

    • 本地下载后上传:

      # 在本地终端执行(请替换 user 和 ecs-ip)
      scp kmscli-linux-amd64 user@<ecs-ip>:/usr/bin/kmscli
    • 在 ECS 上下载:

      # 在 ECS 终端执行
      mv kmscli-linux-amd64 /usr/bin/kmscli
  3. 赋予执行权限

    # 登录 ECS 后执行
    sudo chown $(id -u):$(id -g) /usr/bin/kmscli
    chmod +x /usr/bin/kmscli
  4. 验证权限

    执行以下命令确认文件已就位且具备执行权限:

    ls -l /usr/bin/kmscli
    # 预期输出应包含 "-rwxr-xr-x" 权限标识,例如:-rwxr-xr-x 1 admin admin ... kmscli

步骤六:在ECS上部署OpenClaw并修改配置

  1. 按照OpenClaw官方文档或OpenClaw部署流程完成部署。

  2. 部署完成后,修改OpenClaw配置文件,将明文API Key替换为KMS凭据引用。

    1. 进入OpenClaw安装目录,备份原配置文件。

      cp openclaw.json openclaw.json.bak
    2. 编辑openclaw.json,添加secrets配置,并将apiKey字段的明文值替换为Secret引用。完整配置参考如下。

      {
        "meta": {
          "lastTouchedVersion": "2026.2.1",
          "lastTouchedAt": "2026-02-03T08:20:00.000Z"
        },
        "secrets": {
          "providers": {
            "kms_bailian": {
              "source": "exec",
              "command": "/usr/bin/kmscli",
              "args": [
                "get",
                "secret/openclaw/bailiansk"
              ],
              "jsonOnly": false
            }
          }
        },
        "models": {
          "mode": "merge",
          "providers": {
            "bailian": {
              "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
              "apiKey": {
                "source": "exec",
                "provider": "kms_bailian",
                "id": "value"
              },
              "api": "openai-completions",
              "models": [
                {
                  "id": "qwen3-max-2026-01-23",
                  "name": "qwen3-max-2026-01-23",
                  "reasoning": false,
                  "input": [
                    "text"
                  ],
                  "contextWindow": 262144,
                  "maxTokens": 65536
                },
                {
                  "id": "qwen3-coder-plus",
                  "name": "qwen3-coder-plus",
                  "reasoning": false,
                  "input": [
                    "text"
                  ],
                  "contextWindow": 131072,
                  "maxTokens": 32768
                }
              ]
            }
          }
        },
        "agents": {
          "defaults": {
            "model": {
              "primary": "bailian/qwen3-max-2026-01-23"
            }
          }
        },
        "gateway": {
          "mode": "local",
          "auth": {
            "mode": "token",
            "token": "test123"
          }
        }
      }

      关键配置说明:

      配置路径

      字段

      说明

      secrets.providers.kms_bailian

      source

      固定为 exec,表示通过执行外部命令获取凭据。

      command

      kmscli 工具的绝对路径。请务必根据步骤五中的实际部署路径填写(例如 /home/admin/.openclaw/kmscli)。

      args

      固定参数 ["openclaw", "getsecret"],指示工具以 OpenClaw 兼容模式运行。

      jsonOnly

      设置为 true,要求工具输出标准 JSON 格式供 OpenClaw 解析。

      models.providers.bailian.apiKey

      source

      固定为 exec,启用动态获取模式。

      provider

      提供者名称,必须与上方定义的 key (kms_bailian) 一致。

      id

      KMS 凭据名称。填入您在阿里云 KMS 控制台创建的凭据全称(例如 secret/openclaw/bailiansk)。

  3. 配置审计和重新加载secrets配置。

    # 审计配置
    openclaw secrets audit --check
    # 重新加载配置
    openclaw secrets reload

结果验证

  • 功能验证:通过OpenClaw正常对话,确认模型可以被正常调用。如果对话返回正常结果,说明OpenClaw已成功从KMS获取到API Key。

  • 安全验证:检查openclaw.json配置文件,确认其中不包含明文API Key。

    集成前

    明文API Key直接写在openclaw.json配置文件中。

    {
        "models": {
          "mode": "merge",
          "providers": {
            "bailian": {
              "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
              "apiKey":"sk-33777********",
              "api": "openai-completions"
            }
          }
        }
      }

    集成后

    API Key替换为Secret引用,不再出现明文密钥。

    {
      "secrets": {
            "providers": {
                "kms_bailian": {
                    "source": "exec",
                    "command": "/home/用户名/.openclaw/kmscli",
                    "args": ["openclaw", "getsecret"],
                    "jsonOnly": true
                }
            }
        },
        "models": {
          "mode": "merge",
          "providers": {
            "bailian": {
              "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
              "apiKey":{
                 "source":"exec",
                 "providers":"kms_bailian",
                  "id":"secret/openclaw/bailiansk"
              },
              "api": "openai-completions"
            }
          }
        }
      }
  • 审计验证:登录操作审计控制台,查看操作事件。可以看到ECS通过挂载的RAM角色身份成功调用了GetSecretValue接口获取凭据,说明整个流程正常运行。

成本与风险说明

  • 成本:本方案涉及的密钥管理服务KMS为付费服务。成本主要包括KMS实例费、凭据存储费用以及API调用费用。具体价格请参考产品计费

  • 风险:RAM角色的权限配置是本方案安全性的关键。请务必遵循最小权限原则,仅为RAM角色授予对特定凭据的必要操作权限,过于宽泛的授权(例如"Resource": "*")将带来安全风险。