NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

Microsoft Entra IDの特権ロール管理~Group向けPIMの設定、運用、監査~

Why「Group向けPIM」?

Microsoft Entra IDの特権ロール管理において「Group向けPIM」を使うと以下の利点があります。

  • 必要な時間(Just-In-Time)のみ特権ロールを付与することで「最小特権の原則」を実装できる
  • 用途毎に複数の特権ロールをまとめてグループに付与・管理する事でPIMの運用が楽になる

なお、少しややこしいのですが「Group向けPIM」自体は特権ロールを管理するような機能は備えておらず、「許可されたら一時的にグループの所有者やメンバーになれます!」という機能です。「ロール割当可能なグループ」という機能と組み合わせて使う事で特権ロールのJust-In-Time管理が可能となります。

「Group向けPIM」とは

  • Microsoft EntraセキュリティグループまたはMicrosoft365グループに対して必要な時間のみグループの所有権とメンバーシップを付与可能
    • 「ロール割当可能なグループ」に適用することで必要な時間のみMicrosoft Entra IDの特権ロールを付与可能
    • なお、特権ロールを付与できませんが「ロール割り当て不可能なグループ」にも適用可能
  • 利用するにはMicrosoft Entra ID P2が必要
  • ながらくのプレビュー期間を経て2023年に一般提供!*1
    • プレビュー当時は「ロール割当可能なグループ」にのみ適用可能で、「特権アクセスグループ」と呼ばれていた*2

【参考リンク】Microsoft Learn - Group向けPIM

「ロール割当可能なグループ」とは

  • Microsoft EntraセキュリティグループまたはMicrosoft365グループに対してMicrosoft Entra IDの特権ロールを付与可能
    • グループに付与された特権ロールはグループの所有者やメンバーにも付与される
  • 利用するにはMicrosoft Entra ID P1 または P2が必要
  • 特権ロール保護のため以下の制約が存在
    • 作成できるのはグローバル管理者または特権ロール管理者のみ
    • メンバーを管理できるのはグローバル管理者、特権ロール管理者または当該グループの所有者のみ
    • 所有者やメンバーのパスワード変更やMFA のリセット等ができるのはグローバル管理者または特権認証管理者のみ

【参考リンク】Microsoft Learn - グループを利用したロール割当管理

「最小特権の原則」とは

  • 付与権限を業務上必要な最低限とすることでIDが侵害された際の被害拡大を抑止
  • NIST SP800シリーズやISO27001等の数多くの規定類・ガイドライン・ベストプラクティスで推奨
    • Microsoft Entra ロールのベスト プラクティスにおいても「最小特権の原則」を推奨

【参考リンク】Microsoft Learn - Microsoft Entra ロールのベスト プラクティス

【参考リンク】NIST SP800-171rev2(3.1.5項)

設定例

以下の流れで設定を行います。

  1. 特権ロールを付与したグループの作成
  2. 「Group向けPIM」の有効化
  3. 「Group向けPIM」の設定
  4. 「Group向けPIM」の対象メンバー追加

特権ロールを付与したグループの作成

  • グループ作成時に「グループに Microsoft Entra ロールを割り当てることができる」を「はい」に設定
  • 「役割」に付与したいMicrosoft Entra IDの特権ロールを指定

注:グローバル管理者または特権ロール管理者の特権が必要です。


「Group向けPIM」の有効化

  • Microsoft Entra 管理センターの「Privileged Identity Management | グループ」画面で「グループの検出」を押下


  • 有効化したいグループを選択して、「グループの管理」を押下

「Group向けPIM」の設定

  • 「Privileged Identity Management | グループ」画面で有効化したグループの名前を押下


  • 「設定」を選択後、「Member」を押下


  • アクティブ化時の有効時間や承認者等を設定

アクティブ化:「メンバーになる権利がある(資格のある割り当て)」状態から「メンバー(アクティブな割り当て)」になる事


「Group向けPIM」の対象メンバー追加

  • 「割り当て」を選択後、「割り当ての追加」を押下


  • 割り当ての対象としたいメンバーを選択


  • 割り当ての種類と期間を設定
    • 対象:「メンバーになる権利がある(資格のある割り当て)」状態にする。
    • アクティブ: アクティブ化を省略して、「メンバー(アクティブな割り当て)」状態にする。


運用例

「Group向けPIM」でのアクティブ化の申請と承認の運用例を以下に記載します。
ユーザはグループ向けPIMのアクティブ化を行う事でグループに付与されている特権ロールを得る事ができます。

アクティブ化申請

  • 「Privileged Identity Management | 自分のロール」画面からアクティブ化したいグループに対して「アクティブ化」を押下


アクティブ化承認

  • 承認者にメールが届くので、「要求の承認または拒否」を押下


  • 申請理由等を確認して「承認」または「拒否」を実施


監査ログの確認方法

「Group向けPIM」による特権ロール付与が適切に行われているか監査するためのログ確認方法を以下に記載します。

方法1:Microsoft Entra 管理センター(監査ログ)

  • 「監査ログ」を選択、「サービス:PIM」で絞り込み

⇒ 全グループの「日時、申請/承認理由、実施者、操作対象グループ」が確認できます。
 ただし、「操作対象グループ」は各種情報が詰まった「ターゲット」の中に埋もれているので見づらいです。


方法2:Microsoft Entra 管理センター(PIMグループのリソース監査)

  • 「Privileged Identity Management | グループ」画面で確認したいグループの名前を押下
  • 「リソースの監査」を押下

⇒ 選択したグループの「日時、申請/承認理由、実施者、操作対象グループ」が確認できます。
 ただし、「申請/承認理由」は一覧に表示されません。「状態」列のアイコンをクリックする事で理由が表示されます。


方法3:【オススメ】Microsoft SentinelのAuditLogs

Sentinelを導入済の場合はAuditLogsから必要な情報が検索できます。

以下のKQL(Kusto Query Language)を利用すると「日時、申請/承認理由、実施者、操作対象グループ」が一目でわかります
定期監査に加えて、Sentinelのブックとして保存する事でDaily Check等にも活用できます。

AuditLogs
| where LoggedByService == "PIM"
| mv-expand parsedTR = parse_json(TargetResources)
| extend TargetGroup = case(
    parsedTR["type"] == "Security", parsedTR["displayName"],
    ""
  )
| where TargetGroup != ""
| project TimeGenerated,Identity ,AADOperationType,TargetGroup,Result,ResultReason
| sort by TimeGenerated


おわりに

本日は、「Group向けPIM」を利用したMicrosoft Entra IDの特権ロール管理について設定、運用、監査の面から簡単にご紹介しました。

本題からは逸れますが、SentinelやKQLは色々できて面白いですね。そのあたりは12月19日予定の北村さんが詳しく話してくれるはずなのでこうご期待!