この記事では、カスタム アプリケーションを作成し、Microsoft Entra PowerShell を使用してアクセス許可を付与する方法について説明します。 このプロセスには、ロールの定義、ユーザーとグループの割り当て、Microsoft Entraリソースを効果的に管理するための API アクセス許可の設定が含まれます。
これらの手順を理解することは、アクセスを安全に管理し、アプリケーションが適切なアクセス許可を持っていることを確認するために不可欠です。 Microsoft Entraエコシステム内のセキュリティと運用効率を維持するのに役立ちます。
前提条件
カスタム アプリケーションを作成してアクセス許可を付与するには、次のものが必要です。
- Microsoft Entra ユーザー アカウント。 アカウントをまだお持ちでない場合は、 無料でアカウントを作成できます。
- 次のいずれかのロール:
- 必要なスコープ (PowerShell):
AppRoleAssignment.ReadWrite.All、Application.ReadWrite.All、User.Read.All、Group.Read.All、DelegatedPermissionGrant.ReadWrite.All
PowerShell を使用してアプリケーションを作成する
カスタム アプリケーションを使用して、Microsoft Entra リソースに付与されるアクセス許可を分離して制限します。
# Connect to Entra with required scopes
Connect-Entra -Scopes 'Application.ReadWrite.All'
# Define application name and redirect URI
$appName = 'Entra PowerShell Helpdesk App'
$redirectUri = 'http://localhost'
# Create a new application
$app = New-EntraApplication -DisplayName $appName -PublicClient @{ RedirectUris = $redirectUri } -IsFallbackPublicClient $False
# Create a service principal for the application
$servicePrincipal = New-EntraServicePrincipal -AppId $app.AppId
PowerShell を使用して割り当てに必要な機能を有効にする
# Set service principal parameters
Set-EntraServicePrincipal -ServicePrincipalId $servicePrincipal.Id -AppRoleAssignmentRequired $True
PowerShell を使用してユーザーとグループを割り当てる
# Get a user and a group
$user = Get-EntraUser -UserId 'AdeleV@contoso.com'
$group = Get-EntraGroup -Search 'Sales and Marketing'
# Assign users and groups to the application
$emptyGuidUser = [Guid]::Empty.ToString()
New-EntraUserAppRoleAssignment -ObjectId $user.Id -PrincipalId $user.Id -ResourceId $servicePrincipal.Id -Id $emptyGuidUser
$emptyGuidGroup = [Guid]::Empty.ToString()
New-EntraGroupAppRoleAssignment -GroupId $group.Id -PrincipalId $group.Id -ResourceId $servicePrincipal.Id -Id $emptyGuidGroup
PowerShell を使用して必要なリソースとアクセス許可を定義する
# Get Graph service principal
$graphApiId = '00000003-0000-0000-c000-000000000000'
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "AppId eq '$graphApiId'"
$delegatedPermission = 'User.Read.All'
$app = Get-EntraApplication -Filter "DisplayName eq '$appName'"
# Create resource access object
$resourceAccessDelegated = New-Object Microsoft.Open.MSGraph.Model.ResourceAccess
$resourceAccessDelegated.Id = ((Get-EntraServicePrincipal -ServicePrincipalId $graphServicePrincipal.Id).Oauth2PermissionScopes | Where-Object { $_.Value -eq $delegatedPermission }).Id
$resourceAccessDelegated.Type = 'Scope'
# Create required resource access object
$requiredResourceAccessDelegated = New-Object Microsoft.Open.MSGraph.Model.RequiredResourceAccess
$requiredResourceAccessDelegated.ResourceAppId = $graphApiId
$requiredResourceAccessDelegated.ResourceAccess = $resourceAccessDelegated
# Set application required resource access
Set-EntraApplication -ApplicationId $app.Id -RequiredResourceAccess $requiredResourceAccessDelegated
PowerShell を使用してアプリに API アクセス許可を割り当てる
委任されたアクセス許可またはアプリケーションのアクセス許可をアプリケーションに割り当てることができます。
$delegatedPermission = 'User.Read.All'
$graphApiId = '00000003-0000-0000-c000-000000000000'
$servicePrincipal = Get-EntraServicePrincipal -Filter "DisplayName eq '$appName'"
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "AppId eq '$graphApiId'"
# Grant OAuth2 permission
New-EntraOauth2PermissionGrant -ClientId $servicePrincipal.Id -ConsentType 'AllPrincipals' -ResourceId $graphServicePrincipal.Id -Scope $delegatedPermission
Resources
完全なスクリプトをダウンロードして実行します。
- 委任されたアクセス許可を持つカスタム アプリを作成するには、create-custom-app-with-delegated-permissions サンプル スクリプトを使用します。
- create-custom-app-with-application-permissions サンプル スクリプトを使用して、アプリケーションのアクセス許可を持つカスタム アプリを作成します。
Microsoft Entra 管理センターでアプリケーションを作成する
Microsoft Entra PowerShell を使用してMicrosoft Entra IDに接続するためのカスタム アプリケーションを作成するには、次のセクションの手順に従います。 カスタム アプリケーションを使用して、Microsoft Entra リソースに付与されるアクセス許可を分離して制限します。
- クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
- Identity>Applications>アプリの登録 に移動し、[新規登録] を選択します。
- アプリケーションの名前を入力します (例: Entra PowerShell Five)。
- [サポートされているアカウントの種類] で、この組織ディレクトリの [アカウント] を選択します。
-
[リダイレクト URI] の場合は、ドロップダウンから [パブリック クライアント/ネイティブ] - [URI] の値を選択します。
http://localhost - 登録を選択します。
Note
アプリの [概要 ] セクションで、アプリケーション (クライアント ID) とディレクトリ (テナント) ID をコピーします。 この値は、Microsoft Entra IDに接続するときに使用します。
Microsoft Entra 管理センターで割り当て必須機能を有効にする
アプリケーションがテナントでアクセスできるリソースを管理するには、[ エンタープライズ アプリケーション ] ウィンドウでアプリケーションのサービス プリンシパルを見つけます。
- Identity>Applications>Enterprise アプリケーション>すべてのアプリケーションを参照し、作成したアプリケーションを選択します。
- [ 管理] で [ プロパティ ] を選択し、[ 割り当てが必要] を [はい] に設定します。
- 保存を選びます。
Microsoft Entra 管理センターでユーザーとグループを割り当てる
- [ 管理] で、[ ユーザーとグループ] を選択します。
- [ ユーザー/グループの追加] を選択し、このアプリケーションの使用を許可されているユーザーとグループを追加します。
- すべてのユーザーとグループを追加したら、[ 割り当て] を選択します。
Microsoft Entra 管理センターでアプリに API アクセス許可を割り当てる
新しいアプリケーションがMicrosoft Entra IDに接続し、Microsoft Entraリソースを管理するためのMicrosoft Graphアクセス許可を設定する必要があります。
- Identity>Applications>App Registrations>すべてのアプリケーション に移動し、作成したアプリケーションを選択します。
- [API のアクセス許可] で、[アクセス許可の追加] を選択し、>Microsoft APIs > Microsoft Graph を選択します。
- 必要なアクセス許可の種類 (委任されたアクセス許可またはアプリケーションのアクセス許可) を選択します。
- Microsoft Entra IDでリソースを管理するためにアプリにサインインする必要がある場合は、[委任されたアクセス許可] を選択します。
- ユーザーの操作なしでアプリがリソースMicrosoft Entra独自にアクセスできるようにする場合は、[アプリケーションのアクセス許可] を選択します
- 必要なアクセス許可 (たとえば、
User.Read.All) を検索します。 - [ TenantName に管理者の同意を付与する] を選択します。 はいを選択します。 状態に緑色のチェックマークが表示されていることを確認します。
新しいアプリを使用してサインインする
これで、新しく作成されたアプリを次の方法で接続して使用できるようになりました。
Connect-Entra -ClientId <Your_APPLICATION_Id_Here> -TenantId <Your_TENANT_Id_Here>
接続オプションの詳細については、 Connect-Entra コマンドの詳細を参照してください。