Azure Active Directory アプリケーション プロキシを使用したアプリへのリモート アクセス時のセキュリティに関する注意事項

この記事では、Azure Active Directory アプリケーション プロキシを使用する際にユーザーとアプリケーションを安全に保つために動作するコンポーネントについて説明します。

次の図は、Azure AD によってお客様のオンプレミスのアプリケーションへの安全なリモート アクセスが実現されるしくみを示しています。

Azure AD アプリケーション プロキシ経由のセキュリティで保護されたリモート アクセスの図

セキュリティ上の利点

Azure AD アプリケーション プロキシには、次のセキュリティ上の利点があります。

認証済みのアクセス

Azure Active Directory の事前認証を使用することを選択すれば、認証された接続のみがネットワークにアクセスできます。

Azure AD アプリケーション プロキシでは、すべての認証に Azure AD セキュリティ トークン サービス (STS) を使用しています。 事前認証はその性質上、多数の匿名の攻撃をブロックします。これは、バックエンド アプリケーションにアクセスできるのが認証された ID のみのためです。

事前認証方法としてパススルーを選択した場合、この利点を得ることはできません。

条件付きアクセス

ネットワークへの接続が確立される前に、多数のポリシー制御を適用できます。

条件付きアクセスを使用すると、ユーザーがアプリケーションにアクセスするときの制限を定義できます。 場所、認証の強度、およびユーザーのリスク プロファイルに基づいてサインインを制限するポリシーを作成できます。

条件付きアクセスを使用して Multi-Factor Authentication のポリシーを構成することで、ユーザー認証に別のセキュリティ層を追加することもできます。 さらに、Azure AD 条件付きアクセスを利用して Microsoft Defender for Cloud Apps にお使いのアプリケーションをルーティングし、アクセス ポリシーおよびセッション ポリシーによって、リアルタイムの監視と制御を提供することも可能です。

トラフィックの終了

すべてのトラフィックがクラウドで終了します。

Azure AD アプリケーション プロキシはリバース プロキシであるため、バックエンド アプリケーションへのトラフィックはすべて、このサービスで終了します。 バックエンド サーバーでのみ、セッションの再確立が可能です。つまり、HTTP トラフィックを送信するためにバックエンド サーバーが公開されることはありません。 この構成は、標的型攻撃に対する保護が強化されることを意味します。

すべてのアクセスが外向き

企業ネットワークへの受信接続を開く必要がありません。

アプリケーション プロキシ コネクタは、Azure AD アプリケーション プロキシ サービスへの送信接続のみを使用します。つまり、受信接続用のファイアウォール ポートを開放する必要はありません。 従来のプロキシでは、境界ネットワーク ("DMZ"、"非武装地帯"、"スクリーン サブネット" とも呼ばれます) が必要であり、認証されていない接続へのアクセスをネットワーク境界で許可する必要がありました。 このシナリオでは、トラフィックの分析と環境の保護のために、Web アプリケーション ファイアウォール製品への投資が必要でした。 アプリケーション プロキシでは、すべての接続が送信用で、セキュリティで保護されたチャネルを介しているため、境界ネットワークは不要です。

コネクタの詳細については、「Understand Azure AD Application Proxy connectors (Azure AD アプリケーション プロキシ コネクタについて)」を参照してください。

クラウド規模の分析と機械学習

最先端のセキュリティ保護を得ることができます。

アプリケーション プロキシは Azure Active Directory の一部であるため、Azure AD Identity Protection と、Microsoft の Security Response Center やデジタル犯罪対策部門からのデータを活用できます。 これらの組織は ID が攻撃されたアカウントを被害の発生前に特定し、危険性の高いサインインが実行されないように保護します。どのサインインの試みが高リスクであるかを判断するために、さまざまな要素が考慮されます。 要素としては、感染したデバイスのフラグ、ネットワークの匿名化、特殊な場所や可能性の低い場所などが含まれます。

これらのレポートとイベントの多くは、お客様のセキュリティ情報およびイベント管理 (SIEM) システムとの統合を可能にする API を通じて既に使用可能です。

サービスとしてのリモート アクセス

