使用 Microsoft Entra Privileged Identity Management 对管理员角色进行管理

使用 Microsoft Entra Privileged Identity Management (PIM) 来管理 Power Platform 管理中心中的高特权管理员角色。

先决条件

  • 删除环境中旧的系统管理员角色分配。 您可以使用 PowerShell 脚本在一个或多个 Power Platform 环境中清点和删除系统管理员角色中不需要的用户。

功能支持的更改

Microsoft不再自动将系统管理员 角色分配给 具有全局或服务级别管理员角色(例如 Power Platform 管理员和Dynamics 365 管理员)的用户。

这些管理员可以继续使用以下权限登录 Power Platform 管理中心:

  • 启用或禁用租户级别设置
  • 查看环境的分析信息
  • 查看容量消耗

这些管理员无法在没有许可证的情况下执行需要直接访问 Dataverse 数据的活动。 这些活动的例子包括:

  • 更新环境中用户的安全角色
  • 为环境安装应用程序

重要提示

全局管理员、 Power Platform 管理员和 Dynamics 365 服务管理员必须先完成另一个步骤,然后才能执行需要访问权限的活动 Dataverse。 他们必须在需要访问的环境中将自己提升为系统管理员角色。 所有提升操作将记录到 Microsoft Purview。

已知限制

  • 使用 API 时,您会注意到,如果调用方是系统管理员,则自我提升调用将返回成功,而不是通知调用方系统管理员已存在。

  • 发出呼叫的用户必须分配有租户管理员角色。 有关符合租户管理标准的用户的完整列表,请参见功能支持的变化

  • 如果您是 Dynamics 365 管理员并且 环境 受安全组保护,则必须是该安全组的成员。 此规则不适用于具有 Power Platform 全局管理员或管理员角色的用户。

  • 提升 API 只能由需要提升其地位的用户调用。 它不支持出于提升目的代表另一个用户进行 API 调用。

  • 当角色分配在 Privileged Identity Management 中过期时,不会删除通过自我提升 分配的系统管理员角色。 您必须手动从系统管理员角色中删除该用户。 查看 清理活动

  • 使用Microsoft Power Platform CoE 初学者工具包的客户可以使用一种变通方法。 有关更多信息和详情,请参阅 PIM 问题和解决方法 #8119

  • 不支持通过组分配角色。 确保您直接向用户分配角色。

自我提升为系统管理员角色

我们支持使用 PowerShell 或通过 Power Platform 管理中心的直观体验进行提升。

备注

尝试自我提升的用户必须是全局管理员、Power Platform 管理员或 Dynamics 365 管理员。具有其他 Entra ID 管理员角色的用户无法使用 Power Platform 管理中心中的用户界面,并且尝试通过 PowerShell API 进行自我提升会返回错误。

通过 PowerShell 自我提升

设置 PowerShell

安装 MSAL PowerShell 模块。 您只需安装该模块一次。

Install-Module -Name MSAL.PS

有关设置 PowerShell 的更多信息,请参阅 PowerShell 和 Visual Studio Code 快速入门 Web API

步骤 1:运行脚本进行提升

在此 PowerShell 脚本中,您可以:

  • 使用 Power Platform API 进行身份验证。
  • 使用您的环境 ID 构建 http 查询。
  • 调用 API 端点来请求提升。
添加您的环境 ID
  1. Power Platform 管理中心环境选项卡中获取您的环境 ID

  2. 将您特有的 <environment id> 添加到脚本中。

运行脚本

将脚本复制并粘贴到 PowerShell 控制台中。

# Set your environment ID
$environmentId = "<your environment id>"

Import-Module MSAL.PS

# Authenticate
$AuthResult = Get-MsalToken -ClientId '49676daf-ff23-4aac-adcc-55472d4e2ce0' -Scope 'https://api.powerplatform.com/.default' 


$Headers = @{
   Authorization  = "Bearer $($AuthResult.AccessToken)"
   'Content-Type' = "application/json"
} 

$uri = "https://api.powerplatform.com/usermanagement/environments/$environmentId/user/applyAdminRole?api-version=2022-03-01-preview";

try { 

   $postRequestResponse = Invoke-RestMethod -Method Post -Headers $Headers -Uri $uri 
   
} 
   
catch { 
   
   # Dig into the exception to get the Response details. 
   
   Write-Host "Response CorrelationId:" $_.Exception.Response.Headers["x-ms-correlation-id"] 
   
   Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__  
   
   Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription 
   
   $result = $_.Exception.Response.GetResponseStream() 
   
   $reader = New-Object System.IO.StreamReader($result) 
   
   $reader.BaseStream.Position = 0 
   
   $reader.DiscardBufferedData() 
   
   $responseBody = $reader.ReadToEnd(); 
   
   Write-Host $responseBody 
   
} 
   
$output = $postRequestResponse | ConvertTo-Json -Depth 2 
   
Write-Host $output

步骤 2:确认结果

成功后,您会看到类似以下输出的输出。 寻找 "Code": "UserExists" 作为您成功提升角色的证据。

{
  "errors": [],
  "information": [
    {
      "Subject": "Result",
      "Description": "[\"SyncMode: Default\",\"Instance df12c345-7b56-ee10-8bc5-6045bd005555 exists\",\"Instance df85c664-7b78-ee11-8bc5-6045bd005555 in enabled state\",\"Instance Url found https://orgc1234567.crm.dynamics.com\",\"User found in AD tenant\",\"User in enabled state in AD tenant\",\"SystemUser with Id:11fa11ab-4f75-ee11-9999-6045bd12345a, objectId:d111c55c-aab2-8888-86d4-ece1234f11e6 exists in instance\"]",
      "Code": "UserExists"
    },
    { ... }
}
错误

如果您没有适当的权限,可能会看到一条错误消息。

"Unable to assign System Administrator security role as the user is not either a Global admin, Power Platform admin, or Dynamics 365 admin. Please review your role assignments in Entra ID and try again later. For help, please reach out to your administrator."

步骤 3:清理活动

在 PIM 中的分配过期后,运行 Remove-RoleAssignmentFromUsers 从系统管理员安全角色中删除用户。

  • -roleName:“系统管理员”或其他角色
  • -usersFilePath:包含用户主体名称列表的 CSV 文件的路径(每行一个)
  • -environmentUrl:位于 admin.powerplatform.microsoft.com
  • -processAllEnvironments:(可选)处理您的所有环境
  • -geo:有效的 GEO
  • -outputLogsDirectory:写入日志文件的路径
示例脚本
Remove-RoleAssignmentFromUsers
-roleName "System Administrator" 
-usersFilePath "C:\Users\<My-Name>\Desktop\<names.csv>"
-environmentUrl "<my-name>-environment.crm.dynamics.com"
# Or, include all your environments
-processAllEnvironments $true
-geo "NA"
-outputLogsDirectory "C:\Users\<My-Name>\Desktop\<log-files>"

通过 Power Platform 管理中心自我提升

  1. 登录 Power Platform 管理中心

  2. 在左侧面板中,选择环境

  3. 选择您的环境旁边的复选标记。

  4. 在命令栏中选择成员身份以请求自提升。

  5. 将显示系统管理员窗格。 通过选择添加我,将您自己添加到系统管理员角色。

    使用成员身份菜单选项请求自提升。