アプリ同意ポリシーを管理する

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

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

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

アプリ同意ポリシーは、1 つ以上の "包含" 条件セットと、0 個以上の "除外" 条件セットで構成されます。 イベントがアプリ同意ポリシーにおいて考慮されるには、"いずれか" の "除外" 条件セットにではなく、"少なくとも" 1 つの "包含" 条件セットに一致している必要があります。

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

ID が "microsoft-" で始まるアプリ同意ポリシーは、組み込みのポリシーです。 これらの組み込みポリシーの一部は、既存の組み込みディレクトリ ロールで使用されます。 たとえば、microsoft-application-admin というアプリ同意ポリシーには、アプリケーション管理者とクラウド アプリケーション管理者のロールが、テナント全体にわたる管理者の同意を許可される条件が記述されています。 組み込みのポリシーは、カスタム ディレクトリ ロール内で、また、ユーザーの同意設定を構成するために使用できますが、編集または削除することはできません。

前提条件

  • 次のいずれかのロールを持つユーザーまたはサービス:
    • グローバル管理者ディレクトリ ロール
    • 特権ロール管理者ディレクトリ ロール
    • アプリへの同意ポリシーを管理するために必要なアクセス許可を持つカスタム ディレクトリ ロール
    • アプリまたはサービスとして接続するときの 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 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 のカスタム役割に割り当てる必要があります。 その後、作成したアプリの同意ポリシーにアタッチされているそのカスタム役割にユーザーを割り当てる必要があります。 アプリの同意ポリシーをカスタム役割に割り当てる方法の詳細については、カスタム役割に対するアプリの同意のアクセス許可に関する記事を参照してください。

次のコマンドレットは、カスタムのアプリ同意ポリシーを削除する方法を示しています。

   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. "包含" 条件セットを追加します。

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

    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 Management 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
    

警告

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

サポートされている条件

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

条件 説明
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 です。
scopeType 事前適用対象のリソース スコープの種類。 使用可能な値: グループチームgroupチャットchat、またはテナント全体のアクセスに tenant。 必須。
sensitivityLabels スコープの種類に適用され、事前に承認されていない秘密度ラベル。 これにより、秘密度の高い組織のデータを保護できます。 秘密度ラベルについて説明します。 メモ: チャット リソースでは、sensitivityLabels はまだサポートされていません

次のステップ

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