次の方法で共有


アプリケーションへのユーザーとグループの割り当てを管理する

この記事では、PowerShell を使用して Microsoft Entra ID でエンタープライズ アプリケーションにユーザーとグループを割り当てる方法を示します。 アプリケーションにユーザーを割り当てると、そのアプリケーションが、簡単にアクセスできるようにユーザーの [マイ アプリ] ポータルに表示されます。 アプリケーションでアプリ ロールが公開されている場合は、ユーザーに特定のアプリ ロールを割り当てることもできます。

グループをアプリケーションに割り当てると、そのグループ内のユーザーのみがアクセスできます。 割り当ては、入れ子になったグループにはカスケードされません。

グループベースの割り当てには、Microsoft Entra ID P1 または P2 エディションが必要です。 グループベースの割り当ては、SecurityEnabled 設定が True に設定されているセキュリティ グループ、Microsoft 365 グループ、および配布グループのみに対してサポートされます。 入れ子になったグループ メンバーシップは現在サポートされていません。 この記事で説明されている機能のライセンス要件の詳細については、Microsoft Entra の価格のページを参照してください。

制御を強化するために、ユーザー割り当てを必要とするように、特定の種類のエンタープライズ アプリケーションを構成できます。 アプリにユーザー割り当てを要求する方法の詳細については、「アプリケーションへのアクセスの管理」を参照してください。

Note

ユーザーをアプリケーションに割り当てる必要があるアプリケーションでは、ディレクトリのユーザー同意ポリシーでユーザーが自分の代わりに同意できる場合でも、管理者がアクセス許可を付与する必要があります。

前提条件

エンタープライズ アプリケーションにユーザーを割り当てるには、次のものが必要です。

  • アクティブなサブスクリプションを持つ Microsoft Entra アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます。
  • 次のいずれかのロール: クラウド アプリケーション管理者、アプリケーション管理者、サービス プリンシパルの所有者。
  • グループベースの割り当て用の Microsoft Entra ID P1 または P2。 この記事で説明されている機能のライセンス要件の詳細については、Microsoft Entra の価格のページを参照してください。

ヒント

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

Microsoft Entra 管理センターを使用してアプリケーションにユーザーとグループを割り当てる

