📖

Azure Bastion の仕様 FAQ

2023/12/28に公開

はじめに

以前、Bastion 経由で Azure VM に Microsoft Entra 認証でログインをするための記事を書きましたが、より詳細に仕様を調べる機会があったので、FAQ として残しておきます。
https://zenn.dev/microsoft/articles/cc7bb61124be97

構成

コピー/貼り付けはどのような設定か?

ブラウザベースでアクセスする場合にテキストのコピー/貼り付けを有効/無効にする設定。Web 経由のクリップボード共有の API を無効化する機能であるため、ネイティブ クライアントのファイル転送は制限できない。

Kerberos 認証はどのような設定か?

ドメインアカウントでのログインで Kerberos 認証を使用する場合に必要。Kerberos 認証が使用できない場合は NTLM にフェールバックする。なお、Kerberos 認証はネイティブ クライアントでは使用できず、NTLM でのログインになる。

Bastion へのログイン

Bastion へのログイン方法は?

Bastion は Azure 管理コンソールの認証と同一のため、Microsoft Entra 認証になる。この場合、VM へのログインはローカルユーザー認証、Microsoft Entra 認証いずれも利用可能。

Bastion へのログインに条件付きアクセスは利用できるか?

Bastion 個別のアプリが用意されていないため、Azure ポータルなどが含まれる「Windows Azure Service Management API」に指定して設定。多要素認証も設定可能。
https://learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-policy-azure-management

必要なロールは?

ローカルアカウントログイン / Entra ID ログインに関わらず、Bastion 経由でログインする場合は、以下が必要。

  • 仮想マシンに対する閲覧者ロール
  • 仮想マシンのプライベート IP を使用する NIC に対する閲覧者ロール
  • Azure Bastion リソースに対する閲覧者ロール
  • ターゲット仮想マシンの仮想ネットワークに対する閲覧者ロール (Bastion デプロイが、ピアリングされた仮想ネットワーク内の場合)
    https://learn.microsoft.com/ja-jp/azure/bastion/vnet-peering#permissions

Microsoft Entra 認証する場合は上記に加えて「仮想マシンの管理者ログイン」か「仮想マシンのユーザー ログイン」が必要。
https://learn.microsoft.com/ja-jp/entra/identity/devices/howto-vm-sign-in-azure-ad-windows#configure-role-assignments-for-the-vm

VM へのログイン

Microsoft Entra 認証はブラウザから可能か?

Bastion 経由で Microsoft Entra 認証 で VM にログインする場合はネイティブ クライアントが必要。なので Microsoft Entra 認証 VM ログインを使用する場合、Standard SKU が必須。
https://learn.microsoft.com/ja-jp/entra/identity/devices/howto-vm-sign-in-azure-ad-windows#log-in-using-passwordlimited-passwordless-authentication-with-microsoft-entra-id

Microsoft Entra 認証 の Azure Windows VM へのログインの前提条件は?

注意すべき前提条件は以下。対象 OS や通信要件などの詳細はリンクを確認。

  • Microsoft Entra ゲストアカウントはログイン不可
  • 「仮想マシンの管理者ログイン」もしくは「仮想マシンのユーザー ログイン」の Azure ロールを割り当てる
  • パスワード/制限付きパスワードレス方式の場合、接続元のクライアントは、VM と同じテナントに Microsoft Entra 参加しているか、Microsoft Entra ハイブリッドに参加しているか、Microsoft Entra 登録されている必要あり
    https://learn.microsoft.com/ja-jp/entra/identity/devices/howto-vm-sign-in-azure-ad-windows

Microsoft Entra 認証 の Azure Windows VM へのログインに MFA は使用できるか?

Windows Server 2022 であればパスワードレス認証の方式を使用して可能と思われる。(未検証)
Windows Server 2019 の場合は 「パスワード/制限付きパスワードレス」 方式となり、証明書信頼モデルを使用してデプロイされた Windows Hello for Business のみ利用可能。

Microsoft Entra 認証 を有効にした VM にローカル アカウントでのログインは可能か?

ローカル アカウントでログイン可能であるため、禁止したい場合は別途対応が必要。

Bastion 経由でドメイン参加している VM にログインできるか?

ブラウザ、ネイティブクライアントともにドメインアカウントを使用してログイン可能。サインイン時は UPN 形式 (username@domain) を指定する必要あり。
https://learn.microsoft.com/ja-jp/azure/bastion/troubleshoot#domain

