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


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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

  2. Перейдите к Идентификация>Приложения>Корпоративные приложения>Все приложения.

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

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

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

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

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

  7. Выберите Выбрать.

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

  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 для итерации и удаления каждого назначения.