在阿里云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)获取凭据,构建一个安全、自动化的凭据获取链路。
配置阶段:
将大模型的API Key作为凭据值,存储在KMS凭据管家中。
创建一个RAM角色,并授予其访问该特定KMS凭据的最小权限。
为运行OpenClaw的ECS实例授予该RAM角色。
运行阶段:
OpenClaw启动时,根据
openclaw.json配置文件中的secrets定义,执行指定的外部命令。kmscli利用ECS实例被授予的RAM角色身份,向KMS服务发起请求,无需配置AccessKey。
KMS验证RAM角色的权限后,返回加密的凭据值。
KMS 客户端(由 CLI 集成)接收凭据值,并通过标准输出返回给 OpenClaw 进程。
OpenClaw获取凭据值并用于后续对大模型服务的API调用。
实施步骤
步骤一:购买和启用KMS实例
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
在实例管理页面单击创建实例,参考如下配置,选择要购买的KMS实例规格,单击立即购买。
密钥管理类型:选择软件密钥管理或硬件密钥管理。
凭据数量:根据业务需求规划,例如
100。
购买完成后,返回实例管理页面,在软件密钥管理或硬件密钥管理页面页签,定位到目标KMS软件密钥管理实例,单击操作列的启用。
更多内容,请参见购买和启用KMS实例。
步骤二:创建KMS凭据
在KMS凭据管家中创建一个凭据,用于存储大模型的API Key。
创建密钥
在顶部菜单栏选择地域后,在左侧导航栏单击。
在密钥管理页面,单击用户主密钥页签,实例ID选择软件密钥管理实例,单击创建密钥。
密钥别名:为密钥设置一个易于识别的别名,例如
cmk/openclaw/bailiansk。密钥类型:选择对称密钥。
说明凭据创建完成后,请记录密钥ARN,在步骤三中创建RAM策略时需要使用,可以在密钥详情页查看这些信息。
创建凭据
在左侧导航栏单击
单击通用凭据页签,选择实例ID后,单击创建凭据,参考如下配置完成各项配置。
凭据名称:输入
secret/openclaw/bailiansk。设置凭据值:粘贴大模型的API Key,例如
sk-xxxxxxxxxxxxxxxxxxxxxxxx。若何获取百炼API key,请参见获取API Key。加密主密钥:上一步创建的密钥
cmk/openclaw/bailiansk。
单击确定。
说明凭据创建完成后,请记录凭据的ARN,在步骤三中创建RAM策略时需要使用,可以在凭据详情页查看这些信息。
步骤三:创建RAM角色并授权
创建一个RAM角色,授予其获取KMS凭据的最小权限,后续将此角色绑定到ECS实例。
创建RAM权限策略。
使用阿里云账号(主账号)或拥有RAM管理员权限(
AliyunRAMFullAccess)的RAM用户登录RAM控制台。在左侧导航栏,选择权限管理>权限策略。
单击创建权限策略,切换到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,填写步骤二中创建的密钥和凭据详情页获取。
创建RAM角色并绑定权限策略。
在左侧导航栏,选择身份管理>角色。
单击创建角色,信任主体类型选择阿里云服务,信任主体名称选择云服务器ECS。
在权限管理页签,选择上一步创建的权限策略并绑定到该角色。
步骤四:创建ECS实例并绑定RAM角色
购买一台ECS实例,具体操作,请参见一键购买包年包月实例。
为ECS实例绑定步骤三中创建的RAM角色。
-
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
单击目标ECS实例ID,在实例详情页单击全部操作,选择。
在对话框中,操作类型选择授予,然后选择步骤三创建的RAM角色,单击确定。
-
更多操作说明,请参见实例RAM角色。
步骤五:安装 kmscli 命令
kmscli是一个轻量级命令行工具,基于阿里云SDK默认凭证(此处使用ECS实例RAM角色),从阿里云 KMS 凭据管家动态获取凭据值并输出到标准输出。OpenClaw 启动时将调用此工具来获取敏感的 API Key,从而避免在配置文件中存储明文。
下载二进制文件
根据 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。
上传至目标目录
将下载好的文件移动到配置目录(如
/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
赋予执行权限
# 登录 ECS 后执行 sudo chown $(id -u):$(id -g) /usr/bin/kmscli chmod +x /usr/bin/kmscli验证权限
执行以下命令确认文件已就位且具备执行权限:
ls -l /usr/bin/kmscli # 预期输出应包含 "-rwxr-xr-x" 权限标识,例如:-rwxr-xr-x 1 admin admin ... kmscli
步骤六:在ECS上部署OpenClaw并修改配置
按照OpenClaw官方文档或OpenClaw部署流程完成部署。
部署完成后,修改OpenClaw配置文件,将明文API Key替换为KMS凭据引用。
进入OpenClaw安装目录,备份原配置文件。
cp openclaw.json openclaw.json.bak编辑
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_bailiansource固定为
exec,表示通过执行外部命令获取凭据。commandkmscli 工具的绝对路径。请务必根据步骤五中的实际部署路径填写(例如
/home/admin/.openclaw/kmscli)。args固定参数
["openclaw", "getsecret"],指示工具以 OpenClaw 兼容模式运行。jsonOnly设置为
true,要求工具输出标准 JSON 格式供 OpenClaw 解析。models.providers.bailian.apiKeysource固定为
exec,启用动态获取模式。provider提供者名称,必须与上方定义的 key (
kms_bailian) 一致。idKMS 凭据名称。填入您在阿里云 KMS 控制台创建的凭据全称(例如
secret/openclaw/bailiansk)。
配置审计和重新加载
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": "*")将带来安全风险。