[Openstack] ldap + sql in keystone (multi-domain)
Miller, Mark M (EB SW Cloud - R&D - Corvallis)
mark.m.miller at hp.com
Tue Jan 21 23:19:29 UTC 2014
This feature didn't quite make it into the Havana code base in that it still had a few bugs. I will be interested to see if it was fixed for Icehouse.
Mark
> -----Original Message-----
> From: James [mailto:jameszee13 at gmail.com]
> Sent: Tuesday, January 21, 2014 2:37 PM
> To: openstack at lists.openstack.org
> Subject: [Openstack] ldap + sql in keystone (multi-domain)
>
> All,
>
> I'm trying to get multiple domains configured in keystone so that users can
> authenticate against LDAP, but service accounts can use locally-created, SQL-
> based accounts.
>
> I've set up keystone.conf as follows:
>
>
> -->8--
>
> [DEFAULT]
> admin_token = ADMIN
> debug = True
> verbose = True
> log_file = keystone.log
> log_dir = /var/log/keystone
> use_syslog = True
> [sql]
> connection = sqlite:////var/lib/keystone/keystone.db
> [identity]
> driver = keystone.identity.backends.sql.Identity
> default_domain_id = default
> domain_specific_drivers_enabled = True
> domain_config_dir = /etc/keystone/domains [credential] driver =
> keystone.credential.backends.sql.Credential
> [trust]
> driver = keystone.trust.backends.sql.Trust [os_inherit] [catalog] driver =
> keystone.catalog.backends.sql.Catalog
> [endpoint_filter]
> [token]
> driver = keystone.token.backends.sql.Token [cache] [policy] driver =
> keystone.policy.backends.sql.Policy
> [ec2]
> driver = keystone.contrib.ec2.backends.kvs.Ec2
> [assignment]
> [oauth1]
> [ssl]
> [signing]
> [ldap]
> [auth]
> methods = external,password,token,oauth1 password =
> keystone.auth.plugins.password.Password
> token = keystone.auth.plugins.token.Token
> oauth1 = keystone.auth.plugins.oauth1.OAuth
> [paste_deploy]
> config_file = keystone-paste.ini
>
> --8<--
>
>
> /etc/keystone/domains/keystone.ldap.conf is configured as follows:
>
>
> -->8--
>
> [identity]
> driver = keystone.identity.backends.ldap.Identity
> [assignment]
> driver = keystone.assignment.backends.sql.Assignment
> [ldap]
> url = ldap://ldap_server:389
> user_tree_dn = dc=blah,dc=com
> user_objectclass = person
> user_pass_attribute =
> user_id_attribute = cn
> user_enabled_attribute = userAccountControl user_enabled_mask = 2
> user_enabled_default = 512 user_mail_attribute = mail
> user_name_attribute = sAMAccountName user_filter =
> (memberof=CN=blah,DC=blah,DC=com) user = username password =
> password use_dumb_member = True dumb_member = keystone_ldap
> page_size = 0 alias_dereferencing = always query_scope = sub
> user_allow_create = False user_allow_update = False user_allow_delete =
> False
>
> --8<--
>
>
> Super simple configuration. The issue I'm running into is with using the v3
> APIs. Take a look at the example below:
>
>
> -->8--
>
> ~ % openstack --os-auth-url "http://10.34.208.9:35357/v3"
> --os-username admin --os-password 'admin' --os-identity-api-version 3 --os-
> domain-id=default domain list
> +----------------------------------+---------+---------+-----------------------------------
> -----------------------------------+
> | ID | Name | Enabled | Description
> |
> +----------------------------------+---------+---------+-----------------------------------
> -----------------------------------+
> | default | Default | True | Owns users
> and tenants (i.e. projects) available on Identity API v2. |
> | 89a6bbbdd13543739d602d2e6e9bebda | ldap | True | Active
> Directory Authentication (via LDAP) |
> +----------------------------------+---------+---------+-----------------------------------
> -----------------------------------+
>
> ~ % openstack --os-auth-url "http://10.34.208.9:35357/v3"
> --os-username admin --os-password 'admin' --os-identity-api-version 3 --os-
> domain-id=default user list
> +----------------------------------+--------+
> | ID | Name |
> +----------------------------------+--------+
> | d8a47a119650484ca7eebe7a379bdaab | admin |
> | 7f3da3ec686dbdda837d91485fc28e7e | test |
> +----------------------------------+--------+
>
> ~ % openstack --os-auth-url "http://10.34.208.9:35357/v3"
> --os-username admin --os-password 'admin' --os-identity-api-version 3 --os-
> domain-id=89a6bbbdd13543739d602d2e6e9bebda user list
> +----------------------------------+--------+
> | ID | Name |
> +----------------------------------+--------+
> | d8a47a119650484ca7eebe7a379bdaab | admin |
> | 7f3da3ec686dbdda837d91485fc28e7e | test |
> +----------------------------------+--------+
>
> --8<--
>
>
> Note the 'user list' output returned in the last API call. Because we're
> explicitly setting the LDAP domain, the user list should come from LDAP (not
> our local sqlite database). Debug output shows that keystone sees the LDAP
> domain configuration in /etc/keystone/domains/keystone.ldap.conf, but it
> never actually makes an LDAP bind request.
>
> Debug logs can be found at: http://pastebin.com/eG2XxVEd
>
> Interestingly enough, however, if the default_domain_id in
> /etc/keystone/keystone.conf points to our LDAP domain
> (default_domain_id = 89a6bbbdd13543739d602d2e6e9bebda), then a
> *version 2.0* API call to keystone will return our LDAP user list (see below),
> which indicates that the LDAP and multi-domain configuration is likely
> correct.
>
>
> -->8--
>
> root at keystone:/etc/keystone# keystone user-list
> WARNING: Bypassing authentication using a token & endpoint
> (authentication credentials are being ignored).
> +-----------------------------------+-----------------+---------+--------------------------
> --+
> | id | name | enabled |
> email |
> +-----------------------------------+-----------------+---------+--------------------------
> --+
> | LDAP User 1 | lu1 | True |
> lu1 at blah.com |
> | LDAP User 2 | lu2 | True |
> lu2 at blah.com |
> | LDAP User 3 | lu3 | True |
> lu3 at blah.com |
> | ... | ... | ... |
> ... |
> +-----------------------------------+-----------------+---------+--------------------------
> --+
> root at keystone:/etc/keystone#
>
> -8<-
>
>
> Again, the end-goal here is to have service accounts defined locally (via SQL)
> since our corporate LDAP environment doesn't have a mechanism by which
> we can add OpenStack service accounts.
>
> Any help or thoughts would be greatly appreciated.
>
> Thanks!
>
> _______________________________________________
> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
> Post to : openstack at lists.openstack.org
> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
More information about the Openstack
mailing list