オンプレミス サーバーの保守やパッチの適用について心配する必要がありません。

パッチの適用されていないソフトウェアは、依然として多数の攻撃の的となっています。 Azure AD アプリケーション プロキシは Microsoft によるインターネット規模のサービスであるため、常に最新のセキュリティ パッチとアップグレードを取得できます。

Azure AD アプリケーション プロキシによって発行されたアプリケーションのセキュリティを強化するために、Web クローラー ロボットによるアプリケーションのインデックス作成およびアーカイブ操作はブロックされます。 Web クローラー ロボットが発行されたアプリのロボット設定を取得しようとするたびに、アプリケーション プロキシは、User-agent: * Disallow: / が含まれる robots.txt ファイルで応答します。

Azure DDoS Protection サービス

アプリケーション プロキシを使用して公開されたアプリケーションは、分散型サービス拒否 (DDoS) 攻撃から保護されます。 このような保護は、Microsoft によって管理され、Microsoft のすべてのデータセンターで自動的に有効になります。 Azure DDoS 保護サービスによって、トラフィックの常時監視と一般的なネットワーク レベル攻撃のリアルタイム軽減が提供されます。

しくみ

Azure AD アプリケーション プロキシは、以下の 2 つで構成されています。

  • クラウドベースのサービス: このサービスは Azure 内で実行され、外部のクライアント/ユーザーの接続はこの場所で行われます。
  • オンプレミスのコネクタ: オンプレミスのコンポーネント。コネクタでは、Azure AD アプリケーション プロキシ サービスからの要求をリッスンし、内部アプリケーションへの接続を処理します。

コネクタとアプリケーション プロキシ サービスの間でフローが確立されるのは以下の場合です。

  • コネクタの最初の設定時。
  • コネクタは、アプリケーション プロキシ サービスから構成情報を取得します。
  • 公開されたアプリケーションにユーザーがアクセスする。

注意

すべての通信は TLS 経由で発生し、常にコネクタで生成されて、アプリケーション プロキシ サービスに送られます。 このサービスは送信専用です。

コネクタはクライアント証明書を使用して、ほぼすべての呼び出しに対してアプリケーション プロキシ サービスを認証します。 このプロセスの唯一の例外は、クライアント証明書が確立される最初のセットアップ手順です。

コネクタのインストール

コネクタの初回セットアップ時に、次のフロー イベントが発生します。

  1. サービスへのコネクタの登録は、コネクタのインストールの一環として発生します。 ユーザーは、Azure AD 管理者の資格情報の入力を求められます。  この認証から取得されたトークンが、Azure AD アプリケーション プロキシ サービスに提示されます。
  2. アプリケーション プロキシ サービスがトークンを評価します。 ユーザーがテナントの全体管理者であるかどうかを確認します。  ユーザーが管理者でない場合、このプロセスは終了します。
  3. コネクタは、クライアント証明書要求を生成し、トークンと共にアプリケーション プロキシ サービスに渡します。 次に、サービスがトークンを検証し、クライアント証明書要求に署名します。
  4. コネクタはアプリケーション プロキシ サービスとのその後の通信の際に、このクライアント証明書を使用します。
  5. コネクタはクライアント証明書を使用して、サービスからのシステム構成データの初回の収集を実行します。これで要求を受け入れる準備が完了します。

構成の設定の更新

アプリケーション プロキシ サービスが構成の設定を更新するたびに、次のフロー イベントが発生します。

  1. コネクタはクライアント証明書を使用して、アプリケーション プロキシ サービス内の構成のエンドポイントに接続します。
  2. クライアント証明書が検証されると、アプリケーション プロキシ サービスはコネクタに構成データ (そのコネクタが含まれている必要があるコネクタ グループなど) を返します。
  3. 現在の証明書が 180 日を経過している場合は、コネクタが新しい証明書要求を生成します。このため、180 日ごとに効率よくクライアント証明書が更新されます。

発行済みアプリケーションへのアクセス

