keystone组件

一:keystone组件的基本概念

网吧的列子

1:项目

项目就是资源的集合,里面有多个服务

2:服务

项目中的各个组件提供的服务,上网区,休闲区

3:端点(通常是一个url)

端点就是访问服务的某个地址,通常一个服务有3类端点

admin-url 提供给admin用户的服务

internal-url 提供给内部组件服务

public-url 提供给其他公共用户的服务

4:用户

用户就是有账号和密码,能够使用项目中的资源

5:角色

角色就是权限的集合,比如,管理员,网管,一群用户的集合,可以把角色分配给用户或者组,自带admin和member2个角色,admin拥有管理openstack的权限,member是普通用户的权限

6:令牌

令牌是加密的字符串,是访问资源的通行证,在一定的范围和时间内有效,就是第一次登陆成功后,会给一个令牌给用户

7:认证

就是认证用户的一个过程

8:凭据

就是认证用户时,需要的数据,可以是账号或者密码,令牌

9:域

就是用户和项目的集合

二:keystone组件的架构

openstack云计算平台中的组件是有多个模块构成的,keystone组件的架构如下:

令牌模块:用来生成和管理令牌

目录模块:用来存储和管理服务以及端点的信息

验证模块:管理用户,角色,项目和认证服务

策略模块:存储和管理所有的访问权限

 

三:keystone认证的基本步骤

先登录成功后,返回一个令牌给用户,以后用户每次使用openstack中的服务时,就要先认证令牌,成功后,返回请求,就能实现这个相对应的功能

keystone认证服务分为2种

第一种:判断用户凭证是否合法,第一次登录时,如果为合法的,会返回一个令牌,供下一次认证使用

第二种:验证令牌是否合法,登陆成功后,使用任意服务,都需要令牌,是否有效

四:安装和配置keystone服务

1:安装keystone软件包

#安装keystone服务必要的软件包
[root@controller /]# yum -y install openstack-keystone httpd mod_wsgi
安装后,会自动创建一个keystone用户和组
#检查一下
[root@controller /]# cat /etc/passwd | grep keystone
keystone:x:163:163:OpenStack Keystone Daemons:/var/lib/keystone:/sbin/nologin
[root@controller /]# cat /etc/group |grep keystone
keystone:x:163:

2:创建keystone数据库并授权

#登陆数据库
[root@controller /]# mysql -uroot -p000000
#创建keystone库
create database keystone
#给用户授权使用新建数据库(本地用户和远程用户·)
#本地用户
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '000000';
#远程用户
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '000000';

#退出数据库
exit

3:修改keystone的配置文件

/etc/keystone/keystone.conf

#修改database中的配置,实现与数据库的连接
[database]
connection = mysql+pymysql://keystone:000000@controller/keystone
作用:用keystone用户和密码000000去连接controller端的keystone的数据库

#修改token部分令牌的加密方式,取消注释
provider = fernet
在验证令牌时,会进行解密来获取原始的数据

4:初始化keystone的数据库

就是在安装keystone时,会提供很多基础表的数据,在创建keystone库时,没有同步到该库中

#同步数据表到keystone数据库中去
[root@controller /]# su keystone -s /bin/sh -c "keystone-manage db_sync" 
#查看这些数据表
MariaDB [(none)]> use keystone;
MariaDB [keystone]> show tables;
+------------------------------------+
| Tables_in_keystone                 |
+------------------------------------+
| access_rule                        |
| access_token                       |
| application_credential             |
| application_credential_access_rule |
| application_credential_role        |
| assignment          

表示数据库已经同步成功了          

五:keystone组件初始化

1:初始化fernet密钥库

#会自动的创建/etc/keystone/fernet-keys目录,并生成2个密钥,用于令牌的加密和解密
[root@controller keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

#会自动创建/etc/keystone/credential-keys、目录,并生成2个密钥用于凭证的加密和解密
[root@controller keystone]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

2:初始化用户身份认证信息

默认openstack有一个默认用户为admin,但是没有相对应的密码和登陆所需要的信息,所以要初始化admin用户的凭证,以后登陆时出示凭证与其相对应即可进行验证

[root@controller /]# keystone-manage bootstrap --bootstrap-password 000000 --bootstrap-admin-url http://controller:5000/v3 --bootstrap-internal-url http://controller:5000/v3 --bootstrap-public-url http://controller:5000/v3 --bootstrap-region-id RegionOne

admin凭证的信息会存储在keystone数据库中,登录时与其进行对比

3:配置web服务

keystone服务是一个运行在支持wsgi的web服务器上面的应用,所以要配置好web服务

#增加web服务器对wsgi的支持
/etc/httpd/conf.d是apache服务的配置文件
#创建一个软连接在这个配置文件中去
[root@controller conf.d]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

#修改apache的配置文件
添加web服务器所在的域名和ip地址
[root@controller conf]# vim /etc/httpd/conf/httpd.conf 
ServerName controller

#启动httpd和设置开机自启
[root@controller conf]# systemctl restart httpd
[root@controller conf]# systemctl enable httpd
[root@controller conf]#   

六:模拟登录验证

已经初始化了openstack用户admin的登录密码000000,通过环境变量可以传送用户名和密码登凭证给keystone进行验证

1:创建初始化环境变量文件

#创建用户身份凭证
[root@controller ~]# vim admin-login
export OS_USERNAME=admin
export OS_PASSWORD=000000
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

2:导入环境变量,进行验证

#导入环境变量
[root@controller ~]# source admin-login 
#验证
[root@controller ~]# export -p

#查阅项目的列表
[root@controller ~]# openstack project list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| fa5f0884c5414e2c9e7d6602a8df23bc | admin |
+----------------------------------+-------+
[root@controller ~]# 

  

  

 

  

  

  

  

 

posted @ 2023-10-25 13:42  q_7  阅读(140)  评论(0编辑  收藏  举报