Graph APIとPowershellを駆使してPIMの設定を一括登録(実践編)
本記事では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のロール設定を一括登録(更新)する手順でした。
冒頭にも書きましたが、作業を始める前に事前バックアップや、関係各所への周知を忘れずに行ってください!