エンタープライズ アプリケーションにユーザーまたはグループ アカウントを割り当てるには:

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。

  2. [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[すべてのアプリケーション] に移動します。

  3. 検索ボックスに既存のアプリケーションの名前を入力し、検索結果からアプリケーションを選択します。

  4. [ユーザーとグループ][ユーザー/グループの追加] の順に選択します。

    Microsoft Entra テナントのアプリケーションにユーザー アカウントを割り当てる。

  5. [割り当ての追加] ペインで [ユーザーとグループ][選択されていません] を選択します。

  6. アプリケーションに割り当てるユーザーまたはグループを見つけて選択します。 たとえば、contosouser1@contoso.com または contosoteam1@contoso.com です。

  7. [選択] を選択します。

  8. [ロールの選択] の下で、ユーザーまたはグループに割り当てるロールを選択します。 ロールをまだ定義していない場合、既定のロールは既定のアクセスです。

  9. [割り当ての追加] ウィンドウで、[割り当て] を選択して、アプリケーションにユーザーまたはグループを割り当てます。

アプリケーションからユーザーとグループの割り当てを解除する

  1. アプリケーションにユーザーとグループを割り当てる」セクションの手順に従って、[ユーザーとグループ] ペインに移動します。
  2. アプリケーションから割り当てを解除したいユーザーまたはグループを探して選択します。
  3. [削除] を選択して、アプリケーションからユーザーまたはグループの割り当てを解除します。

Azure AD PowerShell を使用してアプリケーションにユーザーとグループを割り当てる

  1. 管理者特権での Windows PowerShell コマンド プロンプトを開きます。

  2. Connect-AzureAD を実行して少なくともクラウド アプリケーション管理者としてサインインします。

  3. 次のスクリプトを使用して、アプリケーションにユーザーを割り当てます。

    # Assign the values to the variables
    $username = "<Your user's UPN>"
    $app_name = "<Your App's display name>"
    $app_role_name = "<App role display name>"
    
    # Get the user to assign, and the service principal for the app to assign to
    $user = Get-AzureADUser -ObjectId "$username"
    $sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
    # Assign the user to the app role
    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

この例では PowerShell を使用して、ユーザー Britta Simon を Microsoft Workplace Analytics アプリケーションに割り当てます。

  1. PowerShell で、対応する値を変数 $username$app_name$app_role_name に割り当てます。

    $username = "britta.simon@contoso.com"
    $app_name = "Workplace Analytics"
    
  2. この例では、Britta Simon に割り当てるアプリケーション ロールの正確な名前はわかりません。 次のコマンドを実行し、ユーザーの UPN とサービス プリンシパル表示名を使用してユーザー ($user) とサービス プリンシパル ($sp) を取得します。

    $user = Get-AzureADUser -ObjectId "$username"
    $sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
    
  3. 次のコマンドを実行して、サービス プリンシパルによって公開されているアプリ ロールを見つけます

    $appRoles = $sp.AppRoles
    # Display the app roles
    $appRoles | ForEach-Object {
        Write-Output "AppRole: $($_.DisplayName) - ID: $($_.Id)"
    

    Note

    既定の AppRole ID は 00000000-0000-0000-0000-000000000000 です。 このロールは、サービス プリンシパルに対して特定の AppRole が定義されていない場合に割り当てられます。

  4. $app_role_name 変数に AppRole 名を割り当てます。 この例では、Britta Simon にアナリスト (制限付きアクセス) のロールを割り当てます。

    $app_role_name = "Analyst (Limited access)"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
  5. 次のコマンドを実行して、アプリのロールにユーザーを割り当てます。

    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

グループをエンタープライズ アプリに割り当てるには、Get-AzureADUserGet-AzureADGroup に置き換え、New-AzureADUserAppRoleAssignmentNew-AzureADGroupAppRoleAssignment に置き換えます。

アプリケーション ロールにグループを割り当てる方法の詳細については、「New-AzureADGroupAppRoleAssignment」のドキュメントをご覧ください。

Azure AD PowerShell を使用してアプリケーションからユーザーとグループの割り当てを解除する

  1. 管理者特権での Windows PowerShell コマンド プロンプトを開きます。

  2. Connect-AzureAD を実行して少なくともクラウド アプリケーション管理者としてサインインします。

  3. 次のスクリプトを使用して、アプリケーションからユーザーとロールを削除します。

    # Store the proper parameters
    $user = get-azureaduser -ObjectId <objectId>
    $spo = Get-AzureADServicePrincipal -ObjectId <objectId>
    
    #Get the ID of role assignment 
    $assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId | Where {$_.PrincipalDisplayName -eq $user.DisplayName}
    
    #if you run the following, it will show you what is assigned what
    $assignments | Select *
    
    #To remove the App role assignment run the following command.
    Remove-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId -AppRoleAssignmentId $assignments[assignment number].ObjectId
    

Azure AD PowerShell を使用してアプリケーションに割り当てられているすべてのユーザーを削除する

  1. 管理者特権での Windows PowerShell コマンド プロンプトを開きます。

次のスクリプトを使って、アプリケーションに割り当てられているすべてのユーザーとグループを削除します。

#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$sp.ObjectId

# Get Service Principal using objectId
$sp = Get-AzureADServicePrincipal -ObjectId "<ServicePrincipal objectID>"

# Get Azure AD App role assignments using objectId of the Service Principal
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true

# Remove all users and groups assigned to the application
$assignments | ForEach-Object {
    if ($_.PrincipalType -eq "User") {
        Remove-AzureADUserAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    } elseif ($_.PrincipalType -eq "Group") {
        Remove-AzureADGroupAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    }
}

Microsoft Graph PowerShell を使用してアプリケーションにユーザーとグループを割り当てる

  1. 管理者特権での Windows PowerShell コマンド プロンプトを開きます。

  2. Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" を実行して少なくともクラウド アプリケーション管理者としてサインインします。

  3. 次のスクリプトを使用して、アプリケーションにユーザーを割り当てます。

    #Assign the values to the variables
    $userId = "<Your user's ID>"
    $app_name = "<Your App's display name>"
    $app_role_name = "<App role display name>"
    $sp = Get-MgServicePrincipal -Filter "displayName eq '$app_name'"
    
    #Get the user, the service principal and appRole.
    $params = @{
    "PrincipalId" =$userId
    "ResourceId" =$sp.Id
    "AppRoleId" =($sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }).Id
    }
    #Assign the user to the AppRole
    New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params |
        Format-List Id, AppRoleId, CreationTime, PrincipalDisplayName,
        PrincipalId, PrincipalType, ResourceDisplayName, ResourceId
    

この例では Microsoft Graph PowerShell を使用して、ユーザー Britta Simon を Microsoft Workplace Analytics アプリケーションに割り当てます。

  1. PowerShell で、対応する値を変数 $userId$app_name$app_role_name に割り当てます。

    # Assign the values to the variables  
    $userId = "<Britta Simon's user ID>"  
    $app_name = "Workplace Analytics"  
    
  2. この例では、Britta Simon に割り当てるアプリケーション ロールの正確な名前は不明です。 次のコマンドを実行して、サービス プリンシパルの表示名を使用してサービス プリンシパル ($sp) を取得します。

    # Get the service principal for the app  
    $sp = Get-MgServicePrincipal -Filter "displayName eq '$app_name'"  
    
  3. 次のコマンドを実行して、サービス プリンシパルによって公開されているアプリ ロールを見つけます。

    # Get the app roles exposed by the service principal  
    $appRoles = $sp.AppRoles  
    # Display the app roles  
    $appRoles | ForEach-Object {  
        Write-Output "AppRole: $($_.DisplayName) - ID: $($_.Id)"  
    }  
    

    Note

    既定の AppRole ID は 00000000-0000-0000-0000-000000000000 です。 このロールは、サービス プリンシパルに対して特定の AppRole が定義されていない場合に割り当てられます。

  4. $app_role_name 変数にロール名を割り当てます。 この例では、Britta Simon にアナリスト (制限付きアクセス) のロールを割り当てます。

    # Assign the values to the variables  
    $app_role_name = "Analyst (Limited access)"  
    $appRoleId = ($sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }).Id  
    
  5. パラメーターを準備し、次のコマンドを実行して、ユーザーをアプリ ロールに割り当てます。

    # Prepare parameters for the role assignment  
    $params = @{  
        "PrincipalId" = $userId  
        "ResourceId" = $sp.Id  
        "AppRoleId" = $appRoleId  
    }  
    
    # Assign the user to the app role  
    New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params |   
        Format-List Id, AppRoleId, CreationTime, PrincipalDisplayName,   
        PrincipalId, PrincipalType, ResourceDisplayName, ResourceId  
    

