Exchange Online PowerShell 和安全性 & 合規性 PowerShell 中自動指令碼的僅限應用程式驗證

Microsoft 365 中的稽核和報告案例通常涉及 Exchange Online PowerShell 和安全性與合規性 PowerShell 中的自動指令碼。 過去,自動登入需要您將使用者名稱和密碼儲存在本機檔案或執行階段存取的秘密保存庫中。 但是,眾所周知,將使用者憑證儲存在本機並不是一個良好的安全做法。

以憑證為基礎的驗證 (CBA) 或僅限應用程式驗證,如本文所述,可透過使用Microsoft Entra應用程式和憑證來支援自動指令碼和自動化案例。

注意事項

  • 您是否知道您可以使用 Azure 中的託管身分識別連線到 Exchange Online PowerShell? 請查看使用 Azure 受控身分識別連線至 Exchange Online PowerShell

  • 本文所述的功能和程式需要下列版本的 Exchange Online PowerShell 模組:

    • Exchange Online PowerShell (Connect-ExchangeOnline) :版本 2.0.4 或更新版本。
    • 安全性 & 合規性 PowerShell (Connect-IPPSSession) :版本 3.0.0 或更新版本。

    如需有關如何安裝或更新模組的指示,請參閱安裝和更新 Exchange Online PowerShell 模組。 如需如何在 Azure 自動化中使用模組的指示,請參閱在 Azure 自動化中管理模組

  • 由中國 21Vianet 所營運的 Office 365 提供 CBA 或僅限應用程式驗證。

  • Exchange Online PowerShell V3 模組中的 REST API 連線需要 PowerShellGet 和 PackageManagement 模組。 如需詳細資訊,請參閱 Windows 中適用於 REST 連線的 PowerShellGet

  • 如果本文中的程序無法執行,請執行下列命令,確認您未安裝 PackageManagement 或 PowerShellGet 模組的預覽版本。 Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions

  • 在 Exchange Online PowerShell 中,無法將此文章中的程序與下列 Microsoft 365 群組 Cmdlet 一起使用:

    您可以使用 Microsoft Graph 取代這些 Cmdlet 的大部分功能。 如需詳細資訊,請參閱 使用 Microsoft Graph 中的群組

  • 若要在 Security & Compliance PowerShell 中使用僅限應用程式驗證執行電子文件探索 Cmdlet,請使用 ExchangeOnlineManagement 3.10.1 或更新版本,在執行 Connect-IPPSSession 時包含 EnableSearchOnlySession 參數,並設定服務主體和電子文件探索角色型存取控制 (RBAC) 。 如需詳細資訊,請參閱 設定電子文件探索的僅限應用程式驗證 PowerShell

  • Exchange Online 支援委派案例。 與委派連線的建議方法是使用 GDAP 和應用程式同意。 如需詳細資訊,請參閱搭配 GDAP 和應用程式同意使用 Exchange Online PowerShell v3 模組。 當未與客戶建立 CSP 關係時,您也可以使用多租用戶應用程式。 本文的一般指示會詳述使用多租用戶應用程式的必要步驟。

  • 如果您在使用 Windows PowerShell SDK 進行連線時收到以下錯誤,請使用 Connect-ExchangeOnline Cmdlet 上的 SkipLoadingFormatData 參數:The term 'Update-ModuleManifest' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

它的運作方式為何?

Exchange Online PowerShell 模組會使用 Active Directory 驗證程式庫,以使用應用程式識別碼、租用戶識別碼 (組織) 及憑證指紋來擷取僅限應用程式的權杖。 在 Microsoft Entra ID 內佈建的應用程式物件已指派目錄角色,該角色會在存取權杖中傳回。 使用權杖中可用的目錄角色資訊,設定工作階段的角色型存取控制 (RBAC)。

連接範例

下列範例示範如何搭配僅限應用程式驗證使用 Exchange Online PowerShell 模組:

重要事項

在下列連線命令中,使用 .onmicrosoft.com 組織的主要網域作為 Organization 參數的值。

