Exchange Online 中應用程式的角色型存取控制

本文將引導您使用精細且可調整的資源範圍存取控制: 適用於 Exchange Online 中應用程式的角色型存取控制 (RBAC) 。

概觀

Exchange Online 中應用程式的 RBAC 可讓系統管理員將權限授與獨立存取 Exchange Online 中資料的應用程式。 此授權可以與存取範圍 (資源範圍配對) ,以指定應用程式可以存取的信箱。 此功能擴充了 Exchange Online 中目前的 RBAC 模型,並取代了應用程式存取原則。 這些權限授與與 Microsoft Entra ID 中的未限定範圍授與無關。

此系統的核心是管理角色指派設定,它表示系統管理員允許主體存取資料的意圖。 在此情況下,允許應用程式對一組目標資源執行某些角色。 例如,系統管理員可能會設定會議室預約系統,僅使用 管理範圍存取特定區域中的行事曆資料。 下圖說明角色指派模型:

角色指派模型的圖表與範例。

設定指示

下列步驟將引導您建立這些應用程式 RBAC 指派:

  1. 建立新的資源範圍 (選擇性)
  2. 建立 Microsoft Entra 服務主體的指標
  3. 選取適當的應用程式角色
  4. 建立新角色指派
  5. 測試新的服務主體

需求

組織管理角色群組具有新應用程式 RBAC 角色的委派角色指派。 您必須是組織管理角色群組的成員才能指派這些權限。 或者,您可以使用 Exchange Online RBAC 根據需要將委派指派授與這些應用程式角色。 在 Microsoft Entra ID 中,您需要 Exchange 系統管理員角色來指派這些權限。

定義資源範圍

管理範圍

管理範圍可讓系統管理員根據這些物件的屬性設定一組信箱的範圍。 請參閱「 新增」、「 移除」、「 設定」的管理範圍文件。 以下是 [管理範圍] 中 可篩選的屬性 清單。

注意事項

雖然有名為 [系統管理單位] 的屬性,但建議您在角色指派上使用原生 [管理員單位] 參數,以避免將範圍建立為中繼指標物件。

服務主體

服務主體代表組織內應用程式的執行個體。 您應該將 Exchange 中的服務主體視為 Microsoft Entra ID 中現有服務主體的指標。 無法直接使用 Exchange Online 工具建立服務主體。 Microsoft Entra 工具可用來管理組織內的服務主體註冊。 Exchange 會防止建立無效指標,並自動反映 Microsoft Entra ID 中服務主體的任何刪除。

新的服務主體

New-ServicePrincipal -AppId <Client Application ID in AAD> -ObjectId <Service principal object ID in AAD> -DisplayName <name>

下列螢幕擷取畫面可協助您在 Microsoft Entra ID 中尋找這些識別碼:

Microsoft Entra 企業應用程式頁面的螢幕擷取畫面。

注意事項

請勿使用 [應用程式註冊] 頁面中的識別碼,因為它會顯示不同的值。 紅色外框的「應用程式識別碼」是 AppID,而「物件識別碼」是 ServiceID。

您可以使用另一種方法 來使用 Get-MgServicePrincipal 來尋找這些識別碼。

移除服務主體

Remove-ServicePrincipal -Identity <ObjectID, AppID, or DisplayName>

設定服務主體

Set-ServicePrincipal -Identity <ObjectID, AppID, or DisplayName > -DisplayName <Updated name>

應用程式角色

應用程式角色是 Exchange Online 中一種特殊的管理角色類型,只能指派給應用程式。 您可以使用 Get-ManagementRole 列舉這些角色。

角色分配

管理角色指派會將主體、角色和自訂資源的存取範圍繫結在一起。 此指派可作為跨範圍執行角色的服務主體的權限指派。

新角色指派

New-ManagementRoleAssignment [[-Name] <String>] -Role <RoleIdParameter> -App <ObjectID, AppID, or DisplayName> -CustomResourceScope <Management Scope> (or -RecipientAdministrativeUnitScope)

