Microsoft Entra Privileged Identity Management で管理者ロールを管理する

Microsoft Entra Privileged Identity Management (PIM) を使用して、Power Platform 管理センターで権限の高い管理者ロールを管理します。

前提条件

  • 環境内の古いシステム管理者ロールの割り当てを削除します。 PowerShell スクリプトを使用して、不要なユーザーをインベントリし、1 つ以上の Power Platform 環境の システム管理者 ロールから削除できます。

機能サポートの変更

Microsoft は、次の Microsoft Entra ID ロール (またはテナント管理者) を持つユーザーに システム管理者 ロールを自動的に割り当てることはありません。

  • グローバル管理者
  • Power Platform管理者
  • Dynamics 365 管理者

テナント管理者は、次の権限を使用して、Power Platform 管理センターに引き続きサインインすることができます:

  • テナント レベルの設定を有効または無効にする
  • 環境の分析情報を表示する
  • キャパシティの消費を表示する

テナント管理者は、Dataverse データへの直接アクセスを必要とするアクティビティを実行できません。 これらのアクティビティの例は、次のとおりです:

  • 環境内のユーザーのセキュリティ ロールの更新
  • 環境用アプリのインストール

重要

テナント管理者は、Dataverse へのアクセスを必要とするアクティビティを実行する前に、別の手順を実行する必要があります。 アクセスを必要とする環境では、システム管理者 ロールに昇格する必要があります。 すべての昇格アクションは Microsoft Purview に記録されます。

システム管理者ロールに自己昇格する

Power Platform 管理センターでは、PowerShell または直感的な操作による昇格をサポートしています。

注意Note

自己昇格を試みるユーザーは、グローバル管理者、Power Platform 管理者、または Dynamics 365 管理者である必要があります。 Power Platform 管理センターのユーザー インターフェイスは、他の Entra ID 管理者ロールを持つユーザーには利用できず、PowerShell API を介して自己昇格を試みると、エラーが返されます。

PowerShell による自己昇格

PowerShell の設定

MSAL PowerShell モジュールをインストールします。 モジュールのインストールは 1 度だけ必要です。

Install-Module -Name MSAL.PS

PowerShell の設定の詳細については、PowerShell と Visual Studio コードを使用した Web API のクイックスタート を参照してください。

ステップ 1: スクリプトを実行して昇格する

この PowerShell スクリプトで、次のことを行います:

  • Power Platform API を使用して認証します。
  • 環境 ID で http クエリを作成します。
  • API エンドポイントを呼び出して昇格をリクエストします。
自分の環境 ID を追加します。
  1. Power Platform 管理センター環境 タブから 環境 ID を取得します。

    環境 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 ファイルへのパス (1 行に 1 つ)
  • -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. システム管理者 ペインが表示されます。 システムの管理者ロールに自分を追加するには、私を追加してくださいを選択します。

    メンバーシップ メニュー オプションを使用して、自己昇格をリクエストします。

既知の制限

  • API を使用する場合、呼び出し元がシステム管理者である場合、自己昇格呼び出しは、システム管理者がすでに存在することを呼び出し元に通知するのではなく、成功を返すことがわかります。

  • 通話を行うユーザーには、テナント管理者ロールが割り当てられている必要があります。 テナント管理者の基準を満たすユーザーの完全なリストについては、機能サポートの変更を参照してください

  • 昇格 API は、ステータスを昇格する必要があるユーザーによってのみ呼び出すことができます。 昇格を目的として、別のユーザーに代わって API 呼び出しを行うことはサポートされていません。

  • Microsoft Power Platform CoE スターター キットを使っている顧客には回避策があります。 詳しい情報については、PIM の問題と回避策 #8119 を参照してください。

  • グループによるロールの割り当てはサポートされていません。 必ずロールをユーザーに直接割り当ててください。