<p><!--META
{
"title": "M365/Azureにおける統合アイデンティティ管理アーキテクチャ",
"primary_category": "クラウド>Azure",
"secondary_categories": ["セキュリティ","アイデンティティ管理"],
"tags": ["EntraID","ConditionalAccess","PIM","DefenderforIdentity","GraphAPI","PowerShell"],
"summary": "M365/Azure環境におけるアイデンティティ管理の主要コンポーネント、Entra ID、条件付きアクセス、PIM、Defender for Identityの連携アーキテクチャ、設定、運用、セキュリティ、コスト、落とし穴を解説します。",
"mermaid": true,
"verify_level": "L0",
"tweet_hint": {"text":"M365/Azureの統合アイデンティティ管理アーキテクチャをクラウドアーキテクト視点で解説。Entra IDを核に、条件付きアクセス、PIM、Defender for Identity連携、セキュリティ、コスト最適化を深掘り。","hashtags":["#Azure","#M365","#EntraID","#セキュリティ"]},
"link_hints": ["https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/whatis","https://learn.microsoft.com/en-us/azure/active-directory/conditional-access/overview","https://learn.microsoft.com/en-us/defender-for-identity/what-is"]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">M365/Azureにおける統合アイデンティティ管理アーキテクチャ</h1>
<p>M365およびAzure環境におけるアイデンティティ管理は、サイバーセキュリティ戦略の中核をなします。本記事では、Microsoft Entra ID(旧Azure Active Directory)を基盤とした統合アイデンティティ管理のアーキテクチャ、設定手順、運用監視、セキュリティ、コスト、および注意すべき落とし穴について解説します。</p>
<h2 class="wp-block-heading">1. アーキテクチャ概要</h2>
<p>Microsoft Entra IDは、M365とAzureのクラウドベースのアイデンティティおよびアクセス管理サービスであり、ユーザー、グループ、デバイス、アプリケーションのアイデンティティを一元的に管理します。このプラットフォームは、条件付きアクセス (Conditional Access)、Privileged Identity Management (PIM)、Microsoft Defender for Identityといった高度なセキュリティ機能と連携し、ゼロトラスト原則に基づいた強固なセキュリティ基盤を提供します。</p>
<h3 class="wp-block-heading">主要コンポーネントとその連携</h3>
<p>統合アイデンティティ管理アーキテクチャにおける主要コンポーネントは以下の通りです。</p>
<ol class="wp-block-list">
<li><p><strong>Microsoft Entra ID:</strong></p>
<ul>
<li><p>すべてのユーザー、グループ、デバイス、アプリケーションのアイデンティティ管理。</p></li>
<li><p>シングルサインオン (SSO) および多要素認証 (MFA) の基盤。</p></li>
<li><p>ソース: <code>https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/whatis</code> (更新日: 2024年4月10日, Microsoft)</p></li>
</ul></li>
<li><p><strong>条件付きアクセス (Conditional Access):</strong></p>
<ul>
<li><p>ユーザー、場所、デバイスの状態、アプリケーションといったコンテキストに基づいて、アクセス条件を動的に適用するポリシーエンジン。</p></li>
<li><p>MFAの強制、準拠デバイスからのアクセスのみ許可、特定の場所からのアクセスブロックなどが可能。</p></li>
<li><p>ソース: <code>https://learn.microsoft.com/en-us/azure/active-directory/conditional-access/overview</code> (更新日: 2024年5月15日, Microsoft)</p></li>
</ul></li>
<li><p><strong>Privileged Identity Management (PIM):</strong></p>
<ul>
<li><p>特権ロール(例: グローバル管理者、ユーザー管理者)への Just-In-Time (JIT) アクセスを可能にし、常時昇格された権限を持つユーザーを最小化。</p></li>
<li><p>承認ワークフロー、アクセスレビュー、監査ログを提供。</p></li>
<li><p>ソース: <code>https://learn.microsoft.com/en-us/azure/active-directory/privileged-identity-management/pim-configure</code> (更新日: 2024年4月20日, Microsoft)</p></li>
</ul></li>
<li><p><strong>Microsoft Defender for Identity:</strong></p>
<ul>
<li><p>オンプレミスActive Directory (AD) の信号を監視し、IDベースの高度な脅威(資格情報盗難、パスザハッシュ攻撃など)を検出。</p></li>
<li><p>Entra ID Protection と連携し、ハイブリッド環境全体の ID 保護を強化。</p></li>
<li><p>ソース: <code>https://learn.microsoft.com/en-us/defender-for-identity/what-is</code> (更新日: 2024年5月1日, Microsoft)</p></li>
</ul></li>
<li><p><strong>Entra ID Protection:</strong></p>
<ul>
<li><p>IDベースのリスクイベント(例: 危険なサインイン、情報漏洩した資格情報)を検出・修復し、リスクレベルに応じた自動的な対応(MFA強制、パスワードリセットなど)をトリガー。</p></li>
<li><p>ソース: <code>https://learn.microsoft.com/en-us/azure/active-directory/identity-protection/overview-identity-protection</code> (更新日: 2024年5月22日, Microsoft)</p></li>
</ul></li>
<li><p><strong>Azure RBAC (Role-Based Access Control):</strong></p>
<ul>
<li><p>Azureリソースに対するきめ細やかなアクセス権限を管理。Entra IDユーザー/グループと連携。</p></li>
<li><p>ソース: <code>https://learn.microsoft.com/en-us/azure/role-based-access-control/overview</code> (更新日: 2024年3月28日, Microsoft)</p></li>
</ul></li>
</ol>
<p>これらのコンポーネントが連携し、ユーザーの認証、アクセス制御、特権管理、脅威検出までを網羅する包括的なセキュリティ体制を構築します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["ユーザー/デバイス"] -->|認証要求| B("Microsoft Entra ID")
B -->|IDプロビジョニング| C["Microsoft 365サービス"]
B -->|IDプロビジョニング| D["Azureリソース"]
B -->|認証プロトコル| E("SaaSアプリケーション")
B -->|認証成功| F("条件付きアクセス ポリシー")
F -->|ポリシー評価| G{"アクセス許可?"}
G -- 許可 --> C
G -- 許可 --> D
G -- 許可 --> E
G -- 拒否 --> A
B -->|ロール定義/割り当て| H["Azure RBAC / Entra ID ロール"]
H -->|一時的昇格| I("Privileged Identity Management: PIM")
B -->|ID監視/脅威検知| J("Microsoft Defender for Identity")
J -->|脅威アラート| B
F -->|追加リスク評価| K("Entra ID Protection")
K -->|リスク情報| F
J -- 監視対象 --> L("オンプレミスAD")
</pre></div>
<h2 class="wp-block-heading">2. 設定手順</h2>
<p>ここでは、主要なアイデンティティ管理設定の一部を、PowerShellとGraph APIを用いて具体的に説明します。</p>
<h3 class="wp-block-heading">2.1 Entra IDユーザーの作成 (PowerShell)</h3>
<p>新しいユーザーアカウントを作成する手順です。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># Microsoft Graph PowerShell SDKへの接続
# Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All" を事前に実行してください
# 変数の定義
$displayName = "テスト ユーザー"
$givenName = "テスト"
$surname = "ユーザー"
$userPrincipalName = "test.user@yourtenant.onmicrosoft.com" # テナント名に合わせて変更
$mailNickname = "testuser"
$password = ConvertTo-SecureString "P@ssword123!" -AsPlainText -Force # 強固なパスワードを設定してください
$forceChangePasswordNextSignIn = $true
# 新しいユーザーの作成
try {
New-MgUser -DisplayName $displayName `
-GivenName $givenName `
-Surname $surname `
-UserPrincipalName $userPrincipalName `
-MailNickname $mailNickname `
-PasswordProfile @{
Password = ($password | ConvertFrom-SecureString).SecureString
ForceChangePasswordNextSignIn = $forceChangePasswordNextSignIn
} `
-AccountEnabled $true `
-UsageLocation "JP" # 国コード (例: JP for Japan)
Write-Host "ユーザー '$userPrincipalName' が正常に作成されました。"
}
catch {
Write-Error "ユーザー作成中にエラーが発生しました: $($_.Exception.Message)"
}
</pre>
</div>
<ul class="wp-block-list">
<li><p><strong>前提:</strong> Microsoft Graph PowerShell SDKがインストールされ、適切な権限を持つアカウントで<code>Connect-MgGraph</code>が実行されている必要があります。</p></li>
<li><p><strong>入出力:</strong> 指定されたパラメータでEntra IDに新しいユーザーを作成します。成功/失敗メッセージを出力。</p></li>
<li><p><strong>計算量/メモリ:</strong> 単一のAPI呼び出しであり、無視できるレベルです。</p></li>
</ul>
<h3 class="wp-block-heading">2.2 条件付きアクセスポリシーの確認 (PowerShell)</h3>
<p>既存の条件付きアクセスポリシーを一覧表示する手順です。Graph APIで作成する場合は複雑になるため、ここでは確認に焦点を当てます。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># Microsoft Graph PowerShell SDKへの接続
# Connect-MgGraph -Scopes "Policy.Read.All" を事前に実行してください
Write-Host "既存の条件付きアクセスポリシーを一覧表示します..."
try {
$caPolicies = Get-MgIdentityConditionalAccessPolicy | Select-Object DisplayName, State, Id
if ($caPolicies) {
$caPolicies | Format-Table -AutoSize
}
else {
Write-Host "条件付きアクセスポリシーは見つかりませんでした。"
}
}
catch {
Write-Error "条件付きアクセスポリシーの取得中にエラーが発生しました: $($_.Exception.Message)"
}
</pre>
</div>
<ul class="wp-block-list">
<li><p><strong>前提:</strong> <code>Connect-MgGraph -Scopes "Policy.Read.All"</code> で接続済みであること。</p></li>
<li><p><strong>入出力:</strong> Entra ID上の条件付きアクセスポリシーの表示名、状態、IDをテーブル形式で出力します。</p></li>
<li><p><strong>計算量/メモリ:</strong> ポリシー数に比例しますが、一般的に非常に小さいです。</p></li>
</ul>
<h3 class="wp-block-heading">2.3 PIMロールの有効化 (PowerShell)</h3>
<p>Privileged Identity Management (PIM) を使用して、特定のEntra IDロールを一時的に有効化する手順です。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># Microsoft Graph PowerShell SDKへの接続
# Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory" を事前に実行してください
# 変数の定義
$roleDefinitionId = "fe930be7-5e62-47db-91af-98c3a49a38b1" # 例: ユーザー管理者のロール定義ID
$justification = "緊急のユーザー管理作業のため"
$durationHours = 1 # 有効化する時間 (例: 1時間)
# 現在のユーザーのオブジェクトIDを取得
$myObjectId = (Get-MgContext).User.ObjectId
# PIMアクティベーションリクエストの作成
$activationRequest = @{
"@odata.type" = "#microsoft.graph.privilegedRoleAssignmentRequest"
"roleDefinitionId" = $roleDefinitionId
"subjectId" = $myObjectId
"assignmentType" = "Activated"
"type" = "AdminAdd"
"reason" = $justification
"schedule" = @{
"startDateTime" = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
"endDateTime" = (Get-Date).AddHours($durationHours).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
}
}
try {
# PIMロールの有効化をリクエスト
New-MgRoleManagementDirectoryPrivilegedRoleAssignmentRequest -BodyParameter $activationRequest
Write-Host "ロール '$roleDefinitionId' のPIMアクティベーションリクエストを送信しました。"
Write-Host "理由: '$justification', 期間: '$durationHours' 時間"
}
catch {
Write-Error "PIMロールアクティベーションリクエストの送信中にエラーが発生しました: $($_.Exception.Message)"
}
</pre>
</div>
<ul class="wp-block-list">
<li><p><strong>前提:</strong> <code>Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"</code> で接続済みであること。対象ロールの定義IDを事前に確認する必要があります。</p></li>
<li><p><strong>入出力:</strong> 指定されたロールIDと期間で、現在のユーザーのPIMロール有効化リクエストを送信します。成功/失敗メッセージを出力。</p></li>
<li><p><strong>計算量/メモリ:</strong> 単一のAPI呼び出しであり、無視できるレベルです。</p></li>
</ul>
<h2 class="wp-block-heading">3. 運用監視</h2>
<p>統合アイデンティティ管理の安定運用には、継続的な監視が不可欠です。</p>
<ul class="wp-block-list">
<li><p><strong>Entra ID 監査ログ:</strong> ユーザー管理、アプリケーション管理、ロール変更など、Entra ID内で発生するすべての変更イベントを記録します。誰が、いつ、何を、どこで変更したかを追跡可能です。</p></li>
<li><p><strong>Entra ID サインインログ:</strong> ユーザーのサインイン試行に関する詳細情報(成功/失敗、場所、デバイス、使用された認証方法など)を提供します。不審なサインイン活動の検出に役立ちます。</p></li>
<li><p><strong>Microsoft Defender for Identity アラート:</strong> オンプレミスADからの脅威(例: 不審なプロトコル利用、疑わしい資格情報盗難)をリアルタイムで検出し、アラートを発行します。これらをAzure SentinelやMicrosoft 365 Defenderポータルで一元的に監視できます。</p></li>
<li><p><strong>SLAとバックアップ/DR:</strong> Entra ID自体はMicrosoftが99.9%のSLAを保証する高可用性サービスです。オンプレミスADとの同期環境では、AD DCの健全性監視とバックアップ/DR戦略が重要になります。</p></li>
</ul>
<h2 class="wp-block-heading">4. セキュリティ</h2>
<p>多層防御アプローチによるセキュリティ強化が重要です。</p>
<ul class="wp-block-list">
<li><p><strong>Entra ID ロールとAzure RBAC:</strong> 最小特権の原則に基づき、必要な権限のみを付与します。Entra IDロールはEntra IDリソース(ユーザー、グループ、アプリ登録など)に、Azure RBACはAzureサブスクリプション/リソースグループ/リソースに適用されます。</p></li>
<li><p><strong>Privileged Identity Management (PIM):</strong> 特権ロールの常時利用を廃止し、Just-In-Timeアクセスと承認ワークフローを強制することで、攻撃対象領域を大幅に削減します。2024年4月20日の更新で、PIMのレポーティング機能がさらに強化されています [5]。</p></li>
<li><p><strong>条件付きアクセス:</strong> 環境全体でMFAを強制し、準拠デバイスからのアクセスのみを許可することで、認証セキュリティを向上させます。2024年5月15日の更新では、認証強度設定の柔軟性が向上しています [2]。</p></li>
<li><p><strong>Entra ID Protection:</strong> リスクベースのポリシーにより、危険なサインインやユーザーを自動的に検出・保護し、アカウント乗っ取りなどの脅威から防御します。</p></li>
<li><p><strong>Microsoft Defender for Identity:</strong> ハイブリッド環境におけるIDベースの攻撃を検出し、Active Directoryの脆弱性を特定することで、侵害の拡大を防ぎます。</p></li>
<li><p><strong>レガシー認証の無効化:</strong> 古い認証プロトコル(例: POP3/IMAP4経由の基本認証)はパスワードスプレー攻撃のリスクが高いため、条件付きアクセスでブロックすることを強く推奨します。</p></li>
</ul>
<h2 class="wp-block-heading">5. コスト</h2>
<p>Entra IDのコストは、主にライセンスプランによって異なります。</p>
<ul class="wp-block-list">
<li><p><strong>Entra ID Free:</strong> 無料で利用可能で、コアとなるID管理機能、SSO、MFAの一部機能が含まれます。</p></li>
<li><p><strong>Entra ID Premium P1:</strong> 条件付きアクセス、PIM (限定的)、Entra ID Connect Health、セルフサービスパスワードリセット(グループ書き戻し含む)などの高度な機能が含まれます。ほとんどのエンタープライズ顧客に推奨されます。</p></li>
<li><p><strong>Entra ID Premium P2:</strong> P1の機能に加え、Privileged Identity Management (PIM) の全機能、Entra ID Protection のリスクベースの条件付きアクセス、アクセスレビューなど、最も高度なセキュリティ機能が含まれます。</p></li>
<li><p><strong>Microsoft Defender for Identity:</strong> ユーザー数に応じたライセンスが必要で、通常はMicrosoft 365 E5 Securityスイートの一部として提供されます。</p></li>
<li><p><strong>コスト最適化:</strong></p>
<ul>
<li><p><strong>適切なライセンスプランの選択:</strong> 必要な機能とユーザー数に応じて最適なプランを選択します。全てのユーザーにP2ライセンスが必要とは限りません。</p></li>
<li><p><strong>未使用ライセンスの解放:</strong> 退職者や異動者など、使用されなくなったライセンスを定期的に見直し、解放します。</p></li>
<li><p><strong>自動化による管理コスト削減:</strong> Graph APIやPowerShellを活用し、プロビジョニング、権限管理、監査レポートの生成を自動化することで、運用の手間とコストを削減します。</p></li>
</ul></li>
</ul>
<h2 class="wp-block-heading">6. 落とし穴</h2>
<p>効果的なアイデンティティ管理を妨げる一般的な落とし穴とその対策です。</p>
<ul class="wp-block-list">
<li><p><strong>過剰な権限付与:</strong> 最小特権の原則を無視し、必要以上の権限をユーザーやサービスプリンシパルに付与すること。→ PIMとアクセスレビューを定期的に実施し、権限を厳格化します。</p></li>
<li><p><strong>条件付きアクセスポリシーの競合/複雑化:</strong> 多数のポリシーが複雑に絡み合い、意図しないアクセス拒否やセキュリティホールを生むこと。→ ポリシー設計時に評価順序と影響を考慮し、テストと段階的な展開を行います。また、レポート専用モードで影響を評価できます。</p></li>
<li><p><strong>レガシー認証の放置:</strong> 基本認証などの古い認証プロトコルが有効なままになっていると、ブルートフォース攻撃やパスワードスプレー攻撃の標的になります。→ 条件付きアクセスでレガシー認証をブロックし、モダン認証への移行を強制します。</p></li>
<li><p><strong>Shadow ITの放置:</strong> IT部門が把握していないアプリケーションやサービスが利用され、アイデンティティ管理の統制外になること。→ Entra IDのアプリケーション管理機能で、利用されるSaaSアプリを登録し、SSOと条件付きアクセスを適用します。</p></li>
<li><p><strong>緊急アカウント(ブレイクグラスアカウント)の不適切な管理:</strong> グローバル管理者の緊急アカウントが適切に管理されていないと、単一障害点となるリスクがあります。→ 厳重な保管、利用時の通知、定期的なローテーションと監査を徹底します。</p></li>
</ul>
<h2 class="wp-block-heading">7. まとめ</h2>
<p>M365/Azure環境における統合アイデンティティ管理は、Microsoft Entra IDを核として、条件付きアクセス、PIM、Defender for Identityといった多岐にわたるセキュリティ機能を組み合わせることで実現されます。最小特権の原則に基づいたロール管理、MFA強制、リスクベースのアクセス制御、および特権IDの厳格な管理を通じて、組織は現代のサイバー脅威から自身を効果的に保護できます。本記事で述べたアーキテクチャ、設定、運用、セキュリティ、コスト、落とし穴の各側面を考慮し、継続的な改善を行うことで、強固で効率的なアイデンティティ管理基盤を構築・維持することが可能です。</p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
M365/Azureにおける統合アイデンティティ管理アーキテクチャ
M365およびAzure環境におけるアイデンティティ管理は、サイバーセキュリティ戦略の中核をなします。本記事では、Microsoft Entra ID(旧Azure Active Directory)を基盤とした統合アイデンティティ管理のアーキテクチャ、設定手順、運用監視、セキュリティ、コスト、および注意すべき落とし穴について解説します。
1. アーキテクチャ概要
Microsoft Entra IDは、M365とAzureのクラウドベースのアイデンティティおよびアクセス管理サービスであり、ユーザー、グループ、デバイス、アプリケーションのアイデンティティを一元的に管理します。このプラットフォームは、条件付きアクセス (Conditional Access)、Privileged Identity Management (PIM)、Microsoft Defender for Identityといった高度なセキュリティ機能と連携し、ゼロトラスト原則に基づいた強固なセキュリティ基盤を提供します。
主要コンポーネントとその連携
統合アイデンティティ管理アーキテクチャにおける主要コンポーネントは以下の通りです。
Microsoft Entra ID:
すべてのユーザー、グループ、デバイス、アプリケーションのアイデンティティ管理。
シングルサインオン (SSO) および多要素認証 (MFA) の基盤。
ソース: https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/whatis (更新日: 2024年4月10日, Microsoft)
条件付きアクセス (Conditional Access):
ユーザー、場所、デバイスの状態、アプリケーションといったコンテキストに基づいて、アクセス条件を動的に適用するポリシーエンジン。
MFAの強制、準拠デバイスからのアクセスのみ許可、特定の場所からのアクセスブロックなどが可能。
ソース: https://learn.microsoft.com/en-us/azure/active-directory/conditional-access/overview (更新日: 2024年5月15日, Microsoft)
Privileged Identity Management (PIM):
特権ロール(例: グローバル管理者、ユーザー管理者)への Just-In-Time (JIT) アクセスを可能にし、常時昇格された権限を持つユーザーを最小化。
承認ワークフロー、アクセスレビュー、監査ログを提供。
ソース: https://learn.microsoft.com/en-us/azure/active-directory/privileged-identity-management/pim-configure (更新日: 2024年4月20日, Microsoft)
Microsoft Defender for Identity:
オンプレミスActive Directory (AD) の信号を監視し、IDベースの高度な脅威(資格情報盗難、パスザハッシュ攻撃など)を検出。
Entra ID Protection と連携し、ハイブリッド環境全体の ID 保護を強化。
ソース: https://learn.microsoft.com/en-us/defender-for-identity/what-is (更新日: 2024年5月1日, Microsoft)
Entra ID Protection:
IDベースのリスクイベント(例: 危険なサインイン、情報漏洩した資格情報)を検出・修復し、リスクレベルに応じた自動的な対応(MFA強制、パスワードリセットなど)をトリガー。
ソース: https://learn.microsoft.com/en-us/azure/active-directory/identity-protection/overview-identity-protection (更新日: 2024年5月22日, Microsoft)
Azure RBAC (Role-Based Access Control):
Azureリソースに対するきめ細やかなアクセス権限を管理。Entra IDユーザー/グループと連携。
ソース: https://learn.microsoft.com/en-us/azure/role-based-access-control/overview (更新日: 2024年3月28日, Microsoft)
これらのコンポーネントが連携し、ユーザーの認証、アクセス制御、特権管理、脅威検出までを網羅する包括的なセキュリティ体制を構築します。
graph TD
A["ユーザー/デバイス"] -->|認証要求| B("Microsoft Entra ID")
B -->|IDプロビジョニング| C["Microsoft 365サービス"]
B -->|IDプロビジョニング| D["Azureリソース"]
B -->|認証プロトコル| E("SaaSアプリケーション")
B -->|認証成功| F("条件付きアクセス ポリシー")
F -->|ポリシー評価| G{"アクセス許可?"}
G -- 許可 --> C
G -- 許可 --> D
G -- 許可 --> E
G -- 拒否 --> A
B -->|ロール定義/割り当て| H["Azure RBAC / Entra ID ロール"]
H -->|一時的昇格| I("Privileged Identity Management: PIM")
B -->|ID監視/脅威検知| J("Microsoft Defender for Identity")
J -->|脅威アラート| B
F -->|追加リスク評価| K("Entra ID Protection")
K -->|リスク情報| F
J -- 監視対象 --> L("オンプレミスAD")
2. 設定手順
ここでは、主要なアイデンティティ管理設定の一部を、PowerShellとGraph APIを用いて具体的に説明します。
2.1 Entra IDユーザーの作成 (PowerShell)
新しいユーザーアカウントを作成する手順です。
# Microsoft Graph PowerShell SDKへの接続
# Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All" を事前に実行してください
# 変数の定義
$displayName = "テスト ユーザー"
$givenName = "テスト"
$surname = "ユーザー"
$userPrincipalName = "test.user@yourtenant.onmicrosoft.com" # テナント名に合わせて変更
$mailNickname = "testuser"
$password = ConvertTo-SecureString "P@ssword123!" -AsPlainText -Force # 強固なパスワードを設定してください
$forceChangePasswordNextSignIn = $true
# 新しいユーザーの作成
try {
New-MgUser -DisplayName $displayName `
-GivenName $givenName `
-Surname $surname `
-UserPrincipalName $userPrincipalName `
-MailNickname $mailNickname `
-PasswordProfile @{
Password = ($password | ConvertFrom-SecureString).SecureString
ForceChangePasswordNextSignIn = $forceChangePasswordNextSignIn
} `
-AccountEnabled $true `
-UsageLocation "JP" # 国コード (例: JP for Japan)
Write-Host "ユーザー '$userPrincipalName' が正常に作成されました。"
}
catch {
Write-Error "ユーザー作成中にエラーが発生しました: $($_.Exception.Message)"
}
前提: Microsoft Graph PowerShell SDKがインストールされ、適切な権限を持つアカウントでConnect-MgGraphが実行されている必要があります。
入出力: 指定されたパラメータでEntra IDに新しいユーザーを作成します。成功/失敗メッセージを出力。
計算量/メモリ: 単一のAPI呼び出しであり、無視できるレベルです。
2.2 条件付きアクセスポリシーの確認 (PowerShell)
既存の条件付きアクセスポリシーを一覧表示する手順です。Graph APIで作成する場合は複雑になるため、ここでは確認に焦点を当てます。
# Microsoft Graph PowerShell SDKへの接続
# Connect-MgGraph -Scopes "Policy.Read.All" を事前に実行してください
Write-Host "既存の条件付きアクセスポリシーを一覧表示します..."
try {
$caPolicies = Get-MgIdentityConditionalAccessPolicy | Select-Object DisplayName, State, Id
if ($caPolicies) {
$caPolicies | Format-Table -AutoSize
}
else {
Write-Host "条件付きアクセスポリシーは見つかりませんでした。"
}
}
catch {
Write-Error "条件付きアクセスポリシーの取得中にエラーが発生しました: $($_.Exception.Message)"
}
前提: Connect-MgGraph -Scopes "Policy.Read.All" で接続済みであること。
入出力: Entra ID上の条件付きアクセスポリシーの表示名、状態、IDをテーブル形式で出力します。
計算量/メモリ: ポリシー数に比例しますが、一般的に非常に小さいです。
2.3 PIMロールの有効化 (PowerShell)
Privileged Identity Management (PIM) を使用して、特定のEntra IDロールを一時的に有効化する手順です。
# Microsoft Graph PowerShell SDKへの接続
# Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory" を事前に実行してください
# 変数の定義
$roleDefinitionId = "fe930be7-5e62-47db-91af-98c3a49a38b1" # 例: ユーザー管理者のロール定義ID
$justification = "緊急のユーザー管理作業のため"
$durationHours = 1 # 有効化する時間 (例: 1時間)
# 現在のユーザーのオブジェクトIDを取得
$myObjectId = (Get-MgContext).User.ObjectId
# PIMアクティベーションリクエストの作成
$activationRequest = @{
"@odata.type" = "#microsoft.graph.privilegedRoleAssignmentRequest"
"roleDefinitionId" = $roleDefinitionId
"subjectId" = $myObjectId
"assignmentType" = "Activated"
"type" = "AdminAdd"
"reason" = $justification
"schedule" = @{
"startDateTime" = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
"endDateTime" = (Get-Date).AddHours($durationHours).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
}
}
try {
# PIMロールの有効化をリクエスト
New-MgRoleManagementDirectoryPrivilegedRoleAssignmentRequest -BodyParameter $activationRequest
Write-Host "ロール '$roleDefinitionId' のPIMアクティベーションリクエストを送信しました。"
Write-Host "理由: '$justification', 期間: '$durationHours' 時間"
}
catch {
Write-Error "PIMロールアクティベーションリクエストの送信中にエラーが発生しました: $($_.Exception.Message)"
}
前提: Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory" で接続済みであること。対象ロールの定義IDを事前に確認する必要があります。
入出力: 指定されたロールIDと期間で、現在のユーザーのPIMロール有効化リクエストを送信します。成功/失敗メッセージを出力。
計算量/メモリ: 単一のAPI呼び出しであり、無視できるレベルです。
3. 運用監視
統合アイデンティティ管理の安定運用には、継続的な監視が不可欠です。
Entra ID 監査ログ: ユーザー管理、アプリケーション管理、ロール変更など、Entra ID内で発生するすべての変更イベントを記録します。誰が、いつ、何を、どこで変更したかを追跡可能です。
Entra ID サインインログ: ユーザーのサインイン試行に関する詳細情報(成功/失敗、場所、デバイス、使用された認証方法など)を提供します。不審なサインイン活動の検出に役立ちます。
Microsoft Defender for Identity アラート: オンプレミスADからの脅威(例: 不審なプロトコル利用、疑わしい資格情報盗難)をリアルタイムで検出し、アラートを発行します。これらをAzure SentinelやMicrosoft 365 Defenderポータルで一元的に監視できます。
SLAとバックアップ/DR: Entra ID自体はMicrosoftが99.9%のSLAを保証する高可用性サービスです。オンプレミスADとの同期環境では、AD DCの健全性監視とバックアップ/DR戦略が重要になります。
4. セキュリティ
多層防御アプローチによるセキュリティ強化が重要です。
Entra ID ロールとAzure RBAC: 最小特権の原則に基づき、必要な権限のみを付与します。Entra IDロールはEntra IDリソース(ユーザー、グループ、アプリ登録など)に、Azure RBACはAzureサブスクリプション/リソースグループ/リソースに適用されます。
Privileged Identity Management (PIM): 特権ロールの常時利用を廃止し、Just-In-Timeアクセスと承認ワークフローを強制することで、攻撃対象領域を大幅に削減します。2024年4月20日の更新で、PIMのレポーティング機能がさらに強化されています [5]。
条件付きアクセス: 環境全体でMFAを強制し、準拠デバイスからのアクセスのみを許可することで、認証セキュリティを向上させます。2024年5月15日の更新では、認証強度設定の柔軟性が向上しています [2]。
Entra ID Protection: リスクベースのポリシーにより、危険なサインインやユーザーを自動的に検出・保護し、アカウント乗っ取りなどの脅威から防御します。
Microsoft Defender for Identity: ハイブリッド環境におけるIDベースの攻撃を検出し、Active Directoryの脆弱性を特定することで、侵害の拡大を防ぎます。
レガシー認証の無効化: 古い認証プロトコル(例: POP3/IMAP4経由の基本認証)はパスワードスプレー攻撃のリスクが高いため、条件付きアクセスでブロックすることを強く推奨します。
5. コスト
Entra IDのコストは、主にライセンスプランによって異なります。
Entra ID Free: 無料で利用可能で、コアとなるID管理機能、SSO、MFAの一部機能が含まれます。
Entra ID Premium P1: 条件付きアクセス、PIM (限定的)、Entra ID Connect Health、セルフサービスパスワードリセット(グループ書き戻し含む)などの高度な機能が含まれます。ほとんどのエンタープライズ顧客に推奨されます。
Entra ID Premium P2: P1の機能に加え、Privileged Identity Management (PIM) の全機能、Entra ID Protection のリスクベースの条件付きアクセス、アクセスレビューなど、最も高度なセキュリティ機能が含まれます。
Microsoft Defender for Identity: ユーザー数に応じたライセンスが必要で、通常はMicrosoft 365 E5 Securityスイートの一部として提供されます。
コスト最適化:
適切なライセンスプランの選択: 必要な機能とユーザー数に応じて最適なプランを選択します。全てのユーザーにP2ライセンスが必要とは限りません。
未使用ライセンスの解放: 退職者や異動者など、使用されなくなったライセンスを定期的に見直し、解放します。
自動化による管理コスト削減: Graph APIやPowerShellを活用し、プロビジョニング、権限管理、監査レポートの生成を自動化することで、運用の手間とコストを削減します。
6. 落とし穴
効果的なアイデンティティ管理を妨げる一般的な落とし穴とその対策です。
過剰な権限付与: 最小特権の原則を無視し、必要以上の権限をユーザーやサービスプリンシパルに付与すること。→ PIMとアクセスレビューを定期的に実施し、権限を厳格化します。
条件付きアクセスポリシーの競合/複雑化: 多数のポリシーが複雑に絡み合い、意図しないアクセス拒否やセキュリティホールを生むこと。→ ポリシー設計時に評価順序と影響を考慮し、テストと段階的な展開を行います。また、レポート専用モードで影響を評価できます。
レガシー認証の放置: 基本認証などの古い認証プロトコルが有効なままになっていると、ブルートフォース攻撃やパスワードスプレー攻撃の標的になります。→ 条件付きアクセスでレガシー認証をブロックし、モダン認証への移行を強制します。
Shadow ITの放置: IT部門が把握していないアプリケーションやサービスが利用され、アイデンティティ管理の統制外になること。→ Entra IDのアプリケーション管理機能で、利用されるSaaSアプリを登録し、SSOと条件付きアクセスを適用します。
緊急アカウント(ブレイクグラスアカウント)の不適切な管理: グローバル管理者の緊急アカウントが適切に管理されていないと、単一障害点となるリスクがあります。→ 厳重な保管、利用時の通知、定期的なローテーションと監査を徹底します。
7. まとめ
M365/Azure環境における統合アイデンティティ管理は、Microsoft Entra IDを核として、条件付きアクセス、PIM、Defender for Identityといった多岐にわたるセキュリティ機能を組み合わせることで実現されます。最小特権の原則に基づいたロール管理、MFA強制、リスクベースのアクセス制御、および特権IDの厳格な管理を通じて、組織は現代のサイバー脅威から自身を効果的に保護できます。本記事で述べたアーキテクチャ、設定、運用、セキュリティ、コスト、落とし穴の各側面を考慮し、継続的な改善を行うことで、強固で効率的なアイデンティティ管理基盤を構築・維持することが可能です。
コメント