設定角色指派

Set-ManagementRoleAssignment [-Identity] <RoleAssignmentIdParameter> -CustomResourceScope <Management Scope> (or -RecipientAdministrativeUnitScope)

移除角色指派

如需移除角色指派,請參閱 移除管理指派。

測試授權

您可以使用測試 Cmdlet 來模擬特定服務主體的 RBAC 指派所啟用的行為。

注意事項

此方法會排除可能在 Microsoft Entra ID 中個別授與的權限。

測試授權時,您可以包含選用的資源參數,以評估哪些範圍權限適用於該目標信箱。 InScope will = true or false 來表示如果為 True,表示權限會套用至該服務主體的該信箱,或 false 表示服務主體具有該權限,但不能用於該特定信箱。 省略此旗標會導致「不執行」。

測試結果一律包含特定指派權限的允許資源範圍。

測試服務主體存取權

Test-ServicePrincipalAuthorization -Identity <ObjectID, AppID, or DisplayName> [-Resource] <target mailbox>

範例

在 PowerShell 中使用 Connect-ExchangeOnline 之後,請依照下列步驟執行:

範例 1:使用管理範圍設定加拿大使用者的行事曆讀取存取權

New-ServicePrincipal -AppId 71487acd-ec93-476d-bd0e-6c8b31831053 -ObjectId 6233fba6-0198-4277-892f-9275bf728bcc -DisplayName "example"

DisplayName   ObjectId                              AppId
-----------   ---------                              -----
example       6233fba6-0198-4277-892f-9275bf728bcc   71487acd-ec93-476d-bd0e-6c8b3183105
New-ManagementScope -Name "Canadian users" -RecipientRestrictionFilter "CustomAttribute1 -eq '012332'"

Name                 ScopeRestrictionType      Exclusive      RecipientRoot          RecipientFilter
----                 --------------------      ---------      -------------          ---------------
Canadian users    RecipientScope            False                                CustomAttribute1 -eq '012332'
New-ManagementRoleAssignment -App 6233fba6-0198-4277-892f-9275bf728bcc -Role "Application Calendars.Read" -CustomResourceScope "Canadian users"

Name                      Role                 RoleAssigneeName       RoleAssigneeType        AssignmentMethod
----                      ----                 ----------------       ----------------        ----------------
Application Calendar...   Application Ca...    6233fba6-0198-...      ServicePrincipal        Direct

範例二:為所有歐洲管理員單位信箱設定 Mail.Read

New-ServicePrincipal -AppId eb19847b-5563-42ea-b719-ea47cb0cf4b3 -ObjectId 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 -DisplayName "example"

DisplayName    ObjectId                                  AppId
-----------    ---------                                  -----
example        59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36       eb19847b-5563-42ea-b719-ea47cb0cf4b3
New-ManagementRoleAssignment -App 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 -Role "Application Mail.Read" -RecipientAdministrativeUnitScope 4d819ce9-9257-44d7-af20-68a49e6697f4

Name                         Role                RoleAssigneeName         RoleAssigneeType             AssignmentMethod
----                         ----                ----------------          ----------------            ----------------
Application Mail.Rea...      Application Ma...   59b7c6cb-58d3-...         ServicePrincipal            Direct

範例 3:測試指派給服務主體的權限

Test-ServicePrincipalAuthorization -Resource b -Identity "DemoB" |Format-Table

RoleName                      GrantedPermissions          AllowedResourceScope        ScopeType                 InScope
--------                      ------------------          --------------------        ---------                 ------
Application Mail.Read         Mail.Read                   Scope-MESGaDN                CustomRecipientScope     False
Application Calendars.Read    Calendars.Read              Scope-DL1                    CustomRecipientScope     False
Application Contacts.Read     Contacts.Read               Scope-MESGa                  CustomRecipientScope     False

