アプリケーションに対してテナント全体の管理者の同意を付与する

この記事では、Microsoft Entra ID で、テナント全体の管理者の同意をアプリケーションに付与する方法について説明します。 個々のユーザーの同意設定をどのように構成するかについては、エンドユーザーによるアプリケーションの同意の構成に関する記事を参照してください。

テナント全体の管理者の同意をアプリケーションに付与すると、そのアプリケーションは、組織全体に代わって、要求されたアクセス許可にアクセスできるようになります。 組織に代わって管理者の同意を付与することは機密性の高い操作であり、組織のデータの大部分、または高度な特権付きの操作を行うアクセス許可にアプリケーションの発行者がアクセスできる可能性があります。 そのような操作の例は、ロール管理、すべてのメールボックスまたはすべてのサイトへのフルアクセス、完全なユーザー偽装などです。 そのため、同意を付与する前に、アプリケーションで要求されているアクセス許可をよく確認する必要があります。

既定では、テナント全体の管理者の同意をアプリケーションに付与すると、特に制限がない限り、すべてのユーザーがアプリケーションにアクセスできるようになります。 アプリケーションにサインインできるユーザーを制限するには、アプリがユーザー割り当てを要求するように構成し、アプリケーションにユーザーまたはグループを割り当てます

重要

テナント全体の管理者の同意を付与すると、そのアプリケーションに対して既にテナント全体に付与されていたアクセス許可が取り消される場合があります。 ユーザーが既に代理で付与しているアクセス許可は影響を受けません。

前提条件

テナント全体の管理者の同意を付与するには、組織を代表して同意する権限を持つユーザーとしてサインインする必要があります。

テナント全体の管理者の同意を許可するには、次が必要です。

  • 次のいずれかのロールを持つ Microsoft Entra ユーザー アカウント。

    • "グローバル管理者" または "特権ロール管理者"。任意の API に対してアクセス許可を要求するアプリに同意を付与します。
    • クラウド アプリケーション管理者またはアプリケーション管理者。任意の API に対してアクセス許可を要求するアプリに同意を付与します (Microsoft Graph アプリ ロール (アプリケーションのアクセス許可) は "除きます")。
    • アプリケーションで必要なアクセス許可に対して、アプリケーションにアクセス許可を付与するための権限が含まれたカスタム ディレクトリ ロール。

テナントでアプリケーションが既にプロビジョニングされている場合、[エンタープライズ アプリケーション] ウィンドウを通じて、テナント全体の管理者の同意を付与できます。 たとえば、少なくとも 1 人のユーザーが既にアプリケーションに同意している場合は、アプリがテナントでプロビジョニングされている可能性があります。 詳細については、「アプリケーションを Microsoft Entra に追加する方法と理由」を参照してください。

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

