GUAC-1467: Document configuring the Guacamole Docker image for LDAP.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-manual/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-manual/commit/2c8cab36 Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-manual/tree/2c8cab36 Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-manual/diff/2c8cab36 Branch: refs/heads/master Commit: 2c8cab3653b394da66e7214700d35de783166945 Parents: 717c8c3 Author: Michael Jumper <[email protected]> Authored: Tue Feb 9 22:35:19 2016 -0800 Committer: Michael Jumper <[email protected]> Committed: Tue Feb 9 22:35:19 2016 -0800 ---------------------------------------------------------------------- src/chapters/docker.xml | 194 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-manual/blob/2c8cab36/src/chapters/docker.xml ---------------------------------------------------------------------- diff --git a/src/chapters/docker.xml b/src/chapters/docker.xml index bcc8d12..ff33162 100644 --- a/src/chapters/docker.xml +++ b/src/chapters/docker.xml @@ -581,5 +581,199 @@ />.</para> </section> </section> + <section xml:id="guacamole-docker-ldap"> + <title>Deploying Guacamole with LDAP authentication</title> + <para>Before deploying Guacamole with the intent of using LDAP for authentication, + please ensure that you have each of the following already prepared:</para> + <orderedlist> + <listitem> + <para>A Docker container running the <systemitem>glyptodon/guacd</systemitem> + image. Guacamole needs <package>guacd</package> in order to function, and + the Guacamole Docker image depends on a linked Docker container running + <package>guacd</package>.</para> + </listitem> + <listitem> + <para>Network access to a working LDAP server.</para> + </listitem> + </orderedlist> + <section xml:id="deploying-guacamole-docker-ldap"> + <title>Deploying Guacamole</title> + <para>Linking Guacamole to your LDAP directory will require additional configuration + parameters specified via environment variables. These variables collectively + describe how Guacamole will connect to LDAP:</para> + <informaltable frame="all"> + <tgroup cols="2"> + <colspec colname="c1" colnum="1" colwidth="1*"/> + <colspec colname="c2" colnum="2" colwidth="4*"/> + <thead> + <row> + <entry>Variable</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><envar>LDAP_HOSTNAME</envar></entry> + <entry> + <para>The hostname or IP address of your LDAP server.</para> + </entry> + </row> + <row> + <entry><envar>LDAP_USER_BASE_DN</envar></entry> + <entry> + <para>The base of the DN for all Guacamole users. All Guacamole + users that will be authenticating against LDAP must be + descendents of this base DN.</para> + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + <para>Additional optional environment variables may be used to configure the details + of your LDAP directory hierarchy, encryption, or to enable more flexible + searching for user accounts:</para> + <informaltable frame="all"> + <tgroup cols="2"> + <colspec colname="c1" colnum="1" colwidth="1*"/> + <colspec colname="c2" colnum="2" colwidth="2.25*"/> + <thead> + <row> + <entry>Variable</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry><envar>LDAP_PORT</envar></entry> + <entry> + <para>The port your LDAP server listens on. By default, this + will be 389 for unencrypted LDAP or LDAP using STARTTLS, and + 636 for LDAP over SSL (LDAPS).</para> + </entry> + </row> + <row> + <entry><envar>LDAP_ENCRYPTION_METHOD</envar></entry> + <entry> + <para>The encryption mechanism that Guacamole should use when + communicating with your LDAP server. Legal values are "none" + for unencrypted LDAP, "ssl" for LDAP over SSL/TLS (commonly + known as LDAPS), or "starttls" for STARTTLS. If omitted, + encryption will not be used.</para> + </entry> + </row> + <row> + <entry><envar>LDAP_GROUP_BASE_DN</envar></entry> + <entry> + <para>The base of the DN for all groups that may be referenced + within Guacamole configurations using the standard + <property>seeAlso</property> attribute. All groups which + will be used to control access to Guacamole configurations + must be descendents of this base DN. <emphasis>If this + variable is omitted, the <property>seeAlso</property> + attribute will have no effect on Guacamole + configurations.</emphasis></para> + </entry> + </row> + <row> + <entry><envar>LDAP_SEARCH_BIND_DN</envar></entry> + <entry> + <para>The DN (Distinguished Name) of the user to bind as when + authenticating users that are attempting to log in. If + specified, Guacamole will query the LDAP directory to + determine the DN of each user that logs in. If omitted, each + user's DN will be derived directly using the base DN + specified with <envar>LDAP_USER_BASE_DN</envar>.</para> + </entry> + </row> + <row> + <entry><envar>LDAP_SEARCH_BIND_PASSWORD</envar></entry> + <entry> + <para>The password to provide to the LDAP server when binding as + <envar>LDAP_SEARCH_BIND_DN</envar> to authenticate other + users. This variable is only used if + <envar>LDAP_SEARCH_BIND_DN</envar> is specified. If + omitted, but <envar>LDAP_SEARCH_BIND_DN</envar> is + specified, Guacamole will attempt to bind with the LDAP + server without a password.</para> + </entry> + </row> + <row> + <entry><envar>LDAP_USERNAME_ATTRIBUTE</envar></entry> + <entry> + <para>The attribute or attributes which contain the username + within all Guacamole user objects in the LDAP directory. + Usually, and by default, this will simply be + "<property>uid</property>". If your LDAP directory + contains users whose usernames are dictated by different + attributes, multiple attributes can be specified here, + separated by commas, but beware: <emphasis>doing so requires + that a search DN be provided with + <envar>LDAP_SEARCH_BIND_DN</envar></emphasis>.</para> + </entry> + </row> + <row> + <entry><envar>LDAP_CONFIG_BASE_DN</envar></entry> + <entry> + <para>The base of the DN for all Guacamole configurations. If + omitted, the configurations of Guacamole connections will + simply not be queried from the LDAP directory, and you will + need to store them elsewhere, such as within a MySQL or + PostgreSQL database.</para> + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + <para>Once your <package>guacd</package> container is ready, and the values of the + above variables are known, Guacamole can be deployed through Docker:</para> + <informalexample> + <screen><prompt>$</prompt> <command>docker</command> run --name <replaceable>some-guacamole</replaceable> --link <replaceable>some-guacd</replaceable>:guacd \ + -e LDAP_HOSTNAME=<replaceable>172.17.42.1</replaceable> \ + -e LDAP_USER_BASE_DN=<replaceable>ou=people,dc=example,dc=com</replaceable> \ + -e LDAP_CONFIG_BASE_DN=<replaceable>ou=connections,dc=example,dc=com</replaceable> \ + -d -p 8080:8080 glyptodon/guacamole</screen> + </informalexample> + <para>As documented in <xref xmlns:xlink="http://www.w3.org/1999/xlink" + linkend="ldap-auth"/>, Guacamole does support combining LDAP with a MySQL or + PostgreSQL database, and this can be configured with the Guacamole Docker image, + as well. By providing the required environment variables for both systems, + Guacamole will automatically be configured to use both when the Docker image + starts:</para> + <informalexample> + <screen><prompt>$</prompt> <command>docker</command> run --name <replaceable>some-guacamole</replaceable> --link <replaceable>some-guacd</replaceable>:guacd \ + -e LDAP_HOSTNAME=<replaceable>172.17.42.1</replaceable> \ + -e LDAP_USER_BASE_DN=<replaceable>ou=people,dc=example,dc=com</replaceable> \ + -e LDAP_CONFIG_BASE_DN=<replaceable>ou=connections,dc=example,dc=com</replaceable> \ + <emphasis>-e MYSQL_HOSTNAME=<replaceable>172.17.42.1</replaceable> \ + -e MYSQL_DATABASE=<replaceable>guacamole_db</replaceable> \ + -e MYSQL_USER=<replaceable>guacamole_user</replaceable> \ + -e MYSQL_PASSWORD=<replaceable>some_password</replaceable> \</emphasis> + -d -p 8080:8080 glyptodon/guacamole</screen> + </informalexample> + <para>If any required environment variables are omitted, you will receive an error + message in the logs, and the image will stop. You will then need to recreate the + container with the proper variables specified.</para> + </section> + <section xml:id="verifying-guacamole-auth-ldap"> + <title>Verifying the Guacamole install</title> + <para>Now that the Guacamole image is running, Guacamole should be accessible at + <uri>http://<replaceable>HOSTNAME</replaceable>:8080/guacamole/</uri>, + where <replaceable>HOSTNAME</replaceable> is the hostname or address of the + machine hosting Docker.</para> + <para>If you cannot access Guacamole, check the logs using Docker to determine if + something is wrong. Configuration parameters may have been given incorrectly, or + the database may be improperly initialized:</para> + <informalexample> + <screen><prompt>$</prompt> <command>docker</command> logs <replaceable>some-guacamole</replaceable></screen> + </informalexample> + <para>If Guacamole has been successfully installed, you will see the Guacamole login + screen, and should be able to login using an LDAP account beneath + <envar>LDAP_USER_BASE_DN</envar>. You will be able to access any connections + defined within <envar>LDAP_CONFIG_BASE_DN</envar> for which your user has + access. If a MySQL or PostgreSQL database has also been configured, and your + user has an account within that database, you will also be able to access your + connections from that database.</para> + </section> + </section> </section> </chapter>
