移动应用通过角色来获取临时凭证

当移动应用(App)直连OSS上传或下载数据时,App需要向应用服务器申请访问凭证。应用服务器以RAM用户身份扮演RAM角色,调用STS API AssumeRole接口获取临时安全令牌,并将临时安全令牌传递给App,App使用临时安全令牌访问OSS

从这个角度来说并不需要主用户的AK

image.png
只是需要

  • 准入用户
  • 准入角色

    子用户控制

    创建子用户

    {}@….

    赋予公共权限

    公共权限是进行提权, 例如:

  • 推送

  • 发送短信
  • Feedback
  • Oss 存储

    赋予限制存储权限

    创建 OSS 存储策略
    1. {
    2. "Version": "1",
    3. "Statement": [
    4. {
    5. "Effect": "Allow",
    6. "Action": [
    7. "oss:PutObject",
    8. "oss:DeleteObject"
    9. ],
    10. "Resource": [
    11. "acs:oss:*:*:bucket-production",
    12. "acs:oss:*:*:bucket-production/*"
    13. ],
    14. "Condition": {}
    15. }
    16. ]
    17. }
    在权限管理中加入个人自定义权限

    赋予 STS 权限

    STS临时授权访问OSS 详细记录了权限创建, 以下仅仅是对其进行简单的描述
    这个是 Ali云的授权服务逻辑
    [WIP]阿里云细粒度STS授权 - 图2
    创建 STS 子用户
    app-sts@…
    创建 Ram 角色
    app-sts
    创建 app-oss-sts 权限
    这里的权限授予普通的访问权限和自定目录的存储权限
    1. {
    2. "Version": "1",
    3. "Statement": [
    4. {
    5. "Effect": "Allow",
    6. "Action": [
    7. "oss:PutObject"
    8. ],
    9. "Resource": [
    10. "acs:oss:*:*:bucket-production",
    11. "acs:oss:*:*:bucket-production/*"
    12. ]
    13. }
    14. ]
    15. }
    将权限赋予 RAM 角色
    [WIP]阿里云细粒度STS授权 - 图3