云系列---Openstack Keystone组件部署 | 参数说明 | 详细讲解

Keystone 身份安全认证模块

1.Keystone (OpenStack Identity Service)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证、令牌管理、提供访问资源的服务目录、以及基于用户角色的访问控制。

2.Keystone类似一个服务总线,或者说是整个Openstack框架的注册表,其他服务通过keystone来注册其服务的Endpoint (服务访问的URL) ,任何服务之间相互的调用,需要经过Keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。

总结:
1.多方式的认证和授极(token) 、提供可访问的资源的集合
2.认证成功之后,会指引lopenstack内部服务/组件的位置

Keystone 模块功能

身份认证(Authentication) :令牌的发放和校验

用户授权(Authorization) :授予用户在一个服务中所拥有权限

用户管理(Account) :管理用户账户

服务目录(Service Catalog) :提供可用服务的APl端点

keystone 相关概念

User:指使用Openstack service的用户。

Project(Tenant):可以理解为一个人、或服务所拥有的资源集合。

Role:用于划分权限。通过给User指定Role,使User获得Role对应操作权限

Authentication:确定用户身份的过程

Token:是一个字符串表示,作为访问资源的令牌。Token包含了在指定范围和有效时间内,可以被访问的资源。

Credentials:用于确认用户身份的凭证。用户的用户名和密码,或者是用户名和API密钥,或者身份管理服务提供的认证令牌。

Service: Openstack service,即Openstack中运行的组件服务。如nova.swift, glance, neutron, cinder等。

Endpoint:一个可以通过网络来访问和定位某个Openstack service的地址,通。常是一个URL

keystone 认证流程

在这里插入图片描述

在这里插入图片描述

Openstack Keystone 环境部署

部署 openstack 组件时,需先行安装认证服务(keystone),而认证服务是使用 Apache 运行的,安装完成后才可以创建、管理账号,然后安装镜像服务(glance)计算服务(nova)网络服务(neutron)
其中计算服务网络服务分为管理端客户端,所以需要在 openstack 的管理端安装计算服务和网络服务的管理端,在创建虚拟机的 node 节点上安装计算服务和网络服务的客户端,最后安装 dashboard 服务openstack 各种组件API 都是通过 apache 运行的
openstack 的管理端负责创建管理虚拟机过程的调度,通过 openstack 管理端创建虚拟机的相关数据最终都会记录到 mysql(mariadb)
node 节点没有权限往数据库中写数据,只有控制端有权限,并且 node 节点控制端通讯是通过 rabbitmq 间接通讯node 节点会监听 rabbitmq
控制端也会监听 rabbitmq,控制端把创建虚拟机的指令发送到 rabbitmq,由监听 rabbitmq 指定队列的node节点接收消息并创建虚拟机

1.创建数据库实例和数据库用户

 mysql -u root -p密码
create database keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
 flush privileges;
quit

在这里插入图片描述

2.安装、配置keystone、数据库、Apache

安装keystonehttpdmod_wsgi
mod_wsgi包的作用是让apache能够代理python程序的组件;openstack的各个组件,包括API都是用python写的,但访问的是apache,apache会把请求转发给python去处理,这些包只安装在controler节点

yum -y install openstack-keystone httpd mod_wsgi

cp -a /etc/keystone/keystone.conf{,.bak}
#对原文件创建一个备份
grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
#通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名

openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
#指定token的提供者;提供者就是keystone自己本身

openstack-config --set /etc/keystone/keystone.conf token provider fernet
#Fernet:一种安全的消息传递格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.初始化认证服务数据库

su -s /bin/sh -c "keystone-manage db_sync" keystone
su 命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell

在这里插入图片描述

4.初始化fernet 密钥存储库

(以下命令会生成两个密钥,生成的密钥放于/etc/keystone/目录下,用于加密数据)

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

在这里插入图片描述

5.配置bootstrap身份认证服务

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne		#指定一个区域名称

#此步骤是初始化openstack,会把openstack的admin用户的信息写入到mysql的user表中,以及url等其他信息写入到mysql的相关表中; 

#admin-url是管理网(如公有云内部openstack管理网络),用于管理虚拟机的扩容或删除;如果共有网络和管理网是一个网络,则当业务量大时,会造成无法通过openstack的控制端扩容虚拟机,所以需要一个管理网; 

#internal-url是内部网络,进行数据传输,如虚拟机访问存储和数据库、zookeeper等中间件,这个网络是不能被外网访问的,只能用于企业内部访问 

#public-url是共有网络,可以给用户访问的(如公有云) #但是此环境没有这些网络,则公用同一个网络 

#5000端口是keystone提供认证的端口 

`以下部分指的是openstack多节点的配置`
`#需要在haproxy服务器上添加一条listen` 
`#各种网络的url需要指定controler节点的域名,一般是haproxy的vip的域名(高可用模式)`

在这里插入图片描述

6.配置Apache HTTP服务器

 echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

7.创建配置文件

#安装完mod_wsgi包后,会生成 wsgi-keystone.conf 这个文件,文件中配置了虚拟主机及监听了5000端口,mod_wsgi就是python的网关
 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

在这里插入图片描述

8.开启httpd服务

systemctl enable httpd
systemctl start httpd

在这里插入图片描述

9.配置管理员账户的环境变量

#这些环境变量用于创建角色和项目使用,但是创建角色和项目需要有认证信息,所以通过环境变量声明用户名和密码等认证信息,欺骗openstack已经登录且通过认证,这样就可以创建项目和角色;也就是把admin用户的验证信息通过声明环境变量的方式传递给openstack进行验证,实现针对openstack的非交互式操作

cat >> ~/.bashrc << EOF
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
source ~/.bashrc

`export OS_USERNAME=admin			#控制台登陆用户名`
`export OS_PASSWORD=ADMIN_PASS	    #控制台登陆密码`

#通过配置环境变量,可以使用openstack命令进行一些操作,示例:
 openstack user list

在这里插入图片描述

创建OpenStack 域、项目、用户和角色

#创建一个项目(project),创建在指定的domain(域)中,指定描述信息,project名称为service(可使用openstack domain list 查询)
openstack project create --domain default --description "Service Project" service 

#创建角色(可使用openstack role list查看)
openstack role create user

#查看openstack 角色列表
openstack role list

#admin为管理员
#member为租户
#user:用户
#查看是否可以不指定密码就可以获取到token信息(验证认证服务)
openstack token issue

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

小结

Keystone 组件是作为OpenStack 集群中统一认证、授权的模块,其核心功能就是针对于User(用户)、Tenant(租户)、Role(角色)、Token(令牌/凭证)的控制(手工编译部署即围绕此功能展开的)

User:使用 openstack 的用户。 

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

Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。 

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

token 是用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服务申请才能得到 token。
	
`使用手动部署的模式搭建OpenStack的思路:
1、分模块部署
2、部署keystone模块的基础环境(下载依赖包、组件包、第三方工具/插件)
3、创建、开启此模块的功能(以keystone为例,创建并初始化认证数据库、修改配置文件、初始化密钥-fernet格式、配置身份认证服务)
4、验证`
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值