Поделиться через


Управление назначением пользователей и групп приложению

В этой статье показано, как назначить пользователей и группы корпоративному приложению в идентификаторе Microsoft Entra. При назначении пользователя приложению приложение отображается на портале "Мои приложения " пользователя для простого доступа. Если приложение предоставляет роли приложений, можно также назначить пользователю определенную роль.

Когда вы назначаете группу приложению, доступ к нему получают только пользователи из этой группы. Назначение не каскадно для вложенных групп.

Для назначения, основанного на группах, требуется выпуск Microsoft Entra ID P1 или P2. Членство в вложенных группах в настоящее время не поддерживается. Дополнительные требования к лицензированию функций, рассмотренных в этой статье, см. на странице ценообразования Microsoft Entra.

Для более полного контроля можно настроить определенные типы корпоративных приложений так, чтобы они требовали назначения пользователей. Дополнительные сведения о необходимости назначения пользователей для приложения см. в разделе "Управление доступом к приложению". Приложения, которым необходимо назначение пользователей, должны получать согласие администратора на свои разрешения, даже если политики пользователя в вашем каталоге позволяют пользователям самостоятельно давать согласие.

Примечание.

Если при управлении группами на портале возникают ограничения, например с группами политик доступа к приложениям, рекомендуется использовать альтернативные методы, такие как PowerShell или API Microsoft Graph.

Предварительные условия

Чтобы назначить пользователей корпоративному приложению, вам потребуется:

  • Учетная запись Microsoft Entra с активной подпиской. Если у вас еще нет учетной записи, вы можете бесплатно создать учетную запись.
  • Одна из следующих ролей:
    • Администратор облачных приложений
    • Администратор приложений
    • Администратор пользователей
    • Владелец субъекта-службы.
  • Microsoft Entra ID P1 или P2 для назначения по группам. Дополнительные требования к лицензированию функций, рассмотренных в этой статье, см. на странице ценообразования Microsoft Entra.

Назначение пользователей и групп приложению с помощью Центра администрирования Microsoft Entra

Чтобы добавить учетную запись пользователя или группы корпоративному приложению:

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений.

  2. Перейдите к Entra ID>Enterprise-приложениям>Все приложения.

  3. Введите имя существующего приложения в поле поиска и выберите приложение из результатов поиска.

  4. Выберите "Пользователи и группы", а затем нажмите кнопку "Добавить пользователя или группу".

    Назначьте учетную запись пользователя приложению в клиенте Microsoft Entra.

  5. На панели "Добавить назначение" выберите "Никто не выбран " в разделе "Пользователи и группы".

  6. Найдите и выберите пользователя или группу, которую вы хотите назначить приложению. Например, contosouser1@contoso.com или contosoteam1@contoso.com.

  7. Нажмите кнопку "Выбрать".

  8. В разделе "Выбор роли" выберите роль, которую вы хотите назначить пользователю или группе. Если вы еще не определили какие-либо роли, роль по умолчанию — это Default Access.

  9. На панели "Добавление задачи" выберите "Назначить", чтобы назначить этого пользователя или группу приложению.

Удалите назначение пользователей и групп из приложения.

  1. Выполните действия, описанные в разделе "Назначение пользователей и групп", чтобы перейти к области "Пользователи и группы ".
  2. Найдите и выберите пользователя или группу, которую вы хотите отменить назначение из приложения.
  3. Выберите "Удалить ", чтобы отменить назначение пользователя или группы из приложения.

Назначение пользователей и групп приложению с помощью Microsoft Entra PowerShell

  1. Войдите по крайней мере как администратор облачных приложений.

  2. Используйте следующий скрипт, чтобы назначить пользователя приложению:

    connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
    # 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-EntraUser -ObjectId "$username"
    $sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
    # Assign the user to the app role
    New-EntraUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

Пример

В этом примере пользователь Britta Simon назначается в качестве пользователя приложения Microsoft Workplace Analytics с помощью PowerShell.

  1. В PowerShell назначьте соответствующие значения переменным $usernameи $app_name$app_role_name.

    connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
    $username = "britta.simon@contoso.com"
    $app_name = "Workplace Analytics"
    
  2. В этом примере неизвестно, как именно называется роль приложения, которую мы хотим назначить пользователю Britta Simon. Выполните следующие команды, чтобы получить пользователя ($user) и учетную запись службы ($sp) с помощью UPN пользователя и отображаемого имени учетной записи службы.

    $user = Get-EntraUser -ObjectId "$username"
    $sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"
    
  3. Выполните следующую команду, чтобы найти роли приложения, предоставляемые субъектом-службой.

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

    Примечание.

    Идентификатор AppRole по умолчанию — 00000000-0000-0000-0000-000000000000. Эта роль назначается, если для сервисного принципала не определена конкретная роль AppRole.

  4. Назначьте имя AppRole переменной $app_role_name . В этом примере мы хотим назначить пользователю Britta Simon роль Analyst (Limited Access) (аналитик с ограниченным доступом).

    $app_role_name = "Analyst (Limited access)"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
  5. Выполните следующую команду, чтобы назначить пользователя роли в приложении.

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