[エンタープライズ アプリケーション] ウィンドウに一覧表示されているアプリにテナント全体の管理者の同意を付与するには:

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
  2. [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[すべてのアプリケーション] に移動します。
  3. 検索ボックスに既存のアプリケーションの名前を入力し、検索結果からアプリケーションを選択します。
  4. [セキュリティ][アクセス許可] を選択します。 Screenshot shows how to grant tenant-wide admin consent.
  5. アプリケーションに必要なアクセス許可を慎重に確認します。 アプリケーションで必要なアクセス許可に同意する場合は、 [管理者の同意の付与] を選択します。

組織で開発し、Microsoft Entra テナントに直接登録されているアプリケーションの場合は、Microsoft Entra 管理センター の [アプリの登録] から、テナント全体の管理者の同意を付与することもできます。

[アプリの登録] からテナント全体の管理者の同意を付与するには:

  1. Microsoft Entra 管理センターで、ID>アプリケーション>アプリの登録>すべてのアプリケーション を参照します。
  2. 検索ボックスに既存のアプリケーションの名前を入力し、検索結果からアプリケーションを選択します。
  3. [管理] の下にある [API のアクセス許可] を選びます。
  4. アプリケーションに必要なアクセス許可を慎重に確認します。 同意する場合は、 [管理者の同意の付与] を選択します。

前のセクションのどちらかの方法を使ってテナント全体の管理者の同意を付与すると、Microsoft Entra 管理センターでウィンドウが開き、テナント全体の管理者の同意を求めるプロンプトが表示されます。 アプリケーションのクライアント ID (アプリケーション ID とも呼ばれます) がわかっている場合は、同じ URL を作成して、テナント全体の管理者の同意を付与することができます。

テナント全体の管理者の同意の URL は、次のような形式です。

https://login.microsoftonline.com/{organization}/adminconsent?client_id={client-id}

各値の説明:

  • {client-id} は、アプリケーションのクライアント ID (アプリ ID とも呼ばれます) です。
  • {organization} は、アプリケーションに同意するテナントのテナント ID または検証済みドメイン名です。 値 organizations を使用すると、サインインするユーザーのホーム テナントで同意が行われます。

この場合も、同意を付与する前に、アプリケーションで要求されているアクセス許可をよく確認してください。

テナント全体の管理者の同意 URL を構築する方法の詳細については、「Microsoft ID プラットフォームの管理者の同意」を参照してください。

このセクションでは、委任されたアクセス許可をアプリケーションに付与します。 委任されたアクセス許可は、サインインしているユーザーの代わりにアプリケーションが API にアクセスするために必要なアクセス許可です。 アクセス許可はリソース API によって定義され、クライアント アプリケーションであるエンタープライズ アプリケーションに付与されます。 この同意は、すべてのユーザーに代わって付与されます。

次の例では、リソース API は、オブジェクト ID 7ea9e944-71ce-443d-811c-71e8047b557a の Microsoft Graph です。 Microsoft Graph API では、委任されたアクセス許可の User.Read.All および Group.Read.All を定義します。 consentType は AllPrincipals であり、テナント内のすべてのユーザーに代わって同意していることを示します。 クライアント エンタープライズ アプリケーションのオブジェクト ID は です b0d9b9e3-0ecf-4bfd-8dab-9273dd055a941

注意事項

ご注意ください。 プログラムによって付与されたアクセス許可は、レビューまたは確認の対象になりません。 それらはすぐに有効になります。

  1. Microsoft Graph PowerShell に接続し、少なくとも クラウド アプリケーション管理者としてサインインします。

    Connect-MgGraph -Scopes "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"
    
  2. テナント アプリケーションで Microsoft Graph (リソース アプリケーション) によって定義された、すべての委任されたアクセス許可を取得します。 クライアント アプリケーションに付与する必要がある委任されたアクセス許可を特定します。 この例では、委任のアクセス許可は User.Read.AllGroup.Read.All です

    Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" -Property Oauth2PermissionScopes | Select -ExpandProperty Oauth2PermissionScopes | fl
    
  3. 次の要求を実行して、委任されたアクセス許可をクライアント エンタープライズ アプリケーションに付与します。

    $params = @{
    
    "ClientId" = "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94"
    "ConsentType" = "AllPrincipals"
    "ResourceId" = "7ea9e944-71ce-443d-811c-71e8047b557a"
    "Scope" = "User.Read.All Group.Read.All"
    }
    
    New-MgOauth2PermissionGrant -BodyParameter $params | 
    Format-List Id, ClientId, ConsentType, ResourceId, Scope
    
  4. 次の要求を実行して、テナント全体の管理者の同意を付与したことを確認します。

 Get-MgOauth2PermissionGrant -Filter "clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and consentType eq 'AllPrincipals'" 

このセクションでは、エンタープライズ アプリケーションにアプリケーションのアクセス許可を付与します。 アプリケーションのアクセス許可は、アプリケーションがリソース API にアクセスするために必要なアクセス許可です。 アクセス許可はリソース API によって定義され、プリンシパル アプリケーションであるエンタープライズ アプリケーションに付与されます。 アプリケーションのアクセス権をリソース API に付与すると、サインインしているユーザーなしでバックグラウンド サービスまたはデーモンとして実行されます。 アプリケーションのアクセス許可は、アプリ ロールとも呼ばれます。

次の例では、Microsoft Graph アプリケーション (ID b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94 のプリンシパル) に、ID 7ea9e944-71ce-443d-811c-71e8047b557a のリソース API によって公開される ID df021288-bdef-4463-88db-98f22de89214 のアプリ ロール (アプリケーションのアクセス許可) を付与します。

  1. Microsoft Graph PowerShell に接続し、グローバル管理者 としてサインインします。

    Connect-MgGraph -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
    
  2. テナント内の Microsoft Graph によって定義されたアプリ ロールを取得します。 クライアント エンタープライズ アプリケーションに付与する必要があるアプリ ロールを特定します。 この例では、アプリ ロール ID は df021288-bdef-4463-88db-98f22de89214 です。

    Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" -Property AppRoles | Select -ExpandProperty appRoles |fl
    
  3. 次の要求を実行して、プリンシパル アプリケーションにアプリケーションのアクセス許可 (アプリ ロール) を付与します。

 $params = @{
  "PrincipalId" ="b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94"
  "ResourceId" = "7ea9e944-71ce-443d-811c-71e8047b557a"
  "AppRoleId" = "df021288-bdef-4463-88db-98f22de89214"
}

New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' -BodyParameter $params | 
  Format-List Id, AppRoleId, CreatedDateTime, PrincipalDisplayName, PrincipalId, PrincipalType, ResourceDisplayName

Graph エクスプローラーを使用して、委任されたアクセス許可とアプリケーションのアクセス許可の両方を付与します。

このセクションでは、委任されたアクセス許可をアプリケーションに付与します。 委任されたアクセス許可は、サインインしているユーザーの代わりにアプリケーションが API にアクセスするために必要なアクセス許可です。 アクセス許可はリソース API によって定義され、クライアント アプリケーションであるエンタープライズ アプリケーションに付与されます。 この同意は、すべてのユーザーに代わって付与されます。

少なくともクラウド アプリケーション管理者としてサインインする必要があります。

次の例では、リソース API は、オブジェクト ID 7ea9e944-71ce-443d-811c-71e8047b557a の Microsoft Graph です。 Microsoft Graph API では、委任されたアクセス許可の User.Read.All および Group.Read.All を定義します。 consentType は AllPrincipals であり、テナント内のすべてのユーザーに代わって同意していることを示します。 クライアント エンタープライズ アプリケーションのオブジェクト ID は です b0d9b9e3-0ecf-4bfd-8dab-9273dd055a941

注意事項

ご注意ください。 プログラムによって付与されたアクセス許可は、レビューまたは確認の対象になりません。 それらはすぐに有効になります。

  1. テナント アプリケーションで Microsoft Graph (リソース アプリケーション) によって定義された、すべての委任されたアクセス許可を取得します。 クライアント アプリケーションに付与する必要がある委任されたアクセス許可を特定します。 この例では、委任のアクセス許可は User.Read.AllGroup.Read.All です

    GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq 'Microsoft Graph'&$select=id,displayName,appId,oauth2PermissionScopes
    
  2. 次の要求を実行して、委任されたアクセス許可をクライアント エンタープライズ アプリケーションに付与します。

    POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants
    
    Request body
    {
       "clientId": "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94",
       "consentType": "AllPrincipals",
       "resourceId": "7ea9e944-71ce-443d-811c-71e8047b557a",
       "scope": "User.Read.All Group.Read.All"
    }
    
  3. 次の要求を実行して、テナント全体の管理者の同意を付与したことを確認します。

    GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$filter=clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and consentType eq 'AllPrincipals'
    

このセクションでは、エンタープライズ アプリケーションにアプリケーションのアクセス許可を付与します。 アプリケーションのアクセス許可は、アプリケーションがリソース API にアクセスするために必要なアクセス許可です。 アクセス許可はリソース API によって定義され、プリンシパル アプリケーションであるエンタープライズ アプリケーションに付与されます。 アプリケーションのアクセス権をリソース API に付与すると、サインインしているユーザーなしでバックグラウンド サービスまたはデーモンとして実行されます。 アプリケーションのアクセス許可は、アプリ ロールとも呼ばれます。

次の例では、Microsoft Graph アプリケーション (ID b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94 のプリンシパル) に、ID 7ea9e944-71ce-443d-811c-71e8047b557a のリソース エンタープライズ アプリケーションによって公開される ID df021288-bdef-4463-88db-98f22de89214 のアプリ ロール (アプリケーションのアクセス許可) を付与します。

"グローバル管理者" としてサインインする必要があります。

  1. テナント内の Microsoft Graph によって定義されたアプリ ロールを取得します。 クライアント エンタープライズ アプリケーションに付与する必要があるアプリ ロールを特定します。 この例では、アプリ ロール ID は df021288-bdef-4463-88db-98f22de89214 です

    GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq 'Microsoft Graph'&$select=id,displayName,appId,appRoles
    
  2. 次の要求を実行して、プリンシパル アプリケーションにアプリケーションのアクセス許可 (アプリ ロール) を付与します。

    POST https://graph.microsoft.com/v1.0/servicePrincipals/7ea9e944-71ce-443d-811c-71e8047b557a/appRoleAssignedTo
    
    Request body
    
    {
       "principalId": "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94",
       "resourceId": "7ea9e944-71ce-443d-811c-71e8047b557a",
       "appRoleId": "df021288-bdef-4463-88db-98f22de89214"
    }
    

次のステップ