閱讀604 返回首頁    go 財經資訊


角色__身份管理_用戶指南_訪問控製-阿裏雲

1. 基本概念

教科書式角色(Textbook-Role)

教科書式角色(或傳統意義上的角色)是指一組權限集合,它類似於RAM裏的Policy。如果一個用戶被賦予了某種角色,也就意味著該用戶被賦予了一組權限,然後該用戶就能訪問被授權的資源。

RAM角色(RAM-Role)

RAM角色不同於教科書式角色。RAM角色是一種虛擬用戶(或影子賬號),它是RAM用戶類型的一種。這種虛擬用戶有確定的身份,也可以被賦予一組權限(Policy),但它沒有確定的身份認證密鑰(登錄密碼或AccessKey)。與普通RAM用戶的差別主要在使用方法上,RAM角色需要被一個授信的實體用戶扮演,扮演成功後實體用戶將獲得RAM角色的臨時安全令牌,使用這個臨時安全令牌就能以角色身份訪問被授權的資源。

虛擬用戶 vs 實體用戶

虛擬用戶與實體用戶的區別在於是否能被直接身份認證,實體用戶擁有確定的登錄密碼或AccessKey,比如雲賬號、RAM-User賬號、雲服務賬號;而虛擬用戶沒有確定的認證密鑰,比如RAM-Role。

RAM-Role必須與一種實體用戶身份聯合起來才能使用。如果一個實體用戶要想使用被賦予的某個RAM角色,實體用戶必須先以自己身份登錄,然後執行切換到角色的操作將自己從實體身份切換到角色身份。當切換到角色身份後,將隻能執行該角色身份被授權的所有操作,而登錄時實體身份所對應的訪問權限被隱藏。如果用戶希望從角色身份回到實體身份,那麼隻需執行切回登錄身份的操作,此時將擁有實體身份所對應的訪問權限,而不再擁有角色身份所擁有的權限。

RAM角色主要用於解決身份聯盟(Identity Federation)相關需求,比如聯合您的企業本地賬號實現SSO (Single-Sign-On)、委托其他雲賬號及其下RAM用戶操作您所控製的資源、委托雲服務操作您所控製的資源。

注意:如果沒有特別說明,文中出現的角色都是指RAM角色

與RAM角色相關的幾個基本概念如下:

概念 注解
RoleARN RoleARN是角色的全局資源描述符,我們使用它來指定角色。RoleARN遵循阿裏雲ARN的命名規範。比如,某個雲賬號下的devops角色的ARN為:acs:ram:*:1234567890123456:role/devops。
受信演員 角色的受信演員是指可以扮演角色(即扮演角色)的實體用戶身份。創建角色時必須指定受信演員,角色隻能被受信的演員扮演。
權限策略 一個角色可以綁定一組權限(Policy)。沒有綁定權限的角色也可以存在,但不能被使用。
扮演角色 扮演角色(AssumeRole)是實體用戶獲取角色身份的安全令牌的方法。一個實體用戶通過調用AssumeRole的API可以獲得角色的安全令牌,使用安全令牌可以訪問雲服務API。
切換角色 切換角色(SwitchRole)是在控製台中實體用戶從當前登錄身份切換到角色身份的方法。一個實體用戶登錄到控製台之後,可以切換到被許可扮演的某一種角色身份,然後以角色身份操作雲資源。切換到角色身份後,原實體用戶身份的訪問權限將被屏蔽。用戶不需要使用角色身份時,可以從角色身份切換回原來的登錄身份。
角色令牌 角色令牌是角色身份的一種臨時訪問密鑰。角色身份沒有確定的訪問密鑰,當一個實體用戶要使用角色時,必須通過扮演角色來獲取對應的角色令牌,然後使用角色令牌來調用阿裏雲服務API。

2. 角色的使用場景

  • 臨時授權移動App客戶端直接操作您所控製的資源

場景概述:企業A開發了一款移動App,並購買了OSS服務。移動App需要上傳數據到OSS(或從OSS下載數據),A不希望所有App都通過AppServer來進行數據中轉,而希望讓App能直連OSS上傳/下載數據。由於移動App運行在用戶自己的終端設備上,這些設備並不受A的控製。出於安全考慮,A不能將訪問密鑰保存到移動App中。A希望將安全風險控製到最小,比如,每個移動App直連OSS時都必須使用最小權限的訪問令牌,而且訪問時效也要很短(比如30分鍾)。

解決思路:雲賬號A在RAM中創建一個角色,給角色授予合適的權限,並允許AppServer(以RAM用戶身份運行)使用該角色。當App需要直連OSS上傳/下載數據時,AppServer可以使用角色,獲取角色的一個臨時安全令牌並傳送給App,App就可以使用臨時安全令牌直接訪問OSS API。如果需要更精細地控製每個App的權限,AppServer可以在使用角色時進一步限製臨時安全令牌的資源操作權限,比如,不同App用戶隻能操作不同的子目錄,那麼AppServer在使用角色時就可以進行這種限製。

  • 跨賬號的資源操作與授權管理

