SREセクションの林です。本記事ではWindowsサーバ管理のためのリモートログインをサーバ型で提供可能な Apache Guacamole について私たちの活用事例を紹介します。
最初にまとめ
- 課題として、RDPクライアントツールをメンバ個人で管理していた
- サーバの増減に追随するのが個人差があって辛い
- クライアント型ではなく、サーバ型のRDPツールが欲しい
- Apache Guacamole の導入で快適RDPライフが実現!!!
という話です。
Oisix ra daichi Inc. のインフラ事情
私たち Oisix ra daichi Inc. (以後はORD) は、お客様向けのECサイトや物流拠点のためのシステムなど複数の異なるシステム基盤を活用しています。 具体的には以下のようなシステム基盤があります。
- パブリッククラウド
- AWS
- Azure
- GCP
- オンプレミス環境
- 国内データセンタ
- 物流拠点内に設置されたサーバルーム
- 本社サーバルーム
それぞれのシステム基盤は規模も用途も異なりますが共通して必要となるのはサーバ管理です。
Linuxサーバの場合は簡単でSSHの鍵認証を利用してログインを行なってきました。各Linuxサーバのユーザ管理にはAnsibleを利用してまとめて作成・削除を行い、Ansibleのインベントリファイルを参照すればサーバの数や接続先も把握が可能な状態となっています。*1
一方でWindowsサーバに関しては課題を抱えていました。SREセクションのメンバはMacbookを利用しているため、WindowsサーバへログインするためにメンバそれぞれがMicrosoft Remote DesktopアプリをAppStoreから導入し、それぞれのPCで接続先や認証情報を管理していました。この状況で起きた問題としてサーバの増減に各メンバが追随できないことが度々発生しました。
具体的には以下のような会話が散発していたのです。
他部署メンバ「A拠点のツールが動作していないようなのですが?」
SREメンバA「それって確か最近Xさんが構築したサーバですよね、認証情報を確認して、接続用のアプリを設定して、ログインして確認してみます」
仮に管理する対象がAWS上のWindowsサーバだけであれば Amazon EC2 Systems Manager Fleet Manager を利用することも考えましたが、上述したようにORDのシステム基盤は複数の種類がありWindowsサーバも異なるプラットフォーム上で稼働しています。
そんな課題を解決するために調査をし、出会ったのが Apache Guacamole です。
Apache Guacamoleの紹介
Apache Guacamoleについては公式サイトの紹介文の通り、リモートデスクトップゲートウェイとして利用できるアプリケーションです。
Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.
Apache License. Version 2.0 として無料で利用可能なオープンソースソフトウェアです。開発に携わる皆様に心から感謝しながら利用しています。 Apache Guacamoleのドキュメントはとても品質が高く、アーキテクチャについてもわかりやすい図が用意されています。 Apache Guacamole Manual - Implementation and architecture
Apache Guacamoleの仕組みは上記の図の通り、各種サーバとのリモート通信を"Guacamoleサーバ"が行い、ユーザである我々はブラウザを利用してリモートの操作が行えます。 Apache Guacamoleにはいくつかの認証機能がありますが現在は標準のIDとPasswordによる認証を利用しています。しかしそれだけの認証ではサーバ管理のために強力な権限を持たせているアプリケーションの認証機能としては弱いと考え、ORDではAmazon Cognitoを利用してGoogle アカウントでの認証と、Apache Guacamole自身のID/Passによる二重の認証を行なっています。
ログイン後の画面の参考画像は以下になります。サーバ名やIPが多く表示されているためマスクしてある点はご了承ください。
"RECENT CONNECTIONS"として直近アクセスのあった6台分のサーバの画面がミニマムなサイズで表示されています。
画面下の"ALL CONNECTIONS"には各Windowsサーバの接続先がグルーピングされた状態で表示され、展開して接続するサーバを選択できます。 右側中央にある"Filter"でサーバ名で絞り込むことも可能で、簡単に接続先を選ぶことができます。
特定のサーバを選択したあとは通常のリモートデスクトップと同様の操作が可能です。
Apache Guacamoleの管理機能が素晴らしい
Apache Guacamoleの基本機能であるブラウザを利用してリモートログインが可能になるのは一度体験するとそれなしでは考えられません。 加えてApache Guacamoleの特に素晴らしいと感じているのが管理機能です。
文章で表現するとわかりづらいかもしれませんが以下のように大変柔軟なグループ管理が可能となっています。
- ユーザは複数のグループに所属でき、複数の接続先の権限を持てる
- グループは複数のグループに所属でき、複数の接続先の権限を持てる
私たちの場合はセクション単位でグループを作成し、各グループへ接続先の権限を付与しています。 こうすることで以下のような運用を行なっています。メンバーの増員があってもグループに追加するだけですので大きな手間もありません。
- SREセクションのグループに所属していれば全てのサーバへログインが可能
- らでぃっしゅぼーやのシステムグループは、該当するサーバ群のみログイン可能
おわりに
ORDでリモートデスクトップゲートウェイとして大変便利に活用している Apache Guacamole の紹介でした。サーバ構築はDockerで簡単にできますし、要求するリソースも高くないためすぐに利用を開始できましたので、同じような課題を感じている皆様に利用をお勧めしたいです。
私たちの今後の計画として、社内の利用者が増えて手作業によるユーザ管理が煩雑になってきたことを受けて、LDAPやSAMLの連携を進めてユーザ管理をより簡単に行えるようにしたいと考えています。
最後に、改めてこの素晴らしいアプリケーションを開発してくださっている皆様に感謝して本記事の結びとします。
*1:Dynamic Inventoryのケースもあるので全てではないです