Apache Guacamoleの概要
Apache Guacamole(アパッチ ワカモレ)はリモートデスクトッププロトコルを用いて他のPCにアクセスするためのWebアプリケーションです。
Guacamoleは元々、RealMint(「RealMint」は「terminal」のアナグラム)というJavaScriptのTelnetクライアントが起源となっています。その後HTML5のVNCクライアントを経て、現在のリモートデスクトップゲートウェイ・VNC/RDPクライアントの形へと発展していきました。
Guacamoleはサーバとクライアントによって構成されています。
- Guacamoleサーバ(ユーザがWebブラウザからアクセスするサーバ)
Guacamoleサーバは、グラフィックや動画、音声などを扱うライブラリとguacdで構成されており、C言語で実装されています。
guacdとは、任意のプロトコルとGuacamoleプロトコルの変換を行うプロキシデーモンです。Guacamole プロトコルはテキストベースのプロトコルです。JavaScriptはバイナリプロトコルを効率的には扱えないため、Guacamoleではこのプロトコルを用いて通信を行います。
- Guacamoleクライアント(ユーザが接続情報の確認や操作を行うために使うWebアプリケーションを提供するクライアント)
Guacamoleクライアントは、サーブレットコンテナ(Tomcat)を用いてWebアプリを提供しており、Guacamoleサーバ内にあります。
Java・JavaScriptで開発されています。
接続の流れは下記の図の通りです。「HTML5 Web Browser」が接続元となるユーザのブラウザで、「RDP」「VNC」と記載されているものが接続先となるサーバやPCとなります。
※画像:公式サイトより
接続元のブラウザでGuacamoleサーバにアクセスすることで、Guacamoleサーバ内のGuacamoleクライアントが接続情報の一覧や接続操作を行うWebアプリケーションを表示します。そのGUI上で接続先を決定することで、Guacamoleサーバはguacdを介して各接続先へ接続します。
このように接続先と同一ネットワーク内にインターネット上に公開されたGuacamoleを配置することでブラウザからの通信を中継し、リモート接続します。
Apache Guacamoleの主な特徴
クライアントレス | 通常、リモート接続を行う場合はRDPにはリモートデスクトップクライアント、SSHにはターミナルなどそれぞれのプロトコルに合わせたクライアントアプリケーションが必要になりますが、Guacamoleはどのプロトコルにおいても、ウェブブラウザのみで接続することが出来ます。そのため、接続元のスマートフォンやPC側に特別なアプリケーションを導入する必要はありません。 また、接続先となるサーバやPC側も接続元と同様に特別なクライアントを導入する必要はありません。 |
---|---|
クエリ | Riakは、基本的なGET、POST、PUT、DELETEメソッドのHTTPリクエストによるRESTフルなAPIを提供します。セカンダリインデックス、検索(Apache Solr経由)、MapReduceなど、より複雑なクエリも可能です。 |
多様な認証方式 | Guacamoleは標準のDB認証(MySQL/PostgreSQL)の他にLDAP、OpenID、SAML、RADIUS認証やSSO、TOPOなどをサポートしています。 |
操作ログ・動画の記録 | 端末へのアクセスログや操作ログはもちろん、接続後の操作を動画として記録しておくことが出来ます。キーボード入力などもテキストベースのログとして記録することが出来るため、動画では確認出来ないショートカットキーなども確認することが出来ます。 |
画面共有 | Guacamoleは画面共有用のURLを発行することができ、複数人で一つの画面を操作・閲覧することが出来ます。また、操作・閲覧の権限はそれぞれに分けることも出来るので、不要な入力をさせないことも出来ます。 |
権限管理 | 接続するユーザやグループごとにアクセス可能な接続先やプロトコルを設定することが出来ます。 |
Apache Guacamoleのユースケース
Guacamoleは昨今の急激なリモートワーク環境の整備・移行に伴って、自宅からの接続をセキュアに行いたい、リモートワークでも細かく業務状況を把握したい場合などに有用なアプリケーションです。また、画面共有の機能を使うことで、ミーティングや会議、教育現場でのリモートでの指導なども容易に実施することが出来ます。
Apache Guacamoleの動作環境
Guacamoleの動作にはJava(Tcomcat)と以下のパッケージが必要となります。
※Docker が動作する環境であれば、別途公式からDockerイメージも提供されています。
- Cairo
- libjpeg-turbo
- libpng
- libuuid
- FFmpeg
- FreeRDP
- Pango
- libssh2
- libtelnet
- libVNCServer
- libwebsockets
- PulseAudio
- OpenSSL
- libvorbis
- libwebp
Apache Guacamoleのライセンス形式
Guacamoleのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
参考情報
Apache Guacamole公式サイト
Apache Guacamole-server GitHub
Apache Guacamole-client GitHub
Apache Guacamoleのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。