需求場景
- 管理員用戶在后台上傳視頻文件,文件比較大,需要直接上傳到OSS上面。
- 出於安全考慮,不能直接把一個RAM用戶的key和secret寫死在管理后台的前端代碼里面,所以需要使用阿里雲的STS獲取一個臨時的身份,用來上傳文件,文件傳完之后身份過期。
概念介紹
這個過程,會涉及到阿里雲的兩個雲服務:
- STS
- 訪問控制
STS:阿里雲臨時安全令牌(Security Token Service,STS)是阿里雲提供的一種臨時訪問權限管理服務。
訪問控制:阿里雲的訪問控制服務,其實就是提供了”用戶-角色-權限“這樣的一套用戶權限體系,用來控制對於阿里雲各類雲資源的訪問,比如OSS等。其中有幾個關鍵概念:
- 可信實體:可信實體,可以簡單理解為一個用戶,這個用戶可以在“阿里雲控制台->訪問控制->人員管理->用戶”里面去進行創建和編輯。
- RAM角色:角色可以理解為是一組權限的集合。
- 扮演角色:一個用戶可以扮演一個或者多個角色,扮演哪個角色,就擁有了哪個角色賦予的權限。
ARN:是一個字符串,用來在代碼中唯一標識一個角色。
實現邏輯
上述業務場景的實現,本質上就是:
- 就是我們使用某一個用戶(可信實體)的身份,來向阿里雲的STS服務,請求一套臨時的訪問令牌,讓這個令牌的持有者,可以臨時扮演指定的一個角色
- 前端獲得這個臨時令牌之后,以其調用OSS提供的接口,來進行OSS的文件操作。
簡單來說,分成兩個步驟:
- 在阿里雲的訪問控制后台,創建好用戶和RAM角色
- 業務服務器實現一個獲取STS令牌的接口,供前端調用。
- 前端使用STS訪問令牌,訪問OSS提供的上傳文件接口。
從業務服務器的角度,需要做的工作包括:
- 創建授權策略
- 創建RAM角色
- 創建用戶
- 實現提供STS訪問令牌的接口
- 跨域設置
上述業務場景的實現,本質上,
就是我們使用某一個用戶(可信實體)的身份,來向阿里雲的STS服務,請求一套臨時的訪問令牌,讓這個令牌的持有者,可以臨時扮演指定的一個角色
前端獲得這個臨時令牌之后,以其調用OSS提供的接口,來進行OSS的文件操作。
前端調用
對於前端調用者而言,在獲取到令牌之后,主要問題就是怎樣來上傳一個文件,詳見下面的鏈接。
推薦使用Browser.js的方式,有三個主要的接口可供前端使用:
- 普通上傳
- 分片上傳
- 斷點續傳
參考資料
關於STS的一些基本概念:https://help.aliyun.com/document_detail/28756.html?spm=a2c4g.11174283.6.787.4a4d5662tWHP35
前端怎樣上傳文件:https://help.aliyun.com/document_detail/112718.html?spm=a2c4g.11174359.6.1552.3da85241mGWBs8