Azure 仮想マシンのジャストインタイム (JIT) アクセスの管理
2024 年 1 月 10 日
この技術的および教育的な記事は、セキュリティ アナリスト、IT 管理者、およびシステム エンジニアが Azure 仮想マシン (VM) のジャストインタイム (JIT) アクセスを実装および管理できるようにガイドすることを目的としています。 JIT は、Microsoft Defender for Cloud が提供する基本的なセキュリティ機能であり、不正アクセス攻撃から VM を保護し、厳密に必要な場合にのみ管理ポートへのアクセスを制限することで、ネットワークの攻撃対象領域を大幅に削減します [1]。
はじめに
クラウド環境では、仮想マシン、特に管理ポート (RDP 3389 や SSH 22 など) がインターネットに公開されている仮想マシンがブルート フォース攻撃やポート スキャンのターゲットになることがよくあります。これらのポートを開いたままにすると、不必要に大きな攻撃対象領域が作成され、侵害のリスクが高まります。 JIT Access は、セキュリティ チームが VM への受信トラフィックをデフォルトでブロックし、オンデマンドで限られた期間、特定の IP アドレスからのみ管理ポートを開くことができるようにすることで、この問題を解決します。このアプローチは、最小特権とゼロ トラストの原則に従っており、正当な場合にのみアクセスが可能な限り最短時間で許可されるようにします [2]。
この実用的なガイドでは、JIT を有効にするための前提条件、Microsoft Security Center による構成プロセス、JIT アクセスを要求および承認する方法、セキュリティ アラートとの統合、効果的な管理のためのベスト プラクティスについて説明します。読者が JIT を実装して検証し、Azure VM のセキュリティを強化し、不正アクセスの脅威から保護できるように、段階的な手順、Azure CLI コマンドの例と手順が提供されます。
Azure VM にとってジャストインタイム (JIT) アクセスが重要なのはなぜですか?
- 攻撃対象領域の削減: デフォルトで VM 管理ポートを閉じ、必要なときだけ必要な期間だけポートを公開し、攻撃者の機会を最小限に抑えます。
- 詳細なアクセス制御: どのユーザーがアクセスを要求できるか、どのポートを開くことができるか、どのくらいの期間、どの送信元 IP アドレスからアクセスできるかを指定できます。
- コンプライアンス: 重要なリソースへのアクセスを厳密に制御する必要があるコンプライアンス要件を満たすのに役立ちます。
- 可視性と監査: すべての JIT アクセス要求、承認、ポートの開閉に関する詳細なログを提供し、セキュリティの監査と調査を容易にします。
- Defender for Cloud との統合: Microsoft Defender for Cloud と完全に統合されており、セキュリティ体制管理および脅威保護機能を活用します。
- 自動化: インシデント対応や定期メンテナンス操作など、特定のシナリオでのアクセスを自動化して承認できます。
前提条件
Azure Virtual Machines に JIT アクセスを実装するには、次のものが必要です。
- アクティブな Azure サブスクリプション: リソースを作成および管理するための Azure サブスクリプション。
- 管理アクセス: Azure サブスクリプション、または VM が配置されているリソース グループ内の「所有者」、「共同作成者」、または「セキュリティ管理者」のロールを持つアカウント。
- Microsoft Defender for Cloud Standard (または Defender for Servers): JIT は Microsoft Defender for Cloud のプレミアム機能であり、VM を含むサブスクリプションで Defender for Servers プランを有効にする必要があります [3]。
- 既存の Azure 仮想マシン: JIT で保護する Azure VM。このチュートリアルでは、VM がすでにデプロイされていることを前提とします。
- Azure CLI または Azure PowerShell: Azure と対話するためのコマンド ライン ツールをインストールおよび構成しました。
ステップバイステップ: JIT アクセスの有効化と管理
Azure VM の JIT を構成しましょう。
1. Defender for Servers プランの有効化
前提条件で述べたように、JIT では Defender for Servers プランがアクティブ化されている必要があります。
- ブラウザーを開き、Azure portal:
https://portal.azure.comに移動します。 - 必要な権限を持つアカウントでログインします。
- 上部の検索フィールドに「Defender for Cloud」と入力し、結果からそれを選択します。
- Defender for Cloud ダッシュボードで、**環境設定を選択しますおよび ** 左側のナビゲーション ウィンドウにあります。
- VM を含む Azure サブスクリプションを選択します。
- [Defender プラン] ページで、Defender for Servers プランが「アクティブ化」されていることを確認します。有効になっていない場合は、「有効にする」をクリックし、指示に従って有効にしてください。
2. VM の JIT アクセスの有効化
JIT は、個々の VM に対して有効にすることも、複数の VM に対して一度に有効にすることもできます。
- Defender for Cloud ダッシュボードの左側のナビゲーション ウィンドウで Workload Protection を選択します。
- 「高度な保護」セクションまで下にスクロールし、Just-in-Time VM Access をクリックします。
-
「仮想マシン」タブの下に、「構成済み」、「推奨」、「未構成」の 3 つのサブタブが表示されます。
- 「推奨」: Security Center が JIT による保護を推奨する VM をリストします。
- 「未構成」: JIT 保護されていないが対象となる VM をリストします。
-
「推奨」タブまたは「未構成」タブで、JIT を有効にする VM を選択します。
-
[VM で JIT を有効にする] をクリックします。
-
JIT ポリシーの構成: 選択した VM ごとに、次のオプションを構成できます。
- ポート: 保護される管理ポート (例: 22、3389、5985、5986)。カスタムポートを追加できます。
- プロトコル: 各ポートのプロトコル (TCP、UDP など)。
- 最大リクエスト時間: リクエストが承認された後にドアを開けることができる最大時間 (時間単位)。デフォルトは 3 時間です。
- 承認された送信元 IP アドレス: オプションですが、強く推奨されます。特定の IP または IP ブロックへのアクセスを制限します。デフォルトでは、これは「Any」 (「*」) です。これは、任意の IP がアクセスを要求できることを意味します。
-
[保存] をクリックして、選択した VM に JIT ポリシーを適用します。
3. VM へのジャストインタイム アクセスのリクエスト
ユーザーまたは管理者が JIT で保護された VM にアクセスする必要がある場合は、アクセスを要求する必要があります。
- Security Center ダッシュボードで、ワークロード保護 > ジャストインタイム VM アクセス を選択します。
- 「仮想マシン」タブで、アクセスする VM を選択します (「構成済み」タブにあるはずです)。
-
[アクセスをリクエスト] をクリックします。
-
「アクセスのリクエスト」ウィンドウで、次のように指定します。
- ドア: 開く必要があるドア。
- ソース IP アドレス: 接続元のパブリック IP アドレス。 「マイ IP アドレス」 (デバイスの現在のパブリック IP) または「カスタム」を選択して、IP または CIDR を指定できます。
- 期間: アクセスの期間 (JIT ポリシーで構成された「最大要求時間」によって制限されます)。
- 正当性: アクセス要求の理由の簡単な説明。
-
[ポートを開く] をクリックします。
- 注意: JIT ポリシーに承認が必要な場合、リクエストはポートが開かれる前に構成された承認者に送信されます。
4. JIT アクセス要求の承認 (構成されている場合)
承認が必要なシナリオ (Azure Logic Apps または Azure Functions 経由) では、プロセスが異なる場合があります。デフォルトでは、ワークフロー自動化が設定されていない限り、JIT は要求に応じてすぐにポートを開きます。
- ヒント: 承認ワークフローの場合、Azure Logic Apps を使用して Azure 監査ログまたは Azure Security Center イベントを監視し、承認プロセスをトリガーできます (手動承認のためにセキュリティ グループに電子メールを送信するなど)。
5. JIT アクセスステータスの確認
アクセスをリクエストした後、ポータルでステータスを確認できます。
- Security Center ダッシュボードで、ワークロード保護 > ジャストインタイム VM アクセス を選択します。
- 「仮想マシン」タブで、アクセスを要求した VM に、アクセスが「アクティブ」または「保留中」(承認された場合) であることを示すステータスが表示されます。
- 「残り時間」列には、残りのアクセス時間が表示されます。
6. JIT アクセスの無効化 (オプション)
VM の JIT を無効にする必要がある場合は、次の手順に従います。
- Security Center ダッシュボードで、ワークロード保護 > ジャストインタイム VM アクセス を選択します。
- 「仮想マシン」タブで、構成された VM を選択します。
- [VM で JIT を無効にする] をクリックします。
検証とテスト
JIT アクセスの有効性を検証することは、VM が確実に保護され、必要なときにアクセスが許可されるようにするために重要です。
1. D ブロックのテストおよび標準アクセス
- JIT アクセスを要求せずに、JIT で保護された VM から管理ポート (RDP 3389 や SSH 22 など) へのアクセスを試みます。
- 期待される結果: デフォルトではポートが閉じられているため、接続は拒否されるかタイムアウトになります。
2. 承認された JIT アクセスのテスト
- パブリック IP アドレスを使用して、目的の VM とポートへの JIT アクセスを要求します。
-
承認後 (承認が構成されていない場合はすぐに開きます)、同じパブリック IP アドレスから RDP または SSH 経由で VM へのアクセスを試行します。
- 期待される結果: 接続は成功するはずです。
-
JIT アクセス時間が経過するまで待ちます (または手動でアクセスをキャンセルします)。
- VM に再度アクセスしてみます。
- 期待される結果: 接続は再び拒否されるはずです。
3. 監査ログの確認
すべての JIT 操作は Azure 監査ログに記録され、誰が、いつ、どこから何を要求したかの完全な証跡が得られます。
- Azure portal で、リソース グループまたは特定の VM に移動します。
- 左側のナビゲーション ペインで、アクティビティ ログを選択します。
- 「Just-in-Time VM Access」または「Microsoft.Security/locations/jitNetworkAccessPolicies」に関連するイベントをフィルターします。
- 「JIT ネットワーク アクセス ポリシーが作成されました」、「JIT ネットワーク アクセス ポリシーが要求されました」、「JIT ネットワーク アクセス ポリシーが承認されました」 (該当する場合)、「JIT ネットワーク アクセス ポリシーが閉じられました」などのイベントが表示されます。
セキュリティのヒントとベスト プラクティス
- 最小特権の原則: 可能な限り最小の特権、つまり必要な正確なポートを、可能な限り短時間、最も制限されたソース IP から付与するように JIT ポリシーを構成します。
- 送信元 IP アドレスを制限する: 可能な限り、JIT ポリシーおよびアクセス要求に送信元 IP アドレスを指定します。ソース IP に「Any」 (「*」) を使用することは避けてください。
- 短い期間: 最大リクエスト時間を合理的な最短の時間 (例: 1 ~ 2 時間) に設定し、ユーザーにアクセスの必要性を再評価させるようにします。
- 監視とアラート: JIT アクセス要求、特に重要なポートまたは予期しない IP に対するアラートを Azure Monitor で構成します。これらのアラートを SIEM (Microsoft Sentinel など) と統合します。
- ワークフローの自動化: 厳格な承認要件がある環境の場合は、Azure Logic Apps または Azure Functions を使用して、JIT リクエストのカスタム承認ワークフローを作成します。
- 文書化とトレーニング: JIT アクセス ポリシーを明確に文書化し、アクセスをリクエストする方法とセキュリティのベスト プラクティスに従うことの重要性についてユーザーをトレーニングします。
- 定期的なレビュー: JIT ポリシーとアクセス ログを定期的にレビューして、関連性と有効性が維持されていることを確認します。
- NSG および Azure Firewall との組み合わせ: JIT は、ネットワーク セキュリティ グループ (NSG) や Azure Firewall などのネットワーク セキュリティの他の層を補完します。多層防御のためにこれらを組み合わせて使用します。
一般的なトラブルシューティング
- VM の JIT を有効にできません: VM サブスクリプションに対して Defender for Servers プランが有効になっていることを確認します。 VM が無効な状態でないこと、または競合する設定がないことを確認してください。
- JIT アクセスを要求できません: アクセスを要求するために必要な権限 (「コラボレーター」または「仮想マシン ジャストインタイム アクセス オペレーター」など) があることを確認してください。 VM が JIT 用に構成されており、ポートがポリシーで定義されていることを確認してください。
- JIT リクエスト後に接続が拒否されました: JIT リクエストで指定したソース IP アドレスがデバイスのパブリック IP と一致することを確認してください。期間が経過していないことを確認します。 JIT ポートを開いた後にトラフィックをブロックする追加の NSG またはファイアウォール ルールがないことを確認します。
- 間違ったポートが開いています: VM に構成された JIT ポリシーを調べて、正しいポートがリストされていることを確認します。 Azure CLI を使用している場合は、ポート パラメーターを確認してください。
- JIT アクセス セキュリティ アラート: JIT 関連のセキュリティ アラートを調査します。これは、不正なアクセスの試みまたは不適切な構成を示している可能性があります。
- VM パフォーマンスに影響あり: JIT 自体は VM パフォーマンスに影響を与えません。問題がある場合は、VM またはネットワークの他のコンポーネントを調査してください。
結論
○Azure Virtual Machines のジャストインタイム (JIT) アクセス管理は、クラウド リソースを不正アクセスの脅威から保護するために不可欠なセキュリティ戦略です。 JIT は、デフォルトで管理ポートを閉じ、必要に応じてのみ開くことにより、攻撃対象領域を大幅に減らし、セキュリティ体制を強化し、コンプライアンス要件を満たすのに役立ちます。 JIT を効果的に実装し、セキュリティのベスト プラクティスおよび継続的な監視と組み合わせることで、VM の安全性が確保され、正規のユーザーおよび目的のみがアクセスできることが保証されます。この実践的なガイドを使用すると、セキュリティ専門家は JIT アクセスの構成、検証、管理を行うための十分な知識を身につけ、Azure 仮想マシンの回復力と保護を強化できます。
参考文献:
[1] Microsoft Learn。 VM への JIT (ジャストインタイム) アクセスとは何ですか?。入手可能場所: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-overview [2] Microsoft Learn。 VM でのジャストインタイム アクセスを有効にします。入手可能場所: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-usage [3] Microsoft Learn。 Microsoft Defender for Cloud を使用してサーバー セキュリティを管理。入手可能場所: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/tutorial-enable-servers-plan [4] Microsoft Learn。 PowerShell を使用して VM への JIT (ジャストインタイム) アクセスを管理します。入手可能場所: https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-powershell