PIMのロール設定の中身を「もう一歩」深く理解する
2020-09-30
azblob://2022/11/11/eyecatch/2020-09-30-pim-role-settings-deep-dive-000.jpg

まえがき

PIM(Privileged Identity Management)で設定可能な各種ロールにおける設定値はGUI(Azure Portal)やGraph APIを利用して設定することができます。

公式ページには各設定値についての説明が記載されていますが、詳細までは記載されていません。
本記事では、各設定値が何に利用されているのか、どのように設定するものなのかを「もう一歩」具体的に解説します。

また、Graph APIで利用できるJSON形式についても紹介します。

GUIでもGraph APIでも設定の概念は同一のものですので、PIMの初期設定時や見直しの際に各設定値を決める際の参考情報としてご利用ください。

【Microsoft | Docs】
privilegedRoleSettings リソースの種類
特権ロールの設定を表します。

https://docs.microsoft.com/ja-jp/graph/api/resources/privilegedrolesettings?view=graph-rest-beta#properties
プロパティ説明
elevationDurationduration役割がアクティブ化される期間。
idstringロール設定の一意の識別子。 読み取り専用です。
isMfaOnElevationConfigurablebooleantrue の場合は、mfaOnElevation を構成できます。 mfaOnElevation を構成できない場合はfalse 。
lastGlobalAdminboolean内部でのみ使用されます。
maxElavationDurationdurationアクティブ化されたロールの最大期間。
mfaOnElevationboolean役割をアクティブ化するために MFA が必要な場合はtrue 。 役割をアクティブ化するために MFA が必要でない場合はfalse 。
minElevationDurationdurationアクティブ化されたロールの期間を最小化します。
notificationToUserOnElevationbooleantrue の場合は、エンドユーザーに役割がアクティブ化されたときに通知を送信します。 true の場合は、役割がアクティブ化されたときに通知を送信しません。
ticketingInfoOnElevationboolean役割をアクティブ化するときに、チケット情報が必要な場合はtrue 。 false を指定すると、役割をアクティブ化するときに、チケットの情報は必要ありません。
approvalOnElevationbooleanロールをアクティブ化するときに承認が必要な場合はtrue 。 false を指定すると、役割をアクティブ化するときに承認が必要ありません。
approverIdsstring コレクションライセンス認証に承認が必要な場合は、承認 id のリスト。
privilegedRoleSettings プロパティ

上記通り、PIMのロール設定は全11項目で構成されています。GUIやGraph APIで変更可能な値は6つです。

その他5項目は変更できない既定値、または現時点では設定不可/利用不可な項目です。


設定可能な項目

【1/6】最大アクティブ化期間 (時間単位)(elevationDuration)

String (timestamp)で設定する項目。
GUIでは時間単位、Graph APIではISO 8601期間形式で設定します。

ISO 8601 duration format
ISO 8601 Durations are expressed using the following format, where (n) is replaced by the value for each of the date and time elements that follow the (n):
P(n)Y(n)M(n)DT(n)H(n)M(n)S

https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm

ロールをアクティブ化できる最大期間を設定します。

例えば2時間と設定した場合、ユーザーは30分から2時間まで、任意の時間を指定してロールの有効化(または有効化の申請)を行うことが出来ます。

設定可能なしきい値は最小30分("PT30M")から最大74時間("P3DT2H")まで。
GUIでは0.5時間から72時間まで指定できます。
Graph APIだと74時間(3日と2時間)まで指定可能です。差分の2時間は謎です。。

分単位も指定可能ですが、0分~14分を指定すると0分に切り捨てられ、15分~44分を指定すると30分に丸められ、45分~59分を指定すると切り上げ1時間に設定されます。

設定値がしきい値から外れると下記のように怒られます。

Elavation duration should be between 0.5 and 74

おすすめの設定
(運用に合わせて変更を推奨)

"elevationDuration": "PT2H"


【2/6】通知(notificationToUserOnElevation)

booleanで設定する項目。

