アプリケーションにユーザーとグループを割り当てる

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

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

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

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

前提条件

PowerShell を使用してアプリにユーザーを割り当てるには、以下が必要です。

  • アクティブなサブスクリプションが含まれる Azure アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます。
  • 次のいずれかのロール: グローバル管理者、クラウド アプリケーション管理者、アプリケーション管理者、またはサービス プリンシパルの所有者。
  • AzureAD モジュールをまだインストールしていない場合は、インストールします (Install-Module -Name AzureAD を使用)。 NuGet モジュールまたは新しい Azure Active Directory V2 PowerShell モジュールをインストールするように求められたら「Y」と入力し、ENTER キーを押します。
  • グループ ベースの割り当てのための Azure Active Directory Premium P1 または P2。 この記事で説明されている機能に必要なライセンスの詳細については、Azure Active Directory の価格のページを参照してください。

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-AzureADUserGet-AzureADGroup に置き換え、New-AzureADUserAppRoleAssignmentNew-AzureADGroupAppRoleAssignment に置き換える必要があります。

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

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

  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 コマンドを実行して、Workplace Analytics アプリケーションで使用できるロールを表示します。 この例では、Britta Simon にアナリスト (制限付きアクセス) のロールを割り当てます。 Workplace Analytics ロールを使用してユーザーが使用できるロールを表示する

  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
    

PowerShell を使用して、アプリからユーザーとグループの割り当てを解除する

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

  2. Connect-AzureAD を実行してグローバル管理者ユーザー アカウントでサインインします。 次のスクリプトを使用して、アプリケーションからユーザーとロールを削除します。

    # 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 #].ObjectId
    

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

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

次の手順