グループ所有者のアプリ同意ポリシーを管理する

アプリの同意ポリシーは、アプリが組織内のデータにアクセスするために必要なアクセス許可を管理する方法です。 ユーザーが同意できるアプリを制御し、ユーザーがデータにアクセスする前にアプリが特定の条件を満たしていることを確認するために使用されます。 これらのポリシーは、組織がデータの制御を維持し、信頼できるアプリのみがアクセスできるようにするのに役立ちます。

この記事では、組み込みおよびカスタムのアプリ同意ポリシーを管理して、どのような場合にグループ所有者の同意を許可できるかを制御する方法について説明します。

Microsoft GraphMicrosoft Graph PowerShell を使用すると、グループ所有者の同意ポリシーを表示および管理できます。

グループ所有者の同意ポリシーは、1 つ以上の "包含" 条件セットと、0 個以上の "除外" 条件セットで構成されます。 イベントがグループ所有者の同意ポリシーにおいて考慮されるには、"包含" 条件セットがいずれの "除外" 条件セットとも一致することはできません。

各条件セットは、いくつかの条件で構成されます。 イベントが条件セットに一致するためには、条件セット内の "すべての" 条件が満たされる必要があります。

ID が "microsoft-" で始まるグループ所有者の同意ポリシーは、組み込みのポリシーです。 たとえば、グループ所有者の microsoft-pre-approval-apps-for-group 同意ポリシーでは、管理者が自ら所有するグループのデータにアクセスするために、事前に承認された一覧からアプリケーションに同意を付与することがグループ所有者に許可されている条件について説明します。 組み込みのポリシーは、カスタム ディレクトリ ロール内で、また、ユーザーの同意設定を構成するために使用できますが、編集または削除することはできません。

前提条件

Microsoft Graph PowerShell を使用してアプリケーションのグループ所有者の同意ポリシーを管理するには、Microsoft Graph PowerShell に接続し、「前提条件」セクションに記載されているロールのいずれかでサインインします。 Policy.ReadWrite.PermissionGrant アクセス許可に同意する必要もあります。

# change the profile to beta by using the `Select-MgProfile` command
Select-MgProfile -Name "beta"
Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"

グループ所有者の同意設定が他の方法で承認されているかどうかを確認する方法について説明します。

  1. グループ所有者の同意設定の現在の値を取得する

      Get-MgPolicyAuthorizationPolicy | select -ExpandProperty DefaultUserRolePermissions | ft PermissionGrantPoliciesAssigned
    

    ManagePermissionGrantPoliciesForOwnedResourcePermissionGrantPoliciesAssigned で返された場合、グループ所有者の同意設定が他の方法で承認されている可能性があります。

  2. ポリシーのスコープが group に設定されているかどうかを確認します。

       Get-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | Select -ExpandProperty AdditionalProperties
    

ResourceScopeType == group の場合、グループ所有者の同意設定は他の方法で承認されています。 さらに、グループのアプリ同意ポリシーに microsoft-pre-approval-apps-for-group が割り当てられている場合は、テナントに対して事前適用機能が有効になっていることを意味します。

まず、組織内の既存のグループ所有者の同意ポリシーについて理解しておくことをお勧めします。

  1. グループ所有者の同意ポリシーを一覧表示する

    Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description
    
  2. ポリシーの "包含" 条件セットを表示します。

    Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | fl
    
  3. "除外" 条件セットを表示します。

    Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | fl
    

