keeper/guacamole

Keeper Connection Managerを使用したApache GuacamoleのDockerによるデプロイ

イメージ: keeper/guacamole

Keeper Connection Managerの高度な機能を有効化するには、機能を制御する環境変数をdockerファイルに追加するか、または以下に記載したEXTENSIONSフラグのいずれかを追加するだけです。

サードパーティ製の任意の拡張機能は、必要に応じてADDITIONAL_GUACAMOLE_PROPERTIES変数を設定し、ボリュームマウントを介して使用できます。

Guacamoleのログを表示

Guacamoleのログは、認証など、リモートデスクトップに直接関連しないウェブアプリケーションの機能の予期しない挙動をデバッグする場合に有効です。Tomcat/Guacamoleのログを表示するには、トラブルシューティングのドキュメントに従ってください。

デフォルトでは、これらのログには「info」レベル以上のメッセージのみが表示されます。これは、コンテナを作成するときに、LOG_LEVEL環境変数を使用して上書きできます。

環境変数

ACCEPT_EULA

環境変数ACCEPT_EULAは「Y」に設定して、Keeper Connection ManagerのEULAに同意したことを示す必要があります。このDockerイメージは、EULAの条件に従わないと使用できません。

ADDITIONAL_GUACAMOLE_PROPERTIES

この変数はオプションで、起動中に/etc/guacamole/guacamole.propertiesに追加する必要のある追加コンテンツを指定します。この情報は、guacamole.properties.dockerを使用して追加されるため、環境変数の代入はこの変数の情報に対して自動的に実行されます

ALLOWED_LANGUAGES

この変数はオプションで、Guacamole内の表示言語を言語キーのコンマ区切りリストに制限します。指定した場合、ユーザーは記載された言語のみを利用できるようになり、記載された言語のみがユーザーのブラウザの優先言語に基づいて自動的に選択されます。たとえば、Guacamoleを英語とドイツ語のみに制限するには、ALLOWED_LANGUAGES="en, de"と指定します。選択した言語で翻訳キーが見つからない場合に使用される代替言語が英語であるため、このリストから英語を除外するのは、カスタム翻訳で見つからない文字列がないことが確実な場合にのみにすべきです

デフォルトでは、すべての定義済み言語が使用可能になります。

API_*

API_で始まるすべての環境変数は総じて、Guacamoleウェブアプリケーションを設定するための設定プロパティに関連します。これらの変数は、Guacamoleがユーザーセッションおよび受信したHTTPリクエストを処理する方法を制御します。これらの変数で制御するのは、Guacamoleウェブアプリケーションの機能のみであることにご注意ください。リモートデスクトップセッションの動作は制御されません。

AWS_DISCOVERY_*

AWS_DISCOVERY_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるAWS EC2ディスカバリの設定プロパティに関連します。

EC2ディスカバリを使用する場合は、以下の環境変数が必要です。

EC2ディスカバリに関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

BAN_*

BAN_で始まる環境変数はすべて、ウェブアプリケーションに対する総当たり攻撃にも見える認証の試行を自動的にブロックする方法を設定するための設定プロパティに関連します。これらの変数はどれもオプションです。

CONTEXT_PATH

