指派Microsoft Entra 角色
本文內容
本文說明如何使用 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 Explorer 的必要條件 。
在租戶層級指派角色
本節說明如何在租戶層級指派角色。
提示
本文中的步驟可能會因為您從哪個入口網站開始而稍有不同。
至少以 特權角色管理員 身分登入到 Microsoft Entra 系統管理中心 。
瀏覽至 身分識別 >角色 & 系統管理員 >角色 & 。
選擇角色名稱以開啟角色。 不要在角色旁邊新增核取記號。
選取 新增指派 ,然後選取您要指派給此角色的使用者或群組。
只會顯示可指派角色的群組。 如果未列出群組,您必須建立可指派角色的群組。 如需詳細資訊,請參閱 在 Microsoft Entra ID 中建立可指派角色的群組。
如果您的體驗與下列螢幕快照不同,您可能擁有 Microsoft Entra ID P2 和 PIM。 如需詳細資訊,請參閱在 Privileged Identity Management中 指派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 "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 Explorer 。
使用 列出使用者 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'
使用 Create 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 系統管理中心 。
瀏覽至 身分識別 >應用程式 >應用程式註冊 。
選取應用程式。 您可以使用搜尋方塊來尋找所需的應用程式。
您可能必須選取 [所有應用程式 ],才能查看租用戶中應用程式註冊的完整清單。
從左側導覽功能表中選取 [角色和系統管理員 ],以查看可透過應用程式註冊指派的所有角色清單。
選取所需的角色。
提示
您不會在這裡看到Microsoft Entra 內建或自定義角色的完整清單。 這是預期的。 我們顯示具有僅管理應用程式註冊相關許可權的角色。
選取 [[新增指派] ,然後選取您要指派此角色的使用者或群組。
選取 [[新增 ],以指派範圍超過應用程式註冊的角色。
請遵循下列步驟,使用PowerShell在應用程式範圍指派Microsoft Entra角色。
開啟 PowerShell 視窗。 如有必要,請使用 Install-Module 來安裝 Microsoft Graph PowerShell。 如需詳細資訊,請參閱 使用 PowerShell 或 Graph Explorer 的必要條件 。
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
請遵循下列指示,在 Graph Explorer 中使用 Microsoft Graph 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 'Application Administrator'
使用 列出應用程式 API,以獲取您要設定位於角色指派範圍內的應用程式。
GET https://graph.microsoft.com/v1.0/applications?$filter=displayName eq 'f/128 Filter Photos'
使用 API Create unifiedRoleAssignment 來指派角色。
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 ID 中,若要更細微地進行管理控制,您可以指派 Microsoft Entra 角色,並將其範圍限制為一或多個 管理單位 。 當在管理單位範圍內指派 Microsoft Entra 角色時,角色許可權僅適用於管理管理單位本身的成員,不適用於租用戶範圍的設定或組態。
例如,在系統管理單位範圍指派群組管理員角色的系統管理員可以管理屬於系統管理單位成員的群組,但無法管理租使用者中的其他群組。 它們也無法管理與群組相關的租用戶層級設定,例如到期或群組命名原則。
本節說明如何以系統管理單位的範圍來指派 Microsoft Entra 角色。
先決條件
為每位管理單位的管理員提供 Microsoft Entra ID P1 或 P2 授權
Microsoft Entra ID 免費授權給系統管理單位成員
特權角色管理員
使用 PowerShell 時Microsoft Graph PowerShell 模組
使用 Graph Explorer 進行 Microsoft Graph API 時的系統管理員同意
如需詳細資訊,請參閱 使用 PowerShell 或 Graph Explorer 的必要條件 。
可在系統管理單位範圍內指派的角色
下列 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 系統管理中心 。
瀏覽至 身分識別 >角色 & 系統管理員 >管理單位 。
選取管理單位。
從左側導覽功能表中選取 [角色和 系統管理員],以查看可透過系統管理單位指派的所有角色清單。
選取所需的角色。
提示
您不會在這裡看到Microsoft Entra 內建或自定義角色的完整清單。 這是預期的。 我們展示具有與管理單位內受支援物件相關權限的角色。 若要查看管理單位內支援的物件清單,請參閱 Microsoft Entra ID中 管理單位。
選取 [[新增指派] ,然後選取您要指派此角色的使用者或群組。
選取 ,再新增 以指派角色給管理單位設定範圍。
請遵循下列步驟,使用 PowerShell 在系統管理單位範圍指派Microsoft Entra 角色。
開啟 PowerShell 視窗。 如有必要,請使用 Install-Module 來安裝 Microsoft Graph PowerShell。 如需詳細資訊,請參閱 使用 PowerShell 或 Graph Explorer 的先決條件 。
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 中於系統管理單位範圍內指派角色。
使用建立 unifiedRoleAssignment API 指派角色
登入 圖表探索器 。
使用 列出使用者 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 指派角色
或者,您可以使用 新增 scopedRoleMember API 來指派具有系統管理單位範圍的角色。
請求
POST /directory/administrativeUnits/{admin-unit-id}/scopedRoleMembers
身體
{
"roleId": "roleId-value",
"roleMemberInfo": {
"id": "id-value"
}
}
後續步驟