限制

  • 應用程式無法成為角色群組的成員。
  • 應用程式角色只能指派給服務主體。
  • 無法複製或衍生應用程式角色。
  • 獨佔管理範圍不會限制應用程式存取。
  • 應用程式權限的變更會受到快取維護的影響,快取維護時間介於 30 分鐘到 2 小時之間,取決於應用程式最近的使用方式。 當您測試設定時,test 命令會略過此快取。 沒有 API 輸入呼叫的應用程式快取會在 30 分鐘後重設。 使用中應用程式的快取最多會保持作用中 2 小時。

支援的通訊協定

  • MS 圖表
  • EWS

支援的應用程式角色

名稱 Protocol (通訊協定) 權限清單 描述
Application Mail.Read MS 圖表 Mail.Read 允許應用程式讀取所有信箱中的電子郵件,而不需要登入的使用者。
Application Mail.ReadBasic MS 圖表 Mail.ReadBasic 允許應用程式在沒有登入使用者的情況下讀取電子郵件,但 body、previewBody、附件和所有信箱中的任何擴充屬性除外
Application Mail.ReadWrite MS 圖表 Mail.ReadWrite 允許應用程式在沒有登入使用者的情況下,在所有信箱中建立、讀取、更新及刪除電子郵件。 不包括傳送郵件的權限。
Application Mail.Send MS 圖表 Mail.Send 允許應用程式以任何使用者身分傳送郵件,而不需要登入的使用者。
Application MailboxSettings.Read MS 圖表 MailboxSettings.Read 允許應用程式在沒有登入使用者的情況下讀取所有信箱中的使用者信箱設定。
Application MailboxSettings.ReadWrite MS 圖表 MailboxSettings.ReadWrite 允許應用程式在沒有登入使用者的情況下,在所有信箱中建立、讀取、更新及刪除使用者的信箱設定。
Application Calendars.Read MS 圖表 Calendars.Read 允許應用程式在沒有登入使用者的情況下讀取所有行事曆的活動。
Application Calendars.ReadWrite MS 圖表 Calendars.ReadWrite 允許應用程式在沒有登入使用者的情況下建立、讀取、更新及刪除所有行事曆的活動。
Application Contacts.Read MS 圖表 Contacts.Read 允許應用程式讀取所有信箱中的所有連絡人,而不需要登入的使用者。
Application Contacts.ReadWrite MS 圖表 Contacts.ReadWrite 允許應用程式在沒有登入使用者的情況下,建立、讀取、更新及刪除所有信箱中的所有連絡人。
Application MailboxFolder.Read MS 圖表 MailboxFolder.Read.All 允許應用程式讀取所有使用者的信箱資料夾,而不需要登入的使用者。
Application MailboxFolder.ReadWrite MS 圖表 MailboxFolder.ReadWrite.All 允許應用程式在沒有登入使用者的情況下讀取和寫入所有使用者的信箱資料夾。
Application MailboxItem.Read MS 圖表 MailboxItem.Read.All 允許應用程式讀取所有使用者的信箱項目,而不需要登入的使用者。
Application MailboxItem.ReadWrite MS 圖表 MailboxItem.ReadWrite.All 允許應用程式讀取、寫入及刪除所有使用者的信箱項目,而不需要登入的使用者。
Application MailboxItem.Export MS 圖表 MailboxItem.Export.All 允許應用程式匯出所有使用者的信箱項目,而不需要登入的使用者。
Application MailboxItem.ImportExport MS 圖表 MailboxItem.ImportExport.All 允許應用程式匯出及匯入所有使用者的信箱項目,而不需要登入的使用者。
Application Mail Full Access MS 圖表 Mail.ReadWrite, Mail.Send 允許應用程式在所有信箱中建立、讀取、更新及刪除電子郵件,以及以沒有登入使用者的任何使用者身分傳送郵件。
Application Exchange Full Access MS 圖表 Mail.ReadWrite, Mail.Send, MailboxSettings.ReadWrite, Calendars.ReadWrite, Contacts.ReadWrite 沒有登入的使用者:允許應用程式建立、讀取、更新和刪除所有信箱中的電子郵件,並以任何使用者身分傳送郵件。 允許應用程式在所有信箱中建立、讀取、更新及刪除使用者的信箱設定。 允許應用程式建立、讀取、更新及刪除所有行事曆的事件。 允許應用程式建立、讀取、更新及刪除所有信箱中的所有連絡人。
Application EWS.AccessAsApp EWS EWS.AccessAsApp 允許應用程式使用 Exchange Web 服務,並擁有所有信箱的完整存取權。
Application SMTP.SendAsApp MS 圖表 SMTP.SendAsApp 允許應用程式使用 SMTP 用戶端提交,將郵件提交到使用者寄件匣資料夾。
Application MailboxConfigItem.Read MS 圖表 MailboxConfigItem.Read 允許應用程式在沒有登入使用者的情況下讀取 UserConfiguration 物件。
Application MailboxConfigItem.ReadWrite MS 圖表 MailboxConfigItem.ReadWrite 允許應用程式在沒有登入使用者的情況下讀取、寫入、更新和刪除 UserConfiguration 物件。
Application MailTips.ReadBasic.All MS 圖表 MailTips.ReadBasic.All 允許應用程式只存取 [寄件提醒] 中繼資料,而不公開電子郵件內容,且沒有登入的使用者
Application Mail-Advanced.ReadWrite.All MS 圖表 Mail-Advanced.ReadWrite.All 允許應用程式建立、讀取、更新及刪除所有電子郵件,包括使用者信箱中的非草稿電子郵件內容,而不需要登入的使用者。 不包括傳送郵件的權限。

