分享方式:


管理將使用者和群組指派給應用程式

本文說明如何使用 PowerShell 將使用者和群組指派給 Microsoft Entra ID 中的企業應用程式。 當您將使用者指派給應用程式時,應用程式會顯示在使用者的我的應用程式入口網站中以便存取。 如果應用程式公開應用程式角色,您也可以將特定應用程式角色指派給使用者。

當您將群組指派給應用程式時,只有群組中的使用者才有存取權。 指派不會串聯成巢狀群組。

群組型指派需要 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. 瀏覽至 [身分識別]>[應用程式]>[企業應用程式]>[所有應用程式]

  3. 在搜尋方塊中輸入現有應用程式的名稱,然後從搜尋結果中選取應用程式。

  4. 選取 [使用者和群組],然後選取 [新增使用者/群組]

    將使用者帳戶指派給 Microsoft Entra 租用戶中的應用程式。

  5. 在 [新增指派] 窗格中,於 [使用者和群組] 底下選取 [無]

  6. 搜尋並選取您要指派給應用程式的使用者或群組。 例如,contosouser1@contoso.comcontosoteam1@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
    

若要將群組指派給企業應用程式,您必須將 Get-AzureADUser 取代為 Get-AzureADGroup 並將 New-AzureADUserAppRoleAssignment 取代為 New-AzureADGroupAppRoleAssignment

如需有關如何將群組指派給應用程式角色的詳細資訊,請參閱 New-AzureADGroupAppRoleAssignment 的文件。

範例

此範例會使用 PowerShell 將使用者 Britta Simon 指派給 Microsoft 工作場所分析應用程式。

  1. 在 PowerShell 中,將對應值指派給變數 $username、$app_name 和 $app_role_name。

    # Assign the values to the variables
    $username = "britta.simon@contoso.com"
    $app_name = "Workplace Analytics"
    
  2. 在此範例中,我們不清楚要指派給 Britta Simon 的應用程式角色是什麼名稱。 執行下列命令,以利用使用者 UPN 和服務主體顯示名稱來取得使用者 ($user) 和服務主體 ($sp)。

    # 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'"
    
  3. 執行命令 $sp.AppRoles,顯示工作場所分析應用程式可用的角色。 在此範例中,我們要指派「分析師」(存取權有限) 角色給 Britta Simon。 顯示使用者使用工作場所分析角色時可用的角色

  4. 指派角色名稱給 $app_role_name 變數。

    # Assign the values to the variables
    $app_role_name = "Analyst (Limited access)"
    $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
    
  5. 執行下列命令,將使用者指派給應用程式角色:

    # Assign the user to the app role
    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
    

使用 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 移除指派給應用程式的所有使用者

使用下列指令碼來移除指派給應用程式的所有使用者和群組。

#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 to assign, and the service principal for the app to assign to

$params = @{
    "PrincipalId" =$userId
    "ResourceId" =$sp.Id
    "AppRoleId" =($sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }).Id
    }

# Assign the user to the app role

New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params |
    Format-List Id, AppRoleId, CreationTime, PrincipalDisplayName,
    PrincipalId, PrincipalType, ResourceDisplayName, ResourceId

使用 Microsoft Graph PowerShell 從應用程式將使用者和群組取消指派

  1. 開啟提高權限的 Windows PowerShell 命令提示字元。
  2. 執行 Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All",並以雲端應用程式管理員以上的身分登入。 您可以使用下列指令碼,將使用者和角色從應用程式移除。

# Get the user and the service principal

$user = Get-MgUser -UserId <userid>
$spo = Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId>

# Get the Id of the role assignment

$assignments = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $spo.Id | Where {$_.PrincipalDisplayName -eq $user.DisplayName}

# if you run the following, it will show you the list of users assigned to the application

$assignments | Select *

# To remove the App role assignment run the following command.

Remove-MgServicePrincipalAppRoleAssignedTo -AppRoleAssignmentId  '<AppRoleAssignment-id>' -ServicePrincipalId $spo.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.AllAppRoleAssignment.ReadWrite.All.

    若要授與應用程式角色指派,您需要三個識別碼:

    • principalId:您要指派應用程式角色的目標使用者或群組識別碼。
    • resourceId:定義應用程式角色的 servicePrincipal 資源識別碼。
    • appRoleId:要指派給使用者或群組的 appRole (在資源服務主體上所定義) 的識別碼。
  2. 取得企業應用程式。 依 DisplayName 篩選。

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

    從回應本文記錄下列值:

    • 企業應用程式的物件識別碼
    • 您指派給使用者的 appRoleId。 如果應用程式未公開任何角色,則會將預設存取角色指派給使用者。
  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 都代表企業應用程式。

使用 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 識別碼來移除 appRoleAssignments。

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

下一步