675
阿裏雲
RAM 和 STS 介紹__授權管理_阿裏雲物聯網套件-阿裏雲
RAM 和 STS 介紹
RAM 和 STS 是阿裏雲提供的權限管理係統,詳情請參見訪問控製產品幫助文檔。
RAM 的主要作用是控製賬號係統的權限。通過使用 RAM 可以將在主賬號的權限範圍內創建子賬號,給不同的子賬號分配不同的權限從而達到授權管理的目的。
STS 是一個安全憑證(Token)的管理係統,用來授予臨時的訪問權限,這樣就可以通過 STS 來完成對於臨時用戶的訪問授權。
背景介紹
RAM 和 STS 需要解決的一個核心問題是如何在不暴露主賬號的 AccessKey 的情況下安全地授權別人訪問。因為一旦主賬號的 AccessKey 暴露出去,會帶來極大的安全風險,別人可以隨意操作該賬號下所有的資源、盜取重要信息等。
RAM 提供的實際上是一種長期有效的權限控製機製,通過分出不同權限的子賬號,將不同的權限分給不同的用戶,這樣一旦子賬號泄露也不會造成全局的信息泄露。子賬號在一般情況下是長期有效的。因此,子賬號的 AccessKey 是不能泄露的。
相對於 RAM 提供的長效控製機製,STS 提供的是一種臨時訪問授權,通過 STS 可以返回臨時的 AccessKey 和 Token,這些信息是可以直接發給臨時用戶用來訪問表格存儲。一般來說從 STS 獲取的權限會受到更加嚴格的限製,並且擁有時間限製,因此這些信息泄露之後對於係統的影響也很小。
這些功能在下文中會以實際的例子來說明。
基本概念
以下是一些基本概念的簡單解釋:
子賬號:從阿裏雲的主賬號中創建出來的子賬號,在創建的時候可以分配獨立的密碼和權限,每個子賬號擁有自己 AccessKey,可以和阿裏雲主賬號一樣正常完成有權限的操作。一般來說,這裏的子賬號可以理解為具有某種權限的用戶,可以被認為是一個具有某些權限的操作發起者。
角色(Role):表示某種操作權限的虛擬概念,但是沒有獨立的登錄密碼和 AccessKey。子賬號可以扮演角色,扮演角色時的權限是該角色自身的權限。
授權策略(Policy):用來定義權限的規則,比如允許用戶讀取或者寫入某些資源。
資源(Resource):代表用戶可訪問的雲資源,比如表格存儲所有的 Instance、某個Instance 或者某個 Instance 下麵的某個 Table 等。
子賬號和角色可以類比為某個個人和其身份的關係,某人在公司的角色是員工,在家裏的角色是父親,在不同的場景扮演不同的角色,但是還是同一個人。在扮演不同角色的時候也就擁有對應角色的權限。單獨的員工或者父親概念並不能作為一個操作的實體,隻有有人扮演了之後才是一個完整的概念。這裏還可以體現一個重要的概念,那就是角色可以被多個不同的個人同時扮演。完成角色扮演之後,該個人就自動擁有該角色的所有權限。
使用示例:
為避免阿裏雲賬號的 AccessKey 泄露而導致安全風險,alice 使用 RAM 創建了兩個子賬號 bob 和 carol ,carol 擁有讀權限,carol 擁有寫權限。bob 和 carol 都擁有獨立的 AccessKey, alice 可以很方便地在控製台取消泄露用戶的權限。
現在因為某些原因,需要授權給別人訪問物聯網套件接口的權限。這種情況下不應該直接把 bob 的 AccessKey 透露出去,可以新建一個角色,比如 AliceAReader,給這個角色賦予讀取物聯網套件接口讀的權限。但請注意,這個時候 AliceAReader 還是沒法直接用的,因為並不存在對應 AliceAReader 的 AccessKey,AliceAReader 現在僅僅表示一個擁有訪問物聯網套件接口權限的虛擬實體。
為了能獲取臨時授權,這時可以調用 STS 的 AssumeRole 接口,告訴 STS bob 將要扮演 AliceAReader 這個角色。如果成功,STS 會返回一個臨時的 AccessKeyId、AccessKeySecret 和 SecurityToken 作為訪問憑證。將這個憑證發給需要訪問的臨時用戶就可以獲得訪問 alice_a 的臨時權限了。憑證的過期時間在調用 AssumeRole 的時候指定。
為什麼 RAM 和 STS 這麼複雜
雖然 RAM 和 STS 的概念很複雜,但這是為了權限控製的靈活性而犧牲了部分的易用性。
將子賬號和角色分開,主要是為了將執行操作的實體和代表權限集合的虛擬實體分開。如果用戶本身需要的權限很多,比如讀/寫權限,但是實際上每次操作隻需要其中的一部分權限,那麼我們就可以創建兩個角色,分別具有讀/寫權限,然後創建一個沒有任何權限但是可以擁有扮演這兩個角色權限的用戶。當用戶需要讀的時候就可以臨時扮演其中擁有讀權限的角色,寫的時候同理,以降低每次操作中權限泄露的風險。而且通過扮演角色可以將權限授予其他的阿裏雲用戶,更加方便了協同使用。
當然,提供了靈活性並不代表一定要使用全部的功能,應該根據需求來使用其中的一個子集。比如,不需要帶過期時間的臨時訪問憑證的話,完全可以隻使用 RAM 的子賬號功能而無需使用 STS。
下麵的章節會用範例提供一些 RAM 和 STS 的使用指南以及使用上的建議。示例在操作上會盡量使用控製台和命令行等操作方式,減少實際代碼使用。如果需要使用代碼來實現請參見 RAM 和 STS 的 API 手冊。
最後更新:2016-11-24 15:54:31
上一篇:
自定義權限__授權管理_阿裏雲物聯網套件-阿裏雲
下一篇:
子賬號訪問__授權管理_阿裏雲物聯網套件-阿裏雲
實例操作__控製台使用_操作指南_高性能計算-阿裏雲
雲盤的特點和應用場景__磁盤_產品簡介_雲服務器 ECS-阿裏雲
購買__指南_雲數據庫 RDS 版-阿裏雲
簡單路由(支持 HTTP/HTTPS)__服務發現和負載均衡_用戶指南_容器服務-阿裏雲
推消息給iOS設備__推送相關_API 列表_OpenAPI 2.0_移動推送-阿裏雲
DRDSReader__Reader插件_使用手冊_數據集成-阿裏雲
免密碼訪問__用戶指南_雲數據庫 Memcache 版-阿裏雲
畫像分析服務協議__相關協議_平台介紹_數加平台介紹-阿裏雲
消息通知功能公測說明__操作指南_產品使用問題_媒體轉碼-阿裏雲
使用教程__JavaSDK手冊_SDK參考手冊_開放搜索-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