在腾讯云账号下,CVM 上的程序需要读写 COS 是非常常见的需求。最省事的做法是创建一个子用户,把 SecretId 和 SecretKey 写进应用配置文件。大麦云在安全巡检中多次看到这种配置:密钥长期有效、权限范围过大,而且散落在多台服务器和代码仓库里,难以轮换。

实例角色的工作方式

腾讯云允许把 CAM 角色绑定到 CVM 实例。绑定后,实例内的程序可以通过实例元数据服务获取周期性更新的 STS 临时密钥,用它调用 COS 等云服务的 API。官方文档说明,这样无需在实例里保存 SecretKey,修改角色授权即可调整实例拥有的权限,绑定和修改角色本身不额外收费。

CVM实例通过绑定的CAM角色获取临时密钥访问COS的示意

配图为流程示意,非控制台截图或交易凭据。

固定密钥与实例角色对比

对比项写死 SecretKey绑定实例角色
密钥有效期长期有效,需人工轮换临时密钥自动周期更新
存放位置配置文件、环境变量或代码不落盘,从元数据服务获取
权限调整改子用户策略并逐台更新配置修改角色授权即可生效
泄露影响攻击者可长期在外部使用临时密钥过期后失效

使用前要确认的限制条件

官方文档列出了几项前提:实例只能绑定角色载体包含 cvm.qcloud.com 的角色;实例需要位于私有网络 VPC 中;一台实例同一时间只能绑定一个 CAM 角色。如果一台机器上的不同程序需要不同权限,需要在角色策略里统一规划,或者拆分到不同实例。

为CVM角色编写仅限指定存储桶读写的最小权限策略示意

配图为流程示意,非控制台截图或交易凭据。

示例:图片处理服务改用实例角色

某团队的图片处理服务部署在三台 CVM 上,原先使用一个拥有 COS 全部权限的子用户密钥。改造时管理员创建了只允许读写指定存储桶的角色,绑定到三台实例,应用改为使用 SDK 的实例凭据方式,确认读写正常后删除了旧密钥。之后再做安全审计,配置文件中已经找不到长期密钥。

实例角色能用在不在 VPC 里的旧实例上吗?

根据官方说明,实例需要处于 VPC 网络中才能绑定角色。仍在基础网络的实例,需要先评估迁移到 VPC 的可行性。

改用实例角色后,旧的子用户密钥怎样安全下线?

建议分三步处理:先在所有实例上切换到实例角色并观察一段时间,确认业务日志中没有鉴权失败;然后在访问管理中把旧密钥设为禁用状态,而不是直接删除,再观察几天,如有遗漏的程序报错可以立即恢复;确认完全无影响后再删除旧密钥。同时检查代码仓库和配置中心,把残留的密钥文本一并清除,避免以后被误用。

延伸阅读与办理

可继续阅读腾讯云账号接入 Terraform 自动化编排,CAM 密钥怎样隔离?。需要办理时,先查看腾讯云账号服务说明,再通过大麦云咨询入口说明用途与待核对事项。

官方资料

腾讯云:为实例配置 CAM 角色;腾讯云:子账号 API 密钥管理。资料核对日期:2026-10-29。文中清单为操作准备建议;产品条件、实际收费和可用功能以相应账号的官方页面及有效订单为准。