この変数はオプションで、Guacamoleウェブアプリケーションサービスを提供するパスを指定します。デフォルトでは、ウェブアプリケーションサービスはルートディレクトリ(http://your-container:8080/)で提供されますが、これはCONTEXT_PATHで別の場所の名前を設定することで上書きできます。

なお、CONTEXT_PATHによる場所の指定では、スラッシュを使用できないことにご注意ください。より複雑にネストされたパスでウェブアプリケーションサービスを提供する必要がある場合は、Nginx Apache HTTPDのようなリバースプロキシを使用する必要があります。

DUO_*

Duo多要素認証を使用する場合は、以下の環境変数が必要です。

EXTENSIONS

この変数はオプションで、他のどの環境変数を指定するかに関係なく、イメージ内で有効にする必要があるすべての拡張機能の名前をコンマまたは改行で区切ったリストを指定します。空の名前、空白、末尾のコンマは無視されます。

拡張機能の名前は、対応するKeeper Connection Managerパッケージのguacamole(*)パッケージ機能(RPMパッケージのメタデータの一部)によって決まります。

この変数は、TOTP二要素認証のように設定オプションを何も設定せずに使用できる拡張機能に使用したり、関連する変数が誤ってすべて省略されるおそれがある場合でも、必要な環境変数が設定されていることを確認するためのサニティーチェックを強制したりするために主に使用します。拡張機能がこの環境変数内に記載されていなくても、対応する環境変数のいずれかが設定されている場合は利用できます。

EXTENSION_PRIORITY

この変数はオプションで、拡張機能を互いに相対的に読み込む順序を指定します。デフォルトでは、拡張機能はファイル名に基づいてアルファベット順に読み込まれます。

拡張機能の読み込み順序を上書きするには、最初に読み込む必要がある各拡張機能の名前をコンマで区切って記載します。特殊な名前*は、他のすべての拡張機能のプレースホルダーとして使用できます。以下に例を示します。

GUACD_*

guacdのTCP接続情報。

以下の他の環境変数オプションは、guacdへの他の接続機能を設定するために使用できます。

JSON_*

JSON_で始まる環境変数はすべて、通常はguacamole.properties内で指定される暗号化されたJSON認証の設定プロパティに関連します。

暗号化されたJSON認証を使用する場合は、以下の環境変数が必要です。

暗号化されたJSON認証に関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

KSM_*

KSM_*で始まる環境変数はすべて、Keeper Secrets Managerの設定プロパティに関連します。 Keeperボルト連携ガイドをご参照ください。

LDAP_*

LDAP_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるLDAP認証の設定プロパティに関連します。

LDAP認証を使用する場合は、以下の環境変数が必要です(LDAPサーバーが1台の場合)。

LDAPサーバーを複数台使用する場合、またはLDAPサーバー設定をYAML形式で指定する場合は、以下の環境変数が必要です。

LDAP認証に関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

LOG_LEVEL

この変数はオプションで、表示するログメッセージの最低レベルを指定します。有効な値は、詳細度が増す順に「error」、「warn」、「info」、「debug」、「trace」です。

デフォルトのログレベルは、「info」です。

MYSQL_*

MYSQL_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるMySQL認証の設定プロパティに関連します。

MySQLを使用する予定の場合は、Guacamoleで使用するために自動的に初期化されるMySQLデータベースが含まれるkeeper/guacamole-db-mysqlイメージの使用をお勧めします。

MySQL認証を使用する場合は、以下の環境変数が必要です。

MySQL認証に関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

OPENID_*

OPENID_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるOpen ID Connect認証の設定プロパティに関連します。

オプション変数:

POSTGRES_*

POSTGRES_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるPostgreSQL認証の設定プロパティに関連します。

PostgreSQLを使用する予定の場合は、Guacamoleで使用するために自動的に初期化されるPostgreSQLデータベースが含まれるkeeper/guacamole-db-postgresイメージの使用をお勧めします。

PostgreSQL認証を使用する場合は、以下の環境変数が必要です。

PostgreSQL認証に関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

REQUIRE_ACCOUNT_APPROVAL

この変数はオプションであり、ユーザーの認証に使用できるようになる前に、アカウントごとに管理者の明確な承認を必要とする拡張機能を指定します。デフォルトでは、インストールされている認証メソッドはすべて使用できます。

特定の認証メソッドの承認を必要とする場合は、承認を必要とする各拡張機能の名前をコンマで区切ってリストに記載します。以下に例を示します。

アカウントの承認ステータスは、KCMデータベース内にIDを持つユーザーに関してのみ保存および適用できます。使用しているデータベースに応じて、以下のいずれかの環境変数を「true」に設定することで、データベース内にまだ存在しないアカウントに対してこの記憶領域を自動的に作成するようにKCMに要求できます。

SAML_*

SAML_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるSAML認証の設定プロパティに関連します。

SAML認証を使用する場合は、以下の環境変数が必要です。

オプションの環境変数:

SQLSERVER_*

SQLSERVER_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるSQL Server認証の設定プロパティに関連します。

SQL Server認証を使用する場合は、以下の環境変数が必要です。

SQL Server認証に関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

SSL_*

SSL_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるSSL/TLSクライアント認証(スマートカード認証)の設定プロパティに関連します。

SSL/TLSクライアント認証を使用する場合は、以下の環境変数が必要です。

SSL/TLSクライアント認証に関連したその他のプロパティでは、他にも以下のオプションの環境変数を使用できます。

TOTP_*

TOTP_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるTOTP多要素認証の設定プロパティに関連します。

UDS_*

UDS_で始まる環境変数はすべて、通常はguacamole.properties内で指定されるUDS Enterpriseと連携するための設定プロパティに関連します。

USER_MAPPING

この変数はオプションで、/etc/guacamole/user-mapping.xmlファイルの内容を完全に指定します。このファイルを使用すると、MySQL、PostgreSQL、LDAPなどのより複雑な認証メソッドを設定せずに、Guacamoleのデプロイをテストできます。これは、Keeper Connection Managerのインストール手順で説明されている認証メカニズムです。

このファイルの内容は基本的に機密であるため、後述のようにUSE_SHM環境変数が「N」に設定されていない限り、ファイルは単にメモリ(/dev/shm内)に格納されます。

USE_DEFAULT_BRANDING

Keeper Connection Managerには、独自のデフォルトのブランディングが付属しています。独自のカスタムブランディングを使用する場合は、オプションのUSE_DEFAULT_BRANDING環境変数を「N」に設定して、Keeperのブランディングを無効にし、ご利用のブランディング拡張機能との競合を回避する必要があります。

USE_SHM

この変数はオプションであり、既知の機密ファイルをメモリではなくディスクに強制的に保管するために使用できます。保管をディスクに強制するには、USE_SHMを「N」に設定します。

デフォルトでは、keeper/guacamoleイメージは機密性が高いことがわかっているファイルの内容を/dev/shm内に保存するため、これらのファイルはメモリにのみ保存され、機密データがディスクに存続するおそれはありません。このようなファイルは起動中に環境変数からDockerイメージによって生成されるため、Dockerシークレットが使用されている場合に特に有効です。

Dockerシークレット

環境変数でデータを直接渡すのではなく、このイメージでサポートされている任意の環境変数に_FILEサフィックスを付加して、コンテナ内の指定されたファイルからその変数を強制的に読み込ませることができます。たとえば、ファイルから/etc/guacamole/user-mapping.xmlを読み取る操作は以下のとおりです。

docker run --name some-guacamole \
    -e ACCEPT_EULA=Y \
    -e GUACD_HOSTNAME=some-guacd \
    -e USER_MAPPING_FILE=/some/volume/mount/user-mapping.xml \
    -d keeper/guacamole

Dockerシークレットは機密データをコンテナ内の/run/secrets/配下のファイルに格納するため、これを使用して機密データをDockerシークレットから以下のようにして読み込めます。

docker run --name some-guacamole \
    -e ACCEPT_EULA=Y \
    -e GUACD_HOSTNAME=some-guacd \
    -e MYSQL_HOSTNAME=some-mysql \
    -e MYSQL_DATABASE=guacamole_db \
    -e MYSQL_USERNAME_FILE=/run/secrets/mysql-username \
    -e MYSQL_PASSWORD_FILE=/run/secrets/mysql-password \
    -d keeper/guacamole

Last updated