首页/云/云平台与虚拟化速查/role 与 STS 临时凭证
云基础与账号46 条

role 与 STS 临时凭证

角色是一组可被扮演的权限,调用方通过 STS 获取有效期有限的临时凭证;跨账号访问与服务内免密调用多采用这种模式。

云平台与虚拟化速查云更新于 2026-10-13

角色与临时凭证是什么

角色(Role)是一组可被扮演的权限集合,本身没有固定密钥:调用方先向 STS(安全令牌服务)申请扮演角色,拿回一份有有效期的临时凭证再调用 API。因为凭证会自然过期,泄漏后的可利用窗口有限,跨账号访问与云上服务免密调用都基于这套机制。

基本信息

角色定位可被授予的权限集合,不绑定固定密钥
临时凭证AccessKeyId、AccessKeySecret 与 SecurityToken 三件套
有效期申请时指定时长,到期必须重新获取
信任策略规定谁能扮演该角色,是角色的前置约束
审计标识会话名称会写入操作审计,用于区分具体调用方
典型用途跨账号访问、实例与容器免密调用、联合身份登录

扮演角色获取临时密钥

扮演角色获取临时密钥
aliyun sts AssumeRole --RoleArn acs:ram::1234567890123456:role/app-read --RoleSessionName app01 --DurationSeconds 3600

tccli sts AssumeRole --RoleArn qcs::cam::uin/100000000001:roleName/app-read --RoleSessionName app01 --DurationSeconds 3600

# 拿到临时凭证后导出为环境变量,SDK 会自动使用
export ALIBABA_CLOUD_ACCESS_KEY_ID=<temp-ak>   # 临时 AK
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<temp-sk>   # 临时 SK
export ALIBABA_CLOUD_SECURITY_TOKEN=<temp-token>  # 必须带上 Token

三类典型用法的差别

用法谁扮演注意事项
跨账号访问另一个云账号下的身份信任策略里限定对方账号,资源侧策略再收窄动作
实例免密调用实例绑定的角色无需下发密钥,SDK 自动续期,注意实例被释放即无效
联合身份登录企业身份源中的用户角色映射要限定可进入的组,避免全员获得生产权限

典型使用场景

  • 跨账号运维:集中管理账号扮演业务账号的角色,避免在多账号里各放一套长期密钥
  • 应用访问云资源:实例绑定角色后直接读写对象存储,代码里不出现密钥
  • 流水线发布:构建阶段用角色获取临时凭证推送镜像或更新配置
  • 临时排障授权:为外部支持人员开通限时角色,到期自动失效
程序集成角色时不必手写 STS 调用:主流 SDK 都实现了凭证提供链,按顺序尝试环境变量、配置文件、实例角色等来源,并自动处理过期刷新。自己实现的话,最容易出错的地方就是忘记在请求头里带上 Token。
临时凭证不要缓存到磁盘长期复用,也不要把过期时间设得过长:有效期越长越接近长期密钥的风险。按调用周期设置时长,并确保代码在过期时能重新获取而不是直接报错退出。

易错点

  • 只在环境变量里放临时 AK 与 SK 而漏掉 SecurityToken:请求被拒绝,错误信息不直观,排查耗时
  • 缓存临时凭证但忽略过期时间:服务运行几小时后开始大面积报鉴权失败
  • 会话名称千篇一律:审计日志无法区分是哪个实例或哪条流水线在调用,事后定位困难
  • 信任策略限定过宽:把角色开放给整个账号甚至外部账号,等于把权限交给了不该持有的主体
  • 给角色授予管理员级别权限:角色会被多方扮演,权限越宽影响面越大,应按用途拆分多个角色

数据来源与参考

  • 阿里云 STS 文档
  • 腾讯云 STS 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