概述

最近接入阿里云 OSS,慑于其复杂的设定,保留本文用于备忘。

参考链接

STS 临时授权访问 OSS

业务流程

  1. App 用户登录。App 用户和云账号无关,它是 App 的终端用户,AppServer 支持 App 用户登录。对于每个有效的 App 用户来说,需要 AppServer 能定义出各个 App 用户的最小访问权限。
  2. AppServer 请求 STS 服务获取一个安全令牌 (SecurityToken)。在调用 STS 之前,AppServer 需要确定 App 用户的最小访问权限 (用 Policy 语法描述) 以及授权的过期时间。然后通过扮演角色 (AssumeRole) 来获取一个代表角色身份的安全令牌。
  3. STS 返回给 AppServer 一个有效的访问凭证,包括一个安全令牌 (SecurityToken)、临时访问密钥 (AccessKeyId, AccessKeySecret) 以及过期时间。
  4. AppServer 将访问凭证返回给 ClientApp。ClientApp 可以缓存这个凭证。当凭证失效时,ClientApp 需要像 AppServer 申请新的有效访问凭证。比如访问凭证有效期为 1 小时,那么 ClientApp 可以每 30 分钟向 AppServer 请求更新访问凭证。
  5. ClientApp 使用本地缓存的访问凭证去请求 Aliyun Service API。云服务会感知 STS 访问凭证,并会依赖 STS 服务来验证访问凭证,正确响应用户请求。

操作步骤

创建用户子账号:

  • 权限管理 - 添加权限

创建权限策略

  • 登录 RAM 访问控制管理控制台
  • 权限策略管理 - 新建权限策略
  • 例如,为 some-bucket 空间添加 ListObjects 和 GetObject 等只读权限

创建角色

通过 STS API 获取 STS AK 与 SecurityToken

  • 通过调用 STS 服务接口 AssumeRole 来获取有效访问凭证。

通过 STS AK 与 SecurityToken 访问 OSS

  • 获取 STS AK 与 SecurityToken 后,你可以使用 STS 凭证构造签名请求

服务端签名后直传