什麼是 Azure 角色型存取控制 (Azure RBAC)?

對於使用雲端的任何組織而言,雲端資源的存取管理是非常重要的功能。 Azure 角色型存取控制 (Azure RBAC) 可協助您管理可存取 Azure 資源的人員、這些人員如何使用資源,以及他們存取的區域。

Azure RBAC 是建置在Azure Resource Manager上的授權系統,可為 Azure 資源提供更精細的存取管理。

這段影片提供 Azure RBAC 的快速概觀。

我能用 Azure RBAC 來做什麼?

以下是 Azure RBAC 用途的一些例子:

  • 允許一位使用者管理訂用帳戶中的虛擬機器,而另一位使用者管理虛擬網路
  • 允許 DBA 群組管理訂用帳戶中的 SQL 資料庫
  • 允許使用者管理資源群組中的所有資源,例如虛擬機器、網站和子網路
  • 允許應用程式存取資源群組中的所有資源

Azure RBAC 的運作方式

您使用 Azure RBAC 來控制資源存取的方式就是指派 Azure 角色。 這是很重要的概念 – 可讓您了解如何強制執行權限。 角色指派由三項元素所組成:安全性主體、角色定義和範圍。

安全性主體

「安全性主體」是一個物件,代表要求存取 Azure 資源的使用者、群組、服務主體或受控識別。 您可以將角色指派給任何安全性主體。

此圖顯示角色指派的安全性主體類型。

角色定義

「角色定義」是權限集合。 一般會直接稱之為角色。 角色定義會列出可執行的動作,例如讀取、寫入和刪除。 角色可為高層級,例如擁有者或特定,例如虛擬機器讀取器。

顯示角色指派角色定義範例的圖表

Azure 包含數個您可使用的內建角色。 例如,虛擬機器參與者角色可讓使用者建立和管理虛擬機器。 如果內建的角色無法滿足您組織的特定需求,您可以建立自己的 Azure 自訂角色

這段影片提供內建角色和自訂角色的快速概觀。

Azure 具有資料動作,可讓您授與物件內資料的存取權。 例如,如果使用者有儲存體帳戶的讀取資料存取權,則他們可讀取該儲存體帳戶中的 Blob 或訊息。

如需詳細資訊,請參閱了解 Azure 角色定義

影響範圍

「範圍」是要套用存取權的一組資源。 當您指派角色時,可以藉由定義範圍來進一步限制動作。 如果您想要讓某位使用者成為網站參與者,但僅限於某個資源群組,這會很實用。

在 Azure 中,您可以在四個層級指定範圍:管理群組、訂用帳戶、資源群組或資源。 範圍的結構為父子式關聯性。 您可以在任何範圍層級指派角色。

此圖顯示角色指派的範圍層級。

如需範圍的詳細資訊,請參閱了解範圍

角色指派

「角色指派」是一個連結程序,其為了授與存取權,而將角色定義連結至特定範圍的使用者、群組、服務主體或受控識別。 建立角色指派可授與存取權,而移除角色指派則可撤銷存取權。

下圖顯示角色指派的範例。 在此範例中,行銷群組已被指派醫藥銷售資源群組的參與者角色。 這表示行銷群組中的使用者可以建立或管理醫藥銷售資源群組中的任何 Azure 資源。 行銷使用者無法存取醫藥銷售資源群組外的資源,除非他們具有另一個角色指派。

此圖顯示安全性主體、角色定義和範圍如何建立角色指派。

您可以使用 Azure 入口網站、Azure CLI、Azure PowerShell、Azure SDK 或 REST API 來指派角色。

如需詳細資訊,請參閱指派 Azure 角色的步驟

群組

角色指派對於群組而言是可轉移的,這表示如果使用者是群組的成員,而該群組是另一個群組 (具有角色指派) 的成員,則使用者將會擁有角色指派中的權限。

此圖顯示角色指派如何轉移群組。

多角色指派