場景概述:A和B代表不同的企業。A購買了多種雲資源(如ECS實例/RDS實例/SLB實例/OSS存儲桶/...)來開展業務。A希望能專注於業務係統,而將雲資源運維監控管理等任務委托或授權給企業B。當然,企業B可以進一步將代運維任務分配給B的員工。B可以精細控製其員工對A的雲資源操作權限。如果A和B的這種代運維合同終止,A隨時可以撤銷對B的授權。

解決思路:雲賬號A在RAM中創建一個角色,給角色授予合適的權限,並允許雲賬號B使用該角色。如果雲賬號B下的某個員工(RAM用戶)需要使用該角色,那麼雲賬號B可以自主進行授權控製。代運維操作時,賬號B下的RAM用戶將使用被授予的角色身份來操作賬號A的資源。如果賬號A與賬號B的合作終止,A隻需要撤銷賬號B對該角色的使用。一旦賬號B對角色的使用權限被撤銷,那麼B下的所有RAM用戶對該角色的使用權限將被自動撤銷。

3. 角色的類型

RAM支持兩種類型的角色:用戶角色服務角色

  • 用戶角色

允許RAM用戶所扮演的角色,被稱為用戶角色。扮演角色的RAM用戶可以屬於自己雲賬號,也可以是屬於其他雲帳號。用戶角色主要用來解決跨帳號訪問臨時授權的問題。

  • 服務角色

允許雲服務所扮演的角色,被稱為服務角色。服務角色主要用於授權雲服務代理您進行資源操作。

4. 創建與使用角色

4.1 創建角色

通過RAM控製台來創建RAM角色的基本步驟如下:

  • 選擇角色類型
  • 選擇受信的演員身份
  • 填寫角色名稱
  • 給角色綁定權限策略

(1) 創建RAM用戶使用的角色

操作步驟:登入RAM控製台,選擇角色管理 -> 新建角色,在創建角色的窗口中選擇用戶角色,然後按步驟執行。

如果您創建的角色是給您自己名下的RAM用戶使用(比如授權移動App客戶端直接操作OSS資源的應用場景),那麼你可以選擇當前雲賬號為受信雲賬號。

如果您創建的角色是給其他雲賬號名下的RAM用戶使用(比如跨賬號的資源授權場景),那麼您需要選擇其他雲賬號,並在受信雲賬號ID中填寫其他雲賬號的ID,如下圖所示:

選擇角色的受信雲賬號ID

創建角色成功後,在RAM控製台的角色管理頁麵中,可以看到相應的角色詳情如下:

角色詳情

成功創建角色後,我們還需要給該角色授權。給角色授權的方法和給普通RAM用戶授權的方法類似,請參考給用戶授權內容。

(2) 創建雲服務使用的角色

操作步驟:登入RAM控製台,選擇角色管理 -> 新建角色,在創建角色的窗口中選擇服務角色,然後按步驟執行。

4.2 使用角色

必須使用RAM用戶身份扮演角色(AssumeRole)

為了遵循最佳安全實踐,我們不允許受信雲賬號以自己身份扮演角色。因此,受信雲賬號必須通過創建一個RAM用戶賬號,並授予該RAM用戶賬號的AssumeRole權限,然後以RAM用戶身份去扮演角色。

操作步驟:

  • 創建一個RAM用戶,為該用戶創建AccessKey或設置登錄密碼
  • 給該RAM用戶授權,授權時可以選擇AliyunSTSAssumeRoleAccess係統授權策略

(1) RAM用戶使用角色身份訪問雲服務API

當RAM用戶被授予AssumeRole權限之後,他就可以使用自己的AccessKey調用安全令牌服務(STS)的AssumeRole接口來獲取某個角色的臨時安全令牌。關於AssumeRole API的調用方法,請參考STS API文檔

(2) RAM用戶使用角色身份操作控製台

如果要使用角色身份進行控製台操作,首先RAM用戶需要以自己身份登錄控製台,然後通過“切換角色”的方式使用角色身份進行控製台操作。

例如,company2(企業別名)下的RAM用戶zhangsan登錄控製台之後,控製台右上角會顯示該用戶的身份信息,如下圖所示:

RAM用戶登錄身份

用戶點擊“切換身份”操作,進入角色切換的頁麵,此時用戶需要選擇相應的企業別名和角色名(假設當前用戶已被授權允許扮演company1(企業別名)下的ecs-admin角色):

切換角色身份

切換成功後,將以角色身份訪問控製台。此時控製台右上角將顯示角色身份(即當前身份)和登錄身份。

角色身份

最後更新:2016-11-23 16:04:01

  上一篇:go 組__身份管理_用戶指南_訪問控製-阿裏雲
  下一篇:go 權限__授權管理_用戶指南_訪問控製-阿裏雲