Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客

一、基础理论篇

1、Keystone的概述

Keystone是Openstack的组件之一,用于为Openstack家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌的发放和校验,服务列表,用户权限的定义等。Openstack中任何组件均依赖与Keystone提供的服务。

2、Keystone 功能

用户与认证:用户权限与用户行为追踪。

服务目录:为每个组件服务提供一个可用的服务目录和相应的API入口端点。

Keystone (OpenStack Identity Service ) 基本概念用户(user)

使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户。当User对OpenStack进行访问时,Keystone会对其身份进行验证。

项目(project)

租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。

角色(role)

角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。安全包含两部分:Authentication(认证)和 Authorization(鉴权)

服务(service)

Openstack Service,即Openstack中运行的组件服务。nova,glance都是属于一个服务,需要在keystone上进行创建,指定类型。创建服务有一个服务,就创建一个endpoint,会根据服务类型去查找那个服务。Service 决定每个 Role 能做什么事情 ,Service 通过各自的 policy.json 文件对 Role 进行访问控制。

令牌(token)

指的是一串比特值或者字符串,用来作为访问资源的令牌。Token中含有可访问资源的范围和有效时间。

端点(endpoint)

一个可以通过网络来访问和定位某个Openstack Service的地址,通常是一个URL。例如,Nova需要访问Glance服务去获取Image时,Nova通过访问Keystone拿到Glance的Endpoint,然后通过访问该Endpoint去获取Glance服务,我们可以通过Endpoint的region属性去定义多个region。Endpoint该使用对象分为三类:

1. Admin URL:给admin用户使用,被从常规的访问中分离。

2. Internal URL:Openstack内部服务使用来跟别的服务通信,只能被局域网访问。

3. Public URL:其它用户可以访问的地址,可以被全局访问。

4. User 通过 Endpoint 访问资源和执行操作

证书(Credentials)

用于确认用户身份的凭证。

认证方式(authentication)

确定用户身份的过程。

5、Keystone 工作流程图

图片来源网络

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第1张图片

6、Keystone V3 API特性

1. Tenant更改为Project

2.添加了Domain(对系统资源进行限额 一个域中可以存在多个项目以及用)

3.添加了Group (组的概念为了更好的管理用户,例如linux下对组授权,其组下面的用户也有了相应的权限)

7. keystone 图解:

图片来源网络

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第2张图片

二、实践操作篇

1. 环境说明

系统主机名IP地址

CentOS 7.7controllerens33:10.0.0.129

ens37:192.168.248.140

CentOS 7.7computeens33:10.0.0.130

ens37:192.168.248.141

虚拟机网卡配置ens33 为VMnet1仅主机模式ens37 为VMnet8 Nat模式

2. Keystone 配置

以下操作均在controller节点进行

2.1 安装keystone相关软件包

[root@controller ~]# yum install -y openstack-keystone httpd mod_wsgi

2.2 创建keystone数据库

[root@controller ~]# mysql -uroot -p

MariaDB [(none)]> create database keystone;

MariaDB [(none)]> grant all privileges on keystone.* to 'keystone'@'localhost' identified by 'keystone';

MariaDB [(none)]> grant all privileges on keystone.* to 'keystone'@'%' identified by 'keystone';

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第3张图片

2.3生成管理员的令牌环

[root@controller ~]#  openssl rand -hex 10

8daaaf9583ff2f370e39

2.4 编辑keystone配置文件

配置数据库连接、定义管理员初始令牌的值

# vim /etc/keystone/keystone.conf

[DEFAULT]

admin_token = 8daaaf9583ff2f370e39

.....

[database]

.....

connection = mysql+pymysql://keystone:keystone@controller/keystone

.....

[token]

......

provider = fernet

......

2.5 为keystone创建数据表

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

#查看创建表是否成功

[root@controller ~]# mysql -h 10.0.0.129 -ukeystone -pkeystone -e "use keystone;show tables;"

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第4张图片

2.6 初始化Fernet keys

