應用程式開發人員的角色型訪問控制

角色型訪問控制 (RBAC) 可讓特定使用者或群組具有存取和管理資源的特定許可權。 應用程式 RBAC 與 Azure 角色型存取控制Microsoft Entra 角色型存取控制不同。 Azure 自定義角色和內建角色都是 Azure RBAC 的一部分,用來協助管理 Azure 資源。 Microsoft Entra RBAC 可用來管理 Microsoft Entra 資源。 本文說明應用程式特定的 RBAC。 如需實作應用程式特定 RBAC 的相關信息,請參閱 如何將應用程式角色新增至您的應用程式,並在令牌中接收它們。

角色定義

RBAC 是一種在應用程式中強制執行授權的熱門機制。 當組織使用 RBAC 時,應用程式開發人員會定義角色,而不是授權個別使用者或群組。 系統管理員接著可以將角色指派給不同的使用者和群組,以控制誰可以存取內容和功能。

RBAC 可協助應用程式開發人員管理資源及其使用方式。 RBAC 也允許應用程式開發人員控制使用者可以存取的應用程式區域。 管理員 istrators 可以控制哪些使用者可以使用 存取應用程式使用者指派必要屬性。 開發人員需要為應用程式內的特定用戶負責,以及使用者可以在應用程式內執行哪些動作。

應用程式開發人員會先在 Microsoft Entra 系統管理中心的應用程式註冊區段中建立角色定義。 角色定義包含針對指派給該角色的使用者所傳回的值。 開發人員接著可以使用此值來實作應用程式邏輯,以判斷這些使用者可以或無法在應用程式中執行的動作。

RBAC 選項

在考慮在應用程式中包含角色型訪問控制授權時,應該套用下列指引:

  • 定義應用程式授權需求所需的角色。
  • 套用、儲存及擷取已驗證用戶的相關角色。
  • 根據指派給目前使用者的角色來判斷應用程式行為。

定義角色之後,Microsoft 身分識別平台 支持數個不同的解決方案,可用來套用、儲存及擷取已驗證使用者的角色資訊。 這些解決方案包括應用程式角色、Microsoft Entra 群組,以及針對使用者角色資訊使用自定義數據存放區。

開發人員有彈性地提供自己的實作,以瞭解如何將角色指派解譯為應用程式許可權。 此許可權解譯可能牽涉到使用應用程式平臺或相關連結庫平臺所提供的中間件或其他選項。 應用程式通常會以宣告的形式接收使用者角色資訊,然後根據這些宣告決定用戶權力。

應用程式角色

Microsoft Entra ID 可讓您 定義應用程式的應用程式角色 ,並將這些角色指派給使用者和其他應用程式。 您指派給使用者或應用程式的角色會定義他們對應用程式中資源和作業的存取層級。

當 Microsoft Entra ID 為已驗證的使用者或應用程式發出存取令牌時,它會包含您在存取令牌 roles 宣告中指派實體(使用者或應用程式)的角色名稱。 應用程式,例如接收要求中存取令牌的應用程式,接著可以根據宣告中的 roles 值做出授權決策。

群組

開發人員也可以使用 Microsoft Entra 群組 在其應用程式中實作 RBAC,其中特定群組中使用者的成員資格會解譯為其角色成員資格。 當組織使用群組時,令牌會包含 群組宣告。 群組宣告會指定租用戶內使用者所有指派群組的標識碼。

重要

使用群組時,開發人員必須注意超額宣告的概念。 根據預設,如果使用者是超過超額限制的成員(SAML 令牌為 150,JWT 令牌為 200,如果使用隱含流程,則為 6),Microsoft Entra ID 不會在令牌中發出群組宣告。 相反地,它會在令牌中包含「超額宣告」,指出令牌取用者需要查詢 Microsoft Graph API 以擷取使用者的群組成員資格。 如需使用超額宣告的詳細資訊,請參閱 存取令牌中的宣告。 您只能發出指派給應用程式的群組,不過 群組型指派 確實需要 Microsoft Entra ID P1 或 P2 版本。

自訂數據存放區

應用程式角色和群組都會在 Microsoft Entra 目錄中儲存使用者指派的相關信息。 管理開發人員可用的使用者角色資訊的另一個選項是維護自定義數據存放區中目錄外部的資訊。 例如,在 SQL 資料庫、Azure 資料表記憶體或適用於資料表的 Azure Cosmos DB 中。

使用自定義記憶體可讓開發人員額外自定義及控制如何將角色指派給使用者,以及如何代表角色。 不過,額外的彈性也帶來了更多的責任。 例如,目前沒有機制可將此資訊包含在從 Microsoft Entra ID 傳回的令牌中。 如果角色資訊保留在自定義數據存放區中,應用程式必須擷取角色。 擷取角色通常是使用中間件中定義的擴充點來完成,而平臺可用來開發應用程式。 開發人員須負責正確保護自定義數據存放區。

使用 Azure AD B2C 自定義原則 ,可以與自定義數據存放區互動,並在令牌中包含自定義宣告。

選擇方法

一般而言,應用程式角色是建議的解決方案。 應用程式角色提供最簡單的程序設計模型,而且是針對 RBAC 實作而建立的用途。 不過,特定的應用程式需求可能表示不同的方法會是更好的解決方案。

開發人員可以使用應用程式角色來控制使用者是否可以登入應用程式,或應用程式可以取得 Web API 的存取令牌。 當開發人員想要描述和控制其應用程式中授權的參數時,應用程式角色會優先於 Microsoft Entra 群組。 例如,在下一個租使用者中使用群組進行授權中斷的應用程式,因為群組標識符和名稱可能不同。 使用應用程式角色的應用程式仍然安全。

雖然應用程式角色或群組都可用於授權,但兩者之間的主要差異可能會影響哪一個是指定案例的最佳解決方案。

應用程式角色 Microsoft Entra 群組 自訂數據存放區
程式設計模型 最簡單的。 它們專屬於應用程式,且定義於應用程式註冊中。 其會隨著應用程式移動。 更複雜的。 可能需要考慮租使用者和超額宣告之間的群組標識符。 群組並非應用程式專屬,而是 Microsoft Entra 租使用者。 最複雜。 開發人員必須實作儲存和擷取角色資訊的方法。
角色值在 Microsoft Entra 租用戶之間是靜態的 No 視實作而定。
角色值可用於多個應用程式中 否 (除非每個應用程式註冊中重複角色設定。) Yes Yes
儲存在目錄內的資訊 Yes .是 No
資訊會透過令牌傳遞 是 (角色宣告) 是 (如果超額, 可能需要在運行時間擷取群組宣告 否 (透過自定義程式代碼在運行時間擷取。
存留期 位於目錄中的應用程式註冊中。 拿掉應用程式註冊時已移除。 住在目錄中。 即使移除應用程式註冊,仍會保持不變。 位於自訂數據存放區中。 未系結至應用程式註冊。

下一步