什麼是 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 資源的使用者、群組、服務主體或受控識別。 您可以將角色指派給其中任何一個安全性主體。

Diagram showing the security principal types for a role assignment.

角色定義

角色定義是一個權限集合。 它通常只稱為 角色。 角色定義會列出可執行的動作,例如讀取、寫入和刪除。 角色可以為高階 (例如「擁有者」) 或特定 (例如「虛擬機器讀取者」)。

Diagram showing role definition example for a role assignment

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

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

Azure 具有數據動作,可讓您授與對象內數據的存取權。 例如,如果使用者具有記憶體帳戶的讀取數據存取權,則他們可以讀取該儲存體帳戶內的 Blob 或訊息。

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

範圍

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

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

Diagram showing scope levels for a role assignment.

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

角色指派

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

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

Diagram showing how security principal, role definition, and scope create a role assignment.

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

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

群組

角色指派是群組的可轉移,這表示如果使用者是群組的成員,而該群組是另一個具有角色指派的群組成員,則使用者具有角色指派的許可權。

Diagram showing how role assignments are transitive for groups.

多個角色指派

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

Diagram showing how multiple role assignments overlap.

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. 如果符合條件,則允許存取。 否則不允許存取。

下圖是評估邏輯的摘要。

Evaluation logic flowchart for determining access to a resource.

Azure RBAC 資料儲存在哪裡?

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

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

為什麼 Azure RBAC 數據是全域的?

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

請思考一下下列範例。 Arina 會在東亞建立虛擬機。 鮑勃是阿琳娜團隊的成員,在 美國 工作。 Bob 必須存取在東亞建立的虛擬機。 若要授與Bob對虛擬機的及時存取權,Azure 必須全域複寫角色指派,以從Bob從任何位置授與Bob對虛擬機的存取權。

Diagram showing Azure RBAC data in multiple regions.

授權需求

使用這項功能是免費的,並包含在您的 Azure 訂用帳戶中。

下一步