角色与临时凭证是什么
角色(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。
临时凭证不要缓存到磁盘长期复用,也不要把过期时间设得过长:有效期越长越接近长期密钥的风险。按调用周期设置时长,并确保代码在过期时能重新获取而不是直接报错退出。