一昔前までは「TeratermによるSSH接続」と「リモートデスクトップ接続(RDP接続)」で各種サーバへアクセスするのが当たり前であったが、昨今は「ブラウザでSSH接続」や「ブラウザでRDP接続」が当たり前となっており「2要素認証」で守られているので、インターネットに繋がるブラウザ環境があれば、どこからでも開発環境や本番環境へアクセスして操作が出来るのでとても便利になっている。
今後「クラウドファースト」から「マルチクラウド」へシフトし「コンテナファースト」となる潮流ではあるが、クラウド各社(AWS、Azure、GCP)の踏み台サービスについて、執筆時点の最新情報を収集しまとめてみました。

1.AWS Systems Managerの「セッションマネージャー機能」

1-1.機能

最新 – AWS Systems Manager セッションマネージャーで EC2 インスタンスへのシェルアクセスを実現によると「EC2インスタンス」にSSH・RDPで接続せずに「ブラウザ上からCLI操作(full interactive bash (Linux) or PowerShell (Windows) )」ができる機能のことであり、セキュリティグループのインバウンド設定や踏み台ホストを作ること無く安全にEC2インスタンスへ接続できるようだ。

1-2.認証

機能を利用できる人やその人に与える役割については、IAMで制御できる。もちろん、AWSのIAMは多要素認証対応しており、スマホの2段階認証アプリやハードウェアデバイス認証等に対応している。詳細は「多要素認証」を確認ください。

1-3.制約(メリット、デメリット)

  • セッションマネージャー利用料:追加料金なし
    料金 - AWS Systems Manager | AWS」によると「Amazon EC2 インスタンスへのアクセスは、追加料金なしでご利用いただけます。」とのこと。オンプレミスサーバーも管理することが出来るが制限を超えると追加料金が発生する。詳細は「オンプレミスインスタンス管理」を確認ください。

  • セッションマネージャー制約:「AWS Systems Manager の制限」によると以下の2個

    • 1 アカウント、1 リージョンあたりのアクティブセッションの最大数 100
    • セッション終了前の最大アイドル時間 20 分
  • セッションマネージャー利用するには、アクセスしたいEC2インスタンスへ「SSM エージェント」のインストールが必須
    詳細は「Systems Manager の前提条件」を確認ください。

2.Azureの「Bastionサービス(プレビュー)」

2-1.機能

Azure Bastion | Microsoft Azure」によると
Azure Bastion (プレビュー) は、直接 Azure portal 経由でお客様の仮想マシンへの安全でシームレスな RDP および SSH アクセスを提供するフル マネージド PaaS サービスです。Azure Bastion は、お客様の仮想ネットワーク (VNet) 内で直接プロビジョニングされ、パブリック IP アドレス経由で公開されることなく、SSL を使用して仮想ネットワーク (VNet) 内のすべての VM をサポートします。
とのことで、要するにAzure portalにログイン出来れば、ブラウザ経由で仮想マシンへRDP接続、SSH接続を中継してくれる機能のようだ。別記事で紹介した「社内PCからRDP接続するために中継サーバ(Guacamole)をdockerコンテナで立ててみた」と同じことが出来るサービスと思われる。

2-2.認証

Azure portal からしかBastion セッションを開始できない仕様となっている。
Azure リソースのロールベースのアクセス制御 (RBAC)」 により以下の3点のロールを利用者へ与えることで、利用可能となる。

  • 仮想マシンに対する閲覧者ロール
  • 仮想マシンのプライベート IP を使用する NIC に対する閲覧者ロール
  • Azure Bastion リソースに対する閲覧者ロール

「Azure portal」を利用するには「Microsoftアカウント認証」が必要であり「Microsoftアカウント」は「2段階認証」に対応済である。
手順については「Microsoft アカウントで 2 段階認証を使用する方法」を確認ください。

2-3.制約(メリット、デメリット)

  • Bastionサービス(プレビュー)利用料:¥10.64 / 時間(東日本リージョン)
    価格 - Azure Bastion | Microsoft Azure」によると課金対象は「使用時間」と「データ転送量(月あたり5GB未満は無料)」に応じるようだ。
  • WindowsインスタンスへRDP接続(リモートデスクトップ接続)ができる
  • サーバー側へ追加のクライアント、エージェント、ソフトウェアは必要なし

3.GCPの「CloudShell、ChromeRDP」

3-1.機能

  • Cloud Shell
    ホーム領域(5GB)をマウントしたdockerイメージ(Linuxインスタンス)の利用が可能であり、GCPコンソール(ブラウザ)からLinuxコマンドやgcloudコマンド等が実行可能である。
    特筆すべきは「テキストエディタ機能」を搭載しており、ファイルのアップロード/ダウンロードも可能である点だ。GCPを契約するだけで、ブラウザから操作できる開発環境が手に入るのである。しかも1年間300ドルクレジット付。

  • ブラウザからSSH接続
     上記リンク先のドキュメントをご覧の通り。ブラウザからSSH接続が簡単にできる。

  • ブラウザからRDP接続
     「Google Cloud Platform 拡張機能用の Chrome RDP」をインストールする必要はあるが、ブラウザからRDP接続が可能となる。ただし、社内LANからは社内PROXYフィルタ制限にひっかかり繋がらないケースがある。

3-2.認証

上記のいずれのサービスについても「GCPコンソール」からの接続となっている。「GCPコンソール」は「Googleアカウント認証」となっており「2 段階認証プロセスでのログイン方法」に対応している。スマホアプリやハードウェアキーでの認証が可能だ。

3-3.制約(メリット、デメリット)

  • 利用料:GCP契約があれば無料
  • WindowsインスタンスへRDP接続(リモートデスクトップ接続)ができる
  • サーバー側へ追加のクライアント、エージェント、ソフトウェアは必要なし

4.まとめ

AWSの Systems Managerの「セッションマネージャー機能」については無料で使用できるが、他のクラウドサービスでも標準で使用できる「コンソール接続機能(CLI)」であるにも関わらず、エージェントインストールが必要という大きなデメリットを抱えているし、Azureの「Bastionサービス(プレビュー)」は利用料金がかかってしまう。
GCPであれば、標準でブラウザからSSH接続、ブラウザからRDP接続に対応しているため、今からクラウドを始める方にはGCPが一番おすすめである。
なお、どのクラウドでも対応可能な踏み台サーバ「Guacamoleサーバー」というOSSソフトウェアもあるため興味のあるかたは「社内PCからRDP接続するために中継サーバ(Guacamole)をdockerコンテナで立ててみた」を合わせてご覧頂ければと思う。
docker上に「Guacamoleサーバ」を作れるため、GCPのKubernetesサービス上に作れば、安価な費用でセキュアな踏み台サーバを運用できることは間違いないだろう。