グループをエンタープライズ アプリに割り当てるには、Get-MgUserGet-MgGroup に置き換え、New-MgUserAppRoleAssignmentNew-MgGroupAppRoleAssignment に置き換えます。

アプリケーション ロールにグループを割り当てる方法の詳細については、「New-MgGroupAppRoleAssignment」のドキュメントをご覧ください。

Microsoft Graph PowerShell を使用してアプリケーションからユーザーとグループの割り当てを解除する

  1. 管理者特権での Windows PowerShell コマンド プロンプトを開きます。

  2. Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" を実行して少なくともクラウド アプリケーション管理者としてサインインします。

  3. ユーザーとサービス プリンシパルを取得する

    $user = Get-MgUser -UserId <userid>
    $sp = Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId>
    
  4. ロールの割り当ての ID を取得する

    $assignments = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $sp.Id | Where {$_.PrincipalDisplayName -eq $user.DisplayName}
    
  5. 次のコマンドを実行して、アプリケーションに割り当てられているユーザーの一覧を表示します

    $assignments | Select *
    
  6. 次のコマンドを実行して、AppRole の割り当てを削除します。

    Remove-MgServicePrincipalAppRoleAssignedTo -AppRoleAssignmentId  '<AppRoleAssignment-id>' -ServicePrincipalId $sp.Id
    

Microsoft Graph PowerShell を使用してアプリケーションに割り当てられているすべてのユーザーとグループを削除する

次のコマンドを実行して、アプリケーションに割り当てられているすべてのユーザーとグループを削除します。

$assignments | ForEach-Object {
    if ($_.PrincipalType -in ("user", "Group")) {
        Remove-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $sp.Id -AppRoleAssignmentId $_.Id  }
}

Microsoft Graph API を使用してアプリケーションにユーザーとグループを割り当てる

  1. ユーザーとグループをアプリケーションに割り当てるには、少なくともクラウド アプリケーション管理者として Graph エクスプローラーにサインインします。

    次のアクセス許可に同意する必要があります。

    Application.ReadWrite.AllDirectory.ReadWrite.All、および AppRoleAssignment.ReadWrite.All

    アプリのロールの割り当てを許可するには、以下の 3 つの識別子が必要です。

    • principalId: アプリのロールを割り当てるユーザーまたはグループの ID。
    • resourceId: アプリのロールを定義するリソース servicePrincipal の ID。
    • appRoleId: ユーザーまたはグループに割り当てる appRole (リソース サービス プリンシパルで定義される) の ID。
  2. エンタープライズ アプリケーションを取得します。 DisplayName でフィルター処理します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '{appDisplayName}'
    

    応答本文から以下の値を記録します。

    • エンタープライズ アプリケーションのオブジェクト ID
    • ユーザーに割り当てる AppRole ID。 アプリケーションでロールが公開されていない場合、ユーザーには既定のアクセス ロールが割り当てられます。

    Note

    既定の AppRole ID は 00000000-0000-0000-0000-000000000000 です。 このロールは、サービス プリンシパルに対して特定の AppRole が定義されていない場合に割り当てられます。

  3. ユーザーのプリンシパル名でフィルター処理して、ユーザーを取得します。 ユーザーのオブジェクト ID を記録します。

    GET https://graph.microsoft.com/v1.0/users/{userPrincipalName}
    
  4. アプリケーションにユーザーを割り当ててください。

    POST https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo
    
    {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "resourceId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
    "appRoleId": "00000000-0000-0000-0000-000000000000"
    }
    

    この例では、resource-servicePrincipal-idresourceId の両方がエンタープライズ アプリケーションを表しています。

Microsoft Graph API を使用してアプリケーションからユーザーとグループの割り当てを解除する

アプリケーションからすべてのユーザーとグループの割り当てを解除するには、次のクエリを実行します。

  1. エンタープライズ アプリケーションを取得します。 displayName でフィルター処理します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '{appDisplayName}'
    
  2. アプリケーションの appRoleAssignments の一覧を取得します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
    
  3. appRoleAssignment ID を指定して、appRoleAssignments を削除します。

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
    

Microsoft Graph エクスプローラーでは、アプリ ロールの割り当ての一括削除は直接サポートされていません。 各割り当てを個別に削除する必要があります。 ただし、Microsoft Graph PowerShell を使用してこのプロセスを自動化し、各割り当てを反復処理して削除することができます

次のステップ