ユーザーが公開されたアプリケーションにアクセスすると、アプリケーション プロキシ サービスとアプリケーション プロキシ コネクタの間で次のイベントが発生します。

  1. サービスは、アプリケーションのユーザーを認証します。
  2. サービスがコネクタのキューに要求を配置する
  3. コネクタがキューの要求を処理する
  4. コネクタが応答のために待機する
  5. サービスがユーザーにデータをストリーミングする

これらの各手順の詳細について、この後説明します。

1.サービスは、アプリケーションのユーザーを認証します。

事前認証方法としてパススルーを使用するようにアプリを構成した場合は、このセクションの手順はスキップされます。

Azure AD を使用して事前認証を使用するようにアプリを構成した場合、ユーザーは認証のために Azure AD STS にリダイレクトされ、次の手順が発生します。

  1. アプリケーション プロキシが、特定のアプリケーションの条件付きアクセス ポリシーの要件を確認します。 この手順では、ユーザーがアプリケーションに割り当てられていることを確認します。 2 段階検証が必要な場合は、認証シーケンスでユーザーに第 2 認証方式が要求されます。

  2. すべてのチェックに合格すると、Azure AD STS はアプリケーション向けに署名されたトークンを発行し、ユーザーをアプリケーション プロキシ サービスにリダイレクトします。

  3. アプリケーション プロキシは、トークンが正しいアプリケーションに発行されたことを確認します。 そのトークンが Azure AD によって署名されたものであるかどうか、まだ有効期間内であるかどうかなど、他の確認も行われます。

  4. アプリケーション プロキシは、暗号化された認証 Cookie を設定して、アプリケーションへの認証が実行されたことを示します。 この Cookie には、Azure AD と他のデータ (認証の基になるユーザー名など) からのトークンを基にした有効期限のタイムスタンプが含まれています。 この Cookie は、アプリケーション プロキシ サービスのみで認識される秘密キーを使用して暗号化されます。

  5. アプリケーション プロキシは、最初に要求された URL にユーザーをリダイレクトします。

事前認証の手順の一部が失敗した場合は、ユーザーの要求が拒否され、問題の原因を示すメッセージが表示されます。

2.サービスがコネクタのキューに要求を配置する

コネクタは、アプリケーション プロキシ サービスへの送信接続を開いたままにします。 要求を受信すると、サービスは開いている接続のいずれかでキューに要求を配置し、コネクタが処理できるようにします。

この要求には、アプリケーションからのアイテム (要求ヘッダー、暗号化された Cookie のデータ、要求を作成したユーザー、要求 ID など) が含まれています。 要求と共に暗号化された cookie のデータが送信されますが、認証 cookie 自体は暗号化されていません。

3.コネクタがキューの要求を処理する

アプリケーション プロキシは、要求に基づいて次のいずれかのアクションを実行します。

  • 要求が単純な操作 (本文にデータがない RESTful API GET 要求など) の場合、コネクタでターゲットの内部リソースへの接続が確立された後、応答のために待機します。

  • 関連付けられたデータが本文に含まれている要求 (RESTful API POST 操作など) の場合、コネクタでクライアント証明書を使用して、アプリケーション プロキシのインスタンスへの送信接続が確立されます。 この接続は、データを要求し、内部リソースへの接続を開くために確立されます。 アプリケーション プロキシ サービスは、コネクタからの要求を受信すると、ユーザーからのコンテンツの受け入れを開始し、データをコネクタに転送します。 そしてコネクタが内部リソースにデータを転送します。

4.コネクタが応答のために待機する

バックエンドへのすべてのコンテンツの要求および送信が完了すると、コネクタは応答を待機します。

コネクタは、応答を受け取ると、アプリケーション プロキシ サービスへの送信接続を確立して、ヘッダーの情報を返し、返されるデータのストリーミングを開始します。

5.サービスがユーザーにデータをストリーミングする

アプリケーションの何らかの処理がここで発生する場合があります。 アプリケーションのヘッダーまたは URL を変換するようにアプリケーション プロキシを構成した場合、その処理は、この手順の中で必要に応じて実行されます。

次のステップ

Azure AD アプリケーション プロキシを使用する場合のネットワーク トポロジに関する注意事項

Azure AD アプリケーション プロキシ コネクタについて