您可能會注意到這些角色代表您可以在 Azure 身分識別平台的其他位置同意的 Microsoft Graph 權限。 這些權限與 Graph 權限具有相同的效果,但以下只是允許精細資源範圍存取的角色指派。

常見問題集

為什麼我的應用程式仍然可以存取未由我在 Exchange Online 應用程式 RBAC 中使用的範圍授與的信箱?

您必須確定已移除 Microsoft Entra ID 中指派的全組織未範圍權限。 使用應用程式 RBAC 指派的權限除了您在 Microsoft Entra ID 中授予的授權之外,也會發生作用。 只能使用應用程式存取原則來限制 Microsoft Entra 權限。 換句話說,指派的權限是對來自 Microsoft Entra ID 的權限和 Exchange Online RBAC 中指派的權限的聯集作業。 每個授權都可以獨立行事。

例如,如果您的服務主體已Mail.Read在 Microsoft Entra ID 中授予,且您在應用程式 RBAC 中設定了資源範圍的Mail.Read權限,請務必從 Microsoft Entra ID 移除 的Mail.Read指派。 否則,來自 Microsoft Entra 的未範圍授Mail.Read與與應用程式 RBAC 中資源範圍授Mail.Read與的聯集會導致沒有有效的資源範圍。

如何在一個介面中查看和修改所有應用程式權限?

為了確保系統管理員擁有應用程式權限的合併檢視,我們會在 Microsoft Entra 系統管理員體驗中呈現這些在 Exchange Online 中授與的權限。 此功能即將推出,請繼續關注。

如何從應用程式存取原則移轉至應用程式的 RBAC?

使用應用程式存取原則,您擁有服務主體、Azure 中的權限同意,以及與 Exchange Online 中服務主體相關聯的原則。 雖然您可以使用 Exchange 管理範圍或系統管理單位來重組範圍機制,但以下是一些關於重複使用應用程式存取原則中的群組作為應用程式 RBAC 授與範圍的指引。 此程序不會導致應用程式使用中斷。

移轉步驟:

  1. 建立新的管理範圍,從應用程式存取原則指向範圍群組。

  2. 建立服務主體指標物件。

  3. 使用管理範圍限制,將所需的權限指派給 Exchange Online 中的服務主體。

  4. 移除對 Azure 中的權限同意。

  5. 移除應用程式存取原則。

    在步驟 1 中建立管理範圍時,您可以使用收件者篩選器和 篩選 MemberOfGroup參數 。 以下為範例:

    "MemberOfGroup -eq 'CN=mesga20220818210551,OU=Fabrikam346.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR00A001,DC=prod,DC=outlook,DC=com'"

