Reference:
Keystone Configuration
下的
Integrate Identity with LDAP
。
LDAP 配置修改
-
Keystone 配置文件添加如下几行(/etc/keystone/domains 是容器内的路径,不需要修改):
# /etc/kolla/keystone/keystone.conf [identity] domain_specific_drivers_enabled = True domain_config_dir = /etc/keystone/domains [assignment] driver = sql
-
开启多 Domain 登录 Horizon:
# /etc/kolla/horizon/local_settings OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
-
重启 Horizon 容器
docker ps | grep horizon | awk '{print $1}' | xargs docker restart
重启后,会有一段时间页面显示 503,稍等即可恢复。
-
添加 Keystone Domain 配置文件如下:
# /etc/kolla/keystone/domains/keystone.new_domain_name.conf [identity] driver = ldap [ldap] chase_referrals = true url = ldap://xxx:389 user = CN=xxx,OU=xxx,OU=xxx,DC=xxx,DC=xxx password = "xxx" suffix = dc=xxx,dc=xxx user_tree_dn = ou=xxx,dc=xxx,dc=xxx user_objectclass = organizationalPerson user_name_attribute = sAMAccountName user_mail_attribute = mail user_id_attribute = sAMAccountName use_tls = False user_allow_create = False user_allow_update = False user_allow_delete = False group_allow_create = False group_allow_update = False group_allow_delete = False query_scope = sub page_size = 0 group_members_are_ids = True debug_level = 4095 use_pool = true pool_size = 10 pool_connection_timeout = -1 pool_connection_lifetime = 600 use_auth_pool = true auth_pool_size = 100 auth_pool_connection_lifetime = 600
其中,debug_level = 4095 表示最高的 debug 级别,在 /var/log/kolla/keystone/keystone.log 中会有完整的调试日志。
-
重启 Keystone
docker ps | grep keystone | awk '{print $1}' | xargs docker restart
-
创建一个新的 Domain,叫 new_domain_name;创建一个新的 Project,叫 prod:
# 导入 Openstack 环境变量 source /etc/kolla/admin-openrc.sh source /opt/openstack/venv/bin/activate # 创建一个新的 domain openstack domain create new_domain_name # 查看已有的 domain 列表 openstack domain list # 创建一个新的 project openstack project create prod --domain new_domain_name # 查看已有的 project 列表 openstack project list --long
-
导入 LDAP 已有的 id_mapping,这中间会有大量 id 映射的日志刷屏,导入需要一段时间:
(venv) [root@fzo ~]# docker exec -it keystone bash (keystone)[root@localhost /]# keystone-manage mapping_populate --domain-name new_domain_name (keystone)[root@localhost /]# exit
-
对账户进行授权
# 查看 Role openstack role list # 添加 domain 权限 openstack role add --user-domain new_domain_name --user san.zhang admin --domain new_domain_name # 添加 project 权限 openstack role add --user-domain new_domain_name --user san.zhang admin --project prod # 查看 Role 授权情况 openstack role assignment list
补充说明
调试时会使用到的日志文件位置
# Keystone 调试日志,用于查看 LDAP 认证、授权过程的日志
tailf /var/log/kolla/keystone/keystone.log
tailf /var/log/kolla/keystone/keystone-apache-public-error.log
# Horizon 调试日志,用于查看 LDAP 登录过程的日志
tailf /var/log/kolla/horizon/horizon.log
ldapsearch 工具的使用
先测一下拿到手的 ldap 配置是否信息正确,符合预期。
ldapsearch -x -h _ldap_server_ip_ -p 389 -D "CN=xxx,OU=xxx,OU=xxx,DC=xxx,DC=xxx" -w xxx -b "ou=xxx,dc=xxx,dc=xxx"
Mariadb 信息查看
Mariadb 查看 Keystone LDAP id_mapping 的记录,Mariadb 的密码存在 Kolla-Ansible 密码文件 /etc/kolla/passwords.yml 中;或者进入 Mariadb 容器中查看 /etc/my.cnf 之类的 MySQL 配置文件,也可以查找到对应条目信息。
docker exec -it mariadb mysql -ukeystone -pxxx keystone
MariaDB [keystone]> select * from id_mapping;
关于进一步的 Role/Policy 权限设置