Microsoft Entra ID で PowerShell を使用してリソース スコープのカスタム ロールを割り当てる
この記事では、Microsoft Entra ID でロールの割り当てを組織全体のスコープで作成する方法について説明します。 組織全体のスコープでロールを割り当てると、Microsoft Entra 組織全体のアクセス権が付与されます。 1 つの Microsoft Entra リソースのスコープでロールの割り当てを作成する場合は、「Microsoft Entra ID でカスタム ロールを作成して割り当てる」を参照してください。 この記事では、Microsoft Graph PowerShell SDK モジュールを使用します。
Microsoft Entra ロールの詳細については、「Microsoft Entra 組み込みロール」を参照してください。
前提条件
- Microsoft Entra ID P1 または P2 ライセンス
- 特権ロール管理者
- PowerShell を使用する場合のMicrosoft Graph PowerShell モジュール
詳細については、PowerShell または Graph エクスプローラーを使用するための前提条件に関するページを参照してください。
リソース スコープでユーザーまたはサービス プリンシパルにディレクトリ ロールを割り当てる
Microsoft Graph PowerShell モジュールを読み込みます。
Connect-MgGraph
コマンドを実行してサインインします。次の PowerShell スクリプトを実行して、新しいロールを作成します。
## Assign a role to a user or service principal with resource scope # Get the user and role definition you want to link $user = Get-MgUser -Filter "UserPrincipalName eq 'cburl@f128.info'" $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Support Administrator'" # Get app registration and construct resource scope for assignment. $appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'" $directoryScope = '/' + $appRegistration.Id # Create a scoped role assignment $roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope ` -RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id
ユーザーではなくサービス プリンシパルにロールを割り当てるには、Get-MgServicePrincipal コマンドレットを使用します。
ロールの定義
ロール定義オブジェクトには、組み込みロールまたはカスタム ロールの定義と共に、そのロールの割り当てによって付与されるアクセス許可が含まれます。 このリソースでは、カスタム ロールの定義と組み込みディレクトリ ロール (roleDefinition と同等の形式で表示されます) の両方が表示されます。 Microsoft Entra 組織で作成できるカスタム ロールの最大数については、「Microsoft Entra サービスの制限と制約」を参照してください。
ロール定義を作成する
# Basic information
$description = "Can manage credentials of application registrations"
$displayName = "Application Registration Credential Administrator"
$templateId = (New-Guid).Guid
# Set of actions to include
$rolePermissions = @{
"allowedResourceActions" = @(
"microsoft.directory/applications/standard/read",
"microsoft.directory/applications/credentials/update"
)
}
# Create new custom directory role
$customAdmin = New-MgRoleManagementDirectoryRoleDefinition -RolePermissions $rolePermissions `
-DisplayName $displayName -Description $description -TemplateId $templateId -IsEnabled:$true
ロール定義を読み取るおよび一覧表示する
# Get all role definitions
Get-MgRoleManagementDirectoryRoleDefinition
# Get single role definition by ID
Get-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId 00000000-0000-0000-0000-000000000000
# Get single role definition by templateId
Get-MgRoleManagementDirectoryRoleDefinition -Filter "TemplateId eq 'c4e39bd9-1100-46d3-8c65-fb160da0071f'"
ロール定義を更新する
# Update role definition
# This works for any writable property on role definition. You can replace display name with other
# valid properties.
Update-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId c4e39bd9-1100-46d3-8c65-fb160da0071f `
-DisplayName "Updated DisplayName"
ロール定義を削除する
# Delete role definition
Remove-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId c4e39bd9-1100-46d3-8c65-fb160da0071f
ロールの割り当て
ロールの割り当てには、特定のセキュリティ プリンシパル (ユーザーまたはアプリケーションのサービス プリンシパル) をロールの定義にリンクする情報が含まれます。 必要に応じて、割り当てられたアクセス許可に対して 1 つの Microsoft Entra リソースのスコープを追加できます。 ロール割り当てのスコープの制限は、組み込みおよびカスタム ロールでサポートされています。
役割の割り当ての作成
# Get the user and role definition you want to link
$user = Get-MgUser -Filter "userPrincipalName eq 'cburl@f128.info'"
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Support Administrator'"
# Get app registration and construct resource scope for assignment.
$appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
$directoryScope = '/' + $appRegistration.Id
# Create a scoped role assignment
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
-RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id
ロールの割り当てを読み取るおよび一覧表示する
# Get role assignments for a given principal
Get-MgRoleManagementDirectoryRoleAssignment -Filter "PrincipalId eq 'aaaaaaaa-bbbb-cccc-1111-222222222222'"
# Get role assignments for a given role definition
Get-MgRoleManagementDirectoryRoleAssignment -Filter "RoleDefinitionId eq '00000000-0000-0000-0000-000000000000'"
ロールの割り当てを削除する
# Remove role assignment
Remove-MgRoleManagementDirectoryRoleAssignment -UnifiedRoleAssignmentId 'aB1cD2eF3gH4iJ5kL6-mN7oP8qR-1'
次のステップ
- Microsoft Entra 管理ロール フォーラムでお気軽にご意見をお寄せください
- ロールと Microsoft Entra 管理者ロールの割り当ての詳細については、「管理者ロールを割り当てる」を参照してください
- 既定のユーザー アクセス許可については、アクセス許可に関する既定のゲストとメンバー ユーザーの比較に関する記事を参照してください。