下列連線命令有許多可用的選項,如連線至 Exchange Online PowerShell連線至安全性 & 合規性 PowerShell 中所述。 例如:

  • 由 21Vianet) 環境運作的 Microsoft 365 GCC High、Microsoft 365 DoD 或 Microsoft 365 China (需要下列額外的參數和值:

  • Microsoft 365 GCC High

    • Connect-ExchangeOnline -ExchangeEnvironmentName O365USGovGCCHigh
    • Connect-IPPSSession -ConnectionUri https://ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/organizations*
  • Microsoft 365 DoD

    • Connect-ExchangeOnline -ExchangeEnvironmentName O365USGovDoD
    • Connect-IPPSSession -ConnectionUri https://compliance.dod.microsoft.com/powershell-liveid -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/organizations*
  • 由世紀互聯提供的 Microsoft 365 (中國)

    • Connect-ExchangeOnline -ExchangeEnvironmentName O365China
    • Connect-IPPSSession -ConnectionUri https://ps.compliance.protection.partner.outlook.cn/powershell-liveid -AzureADAuthorizationEndpointUri https://login.chinacloudapi.cn/organizations*

    *結尾為 /organizations的 AzureADAuthorizationEndpointUri 值僅允許公司或學校帳戶。 結尾為 的 /common 舊版 URI 值仍然可以運作,但可能會提示您在個人帳戶和公司或學校帳戶之間做選擇。 在應排除消費者帳戶的企業案例中,我們建議使用 /organizations URI 值。

  • 如果 Connect-IPPSSession 命令顯示登入提示,請在 Connect-IPPSSession 命令之前執行命令: $Global:IsWindows = $true

  • 若要執行電子文件探索 Cmdlet,請使用 ExchangeOnlineManagement 3.10.1 或更新版本,並將 EnableSearchOnlySession 參數新增至 Connect-IPPSSession 命令。

  • 使用憑證指紋連線

    注意事項

    只有 Microsoft Windows 才支援 CertificateThumbprint 參數。

    憑證必須安裝在執行命令的電腦上。 該憑證應安裝在使用者憑證存放區中。

    • Exchange Online PowerShell

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
    • 安全性與合規性 PowerShell

      Connect-IPPSSession -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
  • 使用憑證物件連線

    不需要在執行命令的電腦上安裝憑證。 您可以從遠端儲存憑證物件。 執行指令碼時,會擷取憑證。

    • Exchange Online PowerShell

      Connect-ExchangeOnline -Certificate <%X509Certificate2 Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
    • 安全性與合規性 PowerShell

      Connect-IPPSSession -Certificate <%X509Certificate2 Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
  • 使用本機憑證連線

    注意事項

    使用 ConvertTo-SecureString 命令在本機儲存憑證的密碼,會違背自動化案例中安全連線方法的用途。 使用 Get-Credential 命令安全地提示您輸入憑證密碼並不適合自動化案例。 換句話說,使用本機憑證確實沒有自動化 安全的方式進行連線。

    • Exchange Online PowerShell

      Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (Get-Credential).password -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
    • 安全性與合規性 PowerShell

      Connect-IPPSSession -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (Get-Credential).password -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      

設定僅限應用程式的驗證

使用應用程式標的進行驗證需要初始登入。 應用程式和服務主體可互換使用,但是應用程式就像是課程標的,而服務主體就像是課程的實例。 如需詳細資訊,請參閱 Microsoft Entra ID 中的應用程式和服務主體物件

如需有關在 Microsoft Entra ID 中建立應用程式的詳細視覺化流程,請參閱 https://aka.ms/azuread-app

  1. 在 Microsoft Entra ID 中註冊應用程式

  2. 指派 API 權限給應用程式

    應用程式物件預設具有 委派 API 權限 Microsoft Graph>User.Read 。 新增符合 PowerShell 連線的 應用程式 權限:

    • Exchange Online PowerShell (Connect-ExchangeOnline) Office 365 Exchange Online>Exchange.ManageAsApp
    • 安全性 & 合規性 PowerShell (Connect-IPPSSession) Microsoft Exchange Online保護>Exchange.ManageAsApp

    如果應用程式連線到兩個環境,請新增這兩個許可權。 針對每個權限授予全租用戶系統管理員同意。

  3. 產生憑證

    • 針對 Microsoft Entra ID 中的僅限應用程式驗證,您通常會使用憑證來要求存取權。 任何擁有憑證及其私密金鑰的人都可以使用具有授與應用程式權限的應用程式。

    • 建立並設定 X.509 憑證,用於在要求僅限應用程式存取權杖時,根據 Microsoft Entra ID 驗證您的應用程式。 憑證可以自我簽署。

    • 此程序類似於為使用者帳戶產生密碼。 如需在 PowerShell 中產生憑證的指示,請參閱本文稍後的 本節

      注意事項

      密碼編譯: 新一代 (CNG) 憑證不支援用於使用 Exchange 進行僅限應用程式驗證。 預設會在新式版本的 Windows 中建立 CNG 憑證。 您必須使用 CSP 金鑰提供者的憑證。 本節 涵蓋建立 CSP 憑證的兩種支援方法。

  4. 將憑證附加至 Microsoft Entra 應用程式

  5. 將角色權限指派給應用程式

步驟 1:在 Microsoft Entra ID 中註冊應用程式

注意事項

如果您遇到問題,請檢查 必要權限,以確保您的帳戶可以建立身分識別。

  1. 在 開啟 Microsoft Entra 系統管理中心https://portal.azure.com/

  2. 在頁面頂端的 [搜尋] 方塊中,開始輸入應用程式註冊,然後從 [服務] 區段的結果中選取 [應用程式註冊]。

    螢幕擷取畫面,顯示 Azure 入口網站首頁上的搜尋結果中的應用程式註冊。

    或者,若要直接移至 [應用程式註冊] 頁面,請使用 https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade

  3. [應用程式登錄] 頁面上選取 [新增登錄]

    在 [應用程式註冊] 頁面上選取 [新增註冊]。

  4. 在出現的 [註冊應用程式] 頁面中,設定下列設定:

    • 名稱:輸入描述性的文字。 例如,ExO PowerShell CBA。

    • 支援的帳戶類型: 確認已選取 [ 僅在此組織目錄中的帳戶] (<[僅限您的組織名稱> - 單一租用戶) ]。

      注意事項

      若要針對Exchange Online委派案例使應用程式多租用戶,請選取值 帳戶 (任何Microsoft Entra組織目錄 - 多租用戶)

    • 重新導向 URI (選用) :此設定為選用。 如果您需要使用它,請設定下列設定:

      • 平台:選取 [網路]。
      • URI:輸入存取權杖的傳送 URI。

      注意事項

      您無法為 原生應用程式建立認證,因為您無法將原生應用程式用於自動化應用程式。

      註冊應用程式。

    [應用程式註冊] 頁面上完成工作後,選取 [註冊]。

  5. 系統會將您帶往已註冊應用程式的 [概觀 ] 頁面。 讓此頁面保持開啟。 您可以在下一個步驟中使用它。

步驟2:指派 API 權限給應用程式

選擇本節中其中 一種 方法,將 API 權限指派給應用程式:

  • 從入口網站選取並指派 API 權限。
  • 修改應用程式資訊清單以指派 API 權限。 (Microsoft 365 GCC High 和 DoD 組織應該) 使用此方法。

從入口網站選取並指派 API 權限

  1. 在應用程式概觀頁面上,從管理區段選取 API 權限

    在應用程式概觀頁面上選取 API 權限。

  2. 在應用程式 API 權限頁面 上,選取 新增權限

    在應用程式的 [API 權限] 頁面上選取 [新增權限]。

  3. 在開啟的 [要求 API 權限] 飛出視窗中,選取 [ 我的組織使用的 API] 索引標籤,然後選取符合 PowerShell 連線的 API:

    • Exchange Online PowerShell (Connect-ExchangeOnline) :搜尋並選取 Office 365 Exchange Online
    • 安全性 & 合規性 PowerShell (Connect-IPPSSession) : 搜尋並選取 [Microsoft Exchange Online保護]。

    如果應用程式同時連線到兩個環境,請先針對另一個 API 重複步驟 2 到 5,然後再繼續執行步驟 6。

    下列螢幕擷取畫面顯示 Exchange Online PowerShell 選項:

    在 [我的組織使用的 API] 索引標籤上尋找並選取Office 365 Exchange Online。

  4. 在 [ 您的應用程式需要何種類型的權限? ] 飛出視窗上,選取 [ 應用程式權限]。

  5. 在出現的權限清單中,展開 [Exchange],選取 [Exchange.ManageAsApp],然後選取 [ 新增權限]。

    從 [應用程式權限] 索引標籤尋找並選取 Exchange.ManageAsApp 權限。

  6. 返回應用程式 API 權限 頁面,驗證已列出每個必要的 Exchange.ManageAsApp 權限,並包含下列值:

    • 類型應用程式

    • 需要管理員同意是的

    • 狀態:目前不正確的值為 [組織>] 未<授與

      請選取 [組織>] 的 [授與系統管理員同意] 來<變更此值,閱讀開啟的確認對話方塊,然後選取 [是]。

      Exchange.ManageAsApp 權限需要管理員同意,但未授與。

      現在會為組織>授予<狀態值。

      已授與 Exchange.ManageAsApp 權限的管理員同意。

  7. 針對預設的 Microsoft Graph>User.Read 項目,請選取 ...>撤銷系統管理員同意,然後在開啟的確認對話方塊中選取 [是 ],將 狀態 傳回預設空白值。

    已從預設 Microsoft Graph User.Read 權限移除管理員同意。

  8. 關閉目前的 [API 權限] 頁面 (不是瀏覽器索引標籤),以回到 [應用程式註冊] 頁面。 您可以在接下來的步驟中使用 [應用程式註冊] 頁面。

修改應用程式資訊清單以指派 API 權限

注意事項

本節中的程序會將應用程式的現有預設權限 附加 (委派的 User.Read 權限 Microsoft Graph) 具有所需的應用程式 Exchange.ManageAsApp 權限。 使用符合 PowerShell 連線的資源值。 如果應用程式同時連線至 Exchange Online PowerShell 和 Security & Compliance PowerShell,請同時包含 Exchange 資源物件和一個 Microsoft Graph 資源物件。

  1. 在應用程式概觀頁面上,選取 [管理] 區段中的 [資訊清單]。

    選取應用程式概觀頁面上的 [資訊清單]。

  2. 在應用程式 資訊清單頁面 上,尋找 requiredResourceAccess 第 42 行) 上或大約第 42 行的項目 (。 針對 Exchange Online PowerShell,請使項目看起來像以下代碼片段:

    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
            "resourceAccess": [
                {
                    "id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
                    "type": "Role"
                }
            ]
        },
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                    "type": "Scope"
                }
            ]
        }
    ],
    

    注意事項

    為了在任何環境中的安全性 & 合規性 PowerShell,包括 Microsoft 365 GCC High 和 DoD,請針對項目使用 requiredResourceAccess 以下值:

    "requiredResourceAccess": [
        {
            "resourceAppId": "00000007-0000-0ff1-ce00-000000000000",
            "resourceAccess": [
                {
                    "id": "455e5cd2-84e8-4751-8344-5672145dfa17",
                    "type": "Role"
                }
            ]
        },
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                    "type": "Scope"
                }
            ]
        }
    ],
    

    [資訊清單 ] 頁面上完成工作後,選取 [儲存]。

  3. 仍在 [資訊清單] 頁面上,從 [管理] 區段選取 [API 權限]。

    從 [資訊清單] 頁面選取 API 權限。

  4. API 權限 頁面上,驗證已列出每個必要的 Exchange.ManageAsApp 權限,並包含下列值:

    • 類型應用程式

    • 需要管理員同意是的

    • 狀態:目前不正確的值為 [組織>] 未<授與

      選取 [組織>] 的 <[授與系統管理員同意] 來變更 [狀態] 值,閱讀開啟的確認對話方塊,然後選取 [是]。

      Exchange.ManageAsApp 權限需要管理員同意,但未授與。

      現在會為組織>授予<狀態值。

      已授與 Exchange.ManageAsApp 權限的管理員同意。

  5. 針對預設的 Microsoft Graph>User.Read 項目,請選取 ...>撤銷系統管理員同意,然後在開啟的確認對話方塊中選取 [是 ],將 狀態 傳回預設空白值。

    已從預設 Microsoft Graph User.Read 權限移除管理員同意。

  6. 關閉目前的 [API 權限] 頁面 (不是瀏覽器索引標籤),以回到 [應用程式註冊] 頁面。 您可以在接下來的步驟中使用 [應用程式註冊] 頁面。