trueの場合は、エンドユーザーのロールがアクティブ化されたときに管理者に通知を送信します。

falseの場合は、ロールがアクティブ化されたときに通知を送信しません。

おすすめの設定

"notificationToUserOnElevation": true

【3/6】インシデント/要求チケット(ticketingInfoOnElevation)

booleanで設定する項目。

ロールをアクティブ化するときにチケット情報が必要な場合はtrue。

falseを指定すると、ロールをアクティブ化するときにチケットの情報は必要ありません。

おすすめの設定
(運用に合わせて変更を推奨)

"ticketingInfoOnElevation": false

【4/6】Multi-Factor Authentication(mfaOnElevation)

booleanで設定する項目。

ロールをアクティブ化するために MFAの実施が必要な場合はtrue 。

ロールをアクティブ化するために MFA が必要としない場合はfalse を選択します。

おすすめの設定

"mfaOnElevation": true

【5/6】承認を要求する(approvalOnElevation)

booleanで設定する項目。

ロールをアクティブ化するときに承認が必要な場合はtrue 。

falseを指定すると、ロールをアクティブ化するときに承認が必要ありません。

おすすめの設定

"approvalOnElevation": true

【6/6】承認者の選択(approverIds)

objectID(1つ~複数)で設定する項目。
ユーザー、またはグループのオブジェクトIDを指定します。

承認者を要求する(approvalOnElevation)がtrueの場合、本項目もセットで設定する必要があります。

入力値サンプル(ユーザーまたはグループのobjectIdを設定してください)

"approverIds": [
 "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
 "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
]


設定できない値

以下は興味のある方のみお読みください。
GUIでは設定できない値で、Graph APIでも設定は参照できますが、変更しない項目となります。

【1/5】id

この値はロール設定の一意の識別子です。読み取り専用です。
idを参照する方法は色々ありますが、主な方法を3点ほどご紹介します。

  • Azure Portalを使う
    1. Azure Active Directoryを開く
    2. ロールと管理者を開く
    3. IDを知りたいロール名を選択する
    4. ロールの説明欄を開く
    5. 概要に記載されたテンプレートIDを参照する
  • PowerShellを使う
    1. Get-AzureADDirectoryRoleTemplate
    2. 実行結果のobjectIdを参照する。
  • Graph APIを使う
    1. GET https://graph.microsoft.com/beta/privilegedRoles
    2. 実行結果のidを参照する

【2/5】lastGlobalAdmin

"lastGlobalAdmin": false

こちらは内部の処理のために用意されている属性値です。
※なぜか変更できてしまいますが、影響が不明瞭のため変更非推奨です。

【3/5】isMfaOnElevationConfigurable

"isMfaOnElevationConfigurable": false

この設定は固定であり、変更できません。

以下、Microsoftサポートに問い合わせた際に頂いた情報となります。

PIM で管理するロールによっては、弊社がセキュリティ観点より保護するべきと判断しMFA を必須にしているロールがございます。
MFA を無効化できない ロールについては "isMfaOnElevationConfigurable" がfalse、管理者によって設定が可能な権限については trueが設定されています。
この設定は固定であり、変更いただけるものではありません。

つまりこの値がtrueになっているロールはより厳しく管理すべきだ、とも読み取れますね。
この値がtrueでロールの承認設定や時間設定がデフォルトのものは見直したほうが良いかもしれません。

【4/5】minElevationDuration

この値はGUI上でも設定出来ない項目です。
変更を行っても反映されず、何かの処理で利用されている値でもありません。
いつかこの値を利用できるようになる日を楽しみにして、今は考慮外にしておきましょう。

【5/5】maxElavationDuration

この値もminElevationDurationと同じくGUI上でも設定出来ない項目です。
変更を行っても反映されず、何かの処理で利用されている値でもありませんので考慮外とします。


まとめ

以上、PIMのロール設定値について解説と参考値のご紹介でした。

JSON形式をまとめると、下記のような設定値になります。
設定値については運用環境に応じてカスタマイズしてください。

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