DockerおよびDocker Composeの自動インストールメソッド
Dockerインストールメソッドを使用してKeeper Connection Managerをインストールした場合、LDAPサポートは事前設定されません。LDAPを有効化する手順は以下のとおりです。
sudo ./kcm-setup.run stop
cd /path/to/docker-compose.yml
docker-compose stop
簡単なdockerメソッドまたはカスタムdockerメソッドを使用するには、docker-compose.ymlファイルを修正してLDAPサポートを追加する必要があります。rootとしてdocker-compose.yml
ファイルを編集し、「guacamole
」セクションを見つけます。
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は以下の手順を実行してユーザーを認証します。
1. 「uid」属性を使用してベースDNの前にユーザー名を付加し、以下のDNを生成します。
「uid=someUser, ou=people, dc=example, dc=net」。
2. DN「uid=someUser, ou=people, dc=example, dc=net」とユーザーが設定したパスワードを使用してバインドを試みます。
3. バインドの試行が成功すると、認証は成功します。
**ユーザー名の間接マッピング**
ユーザー名属性を付加してもユーザー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は以下の手順を実行してユーザーを認証します。
1. 検索DNとパスワードを使用して、LDAPディレクトリにバインドします。
2. ベースDNのサブツリー内で、定義されたユーザー名属性内にユーザーのユーザー名を含むオブジェクトを照会するLDAPクエリを発行します。
3. そのようなオブジェクトが正確に1つ見つかった場合は、そのオブジェクトのDNとユーザーが設定したパスワードを使用してバインドを試みます。
4. バインドの試行が成功すると、認証は成功します。
</details>
<details>
<summary>GuacamoleグループをLDAP DNにマッピング</summary>
Guacamole内の接続へのアクセスは、以下の2つのメカニズムのいずれかを使用して、LDAPユーザーグループによって決定される場合があります。
1. [スキーマの変更を使用してLDAP内で直接接続を定義](storing-connection-data-within-ldap.md)し、「seeAlso」属性を使用してグループアクセスを決定します。
2. LDAPグループをGuacamoleグループにマッピングし、[データベースを利用してアクセスを決定](using-ldap-with-a-database.md)します。
一般的には、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"```
接続が「guacConfigGroup」オブジェクトを使用してLDAP内に保存されている場合に、これらの接続へのアクセスをLDAPグループを使用して制御するには、実行に標準の「seeAlso」属性を使用し、LDAP_GROUP_BASE_DNプロパティが必要です。
接続がLDAPの外部に(データベース内など)保存されている場合に、LDAPグループを使用してアクセスを制御するには、LDAP_GROUP_BASE_DNとLDAP_GROUP_NAME_ATTRIBUTEの両方が必要になります。ユーザーのグループメンバーシップはベースDNなしでは照会できず、Guacamoleの他の部分で使用される、グループを示す一意の名前は名前属性なしでは特定できません。
sudo ./kcm-setup.run upgrade
sudo ./kcm-setup.run start
sudo su
docker-compose up -d
LDAPサーバーでカスタムルート証明書を使用する必要がある場合は、/etc/pki/ca-trust/extracted/java/cacertsファイルをDocker Composeでボリュームマウントして、guacamole dockerコンテナの証明書を上書きしてください。