步驟 3:產生憑證

注意事項

密碼編譯:如本文所述,僅限應用程式驗證不支援新一代 (CNG) 憑證。 預設會在新式 Windows 版本中建立 CNG 憑證。 您必須使用 CSP 金鑰提供者提供的憑證。

您可以使用自我簽署憑證、由內部公開金鑰基礎結構或 PKI (例如,Active Directory 憑證服務或 AD CS) 所發行的憑證,或由信任的商業憑證授權單位 (CA) 所發行的憑證。

X.509 憑證的唯一需求是可匯出且可用的私密金鑰 (.pfx) 和公用憑證 (.cer) 。

若為 自我簽署憑證,請使用下列其中一種方法:

  • (建議) :在提升權限的 PowerShell 工作階段中使用 New-SelfSignedCertificateExport-CertificateExport-PfxCertificate Cmdlet, (選取 [以 系統管理員身分執行 ] 後開啟的 PowerShell 視窗) 要求自我簽署憑證,並將憑證的私密金鑰和公開金鑰匯出至 SHA1 (檔案) 。 例如:

    # Create a self-signed certificate
    $mycert = New-SelfSignedCertificate -DnsName "contoso.org" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange
    
    # Export the X.509 certificate and the associated private key to a password-protected .pfx file
    $mycert | Export-PfxCertificate -FilePath mycert.pfx -Password (Get-Credential).password
    
    # Export the X.509 public certificate to a .cer file
    $mycert | Export-Certificate -FilePath mycert.cer
    
  • 使用 Create-SelfSignedCertificate 指令碼來產生 SHA1 憑證。

    .\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2026-01-06 -EndDate 2027-01-06
    

