建立自訂角色以在 Microsoft Entra ID 中管理企業應用程式
本文會說明如何建立自訂角色,其具有在 Microsoft Entra ID 中為使用者和群組管理企業應用程式指派的權限。 如需角色指派的元素和術語 (例如子類型、權限和屬性集) 的意義,請參閱自訂角色概觀。
必要條件
- Microsoft Entra ID P1 或 P2 授權
- 特殊權限角色管理員
- 使用 PowerShell 時安裝的 Microsoft Graph PowerShell SDK
- 針對 Microsoft Graph API 使用 Graph 總管時的管理員同意
如需詳細資訊,請參閱使用 PowerShell 或 Graph 總管的必要條件。
企業應用程式角色權限
本文中討論了兩個企業應用程式權限。 所有範例都使用更新權限。
- 若要讀取範圍內的使用者和群組指派,請授與
microsoft.directory/servicePrincipals/appRoleAssignedTo/read
權限 - 若要管理範圍內的使用者和群組指派,請授與
microsoft.directory/servicePrincipals/appRoleAssignedTo/update
權限
授與更新權限會導致受託人能夠管理對企業應用程式的使用者和群組指派。 您可以針對單一應用程式或所有應用程式授與使用者和/或群組指派的範圍。 如果是在整個組織層級授與,則受託人可以管理所有應用程式的指派。 如果是在應用程式層級授與,則受託人只能管理指定應用程式的指派。
授與更新權限有兩個步驟:
- 建立具有權限
microsoft.directory/servicePrincipals/appRoleAssignedTo/update
的自訂角色 - 授與管理企業應用程式的使用者和群組指派的使用者或群組權限。 這是您可以將範圍設定為整個組織的層級,或設定為單一應用程式的時機。
Microsoft Entra 系統管理中心
建立新的自訂角色
提示
根據您開始使用的入口網站,本文中的步驟可能略有不同。
在 Microsoft Entra Admin Center 中,您可以建立和管理自定義角色,以控制企業應用程式的存取權和許可權。
注意
自訂角色是在整個組織的層級建立和管理,而且只能從組織的 [概觀] 頁面取得。
以至少 [特殊權限角色管理員] 身分登入 Microsoft Entra 系統管理中心。
瀏覽至 [身分識別] > [角色與系統管理員] > [角色與系統管理員]。
選取 [新增自訂角色]。
在 [ 基本] 索引 標籤上,提供角色名稱的[管理使用者和群組指派],併為角色描述提供 [授與管理使用者和群組指派的許可權],然後選取 [下一步]。
在 [ 許可權] 索引卷標上,於搜尋方塊中輸入 “microsoft.directory/servicePrincipals/appRoleAssignedTo/update”,選取所需許可權旁的複選框,然後選取 [ 下一步]。
在 [檢閱 + 建立] 索引標籤上檢閱權限,然後選取 [建立]。
使用 Microsoft Entra 系統管理中心指派角色給使用者。
以至少 [特殊權限角色管理員] 身分登入 Microsoft Entra 系統管理中心。
瀏覽至 [身分識別]>[角色與系統管理員]>[角色與系統管理員]。
選取 [管理使用者和群組指派] 角色。
選取 [新增指派],選取所需的使用者,然後按一下 [選取] 將角色指派新增至使用者。
指派秘訣
若要將權限授與受託人,以管理整個組織的企業應用程式的使用者和群組存取,請從您組織的 Microsoft Entra ID [概觀] 頁面上的整個組織的 [角色和系統管理員] 清單開始。
若要將權限授與受託人,以管理特定企業應用程式的使用者和群組存取,請在 Microsoft Entra ID 中移至該應用程式,然後在該應用程式的 [角色和系統管理員] 清單中開啟。 選取新的自訂角色,並完成使用者或群組指派。 受託人只能管理特定應用程式的使用者和群組存取。
若要測試您的自訂角色指派,請以受託人登入,並開啟應用程式的 [使用者和群組] 頁面,驗證已啟用 [新增使用者] 選項。
PowerShell
如需詳細資訊,請參閱建立和指派 Microsoft Entra ID 中的自訂角色和使用 PowerShell 指派具有資源範圍的自訂角色。
建立自訂角色
使用下列 PowerShell 指令碼建立新的角色:
# Basic role information
$description = "Can manage user and group assignments for Applications"
$displayName = "Manage user and group assignments"
$templateId = (New-Guid).Guid
# Set of permissions to grant
$allowedResourceAction = @("microsoft.directory/servicePrincipals/appRoleAssignedTo/update")
$rolePermission = @{'allowedResourceActions'= $allowedResourceAction}
$rolePermissions = $rolePermission
# Create new custom admin role
$customRole = New-MgRoleManagementDirectoryRoleDefinition -Description $description `
-DisplayName $displayName -RolePermissions $rolePermissions -TemplateId $templateId -IsEnabled
指派自訂角色
使用此 PowerShell 指令碼來指派角色。
# Get the user and role definition you want to link
$user = Get-MgUser -Filter "userPrincipalName eq 'chandra@example.com'"
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Manage user and group assignments'"
# Get app registration and construct scope for assignment.
$appRegistration = Get-MgApplication -Filter "displayName eq 'My Filter Photos'"
$directoryScope = '/' + $appRegistration.Id
# Create a scoped role assignment
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
-PrincipalId $user.Id -RoleDefinitionId $roleDefinition.Id
Microsoft Graph API
使用建立 unifiedRoleDefinition API 建立自訂角色。 如需詳細資訊,請參閱建立和指派 Microsoft Entra ID 中的自訂角色和使用 Microsoft Graph API 指派自訂管理員角色。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions
{
"description": "Can manage user and group assignments for Applications.",
"displayName": "Manage user and group assignments",
"isEnabled": true,
"rolePermissions":
[
{
"allowedResourceActions":
[
"microsoft.directory/servicePrincipals/appRoleAssignedTo/update"
]
}
],
"templateId": "<PROVIDE NEW GUID HERE>",
"version": "1"
}
使用 Microsoft Graph API 指派自訂角色
使用建立 unifiedRoleAssignment API 指派自訂角色。 角色指派結合了安全性主體識別碼 (可以是使用者或服務主體)、角色定義識別碼,以及 Microsoft Entra 資源範圍。 如需角色指派元素的詳細資訊,請參閱自訂角色概觀
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<PROVIDE OBJECTID OF USER TO ASSIGN HERE>",
"roleDefinitionId": "<PROVIDE OBJECTID OF ROLE DEFINITION HERE>",
"directoryScopeId": "/"
}