[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

[root@controller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

2.7 配置Apache服务器

[root@controller ~]# cp /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

[root@controller ~]# vi /etc/httpd/conf/httpd.conf

95 ServerName controller

[root@controller ~]# systemctl start httpd

[root@controller ~]# systemctl enable httpd

[root@controller ~]# ss -tan | grep  5000

LISTEN 0 128 :::5000 :::*

[root@controller ~]# ss -tan | grep 35357

LISTEN 0 128 :::35357 :::*

2.8 keystone的连接方式说明

1. 使用环境变量的方式来连接keystone(环境初始化常用) 格式: export OS_TOKEN=OpenSSL生成的随机值 export OS_URL=http://controller:35357/v3 (连接到keystone的地址以及端口信息) export OS_IDENTITY_API_VERSION=v3 (定义版本信息)

2. 使用命令行的方式来连接到keystone(需要在创建完成域、项目、用户,服务之后才能够使用) 格式: openstack --os-auth-url http://controller:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name 项目名称 --os-username 用户名称 token issue 5000端口和35357端口的区别: 5000端口是普通用户进行身份认证的端口 35357端口是admin用户和普通用户认证的端口

2.9 定义环境变量[root@controller ~]# export OS_TOKEN=8daaaf9583ff2f370e39

[root@controller ~]# export OS_URL=http://controller:35357/v3

[root@controller ~]# export OS_IDENTITY_API_VERSION=3

3. 创建域、项目、用户和角色

以下创建的为管理员环境即admin

3.1 创建default域

[root@controller ~]# openstack domain create --description "Default Domain" default

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第5张图片

--description:指定描述信息

3.2创建admin项目

[root@controller ~]# openstack project create --domain default --description "Admin Project" admin

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第6张图片

--domain:指定项目所属域的名称

3.3创建admin用户

[root@controller ~]# openstack user create --domain default --password-prompt admin

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第7张图片

3.4创建admin角色

[root@controller~]# openstack role create admin

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第8张图片

3.5 将以上创建的在一起

[root@controller ~]# openstack role add --project admin --user admin admin

将admin用户加入admin项目中,并赋予admin角色

4. 创建普通用户环境

4.1 创建user项目

[root@controller ~]# openstack project create  --domain default --description "User Project" user

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第9张图片

4.2 创建user用户

[root@controller ~]# openstack user create --domain default --password-prompt user

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第10张图片

4.3  创建user角色

[root@controller ~]# openstack role create user

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第11张图片

4.4 将以上三者关联到一起

[root@controller ~]# openstack role add --project user --user user user

将user用户加入到user项目中,并赋予user角色

5. 创建服务实体和API端点信息

服务实体包括:keystone、Nova、glance、neutron等

API端点信息:访问每一个服务的URL路径

端点信息可以分为如下三类:

admin (管理员入口)

internal(私有 内部通信)

public(公有 其他通信)

5.1 创建keystone服务实体

[root@controller ~]# openstack service create --name keystone --description "Openstack Identity" identity

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第12张图片

--name:指定服务实体的名称

5.2 创建public公有端点信息

[root@controller ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第13张图片

类型为internal表示为内部,端口为5000,内部普通人员访问

5.3 创建admin管理员端点信息

[root@controller ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第14张图片

类型为admin,代表管理员入口,端口为35357 管理员访问的端口 5000端口管理员不适用

5.4 查看创建的端口信息

[root@controller ~]# openstack endpoint list

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第15张图片

6. 验证测试

取消原先我们定义的环境变量

[root@controller ~]# unset OS_TOKEN OS_URL

[root@controller ~]# openstack service list

Missing value auth-url required for auth plugin password

连接的keystone的方式有两种,一种是通过环境变量,一种是通过命令行的方式,我们把环境变量取消了,自然而然就连接不上了

使用命令行的方式来连接到keystone测试

[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第16张图片

返回如上信息代表成功

7.编写admin-OpenStack.sh

[root@controller ~]# vim admin-openstack.sh

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=123456

export OS_AUTH_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

验证测试

[root@controller ~]# source admin-openstack.sh

[root@controller ~]# openstack user list

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第17张图片

8.编写user-OpenStack.sh

[root@controller ~]# vi user-openstack.sh

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=user

export OS_USERNAME=user

export OS_PASSWORD=123456

export OS_AUTH_URL=http://controller:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

验证测试

[root@controller ~]# source user-openstack.sh

[root@controller ~]# openstack project list

Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客_第18张图片

至此,keystone认证服务安装完成。

你可能感兴趣的:(Linux安装keystone认证服务,CentOS 7.x 部署OpenStack 之 认证服务 Keystone -奇搜博客)