步驟 4:將憑證附加至 Microsoft Entra 應用程式

向應用程式註冊憑證之後,您可以使用私密金鑰 (.pfx 檔案) 或指紋來進行驗證。

  1. 步驟 2 結尾的 [應用程式註冊] 頁面上的 [擁有的應用程式] 索引標籤上,選取您的應用程式。

    如果您需要返回 應用程式註冊 頁面,請使用 https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps,確認已選取 [擁有的應用程式 ] 索引標籤,然後選取您的應用程式。

    您會在其中選取應用程式的 [應用程式註冊] 頁面。

  2. 在開啟的應用程式頁面上,從 [管理] 區段選取 [憑證 & 密碼]。

    在應用程式內容頁面上選取 [憑證] & [密碼]。

  3. [憑證 & 密碼 ] 頁面上,選取 [上傳憑證]。

    選取 [憑證 & 密碼] 頁面上的 [上傳憑證]。

    在開啟的 [上傳憑證] 飛出視窗中,瀏覽至您在步驟 3 匯出) 公用憑證 (.cer 檔案,然後選取 [新增]。

    瀏覽至憑證,然後選取 [新增]。

    憑證現在會顯示在 [憑證] 區段中。

    顯示已新增憑證的應用程式頁面。

  4. 關閉目前的 [憑證及祕密] 頁面,然後關閉 [應用程式註冊] 頁面,以回到 https://portal.azure.com/ 的主頁面。 您可以在下一個步驟中使用它。

如果您在步驟 1 中針對 Exchange Online 委派案例建立應用程式多租用戶,您必須將系統管理員同意授予 Exchange.ManageAsApp 權限,應用程式才能在每個租用戶組織的 Exchange Online 中執行 cmdlet。 您必須為每個客戶租用戶產生系統管理員同意 URL。 在任何人使用多租用戶應用程式連線到租用戶組織中的 Exchange Online 之前,客戶租用戶中的系統管理員應該開啟以下 URL:

https://login.microsoftonline.com/<tenant-id>/adminconsent?client_id=<client-id>&scope=https://outlook.office365.com/.default

  • <tenant-id> 是客戶的租用戶識別碼。
  • <client-id> 是多租用戶應用程式的識別碼。
  • 預設範圍是用來授與應用程式權限。

如需 URL 語法的詳細資訊,請參閱 向目錄管理員要求權限

步驟 5:將角色權限指派給應用程式

您有下列選項:

  • 選項 1:將 Microsoft Entra 角色指派給應用程式:使用內建的 Microsoft Entra 角色來授與角色的所有權限。 您無法自訂或限定這些角色。

  • 選項 2:使用服務主體將自訂角色群組指派給應用程式: 在下列案例中,建議使用此選項:

    • 您必須限制應用程式中的可用命令。
    • 您必須使用寫入範圍來限制可以修改的收件者。
  • 選項 3:將 Microsoft Entra 角色與自訂角色群組結合:RBAC 結合來自所有來源的權限。 我們建議使用此方法來擴充內建 Microsoft Entra 角色的功能。 例如,您可以從自訂角色授予額外的權限來擴充 Exchange 收件者系統管理員 角色的功能。

下列小節將說明這些選項。

注意事項

針對 Exchange Online 委派案例中的多租用戶應用程式,您必須在每個客戶租用戶中指派權限。

選項 1:將 Microsoft Entra 角色指派給應用程式

下表說明支援的 Microsoft Entra 角色:

角色 Exchange Online
PowerShell
安全性與合規性
PowerShell
合規性系統管理員
Exchange 系統管理員¹
Exchange 收件者系統管理員
全域系統管理員¹ ²
全域閱讀程式
Helpdesk 系統管理員
安全性系統管理員¹
安全性讀取者

¹全域管理員和 Exchange 管理員角色為 Exchange Online PowerShell 中的任何工作提供必要的權限。 例如:

  • 收件者管理。
  • 安全性和保護功能。 例如,反垃圾郵件、反惡意程式碼、防網路釣魚,以及相關聯的報告。

安全管理員角色沒有執行這些相同任務的必要權限。

² Microsoft 強烈主張最低權限原則。 僅為帳戶分配執行任務所需的最低權限有助於降低安全風險並加強組織的整體保護。 全域系統管理員是具有高度權限的角色,您應將其限制為緊急情況,或當您無法使用其他角色時。

如需在 Microsoft Entra ID 中指派角色的一般指示,請參閱將 Microsoft Entra 角色指派給使用者

注意事項

下列步驟對 Exchange Online PowerShell 和安全性與合規性 PowerShell 稍有不同。 這兩個環境的步驟都會顯示出來。 若要設定兩個環境的角色,請重複本節中的步驟。

  1. 在 Microsoft Entra 系統管理中心https://portal.azure.com/,開始在頁面頂端的 [搜尋] 方塊中輸入角色和系統管理員,然後從 [服務] 區段的結果中選取 Microsoft Entra 角色和系統管理員

    螢幕擷取畫面,顯示Azure 入口網站首頁上的搜尋結果中的Microsoft Entra角色和系統管理員。

    或者,若要直接移至 Microsoft Entra 角色和系統管理員頁面,請使用 https://portal.azure.com/#view/Microsoft_AAD_IAM/AllRolesBlade

  2. 在開啟的 [角色和系統管理員] 頁面上,尋找並選取其中一個支援的角色,方法是按一下結果中的角色名稱 (而非核取方塊)。

    • Exchange Online PowerShell: 例如,尋找並選取 Exchange 系統管理員角色。

      按一下角色名稱以尋找並選取支援的 Exchange Online PowerShell 角色。

    • 安全性 & 合規性 PowerShell: 例如,尋找並選取 合規性系統管理員 角色。

      按一下角色名稱,尋找並選取支援的 & 合規性安全性 PowerShell 角色。

  3. 在開啟的 [作業] 頁面上,選取 [新增作業]。

    • Exchange Online PowerShell

      選取 Exchange Online PowerShell 的角色指派頁面上的新增指派。

    • 安全性與合規性 PowerShell

      在 [安全性 & 合規性] PowerShell 的角色指派頁面上選取 [新增指派]。

  4. [新增指派] 飛出視窗中,尋找並選取您在步驟 1 中建立的應用程式。

    在 [新增指派] 飛出視窗上,尋找並選取您的應用程式。

    完成 [新增作業] 飛出視窗後,選取 [新增]。

  5. 返回 [指派] 頁面,確認角色已指派給應用程式。

    • Exchange Online PowerShell

      將應用程式新增至 Exchange Online PowerShell 角色之後的 [角色指派] 頁面。

    • 安全性與合規性 PowerShell

      之後的角色指派頁面,將應用程式新增至安全性 & 合規性 PowerShell 的角色。

選項 2:使用服務主體將自訂角色群組指派給應用程式

注意事項

您必須先連線 Exchange Online PowerShell 或 Security & Compliance PowerShell,才能完成建立新服務主體的步驟。 在不連線到 PowerShell 的情況下建立新的服務主體無法運作, (需要您的Azure App識別碼和物件識別碼來建立新的服務主體) 。

如需建立自訂角色群組的詳細資訊,請參閱在 Exchange Online 中建立角色群組 和在 Microsoft Defender 入口網站中建立Email &共同作業角色群組。 您指派給應用程式的自訂角色群組可以包含內建和自訂角色的任何組合。

若要使用服務主體將自訂角色群組指派給應用程式,請執行下列步驟:

  1. Microsoft Graph PowerShell 中,執行下列命令,將您在步驟 1 中註冊的 Microsoft Entra 應用程式詳細資料儲存在變數中:

    Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All,Application.Read.All
    
    $<VariableName1> = Get-MgServicePrincipal -Filter "DisplayName eq '<AppName>'"
    

    例如:

    Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All,Application.Read.All
    
    $AzureADApp = Get-MgServicePrincipal -Filter "DisplayName eq 'ExO PowerShell CBA'"
    

    如需詳細的語法和參數資訊,請參閱 Get-MgServicePrincipal

  2. 在相同的 PowerShell 視窗中,連線至 Exchange Online PowerShell 或安全性 & 合規性 PowerShell,然後執行下列命令來:

    • 建立 Microsoft Entra 應用程式的服務主體物件。
    • 將服務主體的詳細資料儲存在變數中,以便在下一個步驟中使用。
    New-ServicePrincipal -AppId $<VariableName1>.AppId -ObjectId $<VariableName1>.Id -DisplayName "<Descriptive Name>"
    
    $<VariableName2> = Get-ServicePrincipal -Identity "<Descriptive Name>"
    

    例如:

    New-ServicePrincipal -AppId $AzureADApp.AppId -ObjectId $AzureADApp.Id -DisplayName "SP for Azure AD App ExO PowerShell CBA"
    
    $SP = Get-ServicePrincipal -Identity "SP for Azure AD App ExO PowerShell CBA"
    

    如需詳細的語法和參數資訊,請參閱 New-ServicePrincipal

  3. 在 Exchange Online PowerShell 或 Security & Compliance PowerShell 中,執行下列命令,將服務主體新增為自訂角色群組的成員:

    Add-RoleGroupMember -Identity "<CustomRoleGroupName>" -Member <$<VariableName2>.Identity | $<VariableName2>.ObjectId | $<VariableName2>.Id>
    

    例如:

    Add-RoleGroupMember -Identity "Contoso View-Only Recipients" -Member $SP.Identity
    

    如需詳細的語法及參數資訊,請參閱 Add-RoleGroupMember