阿里云STS临时凭证怎么发:有效期与权限设置

标题:阿里云 STS 临时凭证怎么发:有效期与权限怎么设

长期 AccessKey 如果直接写进客户端或脚本,一旦泄露,攻击者就能长期访问账号下的资源。阿里云 STS(Security Token Service)可以签发临时凭证,有效期从 15 分钟到几小时不等,到期自动失效。下面先讲 STS 怎么用,再用移动端图片直传 OSS 的例子走一遍完整流程。

阿里云STS临时凭证怎么发:有效期与权限设置

STS 解决什么问题

STS 返回的是一组临时凭证,包括 AccessKeyId、AccessKeySecret、SecurityToken,以及过期时间 Expiration。调用方用这三个值访问云资源,能做什么由 RAM 角色的权限和请求里附带的策略共同决定。过了过期时间,凭证就不能再用。

实际场景里,常见的有三种:

  • 移动端或浏览器需要直接读写 OSS、表格存储等服务,但不能拿到主账号或子账号的长期密钥。
  • 一个阿里云账号要临时访问另一个账号的资源,也就是跨账号授权。
  • 企业已经有 SSO 或 OIDC 身份系统,员工想用原来的账号换取云上的临时权限。

核心接口和参数

最常用的是 AssumeRole。先在 RAM 里建一个角色,再配置信任策略,写明哪些主体可以扮演这个角色。之后调用 AssumeRole,传入角色 ARN、会话名称和有效期,就能拿到临时凭证。

调用时主要看下面几个参数:

  • RoleArn:目标角色的 ARN,格式是 acs:ram::账号ID:role/角色名。
  • RoleSessionName:会话名称。操作审计里靠它区分是谁发起的调用,建议直接填用户 ID。
  • DurationSeconds:有效期,单位秒。最小 900。最大值受角色的最大会话时长限制,默认是 1 小时,可以在控制台改。
  • Policy:会话策略,在角色已有权限的基础上再缩小范围。签发出的凭证只能用两者的交集,所以它是限制权限最直接的办法。

AssumeRoleWithOIDC 和 AssumeRoleWithSAML 分别对应 OIDC 和 SAML 身份提供商,已经有统一身份认证的企业多用这两个。ECS 实例绑定的 RAM 角色则通过实例元数据服务自动获取临时凭证,代码里不需要写任何密钥。

案例:移动端图片直传 OSS

某社区 App 允许用户上传头像和动态配图,图片都放在同一个 OSS Bucket 里。早期做法是服务端把 AccessKey 下发给客户端。后来一个安装包被反编译,密钥随之泄露,团队才改用 STS。改造后的流程分三步。

