管理應用程式同意原則

應用程式同意原則是管理應用程式存取組織中數據的許可權的方法。 他們用來控制使用者可以同意哪些應用程式,並確保應用程式符合特定準則,才能存取數據。 這些原則可協助組織控制其數據,並確保它們只授與信任應用程式的存取權。

在本文中,您將瞭解如何管理內建和自定義應用程式同意原則,以控制何時可授與同意。

透過 Microsoft Graph 和 Microsoft Graph PowerShell,您可以檢視和管理應用程式同意原則。

應用程式同意原則包含一或多個「包含」條件集和零或多個「排除」條件集。 若要在應用程式同意原則中考慮某個事件,它必須符合 至少 一個「包含」條件集,且不得符合 任何 「排除」條件集。

每個條件集都包含數個條件。 若要讓事件符合條件集, 必須符合條件集中的所有 條件。

標識符開頭為 「microsoft-」 的應用程式同意原則是內建原則。 其中一些內建原則會用於現有的內建目錄角色。 例如,microsoft-application-admin應用程式同意原則描述允許應用程式 管理員 istrator 和 Cloud Application 管理員 istrator 角色授與全租用戶系統管理員同意的條件。 內建原則可用於自定義目錄角色和設定使用者同意設定,但無法編輯或刪除。

必要條件

  • 具有下列其中一個角色的用戶或服務:
    • 全域 管理員 istrator 目錄角色
    • 特殊許可權角色 管理員 istrator 目錄角色
    • 具有管理應用程式同意原則所需許可權的 自定義目錄角色
    • 以應用程式或服務身分連線時,Microsoft Graph 應用程式角色 (應用程式權限) Policy.ReadWrite.PermissionGrant

若要使用 Microsoft Graph PowerShell 管理應用程式同意原則,請連線至 Microsoft Graph PowerShell

Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"

最好先熟悉組織中的現有應用程式同意原則:

  1. 列出所有應用程式同意原則:

    Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description
    
  2. 檢視原則的「包含」條件集:

    Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
    
  3. 檢視 「排除」條件集:

    Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
    

請遵循下列步驟來建立自定義應用程式同意原則:

  1. 建立新的空白應用程式同意原則。

    New-MgPolicyPermissionGrantPolicy `
        -Id "my-custom-policy" `
        -DisplayName "My first custom consent policy" `
        -Description "This is a sample custom app consent policy."
    
  2. 新增 「include」 條件集。

    # Include delegated permissions classified "low", for apps from verified publishers
    New-MgPolicyPermissionGrantPolicyInclude `
        -PermissionGrantPolicyId "my-custom-policy" `
        -PermissionType "delegated" `
        -PermissionClassification "low" `
        -ClientApplicationsFromVerifiedPublisherOnly
    

    重複此步驟以新增更多「包含」條件集。

  3. 選擇性地新增 「排除」條件集。

    # Retrieve the service principal for the Azure Management API
    $azureApi = Get-MgServicePrincipal -Filter "servicePrincipalNames/any(n:n eq 'https://management.azure.com/')"
    
    # Exclude delegated permissions for the Azure Management API
    New-MgPolicyPermissionGrantPolicyExclude `
        -PermissionGrantPolicyId "my-custom-policy" `
        -PermissionType "delegated" `
        -ResourceApplication $azureApi.AppId
    

    重複此步驟以新增更多「排除」條件集。

建立應用程式同意原則之後,您必須將它指派給 Microsoft Entra ID 中的自定義角色。 接著,您必須將使用者指派給該自定義角色,該角色會附加至您所建立的應用程式同意原則。 如需如何將應用程式同意原則指派給自定義角色的詳細資訊,請參閱 自定義角色的應用程式同意許可權。

下列 Cmdlet 示範如何刪除自定義應用程式同意原則。

   Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-policy"

若要管理應用程式同意原則,請使用必要條件一節中列出的其中一個角色登入 Graph 總 管。

您必須同意 Policy.ReadWrite.PermissionGrant 許可權。

最好先熟悉組織中的現有應用程式同意原則:

  1. 列出所有應用程式同意原則:

    GET /policies/permissionGrantPolicies?$select=id,displayName,description
    
  2. 檢視原則的「包含」條件集:

    GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/includes
    
  3. 檢視 「排除」條件集:

    GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/excludes
    

