本文說明如何使用 Microsoft Entra 系統管理中心、Microsoft Graph PowerShell 或 Microsoft Graph API,將Microsoft Entra 角色指派給使用者和群組。 它也會描述如何在不同的範圍指派角色,例如租戶、應用程式註冊和系統管理單位範圍。
您可以將直接和間接角色指派給使用者。 如果使用者通過群組成員資格獲得角色,請將其加入群組以完成角色指派。 如需詳細資訊,請參閱 使用 Microsoft Entra 群組來管理角色指派。
在 Microsoft Entra ID 中,角色通常被指派給整個租戶。 不過,您也可以為不同的資源指派Microsoft Entra 角色,例如應用程式註冊或系統管理單位。 例如,您可以指派 Helpdesk Administrator 角色,使其只套用至特定的系統管理單位,而非整個租使用者。 角色指派應用的資源也稱為其範圍。 內建角色和自定義角色都可以限制角色指派的範圍。 如需範圍的詳細資訊,請參閱 Microsoft Entra ID 中的角色型訪問控制概觀(RBAC)。
Microsoft Entra 在 PIM 中的角色
如果您有Microsoft Entra ID P2 授權和 Privileged Identity Management (PIM),則指派角色時會有其他功能,例如讓使用者有資格指派角色,或定義角色指派的開始和結束時間。 如需在 PIM 中指派Microsoft Entra 角色的相關信息,請參閱下列文章:
先決條件
如需詳細資訊,請參閱 使用PowerShell或 Graph 總管的必要條件。
在租戶層級指派角色
本節說明如何在租戶層級指派角色。
請遵循下列步驟,使用 PowerShell 指派Microsoft Entra 角色。
開啟 PowerShell 視窗。 如有必要,請使用 Install-Module 來安裝 Microsoft Graph PowerShell。 如需詳細資訊,請參閱 使用PowerShell或 Graph 總管的必要條件。
Install-Module Microsoft.Graph -Scope CurrentUser
在 PowerShell 視窗中,使用 Connect-MgGraph 登入您的租使用者。
Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
使用 Get-MgUser 取得使用者。
$user = Get-MgUser -Filter "userPrincipalName eq 'alice@contoso.com'"
使用 Get-MgGroup 取得可指派角色的群組。
$group = Get-MgGroup -Filter "DisplayName eq 'Contoso Helpdesk'"
使用 Get-MgRoleManagementDirectoryRoleDefinition 取得您想要指派的角色。
若要查看所有內建角色的角色定義標識符清單,請參閱 Microsoft Entra 內建角色。
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Billing Administrator'"
將租戶設定為角色分配的範圍。
$directoryScope = '/'
使用 New-MgRoleManagementDirectoryRoleAssignment 來指派角色。
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $user.Id `
-RoleDefinitionId $roleDefinition.Id
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $group.Id `
-RoleDefinitionId $roleDefinition.Id
以下是您可以指派角色的另一種方式。
$params = @{
"directoryScopeId" = "/"
"principalId" = $group.Id
"roleDefinitionId" = $roleDefinition.Id
}
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -BodyParameter $params
請依循這些指示,在 Graph Explorer 中使用 Microsoft Graph API 來指派角色。
登入 Graph 瀏覽器。
使用 列出使用者 API 來取得使用者。
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq 'alice@contoso.com'
使用 清單群組 API 來取得可指派角色的群組。
GET https://graph.microsoft.com/v1.0/groups?$filter=displayName eq 'Contoso Helpdesk'
使用 List unifiedRoleDefinitions API 來取得您想要指派的角色。
若要查看所有內建角色的角色定義標識符清單,請參閱 Microsoft Entra 內建角色。
GET https://graph.microsoft.com/v1.0/rolemanagement/directory/roleDefinitions?$filter=displayName eq 'Billing Administrator'
使用 建立 unifiedRoleAssignment API 來指派角色。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<Object ID of user or group>",
"roleDefinitionId": "<ID of role definition>",
"directoryScopeId": "/"
}
回應
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#roleManagement/directory/roleAssignments/$entity",
"id": "<Role assignment ID>",
"roleDefinitionId": "<ID of role definition>",
"principalId": "<Object ID of user or group>",
"directoryScopeId": "/"
}
如果主體或角色定義不存在,則找不到回應。
回應
HTTP/1.1 404 Not Found
在應用程式註冊範圍內指派角色
預設情況下,內建角色和自訂角色會在租戶層級進行指派,以授予對組織中所有應用程式註冊的存取權限。 此外,自定義角色和一些相關的內建角色(視Microsoft Entra 資源類型而定),也可以在單一Microsoft Entra 資源的範圍內指派。 這可讓您授與使用者更新單一應用程式認證和基本屬性的許可權,而不需要建立第二個自定義角色。
本節說明如何在應用程式註冊範圍指派角色。
以至少應用程式開發人員身分登入 Microsoft Entra 系統管理中心。
流覽至 Entra ID>應用程式註冊。
選取應用程式。 您可以使用搜尋方塊來尋找所需的應用程式。
您可能必須選取 [所有應用程式 ],才能查看租用戶中應用程式註冊的完整清單。
從左側導覽功能表中選取 [角色和系統管理員 ],以查看可透過應用程式註冊指派的所有角色清單。
選取所需的角色。
小提示
您不會在這裡看到Microsoft Entra 內建或自定義角色的完整清單。 這是預期的。 我們顯示具有僅管理應用程式註冊相關許可權的角色。
選取 [新增指派 ],然後選取您要指派此角色的使用者或群組。
選取 新增 ,以指派角色至應用程式註冊。
請遵循下列步驟,使用PowerShell在應用程式範圍指派Microsoft Entra角色。
開啟 PowerShell 視窗。 如有必要,請使用 Install-Module 來安裝 Microsoft Graph PowerShell。 如需詳細資訊,請參閱 使用PowerShell或 Graph 總管的必要條件。
Install-Module Microsoft.Graph -Scope CurrentUser
在 PowerShell 視窗中,使用 Connect-MgGraph 登入您的租使用者。
Connect-MgGraph -Scopes "Application.Read.All","RoleManagement.Read.Directory","User.Read.All","RoleManagement.ReadWrite.Directory"
使用 Get-MgUser 取得使用者。
$user = Get-MgUser -Filter "userPrincipalName eq 'alice@contoso.com'"
若要將角色指派給服務主體,而不是使用者,請使用 Get-MgServicePrincipal 命令。
使用 Get-MgRoleManagementDirectoryRoleDefinition 取得您想要指派的角色。
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition `
-Filter "displayName eq 'Application Administrator'"
使用 Get-MgApplication 取得您想設定角色指派範圍的應用程式註冊。
$appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
$directoryScope = '/' + $appRegistration.Id
使用 New-MgRoleManagementDirectoryRoleAssignment 來指派角色。
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $user.Id `
-RoleDefinitionId $roleDefinition.Id
請遵循這些指示,使用 Microsoft Graph API 在 Graph Explorer 中在應用程式範圍指派角色。
登入 Graph 瀏覽器。
使用 列出使用者 API 來取得使用者。
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq 'alice@contoso.com'
使用 List unifiedRoleDefinitions API 來取得您想要指派的角色。
GET https://graph.microsoft.com/v1.0/rolemanagement/directory/roleDefinitions?$filter=displayName eq 'Application Administrator'
使用 清單應用程式 API 來取得需要設定角色指派範圍的應用程式。
GET https://graph.microsoft.com/v1.0/applications?$filter=displayName eq 'f/128 Filter Photos'
使用 建立 unifiedRoleAssignment API 來指派角色。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<Object ID of user>",
"roleDefinitionId": "<ID of role definition>",
"directoryScopeId": "/<Object ID of app registration>"
}
回應
HTTP/1.1 201 Created
注意
在此範例中,directoryScopeId
會指定為 /<ID>
,不同於管理單位區段。 這是設計使然。
/<ID>
的範圍表示主體可以管理該 Microsoft Entra 物件。 範圍 /administrativeUnits/<ID>
表示負責人可以管理管理單位的成員(根據指派給負責人的角色),而不是管理單位本身。
根據管理單位範圍分配角色
在 Microsoft Entra 識別符中,若要進行更細微的管理控制,您可以指派Microsoft Entra 角色,其範圍僅限於一或多個 系統管理單位。 當在管理單位範圍內指派 Microsoft Entra 角色時,角色許可權僅適用於管理管理單位本身的成員,不適用於租用戶範圍的設定或組態。
例如,在系統管理單位範圍指派群組管理員角色的系統管理員可以管理屬於系統管理單位成員的群組,但無法管理租使用者中的其他群組。 它們也無法管理與群組相關的租用戶層級設定,例如到期或群組命名原則。
本節說明如何以系統管理單位的範圍來指派 Microsoft Entra 角色。
先決條件
- 為每位管理單位的管理員提供 Microsoft Entra ID P1 或 P2 授權
- Microsoft Entra ID 免費授權給系統管理單位成員
- 特權角色管理員
- 使用 PowerShell 時Microsoft Graph PowerShell 模組
- 當使用 Graph 總管進行 Microsoft Graph API 時,需要系統管理員的同意
如需詳細資訊,請參閱 使用PowerShell或 Graph 總管的必要條件。
可在系統管理單位範圍內指派的角色
下列 Microsoft Entra 角色可以在管理單位範圍內指派。 此外,只要 自訂角色的權限至少包含一個與使用者、群組或裝置相關的權限,便可以在系統管理單位範圍內指派任何 自訂角色。
角色 |
描述 |
驗證管理員 |
只能存取指派之系統管理單位中任何非系統管理員使用者的檢視、設定及重設驗證方法資訊。 |
雲端裝置系統管理員 |
管理 Microsoft Entra ID 裡裝置的權限受到限制。 |
群組管理員 |
只能在指派的管理單位中管理群組的所有層面。 |
技術服務人員管理員 |
只能在指派的系統管理單位中重設非系統管理員的密碼。 |
授權管理員 |
只能在管理單位內指派、移除和更新授權指派。 |
密碼管理員 |
只能在指派的系統管理單位內重設非系統管理員的密碼。 |
印表機管理員 |
可以管理印表機和印表機連接器。 如需詳細資訊,請參閱 委派管理通用列印中的印表機。 |
特殊許可權驗證管理員 |
可以存取任何使用者(系統管理員或非系統管理員)的檢視、設定及重設驗證方法資訊。 |
SharePoint 系統管理員 |
只能在指派的管理單位中管理Microsoft 365 個群組。 對於與系統管理單位中Microsoft 365 個群組相關聯的 SharePoint 網站,也可以使用 Microsoft 365 系統管理中心來更新網站屬性(網站名稱、URL 和外部共用原則)。 無法使用 SharePoint 系統管理中心或 SharePoint API 來管理網站。 |
Teams 系統管理員 |
只能在指派的管理單位中管理Microsoft 365 個群組。 只能在 Microsoft 365 系統管理中心管理與所指派系統管理單位的群組相關聯的團隊成員。 無法使用Teams系統管理中心。 |
Teams 裝置系統管理員 |
可以在 Teams 認證的裝置上執行管理相關工作。 |
使用者管理員 |
可以管理使用者和群組的所有層面,包括只重設受指派系統管理單位內有限系統管理員的密碼。 目前無法管理用戶的個人資料相片。 |
<自訂角色> |
可以根據自定義角色的定義,執行套用至使用者、群組或裝置的動作。 |
在指派管理單位範圍時,某些角色許可權僅適用於非管理員使用者。 換句話說,系統管理單位範圍內的 支援中心管理員 只有在用戶沒有管理員角色時,才能重設這些用戶的密碼。 當動作的目標是另一個系統管理員時,下列許可權清單會受到限制:
- 讀取和修改使用者驗證方法,或重設用戶密碼
- 修改敏感性用戶屬性,例如電話號碼、替代電子郵件地址或開啟授權 (OAuth) 秘密密鑰
- 刪除或還原用戶帳戶
可設定管理單位範圍的安全性主體
下列安全性主體可以指派給具有管理單位範圍的角色:
- 使用者
- Microsoft Entra 可指派角色的群組
- 服務主體
服務主體和來賓使用者
服務主體和來賓使用者將無法使用範圍設定為系統管理單位的角色指派,除非它們也獲指派了讀取對象的對應許可權。 這是因為服務主體和來賓用戶預設不會獲得目錄讀取權限,而這是執行管理操作所必需的。 若要讓服務主要或來賓使用者能夠使用針對管理單位設定範圍的角色指派,您必須在租戶範圍內指派 目錄讀取者 角色(或其他包含讀取權限的角色)。
目前無法將目錄讀取許可權指派給系統管理單位。 如需使用者默認許可權的詳細資訊,請參閱 預設用戶權力。
根據管理單位範圍分配角色
本節說明如何在管理單位範圍指派角色。
以至少具特殊許可權的角色管理員身分登入 Microsoft Entra 系統管理中心。
流覽至 Entra ID>角色和系統管理員>系統管理員單位。
選取管理單位。
從左側導覽功能表中選取 [角色和系統管理員 ],以查看可透過系統管理單位指派的所有角色清單。
選取所需的角色。
小提示
您不會在這裡看到Microsoft Entra 內建或自定義角色的完整清單。 這是預期的。 我們展示具有與管理單位內受支援物件相關權限的角色。 若要查看管理單位內支援的物件清單,請參閱 Microsoft Entra ID中 管理單位。
選取 [新增指派 ],然後選取您要指派此角色的使用者或群組。
選擇 新增 以於管理單位內指派角色。
請遵循下列步驟,使用 PowerShell 在系統管理單位範圍指派Microsoft Entra 角色。
開啟 PowerShell 視窗。 如有必要,請使用 Install-Module 來安裝 Microsoft Graph PowerShell。 如需詳細資訊,請參閱 使用PowerShell或 Graph 總管的必要條件。
Install-Module Microsoft.Graph -Scope CurrentUser
在 PowerShell 視窗中,使用 Connect-MgGraph 登入您的租使用者。
Connect-MgGraph -Scopes "Directory.Read.All","RoleManagement.Read.Directory","User.Read.All","RoleManagement.ReadWrite.Directory"
使用 Get-MgUser 取得使用者。
$user = Get-MgUser -Filter "userPrincipalName eq 'alice@contoso.com'"
使用 Get-MgRoleManagementDirectoryRoleDefinition 取得您想要指派的角色。
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition `
-Filter "displayName eq 'User Administrator'"
使用 Get-MgDirectoryAdministrativeUnit 以取得想要用來指定角色指派範圍的系統管理單位。
$adminUnit = Get-MgDirectoryAdministrativeUnit -Filter "displayName eq 'Seattle Admin Unit'"
$directoryScope = '/administrativeUnits/' + $adminUnit.Id
使用 New-MgRoleManagementDirectoryRoleAssignment 來指派角色。
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $user.Id `
-RoleDefinitionId $roleDefinition.Id
請遵循下列指示,使用 Microsoft Graph API 在 Graph Explorer 中於管理單位範圍指派角色。
使用 Create unifiedRoleAssignment API 指派角色
登入 Graph 瀏覽器。
使用 列出使用者 API 來取得使用者。
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq 'alice@contoso.com'
使用 List unifiedRoleDefinitions API 來取得您想要指派的角色。
GET https://graph.microsoft.com/v1.0/rolemanagement/directory/roleDefinitions?$filter=displayName eq 'User Administrator'
使用 List administrativeUnits API 以取得您想將角色指派範圍鎖定的管理單位。
GET https://graph.microsoft.com/v1.0/directory/administrativeUnits?$filter=displayName eq 'Seattle Admin Unit'
使用 建立 unifiedRoleAssignment API 來指派角色。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<Object ID of user>",
"roleDefinitionId": "<ID of role definition>",
"directoryScopeId": "/administrativeUnits/<Object ID of administrative unit>"
}
回應
HTTP/1.1 201 Created
如果不支援角色,回應會是錯誤的請求。
HTTP/1.1 400 Bad Request
{
"odata.error":
{
"code":"Request_BadRequest",
"message":
{
"message":"The given built-in role is not supported to be assigned to a single resource scope."
}
}
}
注意
在這裡範例中,directoryScopeId
指定為 /administrativeUnits/<ID>
,而不是 /<ID>
。 這是設計使然。 範圍 /administrativeUnits/<ID>
表示校長根據分派的角色可以管理行政單位的成員,而不是行政單位本身。
/<ID>
的範圍表示主體可以管理該Microsoft Entra 物件本身。 在 [應用程式註冊] 區段中,您會看到範圍 /<ID>
,因為在應用程式註冊範疇內限定的角色會賦予管理該物件本身的權限。
使用 Add a scopedRoleMember API 指派角色
或者,您可以使用 Add a scopedRoleMember API 來指派具有管理單位範圍的角色。
請求
POST /directory/administrativeUnits/{admin-unit-id}/scopedRoleMembers
身體
{
"roleId": "roleId-value",
"roleMemberInfo": {
"id": "id-value"
}
}
後續步驟