所以,如果您有多個重疊的角色指派會發生什麼事? Azure RBAC 是加法模型,因此,您的有效權限就是角色指派的總和。 請參考下列範例,其中使用者在訂用帳戶範圍中獲派「參與者」角色,並在資源群組中獲派「讀者」角色。 「參與者」權限和「讀者」權限的總和實際上就是訂用帳戶的參與者角色。 因此,在此情況下,「讀者」角色的指派並沒有作用。

顯示多個角色指派重迭方式的圖表。

拒絕指派

在以前,Azure RBAC 為不含拒絕的僅允許模型,但現在,Azure RBAC 會以有限方式支援拒絕指派。 與角色指派相同,「拒絕指派」也會基於拒絕存取權的目的來連結一組在特定範圍內拒絕使用者、群組、服務主體或受控識別的動作。 角色指派會定義一組「允許」的動作,而拒絕指派會定義一組「不允許」的動作。 換句話說,拒絕指派會封鎖使用者執行指定的動作,即使角色指派授與他們存取權也一樣。 拒絕指派的優先順序高於角色指派。

如需詳細資訊,請參閱了解 Azure 拒絕指派

Azure RBAC 如何判斷使用者是否有權存取資源

以下是 Azure RBAC 用來判斷您是否具有資源存取權的高階步驟。 這些步驟適用于與 Azure RBAC 整合的 Azure Resource Manager或資料平面服務。 這有助於了解您是否正嘗試對存取問題進行疑難排解。

  1. 使用者 (或服務主體) 會取得適用於 Azure Resource Manager 的權杖。

    權杖包含使用者的群組成員資格 (包括可轉移的群組成員資格)。

  2. 使用者可以使用附加的權杖,來對 Azure Resource Manager 進行 REST API 呼叫。

  3. Azure Resource Manager 會擷取所有角色指派和拒絕指派,以套用到要據以採取動作的資源。

  4. 如果拒絕指派適用,則會封鎖存取。 否則,評估會繼續。

  5. Azure Resource Manager 會縮小要套用到此使用者或其群組之角色指派的範圍,並判斷使用者針對此資源需具備哪些角色。

  6. Azure Resource Manager 會判斷 API 呼叫中的動作是否包含於使用者針對此資源所具備的角色中。 如果角色包含 Actions 具有萬用字元 () * ,則會藉由從允許 Actions 的 減去 NotActions 來計算有效許可權。 同樣地,對於任何資料動作,會執行相同的減法。

    Actions - NotActions = Effective management permissions

    DataActions - NotDataActions = Effective data permissions

  7. 如果使用者在要求的範圍沒有動作的角色,則不允許存取。 否則,會評估任何條件。

  8. 如果角色指派包含條件,則會進行評估。 否則,允許存取。

  9. 如果符合條件,則允許存取。 否則不允許存取。

下圖是評估邏輯的摘要。

用於判斷資源存取權的評估邏輯流程圖。

Azure RBAC 資料儲存在哪裡?

角色定義、角色指派和否定性指派會儲存在全球位置,以確保不論資源的建立區域為何,您都能存取您的資源。

當角色指派或任何其他 Azure RBAC 資料刪除時,就會全域刪除資料。 透過 Azure RBAC 資料存取資源的主體將會失去其存取權。

為什麼 Azure RBAC 資料是全域的?

Azure RBAC 資料是全域資料,可確保客戶可以即時存取資源,無論其從何處存取。 Azure RBAC 是由 Azure Resource Manager 強制執行,其具有全域端點,且要求會路由傳送至最接近的區域以取得速度和復原能力。 因此,必須在所有區域中強制執行 Azure RBAC,且資料會複寫至所有區域。 如需詳細資訊,請參閱Azure Resource Manager的復原

請思考一下下列範例。 A可建立東亞的虛擬機器。 Bob 是 A美國的成員。 Bob 必須存取在東亞建立的虛擬機器。 若要授與 Bob 對虛擬機器的及時存取權,Azure 必須全域複寫角色指派,以從 Bob 從任何位置授與 Bob 對虛擬機器的存取權。

此圖顯示多個區域中的 Azure RBAC 資料。

授權需求

在您的 Azure 訂用帳戶中免費使用此功能。

下一步