Improvement for Integrate Identity with LDAP
This fix imporve Integrate Identity with LDAP section in OpenStack Cloud Administrator Guide - current. Update more additionnal configuration attributes that can be used. Seprate basic LDAP configuration, Identity backend configuration and Assignment backend configuration into three different categories. Categorize configuration options by it's character. Change-Id: I5640e9690aed962210582684e85d4e172bd265ff Closes-bug: #1368082
This commit is contained in:
parent
604fb3565b
commit
7bdc679023
@ -4,57 +4,137 @@
|
|||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
version="5.0"
|
version="5.0"
|
||||||
xml:id="configuring-keystone-for-ldap-backend-assignments">
|
xml:id="configuring-keystone-for-ldap-backend-assignments">
|
||||||
<title>Separate role authorization and user authentication</title>
|
<title>Integrate assignment back end with LDAP</title>
|
||||||
<para>When you configure the Identity service to use LDAP back
|
<para>When you configure the OpenStack Identity service to use LDAP
|
||||||
ends, you can split authentication and authorization using the
|
servers, you can split authentication and authorization using the
|
||||||
<emphasis>Assignments</emphasis> feature.</para>
|
<emphasis>assignment</emphasis> feature. Integrating the
|
||||||
<para>The Assignments feature enables administrators to manage
|
assignment back end with LDAP allows administrators to use
|
||||||
project role authorization using the Identity service SQL
|
projects (tenant), roles, domains, and role assignments
|
||||||
database, while still providing user authentication through the
|
in LDAP.</para>
|
||||||
LDAP directory.</para>
|
<note>
|
||||||
<para>To configure this:</para>
|
<para>Using LDAP as an assignment back end is not recommended.</para>
|
||||||
|
</note>
|
||||||
|
<note>
|
||||||
|
<para>The OpenStack Identity service does not support domain-specific
|
||||||
|
assignment back ends.</para>
|
||||||
|
</note>
|
||||||
|
<important>
|
||||||
|
<para>For OpenStack Identity assignments to access LDAP servers, you
|
||||||
|
must define the destination LDAP server in
|
||||||
|
the <filename>keystone.conf</filename> file. For more information,
|
||||||
|
see <xref linkend="configuring-keystone-for-ldap-backend"/>.</para>
|
||||||
|
</important>
|
||||||
<procedure>
|
<procedure>
|
||||||
<title>Separating role authorization and user authentication
|
<title>Integrating assignment back ends with LDAP</title>
|
||||||
through Assignments</title>
|
<step>
|
||||||
<para>Modify the <filename>/etc/keystone/keystone.conf</filename>
|
<para>Enable the assignment driver. In the
|
||||||
configuration file for a single LDAP server, or
|
<literal>[assignment]</literal> section, set the
|
||||||
<filename>etc/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
<literal>driver</literal> configuration key to
|
||||||
files for multiple LDAP back ends, performing the following actions:</para>
|
<literal>keystone.assignment.backends.sql.Assignment</literal>:</para>
|
||||||
<step>
|
<programlisting language="ini">[assignment]
|
||||||
<para>Configure the Identity service to authenticate users
|
#driver = keystone.assignment.backends.sql.Assignment
|
||||||
through the LDAP driver. In the <literal>[identity]</literal> section, set
|
driver = keystone.assignment.backends.ldap.Assignment</programlisting>
|
||||||
the <literal>driver</literal> configuration key to
|
</step>
|
||||||
<literal>keystone.identity.backends.ldap.Identity</literal>:
|
<step>
|
||||||
</para>
|
<para>Create the organizational units (OU) in the LDAP
|
||||||
<programlisting>[identity]
|
directory, and define their corresponding location in
|
||||||
driver = keystone.identity.backends.ldap.Identity</programlisting>
|
the <filename>keystone.conf</filename> file:</para>
|
||||||
</step>
|
<programlisting language="ini">[ldap]
|
||||||
<step><para>Enable the Assignment driver. In the
|
role_tree_dn =
|
||||||
<literal>[assignment]</literal> section, set the <literal>driver</literal>
|
role_objectclass = inetOrgPerson
|
||||||
configuration key to <literal>keystone.assignment.backends.sql.Assignment</literal>:
|
|
||||||
</para>
|
project_tree_dn = ou=Groups,dc=example,dc=org
|
||||||
<programlisting>[assignment]
|
project_objectclass = groupOfNames</programlisting>
|
||||||
driver = keystone.assignment.backends.sql.Assignment</programlisting>
|
<note>
|
||||||
</step>
|
<para>These schema attributes are extensible for
|
||||||
|
compatibility with various schemas. For example,
|
||||||
|
this entry maps to the
|
||||||
|
<systemitem>groupOfNames</systemitem> attribute in
|
||||||
|
Active Directory:</para>
|
||||||
|
<programlisting language="ini">project_objectclass = groupOfNames</programlisting>
|
||||||
|
</note>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>A read-only implementation is recommended for LDAP
|
||||||
|
integration. These permissions are applied to object
|
||||||
|
types in the <filename>keystone.conf</filename>
|
||||||
|
file:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
role_allow_create = False
|
||||||
|
role_allow_update = False
|
||||||
|
role_allow_delete = False
|
||||||
|
|
||||||
|
project_allow_create = False
|
||||||
|
project_allow_update = False
|
||||||
|
project_allow_delete = False</programlisting>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Restart the OpenStack Identity service:</para>
|
||||||
|
<screen><prompt>#</prompt> <userinput>service keystone restart</userinput></screen>
|
||||||
|
<warning><para>During service restart, authentication and
|
||||||
|
authorization are unavailable.</para></warning>
|
||||||
|
</step>
|
||||||
</procedure>
|
</procedure>
|
||||||
<para os="rhel;centos;fedora;opensuse;sles">On
|
<formalpara>
|
||||||
distributions that include
|
<title>Additional LDAP integration settings</title>
|
||||||
<application>openstack-config</application>, you can
|
<para>Set these options in the
|
||||||
configure both drivers by running the following commands.</para>
|
<filename>/etc/keystone/keystone.conf</filename>
|
||||||
<itemizedlist>
|
file for a single LDAP server, or
|
||||||
<listitem>
|
<filename>/etc/keystone/domains/keystone.
|
||||||
<para>For a single LDAP server:</para>
|
<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
||||||
<screen os="rhel;centos;fedora;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/keystone/keystone.conf \
|
files for multiple back ends.</para>
|
||||||
identity driver keystone.identity.backends.ldap.Identity</userinput>
|
</formalpara>
|
||||||
<prompt>#</prompt> <userinput>openstack-config --set /etc/keystone/keystone.conf \
|
<variablelist>
|
||||||
assignment driver keystone.assignment.backends.sql.Assignment</userinput></screen>
|
<varlistentry>
|
||||||
</listitem>
|
<term>Filters</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>For multiple LDAP back ends:</para>
|
<para>Use filters to control the scope of data
|
||||||
<screen os="rhel;centos;fedora;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/keystone/keystone.conf \
|
presented through LDAP.</para>
|
||||||
identity driver keystone.identity.backends.ldap.Identity</userinput>
|
<programlisting language="ini">[ldap]
|
||||||
<prompt>#</prompt> <userinput>openstack-config --set etc/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf \
|
project_filter = (member=cn=openstack-user,ou=workgroups,dc=example,dc=org)
|
||||||
assignment driver keystone.assignment.backends.sql.Assignment</userinput></screen>
|
role_filter = </programlisting>
|
||||||
</listitem>
|
<warning><para>Filtering method</para></warning>
|
||||||
</itemizedlist>
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Assignment attribute mapping</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Mask account status values (include any additional
|
||||||
|
attribute mappings) for compatibility with various
|
||||||
|
directory services. Superfluous accounts are filtered with
|
||||||
|
<systemitem>user_filter</systemitem>.</para>
|
||||||
|
<para>Setting attribute ignore to list of attributes
|
||||||
|
stripped off on update.</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
role_id_attribute = cn
|
||||||
|
role_name_attribute = ou
|
||||||
|
role_member_attribute = roleOccupant
|
||||||
|
role_additional_attribute_mapping =
|
||||||
|
role_attribute_ignore =
|
||||||
|
|
||||||
|
project_id_attribute = cn
|
||||||
|
project_name_attribute = ou
|
||||||
|
project_member_attribute = member
|
||||||
|
project_desc_attribute = description
|
||||||
|
project_enabled_attribute = enabled
|
||||||
|
project_domain_id_attribute = businessCategory
|
||||||
|
project_additional_attribute_mapping =
|
||||||
|
project_attribute_ignore =</programlisting>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Enabled emulation</term>
|
||||||
|
<listitem>
|
||||||
|
<para>An alternative method to determine if a project is
|
||||||
|
enabled or not is to check if that project is a
|
||||||
|
member of the emulation group.</para>
|
||||||
|
<para>Use DN of the group entry to hold enabled
|
||||||
|
projects when using enabled emulation.</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
project_enabled_emulation = false
|
||||||
|
project_enabled_emulation_dn = false</programlisting>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
232
doc/common/section_keystone_config_ldap-identity.xml
Normal file
232
doc/common/section_keystone_config_ldap-identity.xml
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="5.0"
|
||||||
|
xml:id="configuring-keystone-for-ldap-backend-identity">
|
||||||
|
|
||||||
|
<title>Integrate identity back end with LDAP</title>
|
||||||
|
<para>The identity back end contains information for users, groups, and
|
||||||
|
group member lists. Integrating the identity back end with LDAP allows
|
||||||
|
administrators to use users and groups in LDAP.</para>
|
||||||
|
<important>
|
||||||
|
<para>For OpenStack Identity Service to access LDAP servers, you must
|
||||||
|
define the destination LDAP server in the
|
||||||
|
<filename>keystone.conf</filename> file. For more information, see
|
||||||
|
<xref linkend="configuring-keystone-for-ldap-backend"/>.</para>
|
||||||
|
</important>
|
||||||
|
<procedure>
|
||||||
|
<title>Integrating an identity back end with LDAP</title>
|
||||||
|
<step>
|
||||||
|
<para>Enable the LDAP identity driver in the
|
||||||
|
<filename>keystone.conf</filename> file. This allows LDAP as
|
||||||
|
an identity back end:</para>
|
||||||
|
<programlisting language="ini">[identity]
|
||||||
|
#driver = keystone.identity.backends.sql.Identity
|
||||||
|
driver = keystone.identity.backends.ldap.Identity</programlisting>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Create the organizational units (OU) in the LDAP
|
||||||
|
directory, and define the corresponding location in
|
||||||
|
the <filename>keystone.conf</filename> file:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_tree_dn = ou=Users,dc=example,dc=org
|
||||||
|
user_objectclass = inetOrgPerson
|
||||||
|
|
||||||
|
group_tree_dn = ou=Groups,dc=example,dc=org
|
||||||
|
group_objectclass = groupOfNames</programlisting>
|
||||||
|
<note>
|
||||||
|
<para>These schema attributes are extensible for
|
||||||
|
compatibility with various schemas. For example,
|
||||||
|
this entry maps to the
|
||||||
|
<systemitem>person</systemitem> attribute in
|
||||||
|
Active Directory:</para>
|
||||||
|
<programlisting language="ini">user_objectclass = person</programlisting>
|
||||||
|
</note>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>A read-only implementation is recommended for LDAP
|
||||||
|
integration. These permissions are applied to object
|
||||||
|
types in the <filename>keystone.conf</filename>
|
||||||
|
file:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_allow_create = False
|
||||||
|
user_allow_update = False
|
||||||
|
user_allow_delete = False
|
||||||
|
|
||||||
|
group_allow_create = False
|
||||||
|
group_allow_update = False
|
||||||
|
group_allow_delete = False</programlisting>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Restart the OpenStack Identity service:</para>
|
||||||
|
<screen><prompt>#</prompt> <userinput>service keystone restart</userinput></screen>
|
||||||
|
<warning><para>During service restart, authentication and
|
||||||
|
authorization are unavailable.</para></warning>
|
||||||
|
</step>
|
||||||
|
</procedure>
|
||||||
|
<procedure>
|
||||||
|
<title>Integrating identity with multiple back ends</title>
|
||||||
|
<step>
|
||||||
|
<para>Set the following options in the
|
||||||
|
<filename>/etc/keystone/keystone.conf</filename> file:</para>
|
||||||
|
<substeps>
|
||||||
|
<step>
|
||||||
|
<para>Enable the LDAP driver:</para>
|
||||||
|
<programlisting language="ini">[identity]
|
||||||
|
#driver = keystone.identity.backends.sql.Identity
|
||||||
|
driver = keystone.identity.backends.ldap.Identity</programlisting>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Enable domain-specific drivers:</para>
|
||||||
|
<programlisting language="ini">[identity]
|
||||||
|
domain_specific_drivers_enabled = True
|
||||||
|
domain_config_dir = /etc/keystone/domains</programlisting>
|
||||||
|
</step>
|
||||||
|
</substeps>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Restart the service:</para>
|
||||||
|
<screen><prompt>#</prompt> service keystone restart</screen>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>List the domains using the dashboard, or the OpenStackClient
|
||||||
|
CLI. Refer to the <link xlink:href="http://docs.openstack.org/developer/python-openstackclient/command-list.html">Command List</link>
|
||||||
|
for a list of OpenStackClient commands.</para>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Create domains using OpenStack dashboard, or the
|
||||||
|
OpenStackClient CLI.</para>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>For each domain, create a domain-specific configuration
|
||||||
|
file in the <filename>/etc/keystone/domains</filename> directory.
|
||||||
|
Use the file naming convention <filename>keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>,
|
||||||
|
where <replaceable>DOMAIN_NAME</replaceable>
|
||||||
|
is the domain name assigned in the previous step.</para>
|
||||||
|
<note><para>The options set in the
|
||||||
|
<filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
||||||
|
file will override options in the <filename>/etc/keystone/keystone.conf</filename>
|
||||||
|
file.</para></note>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Define the destination LDAP server in the
|
||||||
|
<filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename> file. For example:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
url = ldap://localhost
|
||||||
|
user = dc=Manager,dc=example,dc=org
|
||||||
|
password = samplepassword
|
||||||
|
suffix = dc=example,dc=org
|
||||||
|
use_dumb_member = False
|
||||||
|
allow_subtree_delete = False</programlisting>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Create the organizational units (OU) in the LDAP
|
||||||
|
directories, and define their corresponding locations in
|
||||||
|
the <filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
||||||
|
file. For example:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_tree_dn = ou=Users,dc=example,dc=org
|
||||||
|
user_objectclass = inetOrgPerson
|
||||||
|
|
||||||
|
group_tree_dn = ou=Groups,dc=example,dc=org
|
||||||
|
group_objectclass = groupOfNames</programlisting>
|
||||||
|
<note>
|
||||||
|
<para>These schema attributes are extensible for
|
||||||
|
compatibility with various schemas. For example,
|
||||||
|
this entry maps to the <systemitem>person</systemitem>
|
||||||
|
attribute in Active Directory:</para>
|
||||||
|
<programlisting language="ini">user_objectclass = person</programlisting>
|
||||||
|
</note>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>A read-only implementation is recommended for LDAP
|
||||||
|
integration. These permissions are applied to object
|
||||||
|
types in the <filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
||||||
|
file:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_allow_create = False
|
||||||
|
user_allow_update = False
|
||||||
|
user_allow_delete = False
|
||||||
|
|
||||||
|
group_allow_create = False
|
||||||
|
group_allow_update = False
|
||||||
|
group_allow_delete = False</programlisting>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<para>Restart the OpenStack Identity service:</para>
|
||||||
|
<screen><prompt>#</prompt> <userinput>service keystone restart</userinput></screen>
|
||||||
|
<warning><para>During service restart, authentication and
|
||||||
|
authorization are unavailable.</para></warning>
|
||||||
|
</step>
|
||||||
|
</procedure>
|
||||||
|
<formalpara>
|
||||||
|
<title>Additional LDAP integration settings</title>
|
||||||
|
<para>Set these options in the
|
||||||
|
<filename>/etc/keystone/keystone.conf</filename>
|
||||||
|
file for a single LDAP server, or
|
||||||
|
<filename>/etc/keystone/domains/keystone.
|
||||||
|
<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
||||||
|
files for multiple back ends.</para>
|
||||||
|
</formalpara>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Filters</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Use filters to control the scope of data
|
||||||
|
presented through LDAP.</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_filter = (memberof=cn=openstack-users,ou=workgroups,dc=example,dc=org)
|
||||||
|
group_filter = </programlisting>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Identity attribute mapping</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Mask account status values (include any additional
|
||||||
|
attribute mappings) for compatibility
|
||||||
|
with various directory services. Superfluous
|
||||||
|
accounts are filtered with
|
||||||
|
<systemitem>user_filter</systemitem>.</para>
|
||||||
|
<para>Setting attribute ignore to list of attributes
|
||||||
|
stripped off on update.</para>
|
||||||
|
<para>For example, you can mask Active Directory
|
||||||
|
account status attributes in the
|
||||||
|
<filename>keystone.conf</filename>
|
||||||
|
file:</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_id_attribute = cn
|
||||||
|
user_name_attribute = sn
|
||||||
|
user_mail_attribute = mail
|
||||||
|
user_pass_attribute = userPassword
|
||||||
|
user_enabled_attribute = userAccountControl
|
||||||
|
user_enabled_mask = 2
|
||||||
|
user_enabled_invert = false
|
||||||
|
user_enabled_default = 51
|
||||||
|
user_default_project_id_attribute =
|
||||||
|
user_attribute_ignore = default_project_id,tenants
|
||||||
|
user_additional_attribute_mapping =
|
||||||
|
|
||||||
|
group_id_attribute = cn
|
||||||
|
group_name_attribute = ou
|
||||||
|
group_member_attribute = member
|
||||||
|
group_desc_attribute = description
|
||||||
|
group_attribute_ignore =
|
||||||
|
group_additional_attribute_mapping =</programlisting>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Enabled emulation</term>
|
||||||
|
<listitem>
|
||||||
|
<para>An alternative method to determine if a user is
|
||||||
|
enabled or not is by checking if that user is a
|
||||||
|
member of the emulation group.</para>
|
||||||
|
<para>Use DN of the group entry to hold enabled
|
||||||
|
user when using enabled emulation.</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
user_enabled_emulation = false
|
||||||
|
user_enabled_emulation_dn = false</programlisting>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</section>
|
@ -5,189 +5,59 @@
|
|||||||
version="5.0"
|
version="5.0"
|
||||||
xml:id="configuring-keystone-for-ldap-backend">
|
xml:id="configuring-keystone-for-ldap-backend">
|
||||||
<title>Integrate Identity with LDAP</title>
|
<title>Integrate Identity with LDAP</title>
|
||||||
<para>Identity Service supports integration with existing LDAP
|
<para>The Openstack Identity Service supports integration with
|
||||||
directories for authentication and authorization
|
existing LDAP directories for authentication and authorization
|
||||||
services.</para>
|
services.</para>
|
||||||
|
<para>When the Openstack Identity service is configured to use LDAP
|
||||||
|
back ends, you can split authentication (using the
|
||||||
|
<emphasis>identity</emphasis> feature) and
|
||||||
|
authorization (using the
|
||||||
|
<emphasis>assignment</emphasis> feature).</para>
|
||||||
|
<para>The identity feature enables administrators to manage
|
||||||
|
users and groups by each domain or the Openstack Identity Service entirely.</para>
|
||||||
|
<para>The Assignments feature enables administrators to manage
|
||||||
|
project role authorization using the Openstack Identity service SQL
|
||||||
|
database, while providing user authentication through the
|
||||||
|
LDAP directory.</para>
|
||||||
<important os="rhel;fedora;centos">
|
<important os="rhel;fedora;centos">
|
||||||
<para>For OpenStack Identity to access LDAP servers, you must
|
<para>For OpenStack Identity service to access LDAP servers, you must
|
||||||
enable the <option>authlogin_nsswitch_use_ldap</option> boolean
|
enable the <option>authlogin_nsswitch_use_ldap</option> boolean
|
||||||
value for SELinux on the Identity server. To enable and
|
value for SELinux on the Openstack Identity server. To enable and
|
||||||
make the option persistent across reboots:</para>
|
make the option persistent across reboots:</para>
|
||||||
<screen><prompt>#</prompt> <userinput>setsebool -P authlogin_nsswitch_use_ldap</userinput></screen>
|
<screen><prompt>#</prompt> <userinput>setsebool -P authlogin_nsswitch_use_ldap</userinput></screen>
|
||||||
</important>
|
</important>
|
||||||
|
<para>Identity configuration is split into two separate back ends: identity
|
||||||
|
(back end for users and groups) and assignments (back end for domains,
|
||||||
|
projects, roles, role assignments). To configure identity, set options in the
|
||||||
|
<filename>/etc/keystone/keystone.conf</filename> file.
|
||||||
|
See <xref linkend="configuring-keystone-for-ldap-backend-identity"/>
|
||||||
|
for identity back end configuration examples and
|
||||||
|
<xref linkend="configuring-keystone-for-ldap-backend-assignments"/>
|
||||||
|
for assignment back end configuration examples.
|
||||||
|
Modify these examples as needed.</para>
|
||||||
<note>
|
<note>
|
||||||
<para>You can integrate Identity with a single LDAP
|
<para>Multiple back ends are supported. You can integrate the Openstack Identity service
|
||||||
server, or multiple back ends using domain-specific configuration files.</para>
|
with a single LDAP server (configure both identity and assignments to
|
||||||
|
LDAP, or set identity and assignments back end with SQL or LDAP),
|
||||||
|
or multiple back ends using domain-specific configuration files.</para>
|
||||||
</note>
|
</note>
|
||||||
<procedure>
|
<formalpara>
|
||||||
<title>To integrate Identity with a LDAP server</title>
|
<title>To define the destination LDAP server</title>
|
||||||
<step>
|
|
||||||
<para>Enable the LDAP driver in the
|
|
||||||
<filename>/etc/keystone/keystone.conf</filename> file:</para>
|
|
||||||
<programlisting language="ini">[identity]
|
|
||||||
#driver = keystone.identity.backends.sql.Identity
|
|
||||||
driver = keystone.identity.backends.ldap.Identity</programlisting>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Define the destination LDAP server in the
|
|
||||||
<filename>/etc/keystone/keystone.conf</filename> file:</para>
|
|
||||||
<programlisting language="ini">[ldap]
|
|
||||||
url = ldap://localhost
|
|
||||||
user = dc=Manager,dc=example,dc=org
|
|
||||||
password = samplepassword
|
|
||||||
suffix = dc=example,dc=org
|
|
||||||
use_dumb_member = False
|
|
||||||
allow_subtree_delete = False</programlisting>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Create the organizational units (OU) in the LDAP
|
|
||||||
directory, and define their corresponding location in
|
|
||||||
the <filename>keystone.conf</filename> file:</para>
|
|
||||||
<programlisting language="ini">[ldap]
|
|
||||||
user_tree_dn = ou=Users,dc=example,dc=org
|
|
||||||
user_objectclass = inetOrgPerson
|
|
||||||
|
|
||||||
tenant_tree_dn = ou=Groups,dc=example,dc=org
|
|
||||||
tenant_objectclass = groupOfNames
|
|
||||||
|
|
||||||
role_tree_dn = ou=Roles,dc=example,dc=org
|
|
||||||
role_objectclass = organizationalRole</programlisting>
|
|
||||||
<note>
|
|
||||||
<para>These schema attributes are extensible for
|
|
||||||
compatibility with various schemas. For example,
|
|
||||||
this entry maps to the
|
|
||||||
<systemitem>person</systemitem> attribute in
|
|
||||||
Active Directory:</para>
|
|
||||||
<programlisting language="ini">user_objectclass = person</programlisting>
|
|
||||||
</note>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>A read-only implementation is recommended for LDAP
|
|
||||||
integration. These permissions are applied to object
|
|
||||||
types in the <filename>keystone.conf</filename>
|
|
||||||
file:</para>
|
|
||||||
<programlisting language="ini">[ldap]
|
|
||||||
user_allow_create = False
|
|
||||||
user_allow_update = False
|
|
||||||
user_allow_delete = False
|
|
||||||
|
|
||||||
tenant_allow_create = False
|
|
||||||
tenant_allow_update = False
|
|
||||||
tenant_allow_delete = False
|
|
||||||
|
|
||||||
role_allow_create = False
|
|
||||||
role_allow_update = False
|
|
||||||
role_allow_delete = False</programlisting>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Restart the Identity service:</para>
|
|
||||||
<screen><prompt>#</prompt> <userinput>service keystone restart</userinput></screen>
|
|
||||||
<warning><para>During service restart, authentication and
|
|
||||||
authorization are unavailable.</para></warning>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
<procedure>
|
|
||||||
<title>To integrate Identity with multiple back ends</title>
|
|
||||||
<step>
|
|
||||||
<para>Set the following options in the
|
|
||||||
<filename>/etc/keystone/keystone.conf</filename> file:</para>
|
|
||||||
<substeps>
|
|
||||||
<step>
|
|
||||||
<para>Enable the LDAP driver:</para>
|
|
||||||
<programlisting language="ini">[identity]
|
|
||||||
#driver = keystone.identity.backends.sql.Identity
|
|
||||||
driver = keystone.identity.backends.ldap.Identity</programlisting>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Enable domain-specific drivers:</para>
|
|
||||||
<programlisting language="ini">[identity]
|
|
||||||
domain_specific_drivers_enabled = True
|
|
||||||
domain_config_dir = /etc/keystone/domains</programlisting>
|
|
||||||
</step>
|
|
||||||
</substeps>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Restart the service:</para>
|
|
||||||
<screen><prompt>#</prompt> service keystone restart</screen>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>List the domains using the dashboard, or the OpenStackClient
|
|
||||||
CLI. Refer to the <link xlink:href="http://docs.openstack.org/developer/python-openstackclient/command-list.html">Command List</link>
|
|
||||||
for a list of OpenStackClient commands.</para>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Create domains using OpenStack dashboard, or the
|
|
||||||
OpenStackClient CLI.</para>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>For each domain, create a domain-specific configuration
|
|
||||||
file in the <filename>/etc/keystone/domains</filename> directory.
|
|
||||||
Use the file naming convention <filename>keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>,
|
|
||||||
where <replaceable>DOMAIN_NAME</replaceable>
|
|
||||||
is the domain name assigned in the previous step.</para>
|
|
||||||
<note><para>The options set in the
|
|
||||||
<filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
|
||||||
file will override options in the <filename>/etc/keystone/keystone.conf</filename>
|
|
||||||
file.</para></note>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Define the destination LDAP server in the
|
<para>Define the destination LDAP server in the
|
||||||
<filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename> file. For example:</para>
|
<filename>keystone.conf</filename> file:</para>
|
||||||
<programlisting language="ini">[ldap]
|
</formalpara>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
url = ldap://localhost
|
url = ldap://localhost
|
||||||
user = dc=Manager,dc=example,dc=org
|
user = dc=Manager,dc=example,dc=org
|
||||||
password = samplepassword
|
password = samplepassword
|
||||||
suffix = dc=example,dc=org
|
suffix = dc=example,dc=org
|
||||||
use_dumb_member = False
|
use_dumb_member = False
|
||||||
allow_subtree_delete = False</programlisting>
|
allow_subtree_delete = False</programlisting>
|
||||||
</step>
|
<note>
|
||||||
<step>
|
<para>Configure <option>dumb_member</option> if you set <option>use_dumb_member</option> to true.</para>
|
||||||
<para>Create the organizational units (OU) in the LDAP
|
|
||||||
directory, and define their corresponding location in
|
|
||||||
the <filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
|
||||||
file. For example:</para>
|
|
||||||
<programlisting language="ini">[ldap]
|
<programlisting language="ini">[ldap]
|
||||||
user_tree_dn = ou=Users,dc=example,dc=org
|
dumb_member = cn=dumb,dc=nonexistent</programlisting>
|
||||||
user_objectclass = inetOrgPerson
|
</note>
|
||||||
|
|
||||||
tenant_tree_dn = ou=Groups,dc=example,dc=org
|
|
||||||
tenant_objectclass = groupOfNames
|
|
||||||
|
|
||||||
role_tree_dn = ou=Roles,dc=example,dc=org
|
|
||||||
role_objectclass = organizationalRole</programlisting>
|
|
||||||
<note>
|
|
||||||
<para>These schema attributes are extensible for
|
|
||||||
compatibility with various schemas. For example,
|
|
||||||
this entry maps to the <systemitem>person</systemitem>
|
|
||||||
attribute in Active Directory:</para>
|
|
||||||
<programlisting language="ini">user_objectclass = person</programlisting>
|
|
||||||
</note>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>A read-only implementation is recommended for LDAP
|
|
||||||
integration. These permissions are applied to object
|
|
||||||
types in the <filename>/etc/keystone/domains/keystone.<replaceable>DOMAIN_NAME</replaceable>.conf</filename>
|
|
||||||
file:</para>
|
|
||||||
<programlisting language="ini">[ldap]
|
|
||||||
user_allow_create = False
|
|
||||||
user_allow_update = False
|
|
||||||
user_allow_delete = False
|
|
||||||
|
|
||||||
tenant_allow_create = False
|
|
||||||
tenant_allow_update = False
|
|
||||||
tenant_allow_delete = False
|
|
||||||
|
|
||||||
role_allow_create = False
|
|
||||||
role_allow_update = False
|
|
||||||
role_allow_delete = False</programlisting>
|
|
||||||
</step>
|
|
||||||
<step>
|
|
||||||
<para>Restart the Identity service:</para>
|
|
||||||
<screen><prompt>#</prompt> <userinput>service keystone restart</userinput></screen>
|
|
||||||
<warning><para>During service restart, authentication and
|
|
||||||
authorization are unavailable.</para></warning>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
<formalpara>
|
<formalpara>
|
||||||
<title>Additional LDAP integration settings</title>
|
<title>Additional LDAP integration settings</title>
|
||||||
<para>Set these options in the
|
<para>Set these options in the
|
||||||
@ -197,34 +67,71 @@ role_allow_delete = False</programlisting>
|
|||||||
</formalpara>
|
</formalpara>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>Filters</term>
|
<term>Query option</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Use filters to control the scope of data
|
<para>Use <option>query_scope</option>
|
||||||
presented through LDAP.</para>
|
to control the scope level of data
|
||||||
|
presented (search only the first level or search an entire
|
||||||
|
sub-tree) through LDAP.</para>
|
||||||
|
<para>Use <option>page_size</option> to control the maximum
|
||||||
|
results per page. A value of zero disables paging.</para>
|
||||||
|
<para>Use <option>alias_dereferencing</option> to control
|
||||||
|
the LDAP dereferencing option for queries.</para>
|
||||||
|
<para>Use <option>chase_referrals</option> to override the
|
||||||
|
system's default referral chasing behavior for queries.</para>
|
||||||
<programlisting language="ini">[ldap]
|
<programlisting language="ini">[ldap]
|
||||||
user_filter = (memberof=cn=openstack-users,ou=workgroups,dc=example,dc=org)
|
query_scope = sub
|
||||||
tenant_filter =
|
page_size = 0
|
||||||
role_filter =</programlisting>
|
alias_dereferencing = default
|
||||||
|
chase_referrals = </programlisting>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>LDAP Account Status</term>
|
<term>Debug</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Mask account status values for compatibility
|
<para>Use <option>debug_level</option> to set
|
||||||
with various directory services. Superfluous
|
the LDAP debugging level for LDAP calls. A value of zero means that
|
||||||
accounts are filtered with
|
debugging is not enabled.</para>
|
||||||
<systemitem>user_filter</systemitem>.</para>
|
|
||||||
<para>For example, you can mask Active Directory
|
|
||||||
account status attributes in the
|
|
||||||
<filename>keystone.conf</filename>
|
|
||||||
file:</para>
|
|
||||||
<programlisting language="ini">[ldap]
|
<programlisting language="ini">[ldap]
|
||||||
user_enabled_attribute = userAccountControl
|
debug_level = 0</programlisting>
|
||||||
user_enabled_mask = 2
|
<warning><para>This value is a bitmask, consult your LDAP
|
||||||
user_enabled_default = 512</programlisting>
|
documentation for possible values.</para></warning>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Connection pooling</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Use <option>use_pool</option> to enable LDAP connection
|
||||||
|
pooling. Configure connection pool size, maximum retry,
|
||||||
|
reconnect trials, timeout (-1 indicates indefinite
|
||||||
|
wait) and lifetime in seconds.</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
use_pool = true
|
||||||
|
pool_size = 10
|
||||||
|
pool_retry_max = 3
|
||||||
|
pool_retry_delay = 0.1
|
||||||
|
pool_connection_timeout = -1
|
||||||
|
pool_connection_lifetime = 600</programlisting>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Connection pooling for end user authentication</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Use <option>use_auth_pool</option> to enable LDAP
|
||||||
|
connection pooling for end user authentication.
|
||||||
|
Configure connection pool size and lifetime in seconds.</para>
|
||||||
|
<programlisting language="ini">[ldap]
|
||||||
|
use_auth_pool = false
|
||||||
|
auth_pool_size = 100
|
||||||
|
auth_pool_connection_lifetime = 60</programlisting>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
<para>When you have finished configuration, restart the Openstack Identity service:</para>
|
||||||
|
<screen><prompt>#</prompt> <userinput>service keystone restart</userinput></screen>
|
||||||
|
<warning><para>During service restart, authentication and
|
||||||
|
authorization are unavailable.</para></warning>
|
||||||
|
<xi:include href="section_keystone_config_ldap-identity.xml"/>
|
||||||
<xi:include href="section_keystone_config_ldap-assignments.xml"/>
|
<xi:include href="section_keystone_config_ldap-assignments.xml"/>
|
||||||
<xi:include href="section_keystone_config_ldap-hardening.xml"/>
|
<xi:include href="section_keystone_config_ldap-hardening.xml"/>
|
||||||
</section>
|
</section>
|
||||||
|
Loading…
Reference in New Issue
Block a user