Windows への SSH、Linux への RDP は可能か?

OS で設定すれば、Bastion 経由でブラウザ・ネイティブ クライアントともにアクセス可能。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/linux/use-remote-desktop?tabs=azure-cli
https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui

ネイティブ クライアント

Bastion のネイティブ クライアントとは?

Azure ポータルからアクセスするブラウザ経由以外のすべての方法。
PowerShell や RDP クライアント、TeraTerm など。Azure CLI の az network bastion rdp , az network bastion ssh, az network bastion tunnel コマンドを使用して接続する方式。

ネイティブ クライアントで Microsoft Entra 認証での VM ログインはできるか?

Microsoft Entra 認証でログイン可能。ただし、az network bastion tunnel は未サポート。
https://learn.microsoft.com/ja-jp/azure/bastion/native-client#connect

通信要件

Bastion の通信要件は?

下記を参照。最終的に接続する VM のアクセス許可については、Bastion サブネットからの RDP/SSH だけでよい。
https://learn.microsoft.com/ja-jp/azure/bastion/bastion-nsg

Bastion 自体へのアクセス制限は可能か?

Bastion サブネットに紐づく NSG で特定の IP アドレスからのみ許可することが可能。

ライセンス

Bastion を利用するにあたり、RDS CAL などは必要か?

別途のライセンスは不要で、Azure サブスクリプションの従量課金のみ。

拡張性

Bastion でどの程度までアクセス可能か?
Standard SKU を利用する場合、ホスト (= Bastion の裏側で動く VM) のスケーリングが可能。1 ホストあたり、目安としては中程度の負荷で 20 の 同時 RDP 接続と 40 の 同時 SSH 接続をサポート。ホストは 50 まで拡張可能であるため、中程度の負荷で最大 1,000 の 同時 RDP 接続と 2,000 の 同時 SSH 接続が可能となる計算。
https://learn.microsoft.com/ja-jp/azure/bastion/configuration-settings#instance
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-bastion-limits

ファイル転送

Bastion でファイル転送する場合のプロトコルは?

Windows の場合、クライアント ⇔ Bastion 間は HTTPS、Bastion ⇔ VM 間は RDPになる。
Linux の場合、クライアント ⇔ Bastion 間は HTTPS、Bastion ⇔ VM 間は port 22 (SCP など) になる。

ファイル転送はブラウザ、ネイティブ クライアントでサポートしているか?

ブラウザは未サポート。ネイティブ クライアントでのみサポート。

ファイル転送は Microsoft Entra 認証をサポートしているか?

ファイル転送は az network bastion tunnel を使用するが、本コマンドが Microsoft Entra 認証をサポートしていないため、ファイル転送自体も Microsoft Entra 認証をサポートしていない。

ファイル転送でアップロード・ダウンロードできる?

Windows VM への RDP の場合、アップロード・ダウンロードともにサポート。Linux VM への SCP の場合、アップロードのみサポート。(ただしダウンロードも動作はする模様)
https://learn.microsoft.com/ja-jp/azure/bastion/native-client#connect
https://learn.microsoft.com/ja-jp/azure/bastion/vm-upload-download-native#tunnel-command

ファイル転送を禁止できるか?

Bastion の機能でファイル転送は禁止できない。(注:「コピーと貼り付け」の設定はブラウザにおけるテキストのコピーと貼り付けの制限のみ)

ログ & メトリック

Bastion でリモート アクセスした際のログは取得可能か?

コネクションの接続開始、切断のログが取得可能。時刻やアクセス方式、ユーザー エージェント、送信元 IP/ポート、ユーザー名、ターゲット VM などが記録できる。

特権昇格時のログは取得できるか?

Bastion では取得できないので、OS レベルでログを取得する必要がある。(Windows であればイベントログ、Linux であれば、auth や authpriv のログなど)

実行コマンドのログを取得することはできるか?

Bastion で OS レイヤでの実行コマンドのログは取得不可のため、OS 側で対処する必要がある。

同時接続数を監視することはできるか?

Bastion のメトリックで Session Count が取得可能。正確な値を把握するにはインスタンスごとに分割する必要がある(分割しないと平均化されてしまう)。また算出方法を合計にすると、1 分単位で 1 カウントされ、それが合計されるため実接続と合わないため、平均を使用する。

https://learn.microsoft.com/ja-jp/azure/bastion/howto-metrics-monitor-alert#performance

Microsoft (有志)

Discussion