第一步:建一个权限很窄的角色

  1. 在 RAM 控制台新建角色。角色类型按调用方选择:阿里云服务,或者其他云账号。本例的调用方是本账号内的服务端应用,所以选当前账号。
  2. 给角色添加权限策略,只授予 oss:PutObject,资源范围限定在 acs:oss:*:*:社区图片桶/*。
  3. 把最大会话时长设为 1 小时。即使凭证被截获,能利用的时间也很短。

第二步:服务端按用户签发凭证

服务端收到上传请求后,先校验登录态,再调用 AssumeRole。传入的 Policy 要把资源路径缩到当前用户自己的目录,比如 users/用户ID/*。这样即使某个用户的凭证外泄,对方也只能写自己的目录,覆盖不了别人的文件。RoleSessionName 填用户 ID,DurationSeconds 设为 900,也就是 15 分钟。服务端把三个凭证字段和过期时间一起返回给客户端。

第三步:客户端直传,并处理过期

  1. 客户端用 OSS SDK 的 STS 模式,拿临时凭证直接上传到 OSS。图片数据不经过应用服务器,服务器带宽不会因为上传增加。
  2. 客户端检查 Expiration。距离过期不到 2 分钟就重新向服务端申请,避免大文件传到一半时凭证失效。
  3. 上传完成后,服务端通过回调或事件通知确认文件已经存在,再写入数据库。不要只相信客户端上报的结果。

改造之后,安装包里不再有长期密钥。团队还开启了 ActionTrail 审计日志,按 RoleSessionName 查每个用户的上传记录。出现异常时,可以直接定位到具体用户。

实施时要注意的几点

  • 签发接口必须做鉴权。任何人都能调用 AssumeRole,所以服务端要先验证调用者身份,确认后才签发凭证。没有鉴权的签发接口等于把密钥交给所有人。
  • 策略写具体。只给必要的操作和资源路径。资源范围尽量不用通配符 *,否则角色能碰到的文件会比业务需要的多得多。
  • 有效期取够用的最短值。普通上传 15 分钟一般够用,没必要统一设成 1 小时。
  • 凭证不写日志,也不落本地缓存。SecurityToken 属于敏感信息,只放在内存里用,用完即弃。
  • AssumeRole 和 GetCallerIdentity 要分清。前者是换取凭证,后者是确认当前凭证属于哪个身份。权限报错时,先用 GetCallerIdentity 看一眼身份,排查会快很多。

STS 的思路是让角色和策略决定“谁能做什么”,并让凭证到期自动失效。签发环节做好身份校验,再把权限范围和有效期压到最小,就能在不影响上传体验的前提下,把密钥泄露后的影响控制住。

赞 (0)
阿里云人工客服在哪找?工单和在线咨询怎么转接
上一篇 2026年10月31日 下午5:59
阿里云备案系统怎么提交?信息审核一般卡在哪一步
下一篇 2026年10月31日 下午6:00

相关推荐

  • 阿里云企业邮箱登陆入口在哪?网页和客户端分别怎么进

    刚开通阿里云企业邮箱时,最先碰到的往往是“入口在哪”。员工记不住一长串域名,管理员要给各部门分账号,入口找不到或收藏错了地址,不仅耽误事,还可能点进假冒页面。这篇文章讲清楚网页端和客户端各自怎么进,也说说常见问题和防风险的做法。页面按钮的位置会随版本调整,遇到出入时,以阿里云官网和帮助中心的当前说明为准。 阿里云企业邮箱登陆入口从哪里找 最稳的办法是从阿里云…

    2026年10月31日
  • 阿里云播放器怎么接入?视频点播和SDK配置要点

    视频在线播放看起来只是点一下按钮,背后要处理格式兼容、网络波动和版权保护。阿里云的视频播放能力把这些问题拆成几段:云端存储、转码、分发,再加上客户端播放器,开发者可以按自己的业务挑着用。 阿里云播放包含哪些部分 一般说的阿里云播放,其实是两块。一块是视频点播(ApsaraVideo VOD),管上传、转码和存储;另一块是播放器SDK(阿里云播放器),跑在网页…

    2026年10月31日
  • 阿里云docker怎么用?从开通镜像仓库到ECS上跑容器

    很多人第一次把项目搬上云服务器,遇到的头号麻烦往往是环境不一致:本地跑得好好的,到了服务器就报错。Docker 把应用和它依赖的运行环境打包进镜像,正好能解决这个问题。阿里云的容器镜像服务(ACR)负责存放镜像,云服务器(ECS)负责运行容器,两者配合起来,就是“本地构建、云端拉取、直接启动”这套流程。下面用一个小团队的例子,把阿里云docker的基本用法走…

    2026年10月31日
  • 阿里云域名优惠口令怎么用,结算时哪里能填?

    搜索“阿里云域名优惠口令”的人,大多是想在注册域名时少花一点钱。口令确实能省下几十块,但下单时经常会遇到填了没反应、第二年续费变贵、优惠只适用于部分后缀等情况。下面按使用顺序说一遍:口令从哪里找,结算页怎么填,哪些地方容易出问题。 口令是什么,适用范围怎么看 阿里云域名优惠口令通常是平台或合作渠道发放的兑换码或折扣码。下单时填进去,可以抵扣一部分金额,或者让…

    2026年10月31日
  • 阿里云服务怎么选?中小企业上云常用的产品与配置思路

    阿里云的产品线很长,计算、存储、数据库、网络、安全、人工智能都有。刚开始上云的团队面对产品目录,很容易不知道从哪里下手。好在多数业务只需要其中几类产品,先把这几类选对,其余可以暂时不管。 核心产品分类 计算类:云服务器 ECS 是最常用的起点,可以按需调整配置,也能配合弹性伸缩自动增减实例。如果团队已经在用 Kubernetes,可以考虑容器服务 ACK,由…

    2026年10月31日
返回顶部