AccessKey 是什么
AccessKey 是程序调用云 API 的长期凭证,由 AccessKeyId 与 AccessKeySecret 两部分组成(部分场景还会附带 STS 临时凭证的 SecurityToken)。它与控制台密码是两套体系:密码用于人工登录,AccessKey 用于程序签名鉴权。持有某个身份 AccessKey 的人,等同于拥有该身份的全部权限。
基本信息
| 构成 | AccessKeyId(公开标识)+ AccessKeySecret(签名密钥) |
|---|---|
| 归属 | 每个 AccessKey 属于一个身份:主账号、子用户或角色(角色用临时密钥) |
| 命名差异 | 阿里云叫 AccessKey,腾讯云叫 API 密钥,华为云叫访问密钥 AK/SK |
| 存放建议 | 环境变量、密钥管理服务或配置中心,禁止写入代码与镜像 |
| 轮转周期 | 按内控要求定期更换,涉密系统可缩短到 90 天以内 |
典型使用场景
- CI/CD 流水线发布:构建系统用子用户的密钥调用 API 上传镜像或发布应用
- 运维脚本与巡检:批量启停实例、清理闲置资源、导出账单
- 监控与自愈:监控平台发现实例异常后调用 API 重启或替换
- 数据同步任务:定时把对象存储数据同步到另一个桶或另一个账号
- 本地开发调试:开发者在沙箱账号里用受限密钥调用只读接口
创建轮转与禁用
创建轮转与禁用
aliyun ram CreateAccessKey --UserName dev-zhang # 为子用户创建密钥,密钥只显示一次
aliyun ram ListAccessKeys --UserName dev-zhang # 列出该用户的所有密钥与状态
aliyun ram UpdateAccessKey --UserName dev-zhang --AccessKeyId <AKID> --Status Inactive # 先禁用,观察调用量
aliyun ram DeleteAccessKey --UserName dev-zhang --AccessKeyId <AKID> # 确认无调用后再删除
tccli cam ListAccessKeys --TargetUin 100000000001 # 腾讯云查看子用户密钥
# 阿里云主账号密钥在控制台查看,一旦创建就要评估是否立即禁用并改走子用户泄露应急处理顺序
| 步骤 | 动作 | 原因 |
|---|---|---|
| 1 定位 | 在操作审计中按 AccessKeyId 查询调用记录 | 先确认影响范围与调用来源,再动手处置 |
| 2 禁用 | 把密钥置为禁用而不是直接删除 | 删除后无法再追溯调用,禁用可先止血再观察 |
| 3 替换 | 新建密钥并下发到实际使用的系统 | 保证业务不中断,顺序是新建后切换 |
| 4 清据点 | 排查新增子用户、角色、安全组与轻量资源 | 攻击者常留后门身份与放行规则 |
| 5 复盘 | 观察旧密钥调用量归零后删除,补扫描与告警 | 没有调用量回流才说明切换完成 |
代码仓库、聊天记录、日志输出、截图与镜像层是密钥泄露的高频途径。提交前用密钥扫描工具检查,日志里打印请求参数时先做脱敏,不要把完整签名串写进排查记录。
同一把密钥给多个系统共用会让禁用变得困难:停掉一把密钥,波及面无法预判。按系统分别建子用户与密钥,禁用时影响范围才可控,审计日志也能区分调用方。
能在云上运行的程序优先用角色而不是长期密钥:实例、容器与函数计算都可以绑定角色,SDK 会自动获取临时凭证并刷新,省掉轮转工作。
密钥轮转要能安全过渡:新旧密钥并存一段时间,把新密钥下发到所有调用方并验证通过后,再禁用旧密钥并观察调用量是否回流。一次性替换所有密钥,等于把所有依赖同时置于风险中。