程序调用腾讯云 API 用的是子用户的 SecretId 和 SecretKey。只要密钥在手,从哪里发起调用都可以,这意味着一旦密钥被误提交到代码仓库或写进了公开的配置文件,攻击者就能直接使用。腾旭云在为客户做密钥治理时,除了建议定期轮换,还会建议给关键子用户的权限加上“来源 IP”这个生效条件。

生效条件的基本结构

根据官方“生效条件概述”,在访问管理策略中可以为每条语句指定可选的 condition。条件由条件操作符、条件键和条件值组成,例如用 ip_equal 作为操作符、qcs:ip 作为条件键、填写允许的 IP 或网段作为条件值。只有当请求上下文与条件匹配时,这条策略才生效。一个条件键可以填写多个值,命中任意一个即满足;同一条件块中的多个条件需要同时满足。

在 CAM 策略中为密钥调用增加来源 IP 生效条件的示意

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

一条限定来源 IP 的策略思路

假设公司有两个出口网段,希望某个上传程序只能从这两个网段调用对象存储的上传接口。可以在允许上传操作的语句中加入 ip_equal 条件,把 qcs:ip 的值写成这两个网段。这样即使密钥被拿到别处,调用也会因为不满足条件而被拒绝。官方文档中正是用两个网段允许 cos:PutObject 作为示例。

要素写法要点说明
effectallow只在满足条件时允许
action具体接口,如对象上传不要用通配符扩大范围
resource指定存储桶或资源与动作一起收窄范围
condition 操作符ip_equal判断请求来源是否在列表中
condition 值出口 IP 或 CIDR 网段可填写多个

上线前一定要测试的几件事

第一,确认程序真实的出口 IP。服务器如果通过 NAT 网关或代理访问公网,实际出口地址可能与服务器本身的公网 IP 不同。第二,区分内网与公网调用路径,某些服务通过内网域名访问时,请求来源可能不是公网 IP,条件可能无法按预期匹配。第三,先在测试子用户上验证,确认正常请求通过、异地请求被拒,再应用到生产。

先用测试子用户验证 IP 条件再推广到生产的示意

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

示例:备份脚本的密钥加固

某企业有一个每天把数据库备份上传到 COS 的脚本,运行在固定的两台服务器上。腾旭云协助他们为脚本使用的子用户编写策略:只允许上传到备份存储桶的指定目录,并加上 ip_equal 条件限定两台服务器的出口 IP。后来一次代码审查中发现,这把密钥曾被误写进测试配置,但由于有 IP 条件和最小权限,风险被大大降低,团队随后完成了密钥轮换。

加了 IP 条件,还需要定期轮换密钥吗?

需要。IP 条件降低的是密钥外泄后的可用性,并不能替代轮换。两者结合,再加上最小权限,才能形成比较完整的防护。

办公网出口 IP 经常变化,条件该怎么写?

可以优先让程序运行在固定出口的服务器上,或通过有固定 IP 的 NAT 网关出网。如果确实无法固定,就要权衡是否适合使用 IP 条件,避免出口变化导致业务调用被拒。

延伸阅读与办理

可继续阅读腾讯云账号下的图片被别人网站盗用?COS 防盗链怎样设。需要办理时,先查看腾讯云账号服务说明,再通过腾旭云咨询入口说明用途与待核对事项。

官方资料

腾讯云:生效条件概述;腾讯云:CAM 策略元素参考。资料核对日期:2026-11-05。文中清单为操作准备建议;产品条件、实际收费和可用功能以相应账号的官方页面及有效订单为准。