🛡️ もうポートの「開けっぱなし」は卒業!Azure JIT(Just-In-Time)でインフラの裏口を完全にロックする
インフラエンジニアや開発者の皆さん、作業の利便性のために、仮想マシン(VM)の管理ポート(Windows の RDP 3389 や Linux の SSH 22)を「インターネット全体(Any)」に向けて常時開放していませんか?
これはサイバー攻撃者から見れば、「どうぞお入りください」と看板を出して鍵を開けっ放しにしているのと同じ状態です。実際、クラウド上の不審なスキャンやブルートフォース攻撃(総当たり攻撃)のほとんどは、これらの常時開放されたポートを狙っています。
「作業するときだけ安全にポートを開けて、終わったら自動で閉じてくれる仕組みがあればいいのに…」
それを実現するのが、今回ご紹介する Microsoft Defender for Cloud の「JIT(Just-In-Time)仮想マシンアクセス」 機能です。
1. JIT(Just-In-Time)とは?その役割とメリット
JIT(ジャストインタイム) とは、文字通り「必要なときに、必要な分だけ」アクセスを許可する動的なファイアウォール管理メカニズムです。
JIT の主な役割:
-
攻撃面の最小化(普段は完全にブロック)
JIT を有効にすると、ネットワークセキュリティグループ(NSG)に優先度の高い「原則拒否(Deny All)」ルールが自動配置されます。これにより、攻撃者のスキャンツールからはポートが完全に閉じているように見えます。 -
申請ベースの「一時的な」通行許可
正当な管理者がリモート接続したい場合、Azure Portal から「アクセス申請(Request Access)」を行います。承認されると、申請者の現在のグローバル IP アドレスだけを対象とした「一時的な許可(Allow)」ルールが NSG に動的に追加されます。 -
自動クローズで消し忘れ防止
申請時には「有効時間(例:3時間)」を設定します。時間が経過すると、Defender for Cloud が自動的に Allow ルールを削除し、元の強固なブロック状態に戻します。「作業後にポートを閉じ忘れて帰宅してしまった…」といううっかりミスによるセキュリティ事故を根本から防げます。
2. JIT 仮想マシンアクセスの具体的な設定方法
Azure 上で JIT を有効化し、運用を開始する手順は以下の通りです。
前提条件
JIT は Microsoft Defender for Cloud の先進的なセキュリティ機能です。対象のサブスクリプションで Defender for Servers Plan 2 が有効になっていることを確認してください。
設定ステップ
-
JIT のメニューを開く: Azure Portal でのナビゲーション.
Azure Portal の検索窓に「Microsoft Defender for Cloud」と入力して移動します。左側メニューの「ワークロード保護 (Workload protections)」を選択し、一覧から「Just-In-Time 仮想マシン アクセス」をクリックします。 -
仮想マシンの選択: 対象 VM の選定.
画面上部の「構成されていません (Not configured)」タブに切り替えます。JIT で保護したい対象の仮想マシンにチェックを入れ、上部の「VM で JIT を有効にする (Enable JIT on VMs)」をクリックします。 -
ポートとルールの設定: セキュリティポリシーの定義.
システムが推奨する標準ポート(22, 3389 など)がリストアップされます。各ポートの右側にある編集ボタンから、以下の運用ポリシーを固めます。 -
ポリシーの保存: 設定の保存と反映.
設定に問題がなければ、画面下の「保存 (Save)」をクリックします。これでバックグラウンドで NSG に常時ブロック用のルールが書き込まれ、JIT の準備が完了します。
3. よくある疑問:JIT の申請は「誰でも」通ってしまうのか?
NSG のルール履歴を見ていると、MicrosoftDefenderForCloud_JIT_... というルールが何度も追加・削除されているのを目にすることがあります。「これって、誰かが申請ボタンを押せば誰でも Allow になってしまうのでは?」と不安になる方もいるかもしれません。
結論から言うと、絶対に誰でも通るわけではありません。
JIT の申請を成功させるには、Azure の厳格な RBAC(ロールベースのアクセス制御) の権限を満たしている必要があります。具体的には、以下の 2つの鍵(権限) を持っているアカウントのみが申請ボタンをアクティブにできます。
🔑 1つ目の鍵:仮想マシン(VM)への書き込み権限
申請者は、対象 VM のネットワークや計算リソースを変更できる権限が必要です。
Microsoft.Compute/virtualMachines/write
🔑 2つ目の鍵:JIT ポリシーの開始権限
JIT アクションをトリガーするための専用のアクション権限が必要です。
Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
💡 具体的にどの「組み込みロール」なら申請できる?
- 既定で申請可能なロール:仮想マシンの 所有者(Owner) または 共同作成者(Contributor)。
- 最小権限での運用:運用メンバーに高い VM 権限を与えたくない場合は、ネットワーク共同作成者(Network Contributor) や セキュリティ管理者(Security Admin) などを適切に割り当てることで、JIT の申請権限のみを付与することができます。
⚠️ 権限のないアカウントや外部の攻撃者の場合:
適切なロールを持たないユーザーが Azure Portal や API からアクセスを要求しても、Azure IAM(Entra ID)の認証フェーズで即座に拒否(Access Denied)されます。そのため、外部から勝手に NSG ルールを書き換えられるリスクはありません。
✍️ まとめ
NSG ログで JIT 関連のルールが頻繁に動いているのは、社内の正当な管理者が、ポリシーに則って安全にメンテナンスを行っている証拠(正常な動作) です。
手動でファイアウォールを開け閉めする運用は、手間に加えてリスクも伴います。JIT による「自動化された最小権限アクセス」を導入し、セキュアでスマートなクラウド運用を実現しましょう!
(この記事が役に立った方は、ぜひ社内の技術共有やブックマークをお願いします!不明な点があればコメント欄までどうぞ👋)