阿里云 OSS 一些使用
概述
最近接入阿里云 OSS,慑于其复杂的设定,保留本文用于备忘。
参考链接
STS 临时授权访问 OSS
业务流程
- App 用户登录。App 用户和云账号无关,它是 App 的终端用户,AppServer 支持 App 用户登录。对于每个有效的 App 用户来说,需要 AppServer 能定义出各个 App 用户的最小访问权限。
- AppServer 请求 STS 服务获取一个安全令牌 (SecurityToken)。在调用 STS 之前,AppServer 需要确定 App 用户的最小访问权限 (用 Policy 语法描述) 以及授权的过期时间。然后通过扮演角色 (AssumeRole) 来获取一个代表角色身份的安全令牌。
- STS 返回给 AppServer 一个有效的访问凭证,包括一个安全令牌 (SecurityToken)、临时访问密钥 (AccessKeyId, AccessKeySecret) 以及过期时间。
- AppServer 将访问凭证返回给 ClientApp。ClientApp 可以缓存这个凭证。当凭证失效时,ClientApp 需要像 AppServer 申请新的有效访问凭证。比如访问凭证有效期为 1 小时,那么 ClientApp 可以每 30 分钟向 AppServer 请求更新访问凭证。
- ClientApp 使用本地缓存的访问凭证去请求 Aliyun Service API。云服务会感知 STS 访问凭证,并会依赖 STS 服务来验证访问凭证,正确响应用户请求。
操作步骤
创建用户子账号:
- 登录 RAM 访问控制管理控制台
- 用户 - 新建用户
- 权限管理 - 添加权限
创建权限策略
- 登录 RAM 访问控制管理控制台
- 权限策略管理 - 新建权限策略
- 例如,为 some-bucket 空间添加 ListObjects 和 GetObject 等只读权限
创建角色
- 登录 RAM 访问控制管理控制台
- RAM 角色管理 - 新建 RAM 角色
通过 STS API 获取 STS AK 与 SecurityToken
- 通过调用 STS 服务接口 AssumeRole 来获取有效访问凭证。
通过 STS AK 与 SecurityToken 访问 OSS
- 获取 STS AK 与 SecurityToken 后,你可以使用 STS 凭证构造签名请求