openstack中keystone鉴权的用户user和password信息,通常保存在mysql数据库的keystone库:

表local_user和表password:

keystone也支持外部LDAP Server提供用户鉴权信息,也就是所谓的domain-specific Identity:

Keystone supports the option (disabled by default) to specify identity driver (domain-specific Identity drivers) configurations on a domain by domain basis, allowing, for example, a specific domain to have its own LDAP or SQL server.

Domain-specific Identity configuration options can be stored in domain-specific configuration files, or in the Identity SQL database using API REST calls.

详情参见官网:

https://docs.openstack.org/keystone/rocky/admin/identity-domain-specific-config.html

https://docs.openstack.org/keystone/rocky/configuration.html  (Configuring Keystone)

下面提供一个简单的例子,描述相关步骤和openstack的配置。

(参见https://docs.openstack.org/keystone/rocky/admin/identity-integrate-with-ldap.html [Integrate Identity with LDAP])

1)安装LDAP Server,如windows的活动目录服务(Active Directory) (可参考相关文档):

安装完后,创建一个用户和密码,提供相关信息以供openstack集成用:

++ url信息,例如ldap://10.168.120.120:389

++ user信息,例如CN=administrator,CN=users,DC=star,DC=com,以及密码

++ BaseDN信息,例如DC=star,DC=com

2)在openstack控制器中运行LDAP指令以验证与LDAP Server的连接,例如:

ldapsearch -x -h 10.168.120.120 -p 389 -D "CN=administrator,CN=users,DC=star,DC=com" -w password123 -b "DC=star,DC=com"

有正常的查询结果返回则说明openstack与LDAP Server连接成功了。

3)在openstack控制器上进行domain-specific configuration:

>> 3.1) 开启domain-specific drivers配置:

To enable domain-specific drivers, set these options in the /etc/keystone/keystone.conf file:
[identity]
domain_specific_drivers_enabled = True
domain_config_dir = /etc/keystone/domains

注:配置文件将保存在domain_config_dir指定的目录中,而且文件命名方式是keystone.<domain_name>.conf (<domain_name>将由openstack指令创建)

同时修改[assignment]的backend driver为sql:

[assignment]

driver = sql

(注:不知道是否与这段话相关:

Although keystone supports multiple LDAP backends via the above domain-specific configuration methods, it currently only supports one SQL backend. This could be either the default driver or a single domain-specific backend, perhaps for storing service users in a predominantly LDAP installation.)

>> 3.2) 创建保存config文件的目录:

root@server1:~# mkdir -p /etc/keystone/domains
root@server1:~# chown keystone /etc/keystone/domains

>> 3.3) openstack指令创建domain:

root@server1:~# openstack domain create star
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| enabled     | True                             |
| id               | 012df6be871c4b33949c50dc461a0751 |
| name        | star                             |
+-------------+----------------------------------+

root@server1:~# openstack domain list

+----------------------------------+-------------+---------+--------------------+
 | ID                                                      | Name    | Enabled | Description        |
 +----------------------------------+------------+---------+--------------------+
 | 012df6be871c4b33949c50dc461a0751  | star    | True    |                             |
 | default                                                     | Default | True    | The default domain |
 +----------------------------------+---------+---------+--------------------+

>> 3.4) 创建相应的domain driver文件:(内容可参考上面提及的"Integrate Identity with LDAP",或者keystone.conf的【ldap】, 文件名里的domain即是上一步创建的domain)

root@server1:/etc/keystone/domains# vi keystone.star.conf

例如:

4) 重启keystone服务,之后可以用指令看到新加的

5) 接下来可以进行验证:

>> 5.1) 在LDAP Server新加用户,并加入group openstack,例如test_user (密码password321);

>> 5.2) 该用户现在可以在openstack控制器中显示了:

root@server1:# openstack user list --domain star
+------------------------------------------------------------------+----------------------------------------------+
| ID                                                                                                                       | Name     |
+------------------------------------------------------------------+-------------------------------------------------+
| f730d57dc79553aa5cf99b0c15b70283787f930d5b599c2385c5712cbcc11c46 | test_user |
+------------------------------------------------------------------+----------------------------------------------------+

>> 5.3) 给该user配置具有管理权限的role:

root@server1:~# openstack role add --project admin --user f730d57dc79553aa5cf99b0c15b70283787f930d5b599c2385c5712cbcc11c46 admin

>> 5.4) 建立一个该用户的source环境文件,包含如下关键信息:

>> 5.5) 进入test_user的环境文件,可以正常运行openstack指令:

root@server1:~# source openrc-test
root@server1:~# nova list

注:一个相关的问题是id mapping,参见“Configuring Keystone”:

https://docs.openstack.org/keystone/rocky/configuration.html

Due to the need for user and group IDs to be unique across an OpenStack installation and for keystone to be able to deduce which domain and backend to use from just a user or group ID, it dynamically builds a persistent identity mapping table from a public ID to the actual domain, local ID (within that backend) and entity type.

相关数据保存在mysql的keystone库的id_mapping表里:

mysql> select* from id_mapping;
 +-----------------------------------------------------------------------------------------------------------+-----------------------------------------------+----------+-------------+
 | public_id                                                                                                                 | domain_id                                         | local_id | entity_type |
 +------------------------------------------------------------------------------------------------------------+-----------------------------------------------+----------+-------------+
 |  f730d57dc79553aa5cf99b0c15b70283787f930d5b599c2385c5712cbcc11c46  | 012df6be871c4b33949c50dc461a0751 | test_user | user        |
 | 967ecd62f1987b626476221d3beb051a72ed45c84324327ea82c58b887ce8953 | 012df6be871c4b33949c50dc461a0751 | test-ldap | user        |
 +------------------------------------------------------------------------------------------------------------+----------------------------------------------+----------+-------------+

Openstack中keystone与外部LDAP Server的集成的更多相关文章

  1. OpenStack中Keystone的基本概念理解

    原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...

  2. openstack中Keystone组件简解

    一.Keystone服务概述 在Openstack框架中,keystone(Openstack Identity Service)的功能是负责验证身份.校验服务规则和发布服务令牌的,它实现了Opens ...

  3. HDP3.1 中配置 YARN 的 timeline server 使用外部的 HBase

    HDP3.1 中的 YARN 的 timeline server 默认使用内置的 HBase,不知道为什么,总是过几天就挂掉,暂时还没找到原因.后来想着让它使用外部的 HBase 看看会不会还有此问题 ...

  4. OpenStack之Keystone模块

    一.Keystone介绍 OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户.帐号和角色信息服务,并为Op ...

  5. openstack之keystone部署

    前言 openstack更新频率是挺快的,每六个月更新一次(命名是是以A-Z的方式,Austin,Bexar...Newton).博主建议大家先可一种版本研究,等某一版本研究透彻了,在去研究新的版本. ...

  6. openstack核心组件——keystone身份认证服务(5)

    云计算openstack核心组件——keystone身份认证服务(5) 部署公共环境 ntp openstack mariadb-server rabbitmq-server memcache 1.w ...

  7. 云计算管理平台之OpenStack认证服务Keystone

    一.keystone简介 keystone是openstack中的核心服务,它主要作用是实现用户认证和授权以及服务目录:所谓服务目录指所有可用服务的信息库,包含所有可用服务及其API endport路 ...

  8. openstack之keystone

    一.什么是keystone 用于为openstack家族中的其它组件成员提供统一的认证服务,包括身份认证.令牌发放和校验.服务列表.用户权限定义等: 基本概念: 用户User:用于身份认证.一个用户可 ...

  9. 云计算openstack核心组件——keystone身份认证服务

    一.Keystone介绍:       keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户 ...

随机推荐

  1. 取模性质,快速幂,快速乘,gcd和最小公倍数

    一.取模运算 取模(取余)运算法则: 1. (a+b)%p=(a%p+b%p)%p; 2.(a-b)%p=(a%p-b%p)%p; 3.(a*b)%p=(a%p * b%p)%p; 4.(a^b)%p ...

  2. leetcode网学习笔记(1)

    https://leetcode-cn.com/problems/reverse-linked-list/submissions/ 206 反转链表 错误原因:没有考虑到链表为空以及链表只有一个元素的 ...

  3. 数据结构与算法JS实现

      行解算法题,没错,就是这么方便. 当然也可以使用 Node.js 环境来执行,具体参考Node.js官方文档即可. 二 对象和面向对象编程 js中5种数据类型,并没有定义更多的数据类型,但是运用j ...

  4. kendo upload必填验证

    @using Kendo.Mvc.UI @using StudentManage.Common.Helper @model StudentManage.Models.Home.ImportDataFr ...

  5. Ubuntu 自动选择最快的镜像源

    通常情况下阿里云的镜像源(http://mirrors.aliyun.com/ubuntu/)用得比较多 但是也不排除因网络环境导致的某个镜像源访问慢问题 那么就可以配置为自动选择镜像源进行更新 修改 ...

  6. bzoj2809 [Apio2012]dispatching(左偏树)

    [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 M ...

  7. Linux基础命令---top显示进程信息

    top top指令用来显示Linux的进程信息,这是一个动态显示的过程.top提供运行系统的动态实时视图.它可以显示系统摘要信息以及当前由Linux内核管理的任务列表.所显示的系统摘要信息的类型以及为 ...

  8. OO第二次博客作业—17373247

    OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差 ...

  9. JS所包含的大纲内容,以及JS中数据类型、运算符的介绍

    JavaSctipt javascript:1.特效2.表单验证 原理:何时?1.找到标签 何时?2.操作标签 写在那里? 内联(行内)(不推荐直接写js代码,经常写方法调用) 写在标签里面,以属性的 ...

  10. 【Alpha】Scrum Meeting 8

    目录 前言 任务分配 燃尽图 会议照片 签入记录 困难 前言 第8次会议在4月12日21:00进行微信会议. 交流确认了任务进度,对下一阶段任务进行分配.时长15min. 任务分配 姓名 当前阶段任务 ...