継続的アクセス評価によるアプリケーションのセキュリティ保護

この記事は、開発者が継続的アクセス評価によりアプリケーションのセキュリティを向上するための方法を説明します。 Microsoft Entra ID からアクセス トークンを取得するときに、リソースにアクセスするための承認を受けるアプリでゼロ トラスト サポートを確保する方法について説明します。

Microsoft Entra ID は、これらのアクセス トークンを発行する際、その承認に関わるすべての条件を完全に検証します。 Microsoft Entra ID は、初回トークン要求に対するトークンを発行あるいはトークンを更新するたびに、アプリケーションに対する同意が付与されているかどうかの確認など、標準的な承認アクションを実行します。

Microsoft Entra ID は、アクセス トークンとして主に JSON Web トークン (JWT) を使用します。 リソース API は、リソース API に呼び出しがかかるたびに Microsoft Entra ID にコールバックしなくても、JWT をデコード、検証、および解釈することができます。 JWT 標準では、その時刻以降にJWT トークンを受け入れて処理してはならない有効期限を指定する有効期限クレームが定義されます。 既定では、Microsoft Entra トークンは発行後 60 分から 90 分後に期限切れになります。 アプリケーションは、Microsoft Entra ID が承認条件を評価しないこの期間中、アクセス トークンをキャッシュして使用する必要があります。

トークンの発行以外の条件の評価

Microsoft のお客様は、Microsoft Entra ID によるトークン発行時のユーザー条件の変更とポリシー変更適用間の時間差に関する懸念を表明しています。 こうしたトークン有効期間短縮化アプローチは、リスクを排除できないにもかかわらず、ユーザーエクスペリエンスと信頼性を低下させる可能性があります。

これに対する 1 つの解決策は、保護されたリソースに対する呼び出しごとに条件を評価することです。 これを実装する最も一般的な方法が、トークンのイントロスペクションです。 トークンのイントロスペクションでは、トークンに JWT 形式は使用されません。 代わりに、トークンイントロスペクションでは、リソース API側 で解釈できない不透明な文字列を使用します。 リソース API は、各呼び出しごとに ID プロバイダーにトークンを送信します。 その後、ID プロバイダーは、必要な条件をチェックし、リソース API が操作を完了するために使用できるデータを返します。 ただしこのプロセスは、すべての API 呼び出しごとに新たなラウンド トリップ Web 要求を追加するため、高額な費用を伴います。

継続的アクセス評価 (CAE) を利用してこの費用課題に対処する方法として、リソース API は、Microsoft Entra ID がリソース API に対して発行するトークンについて Microsoft Entra ID がプッシュするイベントをリッスンすることができます。 たとえば、アプリケーションが Microsoft Graph API を呼び出したときに、Microsoft Graph側ではそのトークンに関する新たなイベントを Microsoft Entra ID から受信したかどうかをチェックすることができます。 元の認証の条件が変更され、ユーザーが再認証する必要がある場合、Microsoft Graph は呼び出し元のアプリケーションにエラーを返します。

Microsoft Entra ID は、次のいずれかのイベントが発生したときに、CAE 対応の Microsoft リソースにイベントを送信します。

  • ユーザーアカウントが削除または無効化されている場合
  • パスワードが変更またはリセットされている場合
  • ユーザーの多要素認証が有効化されている場合
  • 管理者が、ユーザーのすべての更新トークンを明示的に取り消した
  • Microsoft Entra ID 保護機能により、より高いユーザー リスクが検出された場合

さらに、CAE 対応の Microsoft リソースは、場所ベースの条件付きアクセス ポリシーを執行できます。

CAE によりアプリケーションのセキュリティと回復性を向上させる

Microsoft Entra の継続的アクセス評価に基づくさらに安全で回復性の高いアプリケーションの構築動画では、CAE サポートを利用してクライアント アプリケーションを構築する方法を示しています。

このプレゼンテーション動画では、以下のステップごとに、最新の認証を使用する際にアプリケーションがどのように動作するかを学習します。

  • アプリケーションが最新の認証を使用する際にどのように動作するか
  • アプリケーションが Microsoft ID にトークンを要求する
  • アプリケーションがアクセス トークンを受け取る
  • アプリケーションが JWT でAPI/承認を呼び出す
  • イントロスペクション
  • 共有シグナルとイベント
  • 重大なイベントの評価
  • 条件付きアクセス ポリシーの評価
  • 呼び出されたAPI の 継続的アクセス評価
  • クレームチャレンジ

継続的アクセス評価を使用すると、アプリケーションの承認により、アクセス トークンの有効期間とは関係なく取り消されたリソースにアクセスできます。 たとえば、アプリケーションにさらに 75 分間有効なトークンがある場合。 認証情報の侵害により、ユーザーのリスクが高い状態にある場合。 CAE はリソースへのアプリケーションのアクセスをブロックし、続行する前にユーザーに再認証を要求します。 こうして、CAE は、アプリケーションのセキュリティ強化という最も重要な目標を達成できます。

トークンの有効期間とは関係なくリソースへのアクセスを取り消すことができるため、Microsoft Entra ID はより長い有効期間のトークンを発行することができます。 CAE をサポートするアプリケーションの場合、Microsoft Entra ID は最大 28 時間有効なトークンを発行できます。 こうしたトークン有効期間の長時間化にアプリケーションの回復性を強化させる効果はありませんが、アプリケーションがトークンを要求する頻度が大幅に低くなるため、アプリケーションのコストを抑制する効果があります。

CAE は、Microsoft Entra ID からアクセス トークンを取得する際にアプリケーションで発生し得る問題に対するアプリケーションの回復性を向上させます。 可能な限り、Microsoft Entra ID は、アクセス トークンを含むトークン応答の一部として更新時間を発行します。 Microsoft 認証ライブラリ (MSAL) では、この更新時間に基づいて能動的にトークンを更新します。 更新時間は、トークン有効期限の何分の 1 かの値 (通常は1/2) に設定されています。 トークンの有効期限が切れる前に MSAL 側でアクセス トークンの更新が可能な限り、そのアプリケーションはトークン更新の問題に対しては回復性を維持します。

たとえば、アプリケーションが CAE をサポートしている場合、Microsoft Entra ID は、 Microsoft Graph を呼び出すアプリケーションを承認するための24 時間有効なトークンを発行します。 Microsoft Entra ID は、12 時間後に能動的にトークンを更新するように MSAL に指示します。 これにより、たとえMSAL がアクセス トークンの更新に失敗しても、元のアクセス トークンがまだ12 時間有効なので、アプリケーションはMicrosoft Entra ID からのトークン取得に関する諸課題についてより高い回復性を備えることになります。

アプリケーションに継続的アクセス評価を実装するには

継続アクセス評価対応 API をアプリケーションに適用するにはで説明しているように、アプリケーション自体もそれがアクセスするリソース API も CAE 対応である必要があります。 ただし、CAE 対応のリソースを使用するようにコードを準備しても、CAE 対応でない API を使用できなくなるわけではありません。 MSAL を使用していないアプリケーションでも、CAE を使用するための クレームチャレンジ、クレーム要求、およびクライアント機能 のサポートを追加することができます。

次のステップ