<p><!--META
{
"title": "Microsoft Entra IDパスワードレス認証の実装ガイド",
"primary_category": "クラウド>Azure",
"secondary_categories": ["セキュリティ", "ID管理", "認証"],
"tags": ["Microsoft Entra ID", "パスワードレス", "FIDO2", "Windows Hello for Business", "Authenticator App", "条件付きアクセス", "Graph API"],
"summary": "Microsoft Entra IDにおけるパスワードレス認証のアーキテクチャ、設定、運用、セキュリティ、コストを網羅的に解説し、安全なID管理を実現するための実践ガイドを提供します。",
"mermaid": true,
"verify_level": "L0",
"tweet_hint": {"text":"Microsoft Entra IDでのパスワードレス認証実装ガイドを公開。アーキテクチャ、設定手順、運用監視、セキュリティ、コストまで網羅。FIDO2、WHfB、Authenticatorアプリを活用し、安全で効率的な認証基盤を構築しましょう。 #Azure
#EntraID #パスワードレス","hashtags":["#Azure","#EntraID"]},
"link_hints": ["https://learn.microsoft.com/ja-jp/entra/identity/authentication/concept-authentication-methods-fido2", "https://learn.microsoft.com/ja-jp/entra/identity/authentication/concept-authentication-methods-microsoft-authenticator"]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">Microsoft Entra IDパスワードレス認証の実装ガイド</h1>
<p>Microsoft Entra ID(旧Azure Active Directory)におけるパスワードレス認証は、セキュリティの向上とユーザーエクスペリエンスの改善を両立させる現代の認証戦略です。本ガイドでは、クラウドアーキテクトの視点から、パスワードレス認証のアーキテクチャ、具体的な実装手順、運用監視、セキュリティ考慮事項、コスト、および導入時の一般的な落とし穴について詳しく解説します。</p>
<h2 class="wp-block-heading">1. アーキテクチャ概要</h2>
<p>Microsoft Entra IDが提供するパスワードレス認証方法は主に以下の3種類です。</p>
<ul class="wp-block-list">
<li><p><strong>FIDO2セキュリティキー</strong>: YubiKeyなどの物理的なセキュリティキーを利用。公開鍵暗号方式に基づき、フィッシング耐性が高く、最も強力なパスワードレス認証方式の一つです。</p></li>
<li><p><strong>Windows Hello for Business (WHfB)</strong>: Windowsデバイスに組み込まれた生体認証(指紋、顔)やPINを利用。デバイスと連携した強力な認証を実現します。</p></li>
<li><p><strong>Microsoft Authenticatorアプリ</strong>: スマートフォンにインストールされたアプリを使用。プッシュ通知による承認、またはアプリ内で生成されるワンタイムパスコード(OTP)を利用します。</p></li>
</ul>
<p>これらの認証方法は、いずれもユーザーがパスワードを入力することなく、Microsoft Entra IDに対して安全に認証を行うための基盤を提供します。</p>
<h3 class="wp-block-heading">認証フローの例(FIDO2セキュリティキー)</h3>
<p>FIDO2セキュリティキーを用いたパスワードレス認証の基本的なフローを以下に示します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["ユーザー"] --> |1. 認証リクエスト| B("Webアプリケーション/クライアント")
B --> |2. 認証要求 (OpenID Connect/SAML)| C["Microsoft Entra ID"]
C --> |3. パスワードレス認証プロンプト| A
A --> |4. FIDO2セキュリティキーで生体認証/PIN| D["FIDO2セキュリティキー"]
D --> |5. FIDO2認証応答 (署名済みアサーション)| C
C --> |6. 認証成功 (トークン発行)| B
B --> |7. リソースへのアクセス| E["保護されたリソース"]
</pre></div>
<p><strong>フロー概要:</strong></p>
<ol class="wp-block-list">
<li><p>ユーザーはWebアプリケーションやクライアントから認証を開始します。</p></li>
<li><p>アプリケーションはMicrosoft Entra IDに認証要求をリダイレクトします。</p></li>
<li><p>Microsoft Entra IDはユーザーに対し、FIDO2セキュリティキーでの認証を促します。</p></li>
<li><p>ユーザーはFIDO2セキュリティキーを操作し、生体認証(指紋)やPIN入力を行います。</p></li>
<li><p>セキュリティキーは認証情報を署名し、そのアサーションをMicrosoft Entra IDに送り返します。</p></li>
<li><p>Microsoft Entra IDはアサーションを検証し、認証が成功すればIDトークンやアクセストークンをアプリケーションに発行します。</p></li>
<li><p>アプリケーションは受け取ったトークンを使用して、保護されたリソースにアクセスします。</p></li>
</ol>
<p>このアーキテクチャは、パスワード漏洩やフィッシング攻撃のリスクを大幅に低減し、多要素認証(MFA)をデフォルトで組み込むことでセキュリティを強化します[1]。</p>
<h2 class="wp-block-heading">2. 設定手順</h2>
<p>Microsoft Entra IDでのパスワードレス認証の実装は、以下のステップで進めます。</p>
<h3 class="wp-block-heading">2.1. Microsoft Entra 管理センターでの認証方法ポリシー有効化</h3>
<p>まず、Microsoft Entra 管理センターでパスワードレス認証方法を有効にする必要があります。</p>
<ol class="wp-block-list">
<li><p><strong>Microsoft Entra 管理センター</strong>にサインインします。</p></li>
<li><p>左側のメニューで「<strong>保護</strong>」>「<strong>認証方法</strong>」>「<strong>ポリシー</strong>」を選択します。</p></li>
<li><p>「<strong>FIDO2 セキュリティ キー</strong>」、「<strong>Windows Hello for Business</strong>」、「<strong>Microsoft Authenticator</strong>」の各ポリシーをクリックします。</p></li>
<li><p>それぞれ、以下の設定を行います。</p>
<ul>
<li><p><strong>有効化</strong>: 「はい」を選択します。</p></li>
<li><p><strong>ターゲット</strong>: 組織全体、または特定のMicrosoft Entraグループを選択します。推奨は特定のグループからテスト的に導入し、段階的に展開することです。</p></li>
</ul></li>
</ol>
<h3 class="wp-block-heading">2.2. FIDO2セキュリティキーの設定(Graph API)</h3>
<p>FIDO2セキュリティキーの有効化と管理は、Microsoft Entra 管理センターのUIだけでなく、Microsoft Graph APIを利用して自動化することも可能です。以下は、FIDO2認証方法ポリシーを有効化するPowerShellスクリプトの例です。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># 前提条件: Microsoft Graph PowerShell SDKがインストールされており、
# AuthenticationMethods.ReadWrite.All 権限を持つ管理者として認証済みであること。
# 以下のコマンドで接続してください:
# Connect-MgGraph -Scopes "AuthenticationMethod.ReadWrite.All"
# 変数定義
$fido2PolicyId = "Fido2" # FIDO2認証方法ポリシーの固定ID。Graph APIではFido2が使われます。
$targetGroupId = "a1b2c3d4-e5f6-7890-1234-567890abcdef" # 対象となるMicrosoft EntraグループのObjectID (例: 全ユーザー対象の動的グループ)
# FIDO2認証方法ポリシーの現在の状態を取得
Write-Host "FIDO2認証方法ポリシーの現在の状態を取得しています..."
try {
$fido2Policy = Get-MgBetaPolicyAuthenticationMethodPolicy -AuthenticationMethodPolicyId $fido2PolicyId
Write-Host "現在の状態:"
$fido2Policy | Format-List state, @{Name='IsAllUsers'; Expression={$_.IncludeTargets.IsAllUsers}}, @{Name='TargetGroupId'; Expression={$_.IncludeTargets.Id}}
} catch {
Write-Error "FIDO2認証方法ポリシーの取得に失敗しました: $($_.Exception.Message)"
}
# FIDO2認証方法ポリシーを有効化し、特定のグループに適用
# isAllUsersプロパティを$trueに設定すると、ターゲットグループIDの指定は不要ですが、
# より細かい制御のため特定のグループを指定する例を示します。
$updateParams = @{
"@odata.type" = "#microsoft.graph.fido2AuthenticationMethodConfiguration"
state = "enabled"
is = "default" # デフォルトのFIDO2構成を使用
includeTargets = @(
@{
targetType = "group"
id = $targetGroupId
isAllUsers = $false
}
)
}
Write-Host "FIDO2認証方法ポリシーを有効化し、ターゲットグループに適用しています..."
try {
Update-MgBetaPolicyAuthenticationMethodPolicy -AuthenticationMethodPolicyId $fido2PolicyId -BodyParameter $updateParams
Write-Host "FIDO2認証方法ポリシーが正常に更新されました。"
} catch {
Write-Error "FIDO2認証方法ポリシーの更新に失敗しました: $($_.Exception.Message)"
}
# 更新後のポリシー状態の確認
Write-Host "更新後のFIDO2認証方法ポリシーの状態を確認しています..."
try {
$updatedFido2Policy = Get-MgBetaPolicyAuthenticationMethodPolicy -AuthenticationMethodPolicyId $fido2PolicyId
Write-Host "更新後の状態:"
$updatedFido2Policy | Format-List state, @{Name='IsAllUsers'; Expression={$_.IncludeTargets.IsAllUsers}}, @{Name='TargetGroupId'; Expression={$_.IncludeTargets.Id}}
} catch {
Write-Error "更新後のFIDO2認証方法ポリシーの取得に失敗しました: $($_.Exception.Message)"
}
# 入力: Connect-MgGraphによる認証済みセッション、対象となるMicrosoft EntraグループのObjectID
# 出力: FIDO2認証方法ポリシーの現在の状態と更新後の状態がコンソールに表示される。
# 前提: Microsoft Graph PowerShell SDKがインストールされ、AuthenticationMethod.ReadWrite.All権限を持つアカウントで接続済み。
# 計算量: O(1) - Graph APIへのリクエストは定数回。
# メモリ条件: スクリプト実行に必要な最低限のメモリ。Graph APIレスポンスは通常小さい。
</pre>
</div>
<p>このスクリプトは、FIDO2ポリシーを有効化し、特定のグループに適用する例です。実際の運用では、<code>$targetGroupId</code> を適切なグループIDに置き換える必要があります。</p>
<h3 class="wp-block-heading">2.3. Windows Hello for Business (WHfB) の設定</h3>
<p>WHfBの展開には、Microsoft Intuneまたはグループポリシーオブジェクト(GPO)が一般的に使用されます。</p>
<ul class="wp-block-list">
<li><p><strong>Intune経由</strong>: Intuneでデバイス構成プロファイルを作成し、Windows Hello for Businessを有効にするポリシーを展開します。これはクラウド管理されたデバイスに最適です。</p></li>
<li><p><strong>GPO経由</strong>: オンプレミスAD環境では、グループポリシー管理エディターを使用してWHfB関連のGPO設定(例: <code>ユーザーの構成\ポリシー\管理用テンプレート\Windows コンポーネント\Windows Hello for Business</code>)を構成します。</p></li>
</ul>
<h3 class="wp-block-heading">2.4. Microsoft Authenticatorアプリの設定</h3>
<p>Microsoft Authenticatorアプリは、ユーザーが自分で登録する形式が一般的です。</p>
<ol class="wp-block-list">
<li><p>ユーザーはマイアカウントの「セキュリティ情報」ページ(<code>https://mysignins.microsoft.com/security-info</code>)にアクセスします。</p></li>
<li><p>「サインイン方法の追加」から「Authenticator アプリ」を選択し、画面の指示に従って登録を行います。</p></li>
<li><p>スマートフォンにアプリをインストールし、表示されるQRコードをスキャンしてアカウントをリンクさせます。</p></li>
</ol>
<h3 class="wp-block-heading">2.5. 条件付きアクセスとの連携</h3>
<p>Microsoft Entra ID P1またはP2ライセンスが必要な条件付きアクセス(CA)は、パスワードレス認証を特定の条件下で必須化し、セキュリティをさらに強化するために不可欠です[2, 3]。</p>
<p><strong>条件付きアクセス ポリシーの例:</strong></p>
<ul class="wp-block-list">
<li><p><strong>「パスワードレス認証を必須化」ポリシー</strong>:</p>
<ul>
<li><p><strong>ユーザーとグループ</strong>: 全ユーザーまたは特定のユーザーグループ</p></li>
<li><p><strong>クラウドアプリまたは操作</strong>: すべてのクラウドアプリ</p></li>
<li><p><strong>条件</strong>: (任意でデバイスの状態、場所などを追加)</p></li>
<li><p><strong>許可</strong>: 「多要素認証を要求する」と「セキュリティの既定値の利用を要求する」のチェックを外し、「<strong>FIDO2 セキュリティ キー</strong>」や「<strong>Windows Hello for Business</strong>」、「<strong>Microsoft Authenticator (パスワードレス)</strong>」を必須と設定。</p></li>
<li><p><strong>セッション</strong>: サインインの頻度など</p></li>
</ul></li>
</ul>
<p>このポリシーにより、対象ユーザーは指定されたパスワードレス認証方法でしかサインインできなくなり、従来のパスワード認証を禁止できます。</p>
<h2 class="wp-block-heading">3. 運用監視</h2>
<p>パスワードレス認証の安定運用には、継続的な監視とログ分析が不可欠です。</p>
<h3 class="wp-block-heading">3.1. 可観測性(ログ)</h3>
<p>Microsoft Entra IDは、認証アクティビティに関する詳細なログを提供します[5]。</p>
<ul class="wp-block-list">
<li><p><strong>サインインログ</strong>:</p>
<ul>
<li><p>場所: Microsoft Entra 管理センター > 「<strong>監視と正常性</strong>」 > 「<strong>サインインログ</strong>」</p></li>
<li><p>認証方法(例: FIDO2、Windows Hello for Business、Microsoft Authenticator)や結果(成功/失敗)をリアルタイムで確認できます。</p></li>
<li><p>例: 2024年7月11日(JST)のFIDO2認証成功件数を確認。</p></li>
</ul></li>
<li><p><strong>監査ログ</strong>:</p>
<ul>
<li><p>場所: Microsoft Entra 管理センター > 「<strong>監視と正常性</strong>」 > 「<strong>監査ログ</strong>」</p></li>
<li><p>認証方法ポリシーの変更、ユーザーの認証方法登録/削除などの管理操作が記録されます。</p></li>
<li><p>例: 2024年7月10日(JST)に認証管理者が行った認証方法ポリシーの変更履歴を確認。</p></li>
</ul></li>
</ul>
<p>これらのログは、Microsoft Entra Diagnostic Settingsを通じてAzure Monitor Log Analyticsワークスペースに送信し、Kustoクエリを用いた詳細な分析やアラート設定を行うことが推奨されます。</p>
<h3 class="wp-block-heading">3.2. SLAとバックアップ/DR</h3>
<p>Microsoft Entra IDは、高可用性と災害復旧(DR)機能が組み込まれたグローバルサービスであり、Microsoftによって運用・管理されています。Microsoft Entra IDのサービスレベルアグリーメント(SLA)は、月間99.9%の可用性を保証しています[6]。テナント管理者は、Entra ID自体のバックアップやDRについて個別に考慮する必要はほとんどありませんが、以下の点に留意が必要です。</p>
<ul class="wp-block-list">
<li><p><strong>設定のバックアップ</strong>: 条件付きアクセスポリシーやカスタムロール定義など、テナント固有の設定はGraph APIやPowerShellスクリプトとしてエクスポートし、バージョン管理することがベストプラクティスです。</p></li>
<li><p><strong>物理デバイスの可用性</strong>: FIDO2キーやWHfBデバイスの紛失・破損に備え、代替の認証方法(例: Authenticatorアプリ)や緊急アクセス用アカウントのポリシーを計画しておく必要があります。</p></li>
</ul>
<h3 class="wp-block-heading">3.3. ユーザーサポートとトラブルシューティング</h3>
<p>ユーザーからの問い合わせに迅速に対応できるよう、以下の準備が必要です。</p>
<ul class="wp-block-list">
<li><p><strong>ナレッジベース</strong>: 各認証方法の登録方法、よくある質問、トラブルシューティング手順をまとめたドキュメントを用意します。</p></li>
<li><p><strong>ヘルプデスク教育</strong>: サポート担当者がパスワードレス認証の仕組み、ログの見方、一般的な問題解決方法を理解している必要があります。</p></li>
<li><p><strong>緊急アクセス手順</strong>: すべてのパスワードレス認証方法が利用できない場合の、一時的なパスワード発行や認証方法のリセット手順を明確にしておくことが重要です。</p></li>
</ul>
<h2 class="wp-block-heading">4. セキュリティ</h2>
<p>パスワードレス認証の導入はセキュリティを大幅に向上させますが、適切な構成と運用が不可欠です。</p>
<h3 class="wp-block-heading">4.1. アイデンティティと権限境界</h3>
<ul class="wp-block-list">
<li><p><strong>Microsoft Entra ID ロール</strong>:</p>
<ul>
<li><p><strong>認証管理者</strong>: 認証方法ポリシーやユーザーの認証方法を管理できます。このロールは必要最小限のユーザーに付与すべきです。</p></li>
<li><p><strong>グローバル管理者</strong>: 全ての管理権限を持つため、パスワードレス認証の設定を含むあらゆる変更が可能です。緊急時のみ使用し、日常的な管理にはより限定されたロールを使用します。</p></li>
<li><p><strong>認証特権管理者</strong>: より限定的な認証関連の権限を持ちます。</p></li>
</ul></li>
<li><p><strong>条件付きアクセス (CA)</strong>: CAは、特定の認証方法(例: FIDO2セキュリティキー)が使用された場合にのみアクセスを許可したり、信頼された場所からのアクセスを必須とすることで、アイデンティティの権限境界を細かく制御できます。例えば、FIDO2認証が特定の重要アプリケーションへのアクセスに必須であるというポリシーは、強力なセキュリティ境界を確立します。</p></li>
<li><p><strong>管理デバイスの利用</strong>: 条件付きアクセスで、Microsoft Intuneで管理されたデバイスからのアクセスのみを許可することで、デバイスのセキュリティ状態も認証要件に組み込むことができます。</p></li>
</ul>
<h3 class="wp-block-heading">4.2. 認証方法の強度とリスク</h3>
<p>FIDO2は公開鍵暗号方式を使用するため、フィッシング攻撃に対する耐性が最も高いです。WHfBもデバイスと連携しているため強力ですが、デバイスの物理的セキュリティが重要です。Authenticatorアプリはプッシュ通知による認証が便利ですが、SIMスワップ攻撃やデバイス盗難のリスクに注意が必要です。各認証方法のリスクを理解し、組織のセキュリティ要件に合わせて組み合わせることが重要です[1]。</p>
<h3 class="wp-block-heading">4.3. Defender for Cloud Apps連携</h3>
<p>Microsoft Defender for Cloud Apps(旧Microsoft Cloud App Security、MCAS)は、異常なサインイン試行やユーザー行動を検出し、パスワードレス認証環境における潜在的な脅威を特定するのに役立ちます。例えば、FIDO2認証が成功した後であっても、通常とは異なる地理的場所からのアクセスがあった場合などにアラートを発することが可能です。</p>
<h2 class="wp-block-heading">5. コスト</h2>
<p>Microsoft Entra IDパスワードレス認証の導入に関連するコストは、主にライセンスとデバイス費用に分けられます。</p>
<h3 class="wp-block-heading">5.1. ライセンス体系</h3>
<ul class="wp-block-list">
<li><p><strong>Microsoft Entra ID Free</strong>: 基本的なパスワードレス認証(Authenticatorアプリなど)は利用可能ですが、条件付きアクセスなどの高度なセキュリティ機能は利用できません[3]。</p></li>
<li><p><strong>Microsoft Entra ID P1</strong>: FIDO2セキュリティキーやWindows Hello for Businessの利用、および条件付きアクセスの機能が含まれます。ほとんどの組織で推奨されるライセンスです。</p></li>
<li><p><strong>Microsoft Entra ID P2</strong>: P1の機能に加え、Identity Protection(ユーザーやサインインのリスク検出)やJust-In-Timeアクセスなどの高度なセキュリティ機能が含まれます。より厳格なセキュリティ要件を持つ組織向けです。</p></li>
</ul>
<p>FIDO2セキュリティキーによるパスワードレス認証自体に追加料金は発生しませんが、その管理や条件付きアクセスとの連携にはP1/P2ライセンスが必要となる点に注意が必要です[7]。</p>
<h3 class="wp-block-heading">5.2. FIDO2デバイス費用</h3>
<p>FIDO2セキュリティキーは物理的なデバイスであるため、ユーザー数に応じて購入費用が発生します。単価はベンダーや機能(NFC対応、指紋認証機能など)によって異なりますが、一般的に数千円程度です。予備キーの購入も考慮に入れる必要があります。</p>
<h3 class="wp-block-heading">5.3. コスト最適化の考慮事項</h3>
<ul class="wp-block-list">
<li><p><strong>段階的導入</strong>: 最初は一部のユーザーや部門に限定してパスワードレス認証を展開し、その効果とコストを評価します。</p></li>
<li><p><strong>認証方法の選択</strong>: 全てのユーザーにFIDO2キーを配布するのではなく、業務要件やリスクレベルに応じてWHfBやAuthenticatorアプリを併用することで、デバイス費用を最適化できます。</p></li>
<li><p><strong>既存ライセンスの活用</strong>: 既にMicrosoft 365 E3/E5などのスイートライセンスを保有している場合、Microsoft Entra ID P1/P2が含まれている可能性があるため、既存契約を確認することが重要です。</p></li>
</ul>
<h2 class="wp-block-heading">6. 落とし穴とベストプラクティス</h2>
<h3 class="wp-block-heading">6.1. 計画の重要性</h3>
<ul class="wp-block-list">
<li><p><strong>事前のテスト</strong>: 小規模なパイロットグループで十分にテストし、潜在的な問題点やユーザーからのフィードバックを収集します。</p></li>
<li><p><strong>互換性</strong>: レガシーアプリケーションがパスワードレス認証(モダン認証)に対応しているか事前に確認します。場合によってはアプリケーションの改修やプロキシ利用が必要です。</p></li>
</ul>
<h3 class="wp-block-heading">6.2. ユーザー教育</h3>
<ul class="wp-block-list">
<li><p>パスワードレス認証は新しい体験であるため、ユーザーへの丁寧な説明とトレーニングが不可欠です。</p></li>
<li><p>FIDO2キーの紛失時の対応、PINの管理、Authenticatorアプリの利用方法などを明確に伝えます。</p></li>
</ul>
<h3 class="wp-block-heading">6.3. 段階的導入</h3>
<p>一度に全ユーザーをパスワードレスに移行するのではなく、リスクの低い部門から、あるいは特定のアプリケーションから順次導入することで、導入時の混乱を最小限に抑えられます。既存のMFAと並行して運用し、徐々にパスワードレスへのシフトを促すのが現実的です。</p>
<h2 class="wp-block-heading">7. まとめ</h2>
<p>Microsoft Entra IDにおけるパスワードレス認証は、セキュリティと利便性を両立させる強力なソリューションです。FIDO2セキュリティキー、Windows Hello for Business、Microsoft Authenticatorアプリといった多様な選択肢を、組織の要件とリスク許容度に合わせて適切に組み合わせることで、強固な認証基盤を構築できます。</p>
<p>導入に際しては、アーキテクチャの理解、Microsoft Entra 管理センターやGraph APIを用いた正確な設定、条件付きアクセスによるセキュリティ強化、ログを活用した運用監視、そして適切なライセンスとデバイスの選定が成功の鍵となります。また、ユーザー教育と段階的な導入計画を立てることで、スムーズな移行を実現し、組織全体のセキュリティ postureを向上させることが可能です。</p>
<hr/>
<p><strong>参考文献:</strong>
[1] Microsoft Learn: パスワードレス認証の計画とデプロイ – Microsoft Entra ID. 2024年7月2日(JST)更新. Microsoft.
[2] Microsoft Learn: 条件付きアクセスとは. 2024年7月5日(JST)更新. Microsoft.
[3] Microsoft Learn: Microsoft Entra ID のライセンスの比較. 2024年6月10日(JST)更新. Microsoft.
[4] Microsoft Learn: Microsoft Graph を使用して認証方法を管理する. 2024年6月25日(JST)更新. Microsoft.
[5] Microsoft Learn: Microsoft Entra ID のレポートと監視. 2024年7月1日(JST)更新. Microsoft.
[6] Azure SLA: Microsoft Entra ID のサービス レベル アグリーメント. 2023年10月1日(JST)更新. Microsoft.
[7] Microsoft Entra ID の価格ページ. 2024年7月9日(JST)更新. Microsoft.</p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
Microsoft Entra IDパスワードレス認証の実装ガイド
Microsoft Entra ID(旧Azure Active Directory)におけるパスワードレス認証は、セキュリティの向上とユーザーエクスペリエンスの改善を両立させる現代の認証戦略です。本ガイドでは、クラウドアーキテクトの視点から、パスワードレス認証のアーキテクチャ、具体的な実装手順、運用監視、セキュリティ考慮事項、コスト、および導入時の一般的な落とし穴について詳しく解説します。
1. アーキテクチャ概要
Microsoft Entra IDが提供するパスワードレス認証方法は主に以下の3種類です。
FIDO2セキュリティキー: YubiKeyなどの物理的なセキュリティキーを利用。公開鍵暗号方式に基づき、フィッシング耐性が高く、最も強力なパスワードレス認証方式の一つです。
Windows Hello for Business (WHfB): Windowsデバイスに組み込まれた生体認証(指紋、顔)やPINを利用。デバイスと連携した強力な認証を実現します。
Microsoft Authenticatorアプリ: スマートフォンにインストールされたアプリを使用。プッシュ通知による承認、またはアプリ内で生成されるワンタイムパスコード(OTP)を利用します。
これらの認証方法は、いずれもユーザーがパスワードを入力することなく、Microsoft Entra IDに対して安全に認証を行うための基盤を提供します。
認証フローの例(FIDO2セキュリティキー)
FIDO2セキュリティキーを用いたパスワードレス認証の基本的なフローを以下に示します。
graph TD
A["ユーザー"] --> |1. 認証リクエスト| B("Webアプリケーション/クライアント")
B --> |2. 認証要求 (OpenID Connect/SAML)| C["Microsoft Entra ID"]
C --> |3. パスワードレス認証プロンプト| A
A --> |4. FIDO2セキュリティキーで生体認証/PIN| D["FIDO2セキュリティキー"]
D --> |5. FIDO2認証応答 (署名済みアサーション)| C
C --> |6. 認証成功 (トークン発行)| B
B --> |7. リソースへのアクセス| E["保護されたリソース"]
フロー概要:
ユーザーはWebアプリケーションやクライアントから認証を開始します。
アプリケーションはMicrosoft Entra IDに認証要求をリダイレクトします。
Microsoft Entra IDはユーザーに対し、FIDO2セキュリティキーでの認証を促します。
ユーザーはFIDO2セキュリティキーを操作し、生体認証(指紋)やPIN入力を行います。
セキュリティキーは認証情報を署名し、そのアサーションをMicrosoft Entra IDに送り返します。
Microsoft Entra IDはアサーションを検証し、認証が成功すればIDトークンやアクセストークンをアプリケーションに発行します。
アプリケーションは受け取ったトークンを使用して、保護されたリソースにアクセスします。
このアーキテクチャは、パスワード漏洩やフィッシング攻撃のリスクを大幅に低減し、多要素認証(MFA)をデフォルトで組み込むことでセキュリティを強化します[1]。
2. 設定手順
Microsoft Entra IDでのパスワードレス認証の実装は、以下のステップで進めます。
2.1. Microsoft Entra 管理センターでの認証方法ポリシー有効化
まず、Microsoft Entra 管理センターでパスワードレス認証方法を有効にする必要があります。
Microsoft Entra 管理センターにサインインします。
左側のメニューで「保護」>「認証方法」>「ポリシー」を選択します。
「FIDO2 セキュリティ キー」、「Windows Hello for Business」、「Microsoft Authenticator」の各ポリシーをクリックします。
それぞれ、以下の設定を行います。
2.2. FIDO2セキュリティキーの設定(Graph API)
FIDO2セキュリティキーの有効化と管理は、Microsoft Entra 管理センターのUIだけでなく、Microsoft Graph APIを利用して自動化することも可能です。以下は、FIDO2認証方法ポリシーを有効化するPowerShellスクリプトの例です。
# 前提条件: Microsoft Graph PowerShell SDKがインストールされており、
# AuthenticationMethods.ReadWrite.All 権限を持つ管理者として認証済みであること。
# 以下のコマンドで接続してください:
# Connect-MgGraph -Scopes "AuthenticationMethod.ReadWrite.All"
# 変数定義
$fido2PolicyId = "Fido2" # FIDO2認証方法ポリシーの固定ID。Graph APIではFido2が使われます。
$targetGroupId = "a1b2c3d4-e5f6-7890-1234-567890abcdef" # 対象となるMicrosoft EntraグループのObjectID (例: 全ユーザー対象の動的グループ)
# FIDO2認証方法ポリシーの現在の状態を取得
Write-Host "FIDO2認証方法ポリシーの現在の状態を取得しています..."
try {
$fido2Policy = Get-MgBetaPolicyAuthenticationMethodPolicy -AuthenticationMethodPolicyId $fido2PolicyId
Write-Host "現在の状態:"
$fido2Policy | Format-List state, @{Name='IsAllUsers'; Expression={$_.IncludeTargets.IsAllUsers}}, @{Name='TargetGroupId'; Expression={$_.IncludeTargets.Id}}
} catch {
Write-Error "FIDO2認証方法ポリシーの取得に失敗しました: $($_.Exception.Message)"
}
# FIDO2認証方法ポリシーを有効化し、特定のグループに適用
# isAllUsersプロパティを$trueに設定すると、ターゲットグループIDの指定は不要ですが、
# より細かい制御のため特定のグループを指定する例を示します。
$updateParams = @{
"@odata.type" = "#microsoft.graph.fido2AuthenticationMethodConfiguration"
state = "enabled"
is = "default" # デフォルトのFIDO2構成を使用
includeTargets = @(
@{
targetType = "group"
id = $targetGroupId
isAllUsers = $false
}
)
}
Write-Host "FIDO2認証方法ポリシーを有効化し、ターゲットグループに適用しています..."
try {
Update-MgBetaPolicyAuthenticationMethodPolicy -AuthenticationMethodPolicyId $fido2PolicyId -BodyParameter $updateParams
Write-Host "FIDO2認証方法ポリシーが正常に更新されました。"
} catch {
Write-Error "FIDO2認証方法ポリシーの更新に失敗しました: $($_.Exception.Message)"
}
# 更新後のポリシー状態の確認
Write-Host "更新後のFIDO2認証方法ポリシーの状態を確認しています..."
try {
$updatedFido2Policy = Get-MgBetaPolicyAuthenticationMethodPolicy -AuthenticationMethodPolicyId $fido2PolicyId
Write-Host "更新後の状態:"
$updatedFido2Policy | Format-List state, @{Name='IsAllUsers'; Expression={$_.IncludeTargets.IsAllUsers}}, @{Name='TargetGroupId'; Expression={$_.IncludeTargets.Id}}
} catch {
Write-Error "更新後のFIDO2認証方法ポリシーの取得に失敗しました: $($_.Exception.Message)"
}
# 入力: Connect-MgGraphによる認証済みセッション、対象となるMicrosoft EntraグループのObjectID
# 出力: FIDO2認証方法ポリシーの現在の状態と更新後の状態がコンソールに表示される。
# 前提: Microsoft Graph PowerShell SDKがインストールされ、AuthenticationMethod.ReadWrite.All権限を持つアカウントで接続済み。
# 計算量: O(1) - Graph APIへのリクエストは定数回。
# メモリ条件: スクリプト実行に必要な最低限のメモリ。Graph APIレスポンスは通常小さい。
このスクリプトは、FIDO2ポリシーを有効化し、特定のグループに適用する例です。実際の運用では、$targetGroupId を適切なグループIDに置き換える必要があります。
2.3. Windows Hello for Business (WHfB) の設定
WHfBの展開には、Microsoft Intuneまたはグループポリシーオブジェクト(GPO)が一般的に使用されます。
Intune経由: Intuneでデバイス構成プロファイルを作成し、Windows Hello for Businessを有効にするポリシーを展開します。これはクラウド管理されたデバイスに最適です。
GPO経由: オンプレミスAD環境では、グループポリシー管理エディターを使用してWHfB関連のGPO設定(例: ユーザーの構成\ポリシー\管理用テンプレート\Windows コンポーネント\Windows Hello for Business)を構成します。
2.4. Microsoft Authenticatorアプリの設定
Microsoft Authenticatorアプリは、ユーザーが自分で登録する形式が一般的です。
ユーザーはマイアカウントの「セキュリティ情報」ページ(https://mysignins.microsoft.com/security-info)にアクセスします。
「サインイン方法の追加」から「Authenticator アプリ」を選択し、画面の指示に従って登録を行います。
スマートフォンにアプリをインストールし、表示されるQRコードをスキャンしてアカウントをリンクさせます。
2.5. 条件付きアクセスとの連携
Microsoft Entra ID P1またはP2ライセンスが必要な条件付きアクセス(CA)は、パスワードレス認証を特定の条件下で必須化し、セキュリティをさらに強化するために不可欠です[2, 3]。
条件付きアクセス ポリシーの例:
「パスワードレス認証を必須化」ポリシー:
ユーザーとグループ: 全ユーザーまたは特定のユーザーグループ
クラウドアプリまたは操作: すべてのクラウドアプリ
条件: (任意でデバイスの状態、場所などを追加)
許可: 「多要素認証を要求する」と「セキュリティの既定値の利用を要求する」のチェックを外し、「FIDO2 セキュリティ キー」や「Windows Hello for Business」、「Microsoft Authenticator (パスワードレス)」を必須と設定。
セッション: サインインの頻度など
このポリシーにより、対象ユーザーは指定されたパスワードレス認証方法でしかサインインできなくなり、従来のパスワード認証を禁止できます。
3. 運用監視
パスワードレス認証の安定運用には、継続的な監視とログ分析が不可欠です。
3.1. 可観測性(ログ)
Microsoft Entra IDは、認証アクティビティに関する詳細なログを提供します[5]。
サインインログ:
場所: Microsoft Entra 管理センター > 「監視と正常性」 > 「サインインログ」
認証方法(例: FIDO2、Windows Hello for Business、Microsoft Authenticator)や結果(成功/失敗)をリアルタイムで確認できます。
例: 2024年7月11日(JST)のFIDO2認証成功件数を確認。
監査ログ:
場所: Microsoft Entra 管理センター > 「監視と正常性」 > 「監査ログ」
認証方法ポリシーの変更、ユーザーの認証方法登録/削除などの管理操作が記録されます。
例: 2024年7月10日(JST)に認証管理者が行った認証方法ポリシーの変更履歴を確認。
これらのログは、Microsoft Entra Diagnostic Settingsを通じてAzure Monitor Log Analyticsワークスペースに送信し、Kustoクエリを用いた詳細な分析やアラート設定を行うことが推奨されます。
3.2. SLAとバックアップ/DR
Microsoft Entra IDは、高可用性と災害復旧(DR)機能が組み込まれたグローバルサービスであり、Microsoftによって運用・管理されています。Microsoft Entra IDのサービスレベルアグリーメント(SLA)は、月間99.9%の可用性を保証しています[6]。テナント管理者は、Entra ID自体のバックアップやDRについて個別に考慮する必要はほとんどありませんが、以下の点に留意が必要です。
設定のバックアップ: 条件付きアクセスポリシーやカスタムロール定義など、テナント固有の設定はGraph APIやPowerShellスクリプトとしてエクスポートし、バージョン管理することがベストプラクティスです。
物理デバイスの可用性: FIDO2キーやWHfBデバイスの紛失・破損に備え、代替の認証方法(例: Authenticatorアプリ)や緊急アクセス用アカウントのポリシーを計画しておく必要があります。
3.3. ユーザーサポートとトラブルシューティング
ユーザーからの問い合わせに迅速に対応できるよう、以下の準備が必要です。
ナレッジベース: 各認証方法の登録方法、よくある質問、トラブルシューティング手順をまとめたドキュメントを用意します。
ヘルプデスク教育: サポート担当者がパスワードレス認証の仕組み、ログの見方、一般的な問題解決方法を理解している必要があります。
緊急アクセス手順: すべてのパスワードレス認証方法が利用できない場合の、一時的なパスワード発行や認証方法のリセット手順を明確にしておくことが重要です。
4. セキュリティ
パスワードレス認証の導入はセキュリティを大幅に向上させますが、適切な構成と運用が不可欠です。
4.1. アイデンティティと権限境界
Microsoft Entra ID ロール:
認証管理者: 認証方法ポリシーやユーザーの認証方法を管理できます。このロールは必要最小限のユーザーに付与すべきです。
グローバル管理者: 全ての管理権限を持つため、パスワードレス認証の設定を含むあらゆる変更が可能です。緊急時のみ使用し、日常的な管理にはより限定されたロールを使用します。
認証特権管理者: より限定的な認証関連の権限を持ちます。
条件付きアクセス (CA): CAは、特定の認証方法(例: FIDO2セキュリティキー)が使用された場合にのみアクセスを許可したり、信頼された場所からのアクセスを必須とすることで、アイデンティティの権限境界を細かく制御できます。例えば、FIDO2認証が特定の重要アプリケーションへのアクセスに必須であるというポリシーは、強力なセキュリティ境界を確立します。
管理デバイスの利用: 条件付きアクセスで、Microsoft Intuneで管理されたデバイスからのアクセスのみを許可することで、デバイスのセキュリティ状態も認証要件に組み込むことができます。
4.2. 認証方法の強度とリスク
FIDO2は公開鍵暗号方式を使用するため、フィッシング攻撃に対する耐性が最も高いです。WHfBもデバイスと連携しているため強力ですが、デバイスの物理的セキュリティが重要です。Authenticatorアプリはプッシュ通知による認証が便利ですが、SIMスワップ攻撃やデバイス盗難のリスクに注意が必要です。各認証方法のリスクを理解し、組織のセキュリティ要件に合わせて組み合わせることが重要です[1]。
4.3. Defender for Cloud Apps連携
Microsoft Defender for Cloud Apps(旧Microsoft Cloud App Security、MCAS)は、異常なサインイン試行やユーザー行動を検出し、パスワードレス認証環境における潜在的な脅威を特定するのに役立ちます。例えば、FIDO2認証が成功した後であっても、通常とは異なる地理的場所からのアクセスがあった場合などにアラートを発することが可能です。
5. コスト
Microsoft Entra IDパスワードレス認証の導入に関連するコストは、主にライセンスとデバイス費用に分けられます。
5.1. ライセンス体系
Microsoft Entra ID Free: 基本的なパスワードレス認証(Authenticatorアプリなど)は利用可能ですが、条件付きアクセスなどの高度なセキュリティ機能は利用できません[3]。
Microsoft Entra ID P1: FIDO2セキュリティキーやWindows Hello for Businessの利用、および条件付きアクセスの機能が含まれます。ほとんどの組織で推奨されるライセンスです。
Microsoft Entra ID P2: P1の機能に加え、Identity Protection(ユーザーやサインインのリスク検出)やJust-In-Timeアクセスなどの高度なセキュリティ機能が含まれます。より厳格なセキュリティ要件を持つ組織向けです。
FIDO2セキュリティキーによるパスワードレス認証自体に追加料金は発生しませんが、その管理や条件付きアクセスとの連携にはP1/P2ライセンスが必要となる点に注意が必要です[7]。
5.2. FIDO2デバイス費用
FIDO2セキュリティキーは物理的なデバイスであるため、ユーザー数に応じて購入費用が発生します。単価はベンダーや機能(NFC対応、指紋認証機能など)によって異なりますが、一般的に数千円程度です。予備キーの購入も考慮に入れる必要があります。
5.3. コスト最適化の考慮事項
段階的導入: 最初は一部のユーザーや部門に限定してパスワードレス認証を展開し、その効果とコストを評価します。
認証方法の選択: 全てのユーザーにFIDO2キーを配布するのではなく、業務要件やリスクレベルに応じてWHfBやAuthenticatorアプリを併用することで、デバイス費用を最適化できます。
既存ライセンスの活用: 既にMicrosoft 365 E3/E5などのスイートライセンスを保有している場合、Microsoft Entra ID P1/P2が含まれている可能性があるため、既存契約を確認することが重要です。
6. 落とし穴とベストプラクティス
6.1. 計画の重要性
6.2. ユーザー教育
6.3. 段階的導入
一度に全ユーザーをパスワードレスに移行するのではなく、リスクの低い部門から、あるいは特定のアプリケーションから順次導入することで、導入時の混乱を最小限に抑えられます。既存のMFAと並行して運用し、徐々にパスワードレスへのシフトを促すのが現実的です。
7. まとめ
Microsoft Entra IDにおけるパスワードレス認証は、セキュリティと利便性を両立させる強力なソリューションです。FIDO2セキュリティキー、Windows Hello for Business、Microsoft Authenticatorアプリといった多様な選択肢を、組織の要件とリスク許容度に合わせて適切に組み合わせることで、強固な認証基盤を構築できます。
導入に際しては、アーキテクチャの理解、Microsoft Entra 管理センターやGraph APIを用いた正確な設定、条件付きアクセスによるセキュリティ強化、ログを活用した運用監視、そして適切なライセンスとデバイスの選定が成功の鍵となります。また、ユーザー教育と段階的な導入計画を立てることで、スムーズな移行を実現し、組織全体のセキュリティ postureを向上させることが可能です。
参考文献:
[1] Microsoft Learn: パスワードレス認証の計画とデプロイ – Microsoft Entra ID. 2024年7月2日(JST)更新. Microsoft.
[2] Microsoft Learn: 条件付きアクセスとは. 2024年7月5日(JST)更新. Microsoft.
[3] Microsoft Learn: Microsoft Entra ID のライセンスの比較. 2024年6月10日(JST)更新. Microsoft.
[4] Microsoft Learn: Microsoft Graph を使用して認証方法を管理する. 2024年6月25日(JST)更新. Microsoft.
[5] Microsoft Learn: Microsoft Entra ID のレポートと監視. 2024年7月1日(JST)更新. Microsoft.
[6] Azure SLA: Microsoft Entra ID のサービス レベル アグリーメント. 2023年10月1日(JST)更新. Microsoft.
[7] Microsoft Entra ID の価格ページ. 2024年7月9日(JST)更新. Microsoft.
コメント