Docker自動インストールおよびDocker Composeインストール
Dockerインストールメソッドを使用してKeeperコネクションマネージャーをインストールした場合、LDAPサポートが予め設定されていませんので、以下の手順でLDAPを有効にします。
sudo ./kcm-setup.run stop
cd /path/to/docker-compose.yml
docker-compose stop
guacamole:
image: keeper/guacamole:2
environment:
ACCEPT_EULA:"Y"
GUACD_HOSTNAME: "guacd"
MYSQL_HOSTNAME: "db"
MYSQL_DATABASE: "guacamole_db"
MYSQL_USERNAME: "guacamole_user"
MYSQL_PASSWORD: "xxxxxxx"
# LDAP Connection
LDAP_HOSTNAME: "localhost"
LDAP_PORT:389
LDAP_ENCRYPTION_METHOD: "none"
# Mapping Guacamole usernames to LDAP DN’s
LDAP_USER_BASE_DN: "ou=people,dc=example,dc=net"
## Optional Settings ##
LDAP_USERNAME_ATTRIBUTE: "sAMAccountName"
# Indirect Username Mapping
LDAP_SEARCH_BIND_DN: "cn=someUser,ou=people,dc=example,dc=net"
LDAP_SEARCH_BIND_PASSWORD: "some_password"
# Mapping Guacamole groups to LDAP DN's
LDAP_GROUP_BASE_DN: "ou=groups,dc=example,dc=net"
LDAP_GROUP_NAME_ATTRIBUTE: "cn"
Guacamoleユーザー名をLDAP DNにマッピング
LDAPを使用してユーザーを認証するには、Guacamoleでユーザー名を対応するLDAP DNに変換する必要があります。LDAPディレクトリの複雑度に応じて、共通のベースDNに単一の属性を追加する方法や、LDAPクエリを使用する方法があります。
ユーザー名マッピングを有効にするには、docker-compose.yml
に以下のオプションを追加します。
# Mapping Guacamole usernames to LDAP DN’s
LDAP_USER_BASE_DN: "ou=people,dc=example,dc=net"
LDAP_USERNAME_ATTRIBUTE: "sAMAccountName"
LDAP_USER_BASE_DN
プロパティによって定義されるベースDNは、LDAPディレクトリ内のすべてのGuacamoleユーザーによって共有される共通ベースを指定する必要があります。一方、ユーザー名を含む属性はLDAP_USERNAME_ATTRIBUTE
によって定義されます。LDAPを使用している場合は、このベースDNは常に必須です。
ユーザー名の直接マッピング
デフォルトでは、GuacamoleはベースDNの前にユーザー名属性を付加することで、ユーザーのDNを直接取得しようとします。たとえば、ユーザーが「someUser
」というユーザー名でログインしようとしているとします。ベースDNが「ou=people, dc=example, dc=net
」で、ユーザー名属性が「uid
」 (デフォルト) の場合、Guacamoleは以下の手順を実行してユーザーを認証します。
「uid
」属性を使用してベースDNの前にユーザー名を付加し、「uid=someUser, ou=people, dc=example, dc=net
」というDNを生成します。
DN「uid=someUser, ou=people, dc=example, dc=net
」とユーザーが設定したパスワードを使用してバインドを試みます。
ユーザー名の間接マッピング
より複雑なケースでは、ユーザーDNがユーザー名属性をベースDNに追加するだけでは直接的に導出できない場合があります。そのような場合、GuacamoleはLDAPクエリを発行してユーザーDNを取得することが可能です。このプロセスには、検索用のDNとパスワードが必要です。それらは LDAP_SEARCH_BIND_DN
と LDAP_SEARCH_BIND_PASSWORD
プロパティで定義されます。Guacamoleはこれらを使用してバインドを行い、クエリを実行します。
# Indirect Username Mapping
LDAP_SEARCH_BIND_DN: "cn=someUser,ou=people,dc=example,dc=net"
LDAP_SEARCH_BIND_PASSWORD: "some_password"
検索DNとパスワードを設定すると、Guacamoleは以下の手順でユーザーを認証します。
検索DNとパスワードを使用して、LDAPディレクトリにバインドします。
ベースDNのサブツリー内で、定義されたユーザー名属性内にユーザーのユーザー名を含むオブジェクトを照会するLDAPクエリを発行します。
該当するオブジェクトが1つだけ見つかった場合は、そのオブジェクトのDNとユーザーが設定したパスワードを使用してバインドを試みます。
GuacamoleグループをLDAP DNにマッピング
Guacamoleでの接続へのアクセスは、LDAPユーザーグループを使って以下の2つの方法で制御できます。
通常、LDAPスキーマの変更を避ける方が望ましいため、LDAPグループをGuacamoleグループにマッピングする方法が推奨されます。この方法を利用するには、関連するLDAPグループが存在するベースDNを定義し、Guacamoleがグループの固有の名前を判断するために使用するLDAP属性を設定する必要があります。
# Mapping Guacamole groups to LDAP DN's
LDAP_GROUP_BASE_DN: "ou=groups,dc=example,dc=net"
LDAP_GROUP_NAME_ATTRIBUTE: "cn"
接続がLDAP内にある「guacConfigGroup
」オブジェクトとして保存されており、LDAPグループを使ってアクセスを制御したい場合は、標準の「seeAlso
」属性を使用します。この場合、LDAP_GROUP_BASE_DN
プロパティが必要となります。
一方、接続がLDAPの外部 (例: データベース) に保存されていて、LDAPグループを使ってアクセスを制御したい場合は、LDAP_GROUP_BASE_DN
とLDAP_GROUP_NAME_ATTRIBUTE
の両方が必要となります。
LDAP_GROUP_BASE_DN: ユーザーのグループメンバーシップを照会するために必要です。
LDAP_GROUP_NAME_ATTRIBUTE: Guacamoleがグループを固有に識別するために使用します。この属性がなければ、グループ名を正しく認識できません。
sudo ./kcm-setup.run upgrade
sudo ./kcm-setup.run start
sudo su
docker-compose up -d