Azure Bastion を使用した仮想マシンへの安全なアクセス
2025/04/01
この技術的および教育的な記事は、セキュリティ アナリスト、IT 管理者、システム エンジニアが Azure の仮想マシン (VM) に安全にアクセスできるように Azure Bastion を実装および構成する方法をガイドすることを目的としています。クラウド環境では、リソースとデータを保護するために、VM へのアクセスのセキュリティが不可欠です。従来、RDP (リモート デスクトップ プロトコル) または SSH (セキュア シェル) 経由で VM にアクセスするには、パブリック ポートをインターネットに公開する必要があり、攻撃対象領域が大幅に増加しました。 Azure Bastion は、VPN やパブリック IP を必要とせずに安全なアクセスを提供することで、この危険性を排除する堅牢で安全なソリューションを提供します [1]。
はじめに
インフラストラクチャをクラウドに移行すると、拡張性と柔軟性の点で多くのメリットがもたらされます。ただし、セキュリティは依然として最大の懸念事項です。仮想マシンは多くのアプリケーションやサービスの中心となることが多いため、仮想マシンへのアクセスは重要なポイントです。 RDP (3389) または SSH (22) ポートをインターネットに直接公開することは、ブルート フォース攻撃やその他のエクスプロイトのターゲットになりやすいため、セキュリティ上の不適切な行為です [2]。
Azure Bastion は、仮想ネットワーク内にプロビジョニングするフルマネージドのサービスとしてのプラットフォーム (PaaS) サービスです。これにより、VM 上のパブリック IP、VM にインストールされたエージェント、またはローカル マシン上の特別なクライアント/構成を必要とせずに、RDP と SSH を使用して、Azure portal から仮想ネットワーク内の仮想マシンに直接接続できます。 Bastion は安全なプロキシとして機能し、安全な TLS (Transport Layer Security) 接続を介して RDP/SSH トラフィックをユーザーのブラウザにルーティングし、VM がインターネットに直接さらされるのを防ぎます [3]。
このハウツー ガイドでは、前提条件、Azure Bastion をプロビジョニングおよび構成する方法、RDP と SSH を使用して Windows および Linux VM に接続する方法、セッションを管理する方法、安全なアクセスをテストおよび検証する方法について説明します。読者がこれらの機能を実装、テスト、検証できるように、段階的な手順、実践的な例、および簡潔な説明が提供されます。さらに、自律的かつ専門的かつ信頼性の高い方法で仮想マシンへの安全かつ効率的なリモート アクセスを確保するための、セキュリティのヒント、コンプライアンス チェック、ベスト プラクティスについても説明します。
Azure Bastion が VM アクセスに重要なのはなぜですか?
- セキュリティの強化: VM 上のパブリック IP の必要性がなくなり、インターネットからの直接攻撃から VM を保護します。アクセスはブラウザ経由でTLS経由で行われます。
- 簡素化されたアクセス: ネイティブ RDP/SSH クライアントや VPN を必要とせず、Azure portal から直接 VM に接続します。
- ゼロトラスト: ゼロトラストの原則に準拠し、ユーザーの場所に関係なく、アクセスが常に検証および承認されるようにします。
- 監査と監視: 監査とコンプライアンスの目的で、セッション記録 (Premium SKU で利用可能) のオプションを使用して、セッションを監視および管理できます。
- コストと複雑さの削減: フルマネージド PaaS サービスとして、独自のジャンプ ボックスや複雑な VPN を管理する必要がなくなります。
- ポート スキャン保護: VM にはパブリック IP がないため、インターネット上のポート スキャナーや悪意のあるボットからは見えなくなります。
前提条件
Azure Bastion を実装するには、次のものが必要です。
- アクティブな Azure サブスクリプション: リソースを作成および管理するための Azure サブスクリプション。
- 管理アクセス: VM が配置されているサブスクリプションまたはリソース グループに対する「所有者」または「共同作成者」のロールを持つアカウント。
- Azure Virtual Network (VNet): 接続する VM を含む既存の仮想ネットワーク。
- Azure Bastion の専用サブネット:
AzureBastionSubnetという名前と少なくとも/27のプレフィックスを持つ VNet 内のサブネット (例:10.0.2.0/27)。このサブネットは Bastion 専用であり、他のリソースには使用できません [4]。 - 仮想マシン (VM): 接続先と同じ VNet (またはピアリングされた VNet) 内の既存の Windows または Linux VM。
ステップバイステップ: Azure Bastion の構成
Azure Bastion をプロビジョニングし、それを使用して VM に接続しましょう。
1.「AzureBastionSubnet」サブネットの作成
以前Bastion を展開するには、専用のサブネットを作成する必要があります。
- ブラウザーを開き、Azure portal:
https://portal.azure.comに移動します。 - 必要な権限を持つアカウントでログインします。
- 上部の検索フィールドに「仮想ネットワーク」と入力し、結果からそれを選択します。
- VM が配置されている 仮想ネットワーク を選択します。
- 左側のナビゲーション ペインの [設定] で、[サブネット] を選択します。
-
「+サブネット」をクリックします。
-
サブネットの追加:
- 名前:「AzureBastionSubnet」と入力します (この名前は必須です)。
- サブネット アドレス範囲: 少なくとも
/27のプレフィックスが付いたアドレス範囲を指定します (例:10.0.2.0/27)。 ※その他の設定はデフォルトのままにしておきます。
-
[保存] をクリックします。
- 説明:
AzureBastionSubnetは、Azure Bastion サービスがデプロイされる場所です。サービスを正しくプロビジョニングできるように、名前が正確に「AzureBastionSubnet」であることが重要です。
- 説明:
2. Azure Bastion のプロビジョニング
サブネットの準備ができたので、Bastion サービスをデプロイできます。
- Azure portal の上部の検索フィールドに「Bastion」と入力し、結果からそれを選択します。
-
「+ 作成」をクリックします。
-
基本:
- サブスクリプション: サブスクリプションを選択します。
- リソース グループ: VNet と同じリソース グループを選択します。
- 名前: Bastion インスタンスに名前を付けます (例: 「myBastionHost」)。
- リージョン: VNet と同じリージョンを選択します。
- 階層: 「ベーシック」 (基本的な RDP/SSH の場合) または「標準」 (セッションの記録、リンク共有などの追加機能の場合) を選択します。このガイドでは「Basic」を使用します。
-
仮想ネットワーク:
- 仮想ネットワーク:
AzureBastionSubnetを作成した VNet を選択します。 - サブネット:
AzureBastionSubnetが自動的に選択されます。 - パブリック IP アドレス: 「新規作成」をクリックします。パブリック IP に名前を付けます (例: 「myBastionPublicIP」)。このパブリック IP は Bastion サービス用であり、VM には公開されません。
- 仮想ネットワーク:
-
「確認と作成」をクリックし、作成 をクリックします。
- 説明: Azure Bastion のプロビジョニングには 5 ~ 10 分かかる場合があります。デプロイが完了すると、VM へのアクセスに使用できるようになります。
3. RDP 経由で Windows VM に接続する
RDP ポートを公開せずに Windows VM に接続してみましょう。
- Azure portal で、Windows VM に移動します。
- 左側のナビゲーション ペインで、[接続] を選択します。
- 要塞を選択します。
- Windows VM ユーザー資格情報とパスワードを入力します。
-
[接続] をクリックします。
- 予想されるアクション: 新しいブラウザー タブが開き、Windows VM デスクトップが表示されます。接続はブラウザーの HTML5 に完全に基づいています。
4. SSH 経由で Linux VM に接続する
SSH ポートを公開せずに Linux VM に接続してみましょう。
- Azure portal で、Linux VM に移動します。
- 左側のナビゲーション ペインで、[接続] を選択します。
- 要塞を選択します。
- 「認証タイプ」: 「ユーザー名とパスワード」または「SSH 秘密鍵」を選択します。
- 「ユーザー名とパスワード」の場合は、Linux VM の資格情報を入力します。
SSH 秘密鍵の場合は、秘密鍵ファイル (.pemまたは.ppk) をアップロードします。
-
[接続] をクリックします。
- 予想されるアクション: 新しいブラウザー タブが開き、Linux VM のターミナルが表示され、SSH コマンドを実行できるようになります。
検証とテスト
Azure Bastion 経由のアクセスが期待どおりに機能していること、および他の方法では VM にアクセスできないことを検証することが重要です。
1. Bastion の接続を確認する
- シナリオ: 上記の手順 3 および 4 に従って、Azure Bastion を使用して Windows および Linux VM にアクセスしてみてください。
- 期待されるアクション: RDP および SSH 接続はブラウザを通じて正常に確立されるはずです。
- 検証:
- Windows VM デスクトップと対話し、Linux VM ターミナルでコマンドを実行できることを確認します。
2. VM に直接アクセスできないことを確認する
- シナリオ: VM のパブリック IP (存在する場合) またはプライベート IP (VNet の外部にいる場合) を指定して、RDP または SSH クライアントを使用してインターネットから VM に直接アクセスしてみます。
- 予想されるアクション: RDP/SSH ポートは公開されるべきではないため、直接接続の試みは失敗するはずです。
- 検証:
*VM にパブリック IP がある場合は、VM のネットワーク インターフェイスまたは VM のサブネットに関連付けられているネットワーク セキュリティ グループ (NSG) ルールを確認してください。ポート 3389 (RDP) および 22 (SSH) が「Any」または「Internet」に対して開かれていないことを確認してください。
- 理想的には、Bastion 経由でアクセスされる VM にはパブリック IP が関連付けられるべきではありません。
3. Bastion セッション監視 (標準 SKU)
Standard SKU を使用して Bastion をプロビジョニングした場合は、アクティブなセッションを監視できます。
- Azure portal で、Azure Bastion リソース (
myBastionHost) に移動します。 - 左側のナビゲーション ペインの「監視」の下で、セッションを選択します。
- ユーザー、送信元 IP、宛先 VM を含む、アクティブな RDP セッションと SSH セッションのリストが表示されます。
セキュリティのヒントとベスト プラクティス
- VM からパブリック IP を削除: Azure Bastion を構成した後、VM からパブリック IP を削除します。これが Bastion の主なセキュリティ上の利点です。
- NSG を適切に構成する: VM サブネットと「AzureBastionSubnet」のネットワーク セキュリティ グループ (NSG) が、必要なトラフィックのみを許可するように正しく構成されていることを確認します。 Bastion は VM のプライベート RDP/SSH ポートにアクセスする必要がありますが、VM はパブリック受信アクセスを必要としません。
- 最小特権の原則: ユーザーが Bastion 経由で VM に接続できるように、必要な権限のみを割り当てます。 Azure RBAC を使用して、Bastion を使用できるユーザーを制御できます。
- 強力な認証: VM 資格情報には常に強力な認証を使用します。認証のために Azure AD と組み合わせ、可能であれば条件付きアクセスを組み合わせて、Azure portal へのアクセスに MFA を要求します。これにより、Bastion へのアクセスが制御されます。
- セッション記録 (プレミアム SKU): 厳密なコンプライアンスと監査が必要な環境の場合は、Azure Bastion Premium SKU を使用して RDP および SSH セッションを記録することを検討してください。これにより、VM 上で何が行われたのかが視覚的に記録されます。
- ログ監視: Bastion の Azure アクティビティ ログと VM のセキュリティ ログを監視して、不審なアクティビティや不正なアクセスの試みを検出します。
- アップデートとパッチ: 内部の脆弱性を軽減するために、最新のセキュリティ パッチを適用して VM を最新の状態に保ちます。
一般的なトラブルシューティング
- VM に接続しようとすると、Bastion オプションが表示されません:
- Azure Bastion が VM と同じ VNet (またはピアリングされた VNet) にプロビジョニングされていることを確認します。
AzureBastionSubnetが存在し、正しいアドレス プレフィックス (/27以上) が付いていることを確認してください。- Azure portal で Bastion が「実行中」状態であるかどうかを確認します。
- Bastion 経由の RDP/SSH 接続エラー:
- 無効な資格情報: ユーザーおよびパスワードの資格情報 (または SSH キー) が VM に対して正しいことを確認してください。
- NSG の問題: VM サブネットの NSG が、
AzureBastionSubnetのポート 3389 (RDP) または 22 (SSH) での受信トラフィックを許可していることを確認します。 - VM ファイアウォール: VM の内部ファイアウォールが RDP/SSH 接続をブロックしていないことを確認します。
- RDP/SSH サービスが実行されていない: RDP (Windows の場合) または SSH (Linux の場合) サービスが VM 上で実行されていることを確認してください。
- パフォーマンスが遅いまたは切断される:
- インターネット接続の帯域幅を確認してください。 Bastion はセッション ビデオをブラウザにストリーミングします。
- より優れたパフォーマンスと追加機能を提供する Bastion の Standard または Premium SKU の使用を検討してください。
- セッションのパフォーマンスに影響を与える可能性がある、ターゲット VM 上の CPU またはメモリの使用率が高くなっていないか確認します。
- Bastion 経由で内部 VM リソースにアクセスできません:
- Azure Bastion は VM への接続を提供します。 VM に接続すると、VNet の他の内部リソースへのアクセスは、VM 自体のネットワーク構成と適用可能な NSG ルールによって異なります。
結論
Azure Bastion はクラウド環境のセキュリティに不可欠なコンポーネントであり、仮想マシンにアクセスするための安全かつ簡素化された方法を提供します。 RDP/SSH ポートがインターネットに直接公開されないようにすることで、攻撃対象領域が大幅に減少し、全体的なセキュリティ体制が強化されます。 Bastion の利点を最大化するには、慎重な実装、セキュリティのベスト プラクティスとの統合、および継続的な監視が重要です。このGでこの実践的なアプローチにより、セキュリティ専門家と IT 管理者は、Azure Bastion の構成、検証、管理を行うための十分な準備が整い、仮想マシンへのアクセスが常に安全で準拠していることが保証されます。
参考文献:
[1] Microsoft Learn。 Azure Bastion とは何ですか?。入手可能場所: https://learn.microsoft.com/pt-br/azure/bastion/bastion-overview [2] Microsoft Learn。 Azure Bastion を使用して Azure の仮想マシンへの安全なリモート アクセスを可能にするための設計と計画の考慮事項。入手可能場所: https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access [3] Microsoft Learn。 RDP - Azure Bastion を使用して Windows VM に接続します。入手可能場所: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-rdp-windows [4] Microsoft Learn。 Bastion ホストを構成します。入手可能場所: https://learn.microsoft.com/pt-br/azure/bastion/tutorial-create-host-portal [5] Microsoft Learn。 SSH を使用して Linux VM に接続します - Azure Bastion。入手可能場所: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-ssh-linux [6] Microsoft Learn。 Azure Bastion セッションの監視と管理。入手可能場所: https://learn.microsoft.com/pt-br/azure/bastion/session-monitoring [7] Microsoft Learn。 Bastion セッションの記録を構成します。入手可能場所: https://learn.microsoft.com/pt-br/azure/bastion/session-recording