カスタムのグループ所有者の同意ポリシーを作成するには、次の手順に従います。

  1. 新しい空のグループ所有者の同意ポリシーを作成します。

    New-MgPolicyPermissionGrantPolicy `
        -Id "my-custom-app-consent-policy-for-group" `
        -DisplayName "My first custom app consent policy for group" `
        -Description "This is a sample custom app consent policy for group." `
        -AdditionalProperties @{includeAllPreApprovedApplications = $false; resourceScopeType = "group"}
    
  2. "包含" 条件セットを追加します。

    # Include delegated permissions classified "low", for apps from verified publishers
    New-MgPolicyPermissionGrantPolicyInclude `
        -PermissionGrantPolicyId "my-custom-app-consent-policy-for-group" `
        -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-app-consent-policy-for-group" `
        -PermissionType "delegated" `
        -ResourceApplication $azureApi.AppId
    

    この手順を繰り返して、さらに "除外" 条件セットを追加します。

グループのアプリ同意ポリシーが作成されたら、このポリシーに従って、グループ所有者の同意を許可することができます。

  1. カスタムのグループ所有者の同意ポリシーを削除する方法を次に示します。

    Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-app-consent-policy-for-group"
    

グループ所有者の同意ポリシーを管理するには、前提条件セクションに記載されているいずれかのロールで Graph エクスプローラーにサインインします。 Policy.ReadWrite.PermissionGrant アクセス許可に同意する必要もあります。

グループ所有者の同意設定が他の方法で承認されているかどうかを確認する方法について説明します。

  1. 現在のポリシー値を取得する

    GET /policies/authorizationPolicy
    

    ManagePermissionGrantPoliciesForOwnedResource が表示されたら、グループ所有者の同意設定が他の方法で承認されている可能性があります。

  2. ポリシーのスコープが group に設定されているかどうかを確認する

    GET /policies/permissionGrantPolicies/{ microsoft-all-application-permissions-for-group }
    

    resourceScopeType == group の場合、グループ所有者の同意設定は他の方法で承認されています。 さらに、グループのアプリ同意ポリシーに microsoft-pre-approval-apps-for-group が割り当てられている場合は、テナントに対して事前適用機能が有効になっていることを意味します。

まず、組織内の既存のグループ所有者の同意ポリシーについて理解しておくことをお勧めします。

  1. すべてのアプリ同意ポリシーを一覧表示します。

    GET /policies/permissionGrantPolicies
    
  2. ポリシーの "包含" 条件セットを表示します。

    GET /policies/permissionGrantPolicies/{ microsoft-all-application-permissions-for-group }/includes
    
  3. "除外" 条件セットを表示します。

    GET /policies/permissionGrantPolicies/{ microsoft-all-application-permissions-for-group }/excludes
    

カスタムのグループ所有者の同意ポリシーを作成するには、次の手順に従います。

  1. 新しい空のグループ所有者の同意ポリシーを作成します。

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies
    
    {
      "id": "my-custom-app-consent-policy-for-group",
      "displayName": "My first custom app consent policy for group",
      "description": "This is a sample custom app consent policy for group",
      "includeAllPreApprovedApplications": false,
      "resourceScopeType": "group"
    }
    
  2. "包含" 条件セットを追加します。

    検証済みの発行元からのアプリに対して、"低" に分類されている委任されたアクセス許可を含める

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-app-consent-policy-for-group }/includes
    
    {
      "permissionType": "delegated",
      "permissionClassification": "low",
      "clientApplicationsFromVerifiedPublisherOnly": true
    }
    

    この手順を繰り返して、さらに "包含" 条件セットを追加します。

  3. 必要に応じて、"除外" 条件セットを追加します。 Azure Management API の委任されたアクセス許可を除外する (appId 00001111-aaaa-2222-bbbb-3333cccc4444)

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-app-consent-policy-for-group }/excludes
    
    {
      "permissionType": "delegated",
      "resourceApplication": "00001111-aaaa-2222-bbbb-3333cccc4444 "
    }
    

    この手順を繰り返して、さらに "除外" 条件セットを追加します。

グループ所有者の同意ポリシーが作成されたら、このポリシーに従って、グループ所有者の同意を許可することができます。

  1. カスタムのグループ所有者の同意ポリシーを削除する方法を次に示します。

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

警告

削除したグループ所有者の同意ポリシーは復元できません。 カスタムのグループ所有者の同意ポリシーを誤って削除した場合は、ポリシーを再作成する必要があります。

サポートされている条件

次の表に、グループ所有者の同意ポリシーでサポートされている条件の一覧を示します。

条件 説明
PermissionClassification 付与されるアクセス許可を表すアクセス許可の分類。または、任意のアクセス許可の分類 (分類されていないアクセス許可を含む) と一致する "all"。 既定値は "all" です。
PermissionType 付与されるアクセス許可を表すアクセス許可の種類。 アプリケーションのアクセス許可 (アプリ ロールなど) を表す "application"、または委任されたアクセス許可を表す "delegated" を使用します。

: 値 "delegatedUserConsentable" は、API 発行元によって管理者の同意を必要とするように構成されていない委任されたアクセス許可を示しています。 この値は、組み込みのアクセス許可付与ポリシーで使用できますが、カスタムのアクセス許可付与ポリシーでは使用できません。 必須。
ResourceApplication アクセス許可が付与されるリソース アプリケーション (API など) の AppId。または、任意のリソース アプリケーションや API と一致する "any"。 既定値は "any" です。
アクセス許可 一致する特定のアクセス許可のアクセス許可 ID の一覧。または、任意のアクセス許可と一致する "all" という単一の値。 既定値は単一の値 "all" です。
- 委任されたアクセス許可 ID は、API の ServicePrincipal オブジェクトの OAuth2Permissions プロパティで確認できます。
- アプリケーションのアクセス許可 ID は、API の ServicePrincipal オブジェクトの AppRoles プロパティで確認できます。
ClientApplicationIds 一致するクライアント アプリケーションの AppId 値の一覧。または、任意のクライアント アプリケーションと一致する単一の値 "all" を含む一覧。 既定値は単一の値 "all" です。
ClientApplicationTenantIds クライアント アプリケーションが登録されている Microsoft Entra テナント ID の一覧、または任意のテナントに登録されているクライアント アプリと一致する単一の値 "all" を含む一覧。 既定値は単一の値 "all" です。
ClientApplicationPublisherIds クライアント アプリケーションの確認済みの発行元を表す Microsoft Partner Network (MPN) ID の一覧。または、任意の発行元のクライアント アプリと一致する単一の値 "all" を含む一覧。 既定値は単一の値 "all" です。
ClientApplicationsFromVerifiedPublisherOnly このスイッチを設定すると、確認済みの発行元のクライアント アプリケーションでのみ一致します。 このスイッチ (-ClientApplicationsFromVerifiedPublisherOnly:$false) を無効にすると、確認済みの発行元がない場合でも、任意のクライアント アプリで一致します。 既定値は $false です。

警告

削除したグループ所有者の同意ポリシーは復元できません。 カスタムのグループ所有者の同意ポリシーを誤って削除した場合は、ポリシーを再作成する必要があります。

ヘルプを表示したり、質問に対する回答を検索したりするには、以下を参照してください。