注意事項

此篩選參數使用群組的 辨別名稱 ,您可以使用 Get-Group cmdlet 找到該名稱。

限制:

  • 巢狀群組成員會被視為不在範圍內。 只有直接的群組成員資格會導致成員被視為授權範圍內。
  • 支援 Microsoft 365 群組、Mail-Enabled 安全性群組和通訊群組清單。

RBAC for Applications 如何與應用程式存取原則搭配使用?

與應用程式存取原則的相容性:

應用程式的 RBAC 會取代應用程式存取原則。

授權互通性可描述如下:

  • 應用程式存取原則僅限制在 Microsoft Entra ID 中指派的權限。

  • RBAC for Applications 提供具有相關聯資源範圍的替代授權表達式。

  • 應用程式可以同時擁有 Microsoft Entra 同意的權限和 RBAC 指派。 例如,當應用程式具有 (時,我們預期會出現這種情況) 整個組織和Mail.Read範圍。Mail.Send

  • 權限同意是累加的。

範例一:來自 2 個系統的同意:

  • 應用程式有 Mail.Read Microsoft Entra ID。
  • 此應用程式的範圍限定為使用應用程式存取原則啟用郵件功能的安全性群組 1。
  • 相同的應用程式已 Calendar.Read 同意應用程式 RBAC 中的管理範圍 1。
  • 信箱 A 位於啟用郵件功能的安全性群組 1 中。
  • 信箱 B 位於管理範圍 1 的範圍內。

對端點的 MS Graph 存取需要兩者和Mail.ReadCalendar.Read應用程式 1:

  • 鎖定信箱 A: 失敗。
  • 鎖定信箱 B: 失敗。

此端點需要兩者 Mail.Read 和 Calendar.Read。 雖然應用程式針對兩個個別信箱個別擁有這些權限,但針對一個信箱則不會同時具有這些權限。

範例二:指派相同的權限兩次:

  • 應用程式有 Mail.Read Microsoft Entra ID。
  • 此應用程式的範圍限定為使用應用程式存取原則啟用郵件功能的安全性群組 1。
  • 相同的應用程式已 Mail.Read 同意使用應用程式的 RBAC 管理範圍 1。
  • 信箱 A 位於啟用郵件功能的安全性群組 1 中。
  • 管理範圍 1 允許存取每個信箱,除了信箱 A 之外,根據某些篩選,例如) (Alias -ne mbxa 。

端點的 MS Graph 存取權 Mail.Read 需要應用程式 1:

  • 目標信箱 A:允許。
  • 目標信箱 B:允許。

雖然來自 Microsoft Entra-only 允許Mail.Read存取信箱 A,但 RBAC 指派允許存取 A 以外的所有項目。實際上,此指派允許存取所有內容,因為「A and Not A」代表所有內容。

雖然我們概述這些邊緣案例以求完整性,但我們不期望應用程式存取原則通常與應用程式的 RBAC 搭配使用。 應在 Microsoft Entra ID 中指派全組織權限,而資源範圍的權限應使用應用程式的 RBAC 授與。

RBAC for Applications 支援多少應用程式?

每個組織最多可以有 10,000 個應用程式,使用應用程式的 RBAC。 如果此限制對您造成問題,請告訴我們。 我們以高度可擴展的方式為應用程式構建了 RBAC,以滿足我們最大客戶的需求。

為什麼自動探索無法運作?

目前,使用 RBAC 應用程式角色時,無法存取 自動探索服務 。

如果刪除 Microsoft Entra 中的服務主體,Exchange 會發生什麼情況?

在 Microsoft Entra 中刪除的服務主體也會在 Exchange 中自動移除。 此移除會刪除對這些服務主體所做的任何指派,但讓管理範圍不受影響。

此功能的意見反應

您可以與以下連結分享此功能的意見反應。exoapprbacpreview@microsoft.com