Graph APIとPowershellを駆使してPIMの設定を一括登録(実践編)
2020-09-28
azblob://2022/11/11/eyecatch/2020-09-30-pim-graph-api-powershell-practice-000.jpg

本記事ではPowerShellとGraph APIを利用してPIMのロール設定を一括更新します。

作業に必要な材料はこちら

  • 準備編で作成したPIMのロール設定を編集できるアプリケーション情報
  • グローバル管理者または特権ロール管理者のロールを持つユーザー(作業者)

権限申請が利用できなくなった。。などのトラブルが発生しないよう、作業を始める前に事前情報のバックアップや、関係各所への周知を忘れずに行ってください!

1.モジュールインストール

PowerShellを管理者で起動します。

以下、本記事のすべてのコマンドはPowerShell上で実行します。

Install-Module -Name MSAL.PS -AcceptLicense
Get-Module -ListAvailable -Name MSAL.PS|select Version,Name

2.パラメーター登録

準備編で用意したパラメーターを変数として宣言します。

各変数の中身は実施環境の情報を入力してください。(xxxなどはサンプルです)

$ClientId = "xxx"
$RedirectUri = "msalxxx"
$TenantId = "xxx"

3.認証情報作成

下記の2つのコマンドを実行します。
Get-MsalToken実行時にユーザーの認証を求められますので、グローバル管理者、または特権管理者で認証を実施します。

$authResult = Get-MsalToken -ClientId $ClientId -RedirectUri $RedirectUri -TenantId $TenantId -Interactive -Scopes "Directory.AccessAsUser.All","PrivilegedAccess.ReadWrite.AzureAD"
$headerParams = @{'Authorization' = "Bearer $($authResult.Accesstoken)"}
グローバル管理者または特権ロール管理者のアカウント情報を入力します。

4.ロール検索

ロール一覧を取得します。こちらで取得したロールが次手順の設定を反映する対象になります。

一括設定の対象外としたいロールがある場合はこのタイミングで変数から該当ロールの行を削除してください。

$RoleList=(Invoke-RestMethod -Method GET -Uri "https://graph.microsoft.com/beta/privilegedRoles" -Headers $headerParams).value

5.ロール設定一括更新

設定内容を下記の通り変数に登録します。
各設定値についてはこちらの記事にて解説しています。

$json = '{
"elevationDuration": "PT2H",
"notificationToUserOnElevation": true,
"ticketingInfoOnElevation": false,
"mfaOnElevation": true,
"approvalOnElevation": true,
"approverIds": [
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
]
}'

下記コマンドを実行して設定を反映します。

$RoleList|foreach{Invoke-RestMethod -Method PUT -Uri "https://graph.microsoft.com/beta/privilegedRoles/$($_.id)/settings" -Headers $headerParams -Body $json -ContentType 'application/json'}

実行結果は表示されないため、必要に応じてAzure Portal(Privileged Identity Management)上で設定値を確認する、または下記コマンドを実行して設定内容を確認します。

$RoleList|foreach{Invoke-RestMethod -Method GET -Uri "https://graph.microsoft.com/beta/privilegedRoles/$($_.id)/settings" -Headers $headerParams}

まとめ

以上、Graph APIとPowerShellを活用したPIMのロール設定を一括登録(更新)する手順でした。

冒頭にも書きましたが、作業を始める前に事前バックアップや、関係各所への周知を忘れずに行ってください!