<p><!--META
{
"title": "Microsoft 365 Privileged Identity Management (PIM) アクセス承認プロセスの実装",
"primary_category": "クラウド>Azure",
"secondary_categories": ["Microsoft 365", "セキュリティ", "ID管理"],
"tags": ["PIM", "Microsoft Entra ID", "Just-In-Time", "Graph API", "PowerShell", "条件付きアクセス", "特権アクセス管理"],
"summary": "Microsoft 365 PIMのアクセス承認プロセスのアーキテクチャ、設定、運用、セキュリティ、コスト、落とし穴を解説。特権アクセス管理を強化する戦略を提示。",
"mermaid": true,
"verify_level": "L0",
"tweet_hint": {"text":"M365 PIMのアクセス承認プロセス実装ガイド。Just-In-Timeアクセスによるセキュリティ強化、設定、運用、コスト最適化までを解説。特権ID管理のベストプラクティス。 #PIM #MicrosoftEntraID","hashtags":["#PIM","#MicrosoftEntraID","#セキュリティ"]},
"link_hints": ["https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/pim-configure","https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/subscription-requirements","https://learn.microsoft.com/en-us/graph/api/resources/privilegedidentitymanagement-overview?view=graph-rest-1.0"]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">Microsoft 365 Privileged Identity Management (PIM) アクセス承認プロセスの実装</h1>
<p>Microsoft 365 環境における特権アクセスの管理は、組織のセキュリティ体制を維持する上で極めて重要です。Microsoft Entra Privileged Identity Management (PIM) は、この課題に対する強力なソリューションを提供します。PIMは、Just-In-Time (JIT) アクセスと最小特権の原則を適用することで、特権ロールへの恒久的なアクセスを排除し、必要なときに必要な期間だけアクセスを許可するメカニズムを実装します。本記事では、M365 PIMのアクセス承認プロセスのアーキテクチャ、設定手順、運用監視、セキュリティ、コスト、および導入時の落とし穴について詳しく解説します。</p>
<h2 class="wp-block-heading">アーキテクチャ</h2>
<p>Microsoft Entra PIMは、Microsoft Entra IDのコア機能として提供され、Microsoft 365の管理ロール(例: グローバル管理者、Exchange管理者、SharePoint管理者など)を含む様々な特権ロールへのアクセスを制御します。このシステムは、ユーザーが特権ロールを一時的にアクティブ化するためのリクエストを送信し、設定された承認者によってそのリクエストがレビューおよび承認されるワークフローを中心に構築されています。</p>
<h3 class="wp-block-heading">主要コンポーネント</h3>
<ul class="wp-block-list">
<li><p><strong>PIMサービス</strong>: Microsoft Entra ID内で動作し、特権ロールの管理、アクティブ化リクエストの処理、承認ワークフローの調整を行います。</p></li>
<li><p><strong>Microsoft Entra ID</strong>: ユーザー、グループ、アプリケーションのID情報と、それらに割り当てられるロールを管理する中心的なIDプロバイダーです。PIMはMicrosoft Entra IDのロールベースのアクセス制御 (RBAC) と密接に統合されています。</p></li>
<li><p><strong>Microsoft 365 サービス</strong>: Exchange Online、SharePoint Online、Teamsなど、PIMによって管理される特権ロールが影響を与える実際のサービス群です。</p></li>
<li><p><strong>ユーザー (特権ロールの候補者)</strong>: PIMによって管理される特権ロールに割り当てられ、必要に応じてそのロールをアクティブ化できるユーザーです。</p></li>
<li><p><strong>承認者</strong>: ユーザーのアクティブ化リクエストをレビューし、承認または拒否する権限を持つユーザーまたはグループです。</p></li>
<li><p><strong>条件付きアクセス (CA)</strong>: PIMアクティブ化プロセス中に追加のセキュリティ要件(例: MFA必須、準拠デバイスからのアクセス)を強制するために統合されます。</p></li>
</ul>
<h3 class="wp-block-heading">アクセス承認プロセスのフロー</h3>
<p>ユーザーがPIMで管理されているロールを必要とする場合、以下の承認プロセスが実行されます。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
flowchart TD
A["ユーザー"] -- 1. 特権ロールのアクティブ化をリクエスト --> B("Microsoft Entra PIM");
B -- 2. PIM設定に基づく承認者特定と通知 --> C["承認者"];
C -- 3. リクエストのレビューと承認/拒否 --> B;
B -- 4. 承認された場合: ロールを一時的に昇格 --> D["Microsoft Entra ID"];
B -- 4. 拒否された場合: ロール昇格を阻止 --> A;
D -- 5. 昇格されたロールでMicrosoft 365サービスへアクセス --> E["Microsoft 365サービス"];
D -- 6. 指定期間経過後: ロールを自動的に降格 --> B;
B -- 7. PIM監査ログに記録 --> F["監査ログ/Sentinel"];
</pre></div>
<p>このプロセスにより、特権ロールが恒久的に割り当てられるリスクが大幅に低減され、必要な時だけアクセスが許可されるため、攻撃対象領域が縮小されます。</p>
<h2 class="wp-block-heading">設定手順</h2>
<p>PIMを導入する基本的な手順は、まずMicrosoft Entra ID P2ライセンスを有効化し、その後、PIM設定を構成することです。ここでは、特にMicrosoft Graph PowerShell SDKを使用したロールのアクティブ化設定の管理に焦点を当てます。</p>
<p>PIMを有効化すると、PIMで管理したいMicrosoft Entra ロールを選択し、各ロールのアクティブ化設定を構成できます。この設定には、アクティブ化に必要な承認、多要素認証 (MFA) の要件、アクティブ化期間の制限などが含まれます。</p>
<h3 class="wp-block-heading">PIMロールアクティブ化設定の構成 (Graph PowerShell SDK)</h3>
<p>以下のPowerShellスクリプトは、特定のMicrosoft Entra ロールのPIMアクティブ化設定を取得し、変更する例です。この例では、「グローバル閲覧者」ロールに対して、承認を必須とし、最大アクティブ化期間を4時間に設定します。</p>
<p><strong>前提条件:</strong></p>
<ul class="wp-block-list">
<li><p><code>Microsoft.Graph.Entra</code> モジュールがインストールされていること。</p></li>
<li><p>適切な権限 (例: Privileged Role Administrator) を持つアカウントでGraph APIに接続していること。</p></li>
</ul>
<div class="codehilite">
<pre data-enlighter-language="generic"># Graph APIへの接続
# アプリケーション権限を使用する場合はConnect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory" -ClientID "..." -TenantID "..."
# 委任された権限を使用する場合はConnect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
# スコープ: RoleManagement.ReadWrite.Directory はPIM設定変更に必要です。
# 例: 委任された権限で接続
Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
# 1. 管理したいロールのテンプレートIDを取得 (例: グローバル閲覧者)
# 参考: https://learn.microsoft.com/ja-jp/azure/active-directory/roles/permissions-reference
# グローバル閲覧者ロールのテンプレートID (ロールによって異なる)
$roleTemplateId = "f2ef992c-3afb-46b0-b193-cd26207865ba" # グローバル閲覧者の例
# 2. そのロールのPIM設定を取得
$pimSettings = Get-MgEntraPrivilegedAccessGroupAssignmentScheduleSetting -UnifiedRoleDefinitionId $roleTemplateId
Write-Host "--- 現在のPIM設定 ---"
$pimSettings | Format-List
# 3. PIM設定を更新
# 承認要求を必須にする (isEnabled = $true)
# 承認者として特定のユーザーまたはグループを指定 (ここでは例として指定しないが、`approvers`プロパティで指定可能)
# MFAを必須にする (isMfaRequired = $true)
# アクティブ化期間を最大4時間 (duration = "PT4H") に設定
# アクティブ化理由を必須にする (isEnabled = $true)
$newPimSettings = @{
Approval = @{
IsEnabled = $true
}
MaximumDuration = "PT4H" # ISO 8601 Duration format. PT4H = 4時間
JustificationRequired = @{
IsEnabled = $true
}
# MFARequired = @{
# IsEnabled = $true
# } # MFAは一般的に条件付きアクセスで強制するため、PIM設定ではオフにすることが多い
}
# 設定の更新 (Put-MgEntraPrivilegedAccessGroupAssignmentScheduleSetting は存在しないので、直接更新できない)
# 代わりに、Privileged Access 'Roles' の設定を更新します。
# 実際には、'privilegedAccess/azureRoles/roleSettings' エンドポイントを使います。
# PIMロール設定はGet-MgEntraPrivilegedAccessAzureRoleSettingで取得し、Update-MgEntraPrivilegedAccessAzureRoleSettingで更新します。
# 適切なエンドポイントでロール設定を取得
$roleSetting = Get-MgEntraPrivilegedAccessAzureRoleSetting -UnifiedRoleDefinitionId $roleTemplateId
# 既存の設定を基に更新オブジェクトを作成
$updatedRule = $roleSetting.Rules | Where-Object {$_.odata_type -eq "#microsoft.graph.privilegedRoleAssignmentRequestApprovalRule"}
if ($updatedRule) {
$updatedRule.IsEnabled = $true
} else {
# ルールが存在しない場合は追加する必要がある
# これはGraph APIの複雑な部分で、Ruleを直接追加するAPIは提供されていないことが多い
# 通常は既存のRuleオブジェクトのプロパティを更新する
}
$updatedMaxDurationRule = $roleSetting.Rules | Where-Object {$_.odata_type -eq "#microsoft.graph.privilegedRoleAssignmentRequestMaximumDurationRule"}
if ($updatedMaxDurationRule) {
$updatedMaxDurationRule.Duration = "PT4H"
}
$updatedJustificationRule = $roleSetting.Rules | Where-Object {$_.odata_type -eq "#microsoft.graph.privilegedRoleAssignmentRequestJustificationRule"}
if ($updatedJustificationRule) {
$updatedJustificationRule.IsEnabled = $true
}
# 更新されたRulesコレクションでPIM設定を更新
# Update-MgEntraPrivilegedAccessAzureRoleSetting は複雑なオブジェクトを必要とします
# 簡略化のため、ここでは具体的な `Update-MgEntraPrivilegedAccessAzureRoleSetting` コマンドの詳細な引数指定は省略し、
# 主な概念を説明します。実際には、Microsoft Graph ExplorerやSDKドキュメントで詳細なペイロードを確認してください。
# `Update-MgEntraPrivilegedAccessAzureRoleSetting` のBodyはUnifiedRoleManagementPolicyオブジェクトを受け取ります。
# したがって、上記で作成した$roleSettingオブジェクトのプロパティを適切に設定し、`Update-MgEntraPrivilegedAccessAzureRoleSetting` に渡す形になります。
# 以下は概念的な更新例です。実際のコマンドはより複雑になります。
# Update-MgEntraPrivilegedAccessAzureRoleSetting -UnifiedRoleDefinitionId $roleTemplateId -Body $roleSetting
Write-Host "PIM設定の更新が完了しました。(上記は概念的な更新例です。実際のGraph API呼び出しは詳細なペイロード構築が必要です。)"
# ロールアクティブ化リクエストの承認例 (Graph API)
# $requestId = "your-request-id"
# $payload = @{
# "decision" = "Approve";
# "justification" = "Approved for urgent maintenance."
# }
# Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/privilegedAccess/azureRoles/roleAssignmentRequests/$requestId/approve" -Body $payload
</pre>
</div>
<ul class="wp-block-list">
<li><p>[4] <code>https://learn.microsoft.com/en-us/graph/api/resources/privilegedidentitymanagement-overview?view=graph-rest-1.0</code> (2024年5月14日更新, Microsoft Graph ドキュメント)</p></li>
<li><p>[6] <code>https://learn.microsoft.com/en-us/graph/api/privilegedaccessgroup-update-roleassignmentsettings?view=graph-rest-beta</code> (2024年5月14日更新, Microsoft Graph ドキュメント)</p></li>
</ul>
<h2 class="wp-block-heading">運用監視</h2>
<p>PIMが正しく機能し、セキュリティ目標を達成していることを確認するために、継続的な運用監視が不可欠です。</p>
<ul class="wp-block-list">
<li><p><strong>PIM監査ログ</strong>: Microsoft Entra 管理センターのPIMセクションで、ロールのアクティブ化、承認/拒否、ロール設定の変更など、PIM関連のすべてのアクションが詳細に記録されます。これにより、誰がいつ、どのロールを、どのような期間でアクティブ化したかを確認できます。</p></li>
<li><p><strong>Microsoft Entra 監査ログ</strong>: PIMアクティビティはMicrosoft Entra 監査ログにも記録されます。これにより、より広範なID関連のアクティビティと関連付けて監視することが可能です。</p></li>
<li><p><strong>診断設定とログ分析</strong>: PIM監査ログをAzure Monitor Log Analyticsワークスペースにルーティングし、Kustoクエリ言語 (KQL) を使用して詳細な分析、カスタムダッシュボードの作成、アラートの設定を行います。</p></li>
<li><p><strong>Microsoft Sentinel 連携</strong>: Microsoft Sentinel (SIEM) にPIMログを取り込むことで、他のセキュリティデータソースとの相関分析を行い、高度な脅威検出とインシデント対応を実現します。</p></li>
<li><p><strong>アクセスレビュー</strong>: PIMは、特権ロールのメンバーシップを定期的にレビューするアクセスレビュー機能をサポートしています。これにより、不要になったロールの割り当てを特定し、削除することで最小特権の原則を維持できます。これは、通常3ヶ月ごとなど、定期的に実施することをお勧めします。</p></li>
<li><p><strong>SLA</strong>: PIMはMicrosoft Entra IDの機能の一部であるため、Microsoft Entra IDのSLA (月間99.99%) に準拠します。PIMサービス自体の個別のSLAは公開されていませんが、基盤となるMicrosoft Entra IDの高い可用性によって支えられています。</p></li>
<li><p><strong>バックアップ/DR</strong>: PIMの設定とデータはMicrosoft Entra ID内に保存されており、Microsoft Entra IDの回復性と冗長性によって保護されます。個別のPIM設定のバックアップは通常不要ですが、設定変更を自動化するためのIaC (Infrastructure as Code) を導入することで、変更履歴の管理と迅速な復元が可能になります。</p></li>
<li><p>[5] <code>https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/pim-how-to-view-audit-history</code> (2024年5月10日更新, Microsoft Learn)</p></li>
</ul>
<h2 class="wp-block-heading">セキュリティ</h2>
<p>PIMは、複数のセキュリティ層を統合することで、Microsoft 365環境のセキュリティを大幅に向上させます。</p>
<ul class="wp-block-list">
<li><p><strong>Just-In-Time (JIT) アクセス</strong>: 特権ロールへの恒久的な割り当てを排除し、必要な時に必要な期間だけアクセスを許可することで、攻撃者が利用できる特権アカウントの期間を最小限に抑えます。</p></li>
<li><p><strong>最小特権の原則</strong>: ユーザーは職務遂行に必要な最低限の権限のみを与えられ、必要な時以外は高権限を持たないため、権限の悪用リスクが低減されます。</p></li>
<li><p><strong>多要素認証 (MFA)</strong>: PIMのアクティブ化プロセスにMFAを強制することで、認証情報の漏洩による不正アクセスを防ぎます。これはPIM設定または条件付きアクセスで設定できます。</p></li>
<li><p><strong>条件付きアクセス (CA) との連携</strong>: PIMアクティブ化プロセス中に、特定の場所からのアクセス、準拠デバイスの使用、特定のアプリケーションからのアクセスなどの条件を適用できます。これにより、アクセスの信頼性が向上します。</p></li>
<li><p><strong>ロールの分離</strong>: 異なる特権ロールの承認者を分離することで、単一の承認者が広範な権限を付与するリスクを軽減します。</p></li>
<li><p><strong>アクセスレビュー</strong>: 定期的なアクセスレビューにより、過剰な権限付与や不要なロール割り当てを特定し、修正することができます。これにより、時間経過とともに蓄積される「特権クリープ」を防ぎます。</p></li>
<li><p><strong>Microsoft Defender for Cloud Appsとの連携</strong>: PIMで一時的に付与された高権限ユーザーのクラウドアプリケーション利用状況を監視し、異常な行動を検出することで、セッション制御やアラート発動が可能です。</p></li>
<li><p>[3] <code>https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/pim-resource-roles-activate-roles</code> (2024年5月10日更新, Microsoft Learn)</p></li>
</ul>
<h2 class="wp-block-heading">コスト</h2>
<p>PIMの利用には、ライセンスコストが発生します。</p>
<ul class="wp-block-list">
<li><p><strong>Microsoft Entra ID P2 ライセンス</strong>: PIM機能を使用するためには、Microsoft Entra ID P2ライセンスが必須です。このライセンスは、PIMを使用するすべてのユーザー(PIMを管理する管理者、PIMで管理されるロールに割り当てられたユーザー、アクティブ化リクエストの承認者など)に割り当てる必要があります。</p></li>
<li><p><strong>ユーザー単位の課金</strong>: Microsoft Entra ID P2はユーザー単位で課金されます。組織内でPIMを使用するユーザーの数を正確に把握し、必要な数のライセンスを確保する必要があります。</p></li>
<li><p><strong>コスト最適化</strong>:</p>
<ul>
<li><p><strong>必要なユーザーに限定</strong>: PIMの対象となるユーザーを、本当に特権アクセスが必要なユーザーに限定することで、ライセンスコストを最適化できます。</p></li>
<li><p><strong>ロールの統合</strong>: 類似する権限を持つロールを統合し、管理対象ロールの数を減らすことで、管理オーバーヘッドを削減できます。</p></li>
<li><p><strong>継続的なレビュー</strong>: 定期的なアクセスレビューを実施し、不要になったPIMロール割り当てを解除することで、ライセンスが必要なユーザー数を最小限に保ちます。</p></li>
</ul></li>
<li><p>[2] <code>https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/subscription-requirements</code> (2024年5月10日更新, Microsoft Learn)</p></li>
</ul>
<h2 class="wp-block-heading">落とし穴</h2>
<p>PIMの導入と運用には、いくつかの一般的な落とし穴があります。</p>
<ul class="wp-block-list">
<li><p><strong>ライセンス不足</strong>: PIMを使用するすべての関連ユーザーにMicrosoft Entra ID P2ライセンスが割り当てられていない場合、PIM機能が正しく動作しないか、利用できない可能性があります。</p></li>
<li><p><strong>承認者の遅延または不足</strong>: 承認者がリクエストを迅速に処理しない場合、または承認者が多忙、休暇中などで対応できない場合、ユーザーは必要な特権アクセスを得るまでに時間を要し、業務が滞る可能性があります。複数の承認者や承認グループを設定し、承認エスカレーションパスを定義することが重要です。</p></li>
<li><p><strong>条件付きアクセスとの競合または不備</strong>: PIMと条件付きアクセス (CA) ポリシーが適切に連携していない場合、セキュリティギャップが生じたり、ユーザーエクスペリエンスが損なわれたりする可能性があります。例えば、PIMでMFAを必須にしても、CAポリシーでMFAが適用されない場合、セキュリティは不十分です。</p></li>
<li><p><strong>緊急時アクセス (Break Glass Account) の計画不足</strong>: PIMはアクセスを制限するため、PIMサービス自体に障害が発生したり、すべての承認者が利用不能になったりするなどの緊急事態に備えて、PIMの管理外で動作する「Break Glass Account」(緊急アクセスアカウント)を事前に準備し、安全に保管しておく必要があります。</p></li>
<li><p><strong>過剰なアクティブ化期間</strong>: アクティブ化期間を不必要に長く設定すると、JITアクセスのメリットが薄れ、恒久的なアクセスに近づいてしまいます。職務遂行に必要な最短期間に設定することが重要です。</p></li>
<li><p><strong>監査ログの未確認</strong>: PIMが適切に運用されているか、不正なアクティビティがないかを定期的に監査ログで確認しないと、セキュリティ上の問題を見落とす可能性があります。</p></li>
<li><p><strong>ユーザーへの周知不足</strong>: PIMの導入はユーザーのアクセス方法を変更するため、十分なトレーニングと周知が行われないと、混乱や不満を招く可能性があります。</p></li>
</ul>
<h2 class="wp-block-heading">まとめ</h2>
<p>Microsoft 365 Privileged Identity Management (PIM) は、Microsoft 365環境における特権アクセス管理のベストプラクティスを実装するための強力なツールです。Just-In-Timeアクセス、最小特権の原則、条件付きアクセスとの統合を通じて、組織のセキュリティ体制を大幅に強化します。</p>
<p>PIMの導入には、Microsoft Entra ID P2ライセンスの確保、適切なロール設定、Graph APIやPowerShellによる自動化、そして堅牢な運用監視とセキュリティポリシーの適用が不可欠です。また、承認プロセスの最適化、緊急時アクセスの計画、ユーザーへの十分な周知など、運用上の落とし穴を回避するための戦略も重要となります。これらの要素を適切に管理することで、M365 PIMは組織のIDガバナンスとセキュリティ目標達成に大きく貢献するでしょう。</p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
Microsoft 365 Privileged Identity Management (PIM) アクセス承認プロセスの実装
Microsoft 365 環境における特権アクセスの管理は、組織のセキュリティ体制を維持する上で極めて重要です。Microsoft Entra Privileged Identity Management (PIM) は、この課題に対する強力なソリューションを提供します。PIMは、Just-In-Time (JIT) アクセスと最小特権の原則を適用することで、特権ロールへの恒久的なアクセスを排除し、必要なときに必要な期間だけアクセスを許可するメカニズムを実装します。本記事では、M365 PIMのアクセス承認プロセスのアーキテクチャ、設定手順、運用監視、セキュリティ、コスト、および導入時の落とし穴について詳しく解説します。
アーキテクチャ
Microsoft Entra PIMは、Microsoft Entra IDのコア機能として提供され、Microsoft 365の管理ロール(例: グローバル管理者、Exchange管理者、SharePoint管理者など)を含む様々な特権ロールへのアクセスを制御します。このシステムは、ユーザーが特権ロールを一時的にアクティブ化するためのリクエストを送信し、設定された承認者によってそのリクエストがレビューおよび承認されるワークフローを中心に構築されています。
主要コンポーネント
PIMサービス: Microsoft Entra ID内で動作し、特権ロールの管理、アクティブ化リクエストの処理、承認ワークフローの調整を行います。
Microsoft Entra ID: ユーザー、グループ、アプリケーションのID情報と、それらに割り当てられるロールを管理する中心的なIDプロバイダーです。PIMはMicrosoft Entra IDのロールベースのアクセス制御 (RBAC) と密接に統合されています。
Microsoft 365 サービス: Exchange Online、SharePoint Online、Teamsなど、PIMによって管理される特権ロールが影響を与える実際のサービス群です。
ユーザー (特権ロールの候補者): PIMによって管理される特権ロールに割り当てられ、必要に応じてそのロールをアクティブ化できるユーザーです。
承認者: ユーザーのアクティブ化リクエストをレビューし、承認または拒否する権限を持つユーザーまたはグループです。
条件付きアクセス (CA): PIMアクティブ化プロセス中に追加のセキュリティ要件(例: MFA必須、準拠デバイスからのアクセス)を強制するために統合されます。
アクセス承認プロセスのフロー
ユーザーがPIMで管理されているロールを必要とする場合、以下の承認プロセスが実行されます。
flowchart TD
A["ユーザー"] -- 1. 特権ロールのアクティブ化をリクエスト --> B("Microsoft Entra PIM");
B -- 2. PIM設定に基づく承認者特定と通知 --> C["承認者"];
C -- 3. リクエストのレビューと承認/拒否 --> B;
B -- 4. 承認された場合: ロールを一時的に昇格 --> D["Microsoft Entra ID"];
B -- 4. 拒否された場合: ロール昇格を阻止 --> A;
D -- 5. 昇格されたロールでMicrosoft 365サービスへアクセス --> E["Microsoft 365サービス"];
D -- 6. 指定期間経過後: ロールを自動的に降格 --> B;
B -- 7. PIM監査ログに記録 --> F["監査ログ/Sentinel"];
このプロセスにより、特権ロールが恒久的に割り当てられるリスクが大幅に低減され、必要な時だけアクセスが許可されるため、攻撃対象領域が縮小されます。
設定手順
PIMを導入する基本的な手順は、まずMicrosoft Entra ID P2ライセンスを有効化し、その後、PIM設定を構成することです。ここでは、特にMicrosoft Graph PowerShell SDKを使用したロールのアクティブ化設定の管理に焦点を当てます。
PIMを有効化すると、PIMで管理したいMicrosoft Entra ロールを選択し、各ロールのアクティブ化設定を構成できます。この設定には、アクティブ化に必要な承認、多要素認証 (MFA) の要件、アクティブ化期間の制限などが含まれます。
PIMロールアクティブ化設定の構成 (Graph PowerShell SDK)
以下のPowerShellスクリプトは、特定のMicrosoft Entra ロールのPIMアクティブ化設定を取得し、変更する例です。この例では、「グローバル閲覧者」ロールに対して、承認を必須とし、最大アクティブ化期間を4時間に設定します。
前提条件:
# Graph APIへの接続
# アプリケーション権限を使用する場合はConnect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory" -ClientID "..." -TenantID "..."
# 委任された権限を使用する場合はConnect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
# スコープ: RoleManagement.ReadWrite.Directory はPIM設定変更に必要です。
# 例: 委任された権限で接続
Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
# 1. 管理したいロールのテンプレートIDを取得 (例: グローバル閲覧者)
# 参考: https://learn.microsoft.com/ja-jp/azure/active-directory/roles/permissions-reference
# グローバル閲覧者ロールのテンプレートID (ロールによって異なる)
$roleTemplateId = "f2ef992c-3afb-46b0-b193-cd26207865ba" # グローバル閲覧者の例
# 2. そのロールのPIM設定を取得
$pimSettings = Get-MgEntraPrivilegedAccessGroupAssignmentScheduleSetting -UnifiedRoleDefinitionId $roleTemplateId
Write-Host "--- 現在のPIM設定 ---"
$pimSettings | Format-List
# 3. PIM設定を更新
# 承認要求を必須にする (isEnabled = $true)
# 承認者として特定のユーザーまたはグループを指定 (ここでは例として指定しないが、`approvers`プロパティで指定可能)
# MFAを必須にする (isMfaRequired = $true)
# アクティブ化期間を最大4時間 (duration = "PT4H") に設定
# アクティブ化理由を必須にする (isEnabled = $true)
$newPimSettings = @{
Approval = @{
IsEnabled = $true
}
MaximumDuration = "PT4H" # ISO 8601 Duration format. PT4H = 4時間
JustificationRequired = @{
IsEnabled = $true
}
# MFARequired = @{
# IsEnabled = $true
# } # MFAは一般的に条件付きアクセスで強制するため、PIM設定ではオフにすることが多い
}
# 設定の更新 (Put-MgEntraPrivilegedAccessGroupAssignmentScheduleSetting は存在しないので、直接更新できない)
# 代わりに、Privileged Access 'Roles' の設定を更新します。
# 実際には、'privilegedAccess/azureRoles/roleSettings' エンドポイントを使います。
# PIMロール設定はGet-MgEntraPrivilegedAccessAzureRoleSettingで取得し、Update-MgEntraPrivilegedAccessAzureRoleSettingで更新します。
# 適切なエンドポイントでロール設定を取得
$roleSetting = Get-MgEntraPrivilegedAccessAzureRoleSetting -UnifiedRoleDefinitionId $roleTemplateId
# 既存の設定を基に更新オブジェクトを作成
$updatedRule = $roleSetting.Rules | Where-Object {$_.odata_type -eq "#microsoft.graph.privilegedRoleAssignmentRequestApprovalRule"}
if ($updatedRule) {
$updatedRule.IsEnabled = $true
} else {
# ルールが存在しない場合は追加する必要がある
# これはGraph APIの複雑な部分で、Ruleを直接追加するAPIは提供されていないことが多い
# 通常は既存のRuleオブジェクトのプロパティを更新する
}
$updatedMaxDurationRule = $roleSetting.Rules | Where-Object {$_.odata_type -eq "#microsoft.graph.privilegedRoleAssignmentRequestMaximumDurationRule"}
if ($updatedMaxDurationRule) {
$updatedMaxDurationRule.Duration = "PT4H"
}
$updatedJustificationRule = $roleSetting.Rules | Where-Object {$_.odata_type -eq "#microsoft.graph.privilegedRoleAssignmentRequestJustificationRule"}
if ($updatedJustificationRule) {
$updatedJustificationRule.IsEnabled = $true
}
# 更新されたRulesコレクションでPIM設定を更新
# Update-MgEntraPrivilegedAccessAzureRoleSetting は複雑なオブジェクトを必要とします
# 簡略化のため、ここでは具体的な `Update-MgEntraPrivilegedAccessAzureRoleSetting` コマンドの詳細な引数指定は省略し、
# 主な概念を説明します。実際には、Microsoft Graph ExplorerやSDKドキュメントで詳細なペイロードを確認してください。
# `Update-MgEntraPrivilegedAccessAzureRoleSetting` のBodyはUnifiedRoleManagementPolicyオブジェクトを受け取ります。
# したがって、上記で作成した$roleSettingオブジェクトのプロパティを適切に設定し、`Update-MgEntraPrivilegedAccessAzureRoleSetting` に渡す形になります。
# 以下は概念的な更新例です。実際のコマンドはより複雑になります。
# Update-MgEntraPrivilegedAccessAzureRoleSetting -UnifiedRoleDefinitionId $roleTemplateId -Body $roleSetting
Write-Host "PIM設定の更新が完了しました。(上記は概念的な更新例です。実際のGraph API呼び出しは詳細なペイロード構築が必要です。)"
# ロールアクティブ化リクエストの承認例 (Graph API)
# $requestId = "your-request-id"
# $payload = @{
# "decision" = "Approve";
# "justification" = "Approved for urgent maintenance."
# }
# Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/privilegedAccess/azureRoles/roleAssignmentRequests/$requestId/approve" -Body $payload
[4] https://learn.microsoft.com/en-us/graph/api/resources/privilegedidentitymanagement-overview?view=graph-rest-1.0 (2024年5月14日更新, Microsoft Graph ドキュメント)
[6] https://learn.microsoft.com/en-us/graph/api/privilegedaccessgroup-update-roleassignmentsettings?view=graph-rest-beta (2024年5月14日更新, Microsoft Graph ドキュメント)
運用監視
PIMが正しく機能し、セキュリティ目標を達成していることを確認するために、継続的な運用監視が不可欠です。
PIM監査ログ: Microsoft Entra 管理センターのPIMセクションで、ロールのアクティブ化、承認/拒否、ロール設定の変更など、PIM関連のすべてのアクションが詳細に記録されます。これにより、誰がいつ、どのロールを、どのような期間でアクティブ化したかを確認できます。
Microsoft Entra 監査ログ: PIMアクティビティはMicrosoft Entra 監査ログにも記録されます。これにより、より広範なID関連のアクティビティと関連付けて監視することが可能です。
診断設定とログ分析: PIM監査ログをAzure Monitor Log Analyticsワークスペースにルーティングし、Kustoクエリ言語 (KQL) を使用して詳細な分析、カスタムダッシュボードの作成、アラートの設定を行います。
Microsoft Sentinel 連携: Microsoft Sentinel (SIEM) にPIMログを取り込むことで、他のセキュリティデータソースとの相関分析を行い、高度な脅威検出とインシデント対応を実現します。
アクセスレビュー: PIMは、特権ロールのメンバーシップを定期的にレビューするアクセスレビュー機能をサポートしています。これにより、不要になったロールの割り当てを特定し、削除することで最小特権の原則を維持できます。これは、通常3ヶ月ごとなど、定期的に実施することをお勧めします。
SLA: PIMはMicrosoft Entra IDの機能の一部であるため、Microsoft Entra IDのSLA (月間99.99%) に準拠します。PIMサービス自体の個別のSLAは公開されていませんが、基盤となるMicrosoft Entra IDの高い可用性によって支えられています。
バックアップ/DR: PIMの設定とデータはMicrosoft Entra ID内に保存されており、Microsoft Entra IDの回復性と冗長性によって保護されます。個別のPIM設定のバックアップは通常不要ですが、設定変更を自動化するためのIaC (Infrastructure as Code) を導入することで、変更履歴の管理と迅速な復元が可能になります。
[5] https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/pim-how-to-view-audit-history (2024年5月10日更新, Microsoft Learn)
セキュリティ
PIMは、複数のセキュリティ層を統合することで、Microsoft 365環境のセキュリティを大幅に向上させます。
Just-In-Time (JIT) アクセス: 特権ロールへの恒久的な割り当てを排除し、必要な時に必要な期間だけアクセスを許可することで、攻撃者が利用できる特権アカウントの期間を最小限に抑えます。
最小特権の原則: ユーザーは職務遂行に必要な最低限の権限のみを与えられ、必要な時以外は高権限を持たないため、権限の悪用リスクが低減されます。
多要素認証 (MFA): PIMのアクティブ化プロセスにMFAを強制することで、認証情報の漏洩による不正アクセスを防ぎます。これはPIM設定または条件付きアクセスで設定できます。
条件付きアクセス (CA) との連携: PIMアクティブ化プロセス中に、特定の場所からのアクセス、準拠デバイスの使用、特定のアプリケーションからのアクセスなどの条件を適用できます。これにより、アクセスの信頼性が向上します。
ロールの分離: 異なる特権ロールの承認者を分離することで、単一の承認者が広範な権限を付与するリスクを軽減します。
アクセスレビュー: 定期的なアクセスレビューにより、過剰な権限付与や不要なロール割り当てを特定し、修正することができます。これにより、時間経過とともに蓄積される「特権クリープ」を防ぎます。
Microsoft Defender for Cloud Appsとの連携: PIMで一時的に付与された高権限ユーザーのクラウドアプリケーション利用状況を監視し、異常な行動を検出することで、セッション制御やアラート発動が可能です。
[3] https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/pim-resource-roles-activate-roles (2024年5月10日更新, Microsoft Learn)
コスト
PIMの利用には、ライセンスコストが発生します。
Microsoft Entra ID P2 ライセンス: PIM機能を使用するためには、Microsoft Entra ID P2ライセンスが必須です。このライセンスは、PIMを使用するすべてのユーザー(PIMを管理する管理者、PIMで管理されるロールに割り当てられたユーザー、アクティブ化リクエストの承認者など)に割り当てる必要があります。
ユーザー単位の課金: Microsoft Entra ID P2はユーザー単位で課金されます。組織内でPIMを使用するユーザーの数を正確に把握し、必要な数のライセンスを確保する必要があります。
コスト最適化:
必要なユーザーに限定: PIMの対象となるユーザーを、本当に特権アクセスが必要なユーザーに限定することで、ライセンスコストを最適化できます。
ロールの統合: 類似する権限を持つロールを統合し、管理対象ロールの数を減らすことで、管理オーバーヘッドを削減できます。
継続的なレビュー: 定期的なアクセスレビューを実施し、不要になったPIMロール割り当てを解除することで、ライセンスが必要なユーザー数を最小限に保ちます。
[2] https://learn.microsoft.com/ja-jp/azure/active-directory/privileged-identity-management/subscription-requirements (2024年5月10日更新, Microsoft Learn)
落とし穴
PIMの導入と運用には、いくつかの一般的な落とし穴があります。
ライセンス不足: PIMを使用するすべての関連ユーザーにMicrosoft Entra ID P2ライセンスが割り当てられていない場合、PIM機能が正しく動作しないか、利用できない可能性があります。
承認者の遅延または不足: 承認者がリクエストを迅速に処理しない場合、または承認者が多忙、休暇中などで対応できない場合、ユーザーは必要な特権アクセスを得るまでに時間を要し、業務が滞る可能性があります。複数の承認者や承認グループを設定し、承認エスカレーションパスを定義することが重要です。
条件付きアクセスとの競合または不備: PIMと条件付きアクセス (CA) ポリシーが適切に連携していない場合、セキュリティギャップが生じたり、ユーザーエクスペリエンスが損なわれたりする可能性があります。例えば、PIMでMFAを必須にしても、CAポリシーでMFAが適用されない場合、セキュリティは不十分です。
緊急時アクセス (Break Glass Account) の計画不足: PIMはアクセスを制限するため、PIMサービス自体に障害が発生したり、すべての承認者が利用不能になったりするなどの緊急事態に備えて、PIMの管理外で動作する「Break Glass Account」(緊急アクセスアカウント)を事前に準備し、安全に保管しておく必要があります。
過剰なアクティブ化期間: アクティブ化期間を不必要に長く設定すると、JITアクセスのメリットが薄れ、恒久的なアクセスに近づいてしまいます。職務遂行に必要な最短期間に設定することが重要です。
監査ログの未確認: PIMが適切に運用されているか、不正なアクティビティがないかを定期的に監査ログで確認しないと、セキュリティ上の問題を見落とす可能性があります。
ユーザーへの周知不足: PIMの導入はユーザーのアクセス方法を変更するため、十分なトレーニングと周知が行われないと、混乱や不満を招く可能性があります。
まとめ
Microsoft 365 Privileged Identity Management (PIM) は、Microsoft 365環境における特権アクセス管理のベストプラクティスを実装するための強力なツールです。Just-In-Timeアクセス、最小特権の原則、条件付きアクセスとの統合を通じて、組織のセキュリティ体制を大幅に強化します。
PIMの導入には、Microsoft Entra ID P2ライセンスの確保、適切なロール設定、Graph APIやPowerShellによる自動化、そして堅牢な運用監視とセキュリティポリシーの適用が不可欠です。また、承認プロセスの最適化、緊急時アクセスの計画、ユーザーへの十分な周知など、運用上の落とし穴を回避するための戦略も重要となります。これらの要素を適切に管理することで、M365 PIMは組織のIDガバナンスとセキュリティ目標達成に大きく貢献するでしょう。
コメント