2019年12月16日月曜日

【Azure】要塞~RDPもSSHも使えないときは~

Microsoft Azureで仮想マシンを管理するには、RDP(Windowsの場合)またはSSH(Linuxの場合)による接続が必要です。

まれに、社内からはRDPもSSHも使えない会社があるようです。そういう会社でクラウドコンピューティングサービス、特にIaaSを勉強するののはほとんど無理だと思うのですが、皆さんどうなさっているのでしょう。

RDPやSSHが使えなくても、HTTPSは通す会社が多いようです。実は、HTTPSが使えれば多くの抜け道があるので何とかなります。RDPやSSHを禁止するのは「セキュリティ上の理由」と説明していただくことが多いのですが、HTTPSを通すのであれば、セキュリティ対策にはそれほど貢献していません。

もっとも、世の中にはアクセス先のIPリストを管理しているところもあるようで、それならセキュリティ上の意味はあります。もっとも、あまり厳しく制限すると今度はインターネットを使う意味がなくなると思いますが。

さて本題です。HTTPSを使ってAzureの仮想マシンにアクセスするのは以下の方法があります。他にも最低2つは思いついたので、皆さんも考えてみてください。

  1. ポイント対サイトVPN接続(P2S VPN)
  2. クラウドシェル上でのSSHコマンド
  3. 要塞ホスト(Bastion Host)


1. ポイント対サイトVPN

仮想ネットワークにVPNゲートウェイを立てて、SSTP接続を行います。SSTPはSSLベースのVPNであり、HTTPSを通すのであれば問題なくつながるはずです。

また、OpenVPNを使うこともできます。OpenVPNはポート番号を自由に設定できるので、HTTPSと同じポートを使ってファイアウォールの制限を回避できる可能性があります。

ポイント対サイトVPNの詳細は、教育コース「Microsoft AzureによるITインフラの拡張」で紹介しているほか、拙著「ひと目でわかるAzure 基本から学ぶサーバー&ネットワーク構築第3版」でも解説しています。

基本的には管理者を想定しているため、クライアントPCの管理者権限が必要です。

なお、ゲートウェイを作成するには30分ほどかかります。


2. クラウドシェル

Azureの管理ポータルからLinux (Ubuntu) ベースのシェルを起動できます。このシェルからsshコマンドを使ってSSH接続を行います。ただしGUIは使えません。

その場で起動できるので便利ですが、RDPを使って接続することはできません。また、Windowsに接続したい場合は、Windows仮想マシン上でSSHサーバー(デーモン)を起動する必要があります。そのためには初期化時にPowerShellのコマンドを送る必要があり、少々面倒な作業が必要になります。


3. 要塞ホスト

最近正式公開(GA: Generally Available)になった方法で、単に「要塞」と呼ぶようです。英語ではBastion(バスチョン)です。

大ざっぱな手順は以下の通りです。

  1. 仮想マシンを作成
  2. 仮想マシンを配置した仮想ネットワークに、AzureBastionSubnetという名称のサブネットを作成(現在は、事前に作成しなくてもBastion作成時に追加可能)
  3. 要塞(bastion)を、AzureBastionSubnetサブネットを指定して新規作成
  4. 仮想マシンの[接続]から[要塞]を指定
    要塞ができていない場合は、その場で作成することもできます。
    ここでサブネットの作成もできるようになりました。サブネット名が指定されるのでクリップボードにコピーして貼り付けてください。

    要塞の作成には数分かかります。
  5. 要塞ができている場合、[接続]からWebブラウザのウィンドウ内でRDPまたはSSH接続が可能になります。

要塞の料金は、東日本の場合で1時間あたり21.28円プラス帯域使用料です。D2v2仮想マシンより少し安い程度ですね。

ただし「割り当て解除」のような、課金を中断する仕組みはないようです。サブネット名が固定されているなど、どちらかというとVPNゲートウェイに似ています。


おまけ: バスチーユ

ちなみに、bastion(要塞)に対応するフランス語がbastille(バスチーユ)です。

フランス革命勃発の舞台となったバスチーユ牢獄はもともと要塞だったのでそのまま「バスチーユ」と呼ばれるようになったそうです。