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


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

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

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

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

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

Примечание.

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

Необходимые компоненты

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

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

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

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

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

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

  2. Перейдите к приложениям>Identity>Application Enterprise Для всех приложений.>

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

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

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

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

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

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

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

  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
    

Пример

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

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

    $username = "britta.simon@contoso.com"
    $app_name = "Workplace Analytics"
    
  2. В этом примере неизвестно, как именно называется роль приложения, которую мы хотим назначить пользователю Britta Simon. Выполните следующие команды, чтобы получить пользователя () и субъекта-службы ($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)"
    

    Примечание.

    Идентификатор 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-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

Чтобы назначить группу корпоративному приложению, замените Get-AzureADUser Get-AzureADGroup ее и замените New-AzureADUserAppRoleAssignment на New-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
    

Пример

В этом примере пользователь 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", "Directory.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, Directory.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 для итерации и удаления каждого назначения.

Следующие шаги