mcpField
A
azure-bastion-jit

azure-bastion-jit

github.com/vinayaklattheセキュリティ17842 回インストール19 週間前に更新
リポジトリ

azure-bastion-jit について

azure-bastion-jit は、Azure IaaS VM と VMSS の管理アクセスを設計するスキルです。Azure Bastion と Defender for Cloud の JIT アクセスを組み合わせ、VM のパブリック公開や管理ポートの常時開放を減らします。

主な機能

  1. 01Bastion SKU の選定
  2. 02時間制限付き JIT ネットワークアクセスの設計
  3. 03ポリシーによる VM パブリック IP の削除
  4. 04Entra サインインと RBAC の組み合わせ
  5. 05セッション記録と監視の設定

活用シーン

  1. 01VM 管理をプライベート接続に移行
  2. 02RDP または SSH の一時アクセス設定
  3. 03Bastion 管理者ロールの設計
  4. 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 は 本番以外の環境や個人用サンドボックス向けです。

アプローチ

  1. アーキテクチャ。 ハブ VNet ごとに Bastion を 1 つ配置します(トラフィックの分離が必要な場合は、スポークごとに配置します)。必要なサブネットは AzureBastionSubnet で、最小サイズは /26 です。サブネット上の NSG には、ドキュメントに記載された許可ルールを設定します。ドキュメントに記載された許可例外を含めずに「インターネットからのすべての通信を拒否」と設定すると、Bastion が機能しなくなります。

  2. VM のパブリック IP をなくします。 Azure Policy の パブリック IP アドレスを仮想マシンに関連付けない を、本番環境のスコープで Deny に設定します。新しい VM はプライベート専用とし、管理者アクセスには Bastion と JIT を使用します。

  3. Bastion と VM での Entra ログイン。 Microsoft Entra login for Windows/Linux VM 拡張機能と組み合わせると、RDP/SSH の認証に Entra 資格情報を使用できます。VM へのサインイン自体に Conditional Access(MFA、デバイスのコンプライアンス、名前付きの場所)が適用されます。これは多くの「Bastion のみ」のデプロイで見落とされる要素です。

  4. RDP/SSH が許可されているすべての VM で JIT を構成します。

    • 既定のポート:RDP 3389、SSH 22、WinRM 5985/5986。
    • 要求の最大時間:3 時間。
    • ソース:要求者の IP(または要求がそこから届くため、Bastion サブネット)。
    • 承認:RBAC による暗黙の承認、または tier-0 VM に手動承認の手順を追加します。
  5. 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。 過剰な権限付与を避けるため、ペルソナごとのカスタムロールに組み込みます。
  6. ネイティブクライアント、IP ベース接続、共有可能なリンク(Standard 以上)。

    • ネイティブクライアント(az network bastion rdp/ssh):管理者はローカルの mstsc/SSH ツールを使用でき、ブラウザータブよりも優れた UX が得られます。VM サインインには引き続き CA が適用されます。
    • IP ベース接続:ExpressRoute/VPN 経由で、Bastion からピア接続されたオンプレミス VM に接続します。
    • 共有可能なリンク:緊急アクセスのため、請負業者向けに有効期限付き URL を発行します。明示的に必要でない限り無効にし、使用状況を監査します。
  7. セッション記録(Premium)。管理者セッションの動画を Log Analytics ワークスペース/Storage に記録します。一部の規制対象業界では必須です。保持期間とアクセス制御を確認してください。

  8. JIT 要求のワークフロー。 管理者向けに次の手順を文書化します。

    • Defender for Cloud → JIT VM access → Request access を開き、ポートと時間枠を指定します。
    • 時間枠内に Bastion 経由で接続します。
    • NSG ルールは期限切れ時に自動で元に戻ります。
  9. 監視。 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

コメント