Чтобы назначить группу корпоративному приложению, замените Get-EntraUser на Get-EntraGroup, а также замените New-EntraUserAppRoleAssignment на New-EntraGroupAppRoleAssignment.

Дополнительные сведения о том, как назначить группу на роль приложения, см. в документации по New-EntraGroupAppRoleAssignment.

Отмена назначения пользователей и групп из приложения с помощью Microsoft Entra PowerShell

  1. Откройте командную строку Windows PowerShell с повышенными привилегиями.

  2. Войдите по крайней мере как администратор облачных приложений.

  3. Используйте следующий скрипт, чтобы удалить пользователя и роль из приложения.

    connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
    # Store the proper parameters
    $user = Get-Entrauser -ObjectId "<objectId>"
    $spo = Get-EntraServicePrincipal -ObjectId "<objectId>"
    
    #Get the ID of role assignment 
    $assignments = Get-EntraServicePrincipalAppRoleAssignedTo -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-EntraServicePrincipalAppRoleAssignment -ObjectId $spo.ObjectId -AppRoleAssignmentId $assignments.ObjectId
    

Удаление всех пользователей, назначенных приложению с помощью Microsoft Entra PowerShell

  1. Откройте командную строку Windows PowerShell с повышенными привилегиями.

Используйте следующий сценарий, чтобы удалить всех пользователей и групп, назначенных приложению.

connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"

# Get Microsoft Entra App role assignments using objectId of the Service Principal
$assignments = Get-EntraServicePrincipalAppRoleAssignedTo -ObjectId $sp.ObjectId -All

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

Назначение пользователей и групп приложению с помощью Microsoft Graph PowerShell

  1. Откройте командную строку Windows PowerShell с повышенными привилегиями.

  2. Запустите Connect-MgGraph -Scopes "Application.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
    

Пример

В этом примере пользователь Britta Simon назначается приложению Microsoft Workplace Analytics с помощью Microsoft Graph PowerShell.

  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)"  
    }  
    

    Примечание.

    Идентификатор AppRole по умолчанию — 00000000-0000-0000-0000-000000000000. Эта роль назначается, если для сервисного принципала не определена конкретная роль AppRole.

  4. Присвойте имя роли переменной $app_role_name. В этом примере мы хотим назначить пользователю Britta Simon роль Analyst (Limited Access) (аналитик с ограниченным доступом).

    # 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-MgUser на Get-MgGroup, а также замените New-MgUserAppRoleAssignment на New-MgGroupAppRoleAssignment.

Дополнительные сведения о назначении роли приложения для группы см. в документации по New-MgGroupAppRoleAssignment.

Снимите назначение пользователей и групп из приложения при помощи Microsoft Graph PowerShell

  1. Откройте командную строку Windows PowerShell с повышенными привилегиями.

  2. Запустите Connect-MgGraph -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" и войдите в систему в роли по крайней мере администратора облачных приложений.

  3. Получите пользователя и учетную запись службы

    $user = Get-MgUser -UserId <userid>
    $sp = Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId>
    
  4. Получите идентификатор назначения роли

    $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  }
}

Назначение пользователей и групп приложению с помощью API Microsoft Graph

  1. Чтобы назначить пользователей и группы приложению, войдите в Graph Explorerкак минимум администратор облачных приложений.

    Необходимо предоставить согласие на следующие разрешения:

    Application.ReadWrite.All и AppRoleAssignment.ReadWrite.All.

    Для назначения роли приложения вам потребуется три идентификатора:

    • principalId: идентификатор пользователя или группы, которой назначается роль приложения.
    • resourceId: идентификатор службы ресурсовPrincipal, определяющий роль приложения.
    • appRoleId: идентификатор appRole (определенный в служебном объекте ресурса) для назначения пользователю или группе.
  2. Получите корпоративное приложение. Фильтрация по DisplayName.

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

    Запишите следующие значения из текста ответа:

    • Идентификатор объекта корпоративного приложения
    • Идентификатор AppRole, назначенный пользователю. Если приложение не предоставляет никаких ролей, пользователь назначает роль доступа по умолчанию.

    Примечание.

    Идентификатор AppRole по умолчанию — 00000000-0000-0000-0000-000000000000. Эта роль назначается, если для сервисного принципала не определена конкретная роль AppRole.

  3. Получите пользователя, отфильтровав его по основному имени. Запишите идентификатор объекта пользователя.

    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-id, и resourceId представляют корпоративное приложение.

Снять назначение пользователей и групп в приложении с помощью API Microsoft Graph

Чтобы отменить назначение всех пользователей и групп из приложения, выполните следующий запрос.

  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. Удалите appRoleAssignments, указав appRoleAssignment идентификатор.

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

Microsoft Graph Explorer не поддерживает пакетное удаление назначений ролей приложения напрямую. Необходимо удалить каждое назначение по отдельности. Однако вы можете автоматизировать этот процесс с помощью Microsoft Graph PowerShell для итерации и удаления каждого назначения.