請遵循下列步驟來建立自定義應用程式同意原則:

  1. 建立新的空白應用程式同意原則。

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies
    Content-Type: application/json
    
    {
      "id": "my-custom-policy",
      "displayName": "My first custom consent policy",
      "description": "This is a sample custom app consent policy"
    }
    
  2. 新增 「include」 條件集。

    針對已驗證發行者的應用程式,包含分類為「低」的委派許可權

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-policy }/includes
    Content-Type: application/json
    
    {
      "permissionType": "delegated",
      "PermissionClassification": "low",
      "clientApplicationsFromVerifiedPublisherOnly": true
    }
    

    重複此步驟以新增更多「包含」條件集。

  3. 選擇性地新增 「排除」條件集。 排除 Azure 管理 API 的委派許可權 (appId 46e6adf4-a9cf-4b60-9390-0ba6fb00bf6b)

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/my-custom-policy /excludes
    Content-Type: application/json
    
    {
      "permissionType": "delegated",
      "resourceApplication": "46e6adf4-a9cf-4b60-9390-0ba6fb00bf6b "
    }
    

    重複此步驟以新增更多「排除」條件集。

建立應用程式同意原則之後,您必須將它指派給 Microsoft Entra ID 中的自定義角色。 接著,您必須將使用者指派給該自定義角色,該角色會附加至您所建立的應用程式同意原則。 如需如何將應用程式同意原則指派給自定義角色的詳細資訊,請參閱 自定義角色的應用程式同意許可權。

  1. 下列顯示如何刪除自定義應用程式同意原則。

    DELETE https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/ my-custom-policy
    

警告

無法還原已刪除的應用程式同意原則。 如果您不小心刪除自定義應用程式同意原則,則必須重新建立原則。

支援的條件

下表提供應用程式同意原則的支持條件清單。

Condition 描述
PermissionClassification 要授與之許可權的許可權分類,或「全部」以符合任何許可權分類(包括未分類的許可權)。 預設值為 「all」。
PermissionType 正在授與之許可權的許可權類型。 針對應用程式許可權使用 「應用程式」(例如應用程式角色)或「委派」來取得委派的許可權。

注意:「delegatedUserConsentable」 值表示 API 發行者未設定的委派許可權,以要求管理員同意。 此值可用於內建許可權授與原則中,但不能用於自定義許可權授與原則。 必要。
ResourceApplication 要授與許可權的資源應用程式 AppId,或要與任何資源應用程式或 API 相符的「任何」許可權。 預設值為 「any」。。
權限 要比對之特定許可權的許可權標識符清單,或具有單一值 「all」 的清單,以符合任何許可權。 預設值為單一值 「all」。
- 委派的許可權標識碼可以在 API ServicePrincipal 物件的 OAuth2Permissions 屬性中找到
- 您可以在 API ServicePrincipal 物件的 AppRoles 屬性中找到應用程式權限識別碼。
ClientApplicationIds 用戶端應用程式要比對的 AppId 值清單,或具有單一值 「all」 的清單,以符合任何用戶端應用程式。 預設值為單一值 「all」。
ClientApplicationTenantIds 註冊用戶端應用程式的 Microsoft Entra 租使用者識別碼清單,或具有單一值 「all」 的清單,以符合任何租用戶中註冊的用戶端應用程式。 預設值為單一值 「all」。
ClientApplicationPublisherIds 用戶端應用程式已驗證發行者的 Microsoft 合作夥伴網路 (MPN) 識別碼清單,或具有單一值 「all」 的清單,以符合來自任何發行者的用戶端應用程式。 預設值為單一值 「all」。
ClientApplicationsFromVerifiedPublisherOnly 將此參數設定為只與已驗證發行者在用戶端應用程式上相符。 停用此參數 (-ClientApplicationsFromVerifiedPublisherOnly:$false) 以在任何用戶端應用程式上比對,即使它沒有已驗證的發行者也一樣。 預設值為 $false
scopeType 預先核准套用的資源範圍類型。 可能的值:group針對群組小組chat聊天tenant全租使用者存取。 必要。
sensitivityLabels 適用於範圍類型的敏感度標籤,且不會預先核准。 它可讓您保護機密組織數據。 瞭解 敏感度標籤注意: 聊天資源 尚不支援 sensitivityLabels。

下一步

若要取得協助或尋找問題解答: