azure-bastion-jit について
azure-bastion-jit は、Azure IaaS VM と VMSS の管理アクセスを設計するスキルです。Azure Bastion と Defender for Cloud の JIT アクセスを組み合わせ、VM のパブリック公開や管理ポートの常時開放を減らします。
主な機能
- 01Bastion SKU の選定
- 02時間制限付き JIT ネットワークアクセスの設計
- 03ポリシーによる VM パブリック IP の削除
- 04Entra サインインと RBAC の組み合わせ
- 05セッション記録と監視の設定
活用シーン
- 01VM 管理をプライベート接続に移行
- 02RDP または SSH の一時アクセス設定
- 03Bastion 管理者ロールの設計
- 04Bastion と JIT のアクティビティ監視
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vinayaklatthe/ microsoft-security-skills --skill azure-bastion-jitインストール後、Claude Code で/azure-bastion-jitを入力して読み込まれたか確認します。
詳細
Azure Bastion + Just-In-Time VM Access
Azure Bastion(マネージド型のブラウザー/ネイティブクライアント向け踏み台サービス)と Defender for Cloud just-in-time (JIT) VM access(管理ポート用の時間制限付き NSG 許可ルール)を組み合わせることで、 Azure VM が侵害される最も一般的な 2 つの経路、すなわちインターネットに公開された RDP/SSH と 常時開放された管理ポートをなくせます。
使用する場面
Azure IaaS VM および VMSS への管理アクセスを設計または強化する場合に使用します。 SKU の選定、JIT ポリシー、パブリック IP の排除、運用ワークフローにこのスキルを使用してください。
このスキルは使用しないでください。ハイブリッド VPN/SD-WAN の設計、VPN を置き換える ZTNA
(entra-global-secure-access)、または AKS のみを対象とするアクセスには使用しないでください。
Bastion SKU — 必要な機能に応じて選択
| SKU | 機能 |
|---|---|
| Developer | 無料、単一 VM・単一 VNet へのアドホックなブラウザー専用 RDP/SSH、スケール不可、共有可能なリンクなし |
| Basic | ポータル経由の RDP/SSH、プライベート IP のみの VM に対応、単一インスタンスのスケール |
| Standard | + ネイティブクライアント、共有可能なリンク、IP ベースの接続、Kerberos、Linux ファイルコピー、カスタムポート、最大 50 インスタンスまでスケール |
| Premium | + セッション記録、プライベートのみのデプロイ、追加の管理機能 |
目安: ほとんどのエンタープライズ環境では Standard を選択します。セッション記録または プライベートのみのデプロイが必要な場合(規制対象業界)は Premium を選択します。Developer は 本番以外の環境や個人用サンドボックス向けです。
アプローチ
-
アーキテクチャ。 ハブ VNet ごとに Bastion を 1 つ配置します(トラフィックの分離が必要な場合は、スポークごとに配置します)。必要なサブネットは
AzureBastionSubnetで、最小サイズは /26 です。サブネット上の NSG には、ドキュメントに記載された許可ルールを設定します。ドキュメントに記載された許可例外を含めずに「インターネットからのすべての通信を拒否」と設定すると、Bastion が機能しなくなります。 -
VM のパブリック IP をなくします。 Azure Policy の パブリック IP アドレスを仮想マシンに関連付けない を、本番環境のスコープで Deny に設定します。新しい VM はプライベート専用とし、管理者アクセスには Bastion と JIT を使用します。
-
Bastion と VM での Entra ログイン。
Microsoft Entra login for Windows/Linux VM拡張機能と組み合わせると、RDP/SSH の認証に Entra 資格情報を使用できます。VM へのサインイン自体に Conditional Access(MFA、デバイスのコンプライアンス、名前付きの場所)が適用されます。これは多くの「Bastion のみ」のデプロイで見落とされる要素です。 -
RDP/SSH が許可されているすべての VM で JIT を構成します。
- 既定のポート:RDP 3389、SSH 22、WinRM 5985/5986。
- 要求の最大時間:3 時間。
- ソース:要求者の IP(または要求がそこから届くため、Bastion サブネット)。
- 承認:RBAC による暗黙の承認、または tier-0 VM に手動承認の手順を追加します。
-
Bastion 接続での RBAC。 Bastion への接続は、VM の RBAC と同じではありません。必要なロールは次のとおりです。
- Bastion、VM、その NIC、および VNet に対する
Reader。 - Entra ベースの VM サインインには、
Virtual Machine User Login(Linux)/Virtual Machine Administrator Login。 - JIT 要求:
Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action。 過剰な権限付与を避けるため、ペルソナごとのカスタムロールに組み込みます。
- Bastion、VM、その NIC、および VNet に対する
-
ネイティブクライアント、IP ベース接続、共有可能なリンク(Standard 以上)。
- ネイティブクライアント(
az network bastion rdp/ssh):管理者はローカルの mstsc/SSH ツールを使用でき、ブラウザータブよりも優れた UX が得られます。VM サインインには引き続き CA が適用されます。 - IP ベース接続:ExpressRoute/VPN 経由で、Bastion からピア接続されたオンプレミス VM に接続します。
- 共有可能なリンク:緊急アクセスのため、請負業者向けに有効期限付き URL を発行します。明示的に必要でない限り無効にし、使用状況を監査します。
- ネイティブクライアント(
-
セッション記録(Premium)。管理者セッションの動画を Log Analytics ワークスペース/Storage に記録します。一部の規制対象業界では必須です。保持期間とアクセス制御を確認してください。
-
JIT 要求のワークフロー。 管理者向けに次の手順を文書化します。
- Defender for Cloud → JIT VM access → Request access を開き、ポートと時間枠を指定します。
- 時間枠内に Bastion 経由で接続します。
- NSG ルールは期限切れ時に自動で元に戻ります。
-
監視。 Bastion の診断ログ(BastionAuditLogs)と JIT のアクティビティログ イベントを Sentinel にストリーミングします。営業時間外や予期しない IP からの要求、1 つのプリンシパルによる短時間の連続した VM アクセスを検出します。
ガードレール
- AzureBastionSubnet にすべての通信を拒否する NSG を設定しないでください。 サービスの動作には、特定のサービス タグ/ポートを許可する必要があり、ドキュメントに記載されたルールが必須です。
- JIT が変更するのは NSG ルールであり、Azure Firewall/NVA のルールではありません。 管理トラフィックがファイアウォールを通る場合、JIT だけでは通信を許可できません。ファイアウォールポリシーを追加するか、管理トラフィックを Bastion 経由のみにします。
- Bastion だけでは Conditional Access になりません。 VM で Entra ログインを有効にしなければ、パブリックへの公開はなくなっても、盗まれた VM の資格情報は引き続き使用できます。両方を組み合わせます。
- 共有可能なリンクは、Entra VM ログインと組み合わせない限り、リンクを発行したユーザーの MFA を回避します。 機密性の高い VM では使用しないでください。
- Premium のセッション記録には、大量のストレージが必要です。 保持期間とコストを計画してください。
- 「利便性のため」にすべてのスポーク VNet に Bastion をデプロイしないでください。 通常は、ピア接続を設定したハブに 1 つ配置するのが適切です。インスタンスごとのコストが積み上がります。
- 共有 NAT IP から JIT 要求を行うと、時間枠中、その NAT 配下のすべてのユーザーにポートが開放されます。 名前付きの場所と CA を組み合わせてください。
- VM にパブリック IP を設定し、バックアップとして Bastion のピア接続も使用するのは、このモデルを損ないます。どちらか一方の経路を選択してください。
よくあるアンチパターン
- 「緊急時用として、踏み台ホストとパブリック IP を VM に残しておく」 — 緊急時対応は手順であり、監視されていない RDP ポートを開放しておくことではありません。
- 「JIT の要求時間を 8 時間、接続元をすべてに設定する」 — インターネットから営業時間中ずっとポートを開放するのと同じです。
- 「Entra VM ログインを使わない Bastion」 — ローカル管理者パスワードが侵害されれば、依然として致命的です。
- 「共有可能なリンクをメールで共有し、無期限に使い続ける」 — 永続的なバックドアになります。期限を設け、監査してください。
- 「誰でも読み取れるワークスペースにすべてのセッションを記録する」 — 記録には、特権操作や認証情報が含まれます。
- 「開発 VM ごとに Bastion を設置する」 — 非経済的で、管理対象も増えます。ハブごとに 1 つにしてください。
- 「Sentinel/ログとの連携を省略する」 — Bastion セッションを SOC から確認できなくなります。
- 「AKS API サーバーへのアクセスに Bastion を使う」 — 用途に合わないツールです。プライベートクラスターと GSA Private Access、または踏み台ホストと kube-config を使用してください。
プロンプトの例
Design Bastion + JIT for a 3-hub multi-region landing zone with a 2,000-VM estate.Migrate from a self-managed Windows jump host to Bastion + Entra VM login + JIT.Eliminate public IP on Linux VMs via Azure Policy and roll out private-only access.Configure session recording on Bastion Premium with 1-year retention to Storage.Build a custom RBAC role for "VM Operator via Bastion" combining Bastion connect + Entra login + JIT request only.Sentinel detections: JIT request out-of-hours, rapid sequential VM access by one principal, shareable link creation.Compare Bastion shareable link vs Entra Private Access for occasional contractor access.
Microsoft Learn
- Bastion の概要:https://learn.microsoft.com/azure/bastion/bastion-overview
- SKU と機能:https://learn.microsoft.com/azure/bastion/configuration-settings
- Bastion サブネットの NSG 要件:https://learn.microsoft.com/azure/bastion/bastion-nsg
- ネイティブクライアント接続:https://learn.microsoft.com/azure/bastion/connect-native-client-windows
- 共有可能なリンク:https://learn.microsoft.com/azure/bastion/shareable-link
- セッション記録(Premium):https://learn.microsoft.com/azure/bastion/session-recording
- Just-in-time VM アクセス:https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview
- Linux VM の Entra ログイン:https://learn.microsoft.com/entra/identity/devices/howto-vm-sign-in-azure-ad-linux
- Windows VM の Entra ログイン:https://learn.microsoft.com/entra/identity/devices/howto-vm-sign-in-azure-ad-windows
- Azure Policy — パブリック IP を禁止:https://learn.microsoft.com/azure/governance/policy/samples/built-in-policies#network