OpenStack云计算平台搭建与管理教学教案共17单元11.docx

上传人:b****5 文档编号:6849056 上传时间:2023-01-11 格式:DOCX 页数:26 大小:280.14KB
下载 相关 举报
OpenStack云计算平台搭建与管理教学教案共17单元11.docx_第1页
第1页 / 共26页
OpenStack云计算平台搭建与管理教学教案共17单元11.docx_第2页
第2页 / 共26页
OpenStack云计算平台搭建与管理教学教案共17单元11.docx_第3页
第3页 / 共26页
OpenStack云计算平台搭建与管理教学教案共17单元11.docx_第4页
第4页 / 共26页
OpenStack云计算平台搭建与管理教学教案共17单元11.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

OpenStack云计算平台搭建与管理教学教案共17单元11.docx

《OpenStack云计算平台搭建与管理教学教案共17单元11.docx》由会员分享,可在线阅读,更多相关《OpenStack云计算平台搭建与管理教学教案共17单元11.docx(26页珍藏版)》请在冰豆网上搜索。

OpenStack云计算平台搭建与管理教学教案共17单元11.docx

OpenStack云计算平台搭建与管理教学教案共17单元11

云计算基础平台搭建与应用课程教案

授课题目:

第11讲OpenStack的认证中心——Keystone

教学时数:

3

授课类型:

理论课实践课

教学目的、要求:

了解OpenStack的基本名词

了解Keystone的功能

了解Keystone的组件构成及功能

了解Keystone的基本工作过程

能够安装配置Keystone认证组件

教学重点:

了解OpenStack的基本名词

Keystone的组件构成及基本工作过程

安装配置keystone服务

教学方法和手段:

通过微课讲解

跟着视频实作

教学条件:

网课

参考资料:

云计算基础平台搭建与应用课程教案

教学内容及过程

旁批

课前准备:

检查自己前面的系统配置是否完全完成,必须完成后才能进入这一段学习。

教学引入:

OpenStack云计算平台是由OpenStack的多个功能组件组成。

犹如搭积木一样,各个功能组件构成了云计算平台,那应该先搭建哪一个组件呢?

由于OpenStack的所有组件都要通过“Keystone”组件的认证才能够进入云管理平台,因此首先安装身份认证组件:

“Keystone”。

教学内容与教学设计:

11.1Keystone的基本概念

第1篇

11.1.1基本名词解释

从本章开始我们将要接触很多OpenStack的专业名词,如域、项目、服务、端点、用户、角色、凭据、鉴权、令牌、组等,感觉好复杂的样子呢。

下面我们通过一个浅显的例子来理解它们。

假设我投资了一个网吧,这个网吧就是项目(Project)。

该网吧对外提供多种服务(Service),比如上网、泡方便面、叫外卖等。

为了知道客户想要什么服务,每个服务都有一个不同的服务地址,只要你来到这个地址就能使用对应的服务,如到前台可以泡方便面,这里的地址就是服务端点(Endpoint)。

在这个项目里,我、网管和来上网的人都是用户(User),我们都可以使用该网吧的服务。

但我们在网吧里的权限又不一样,因为我们的角色(Role)不一样。

我的角色是老板,我有查账的权限;网管的角色是管理员,负责收银和软硬件管理;其他人的角色是顾客,只能上网与消费。

用户来到服务端点后并不是马上就可以使用服务,得把身份凭据(Credentials)提供出来由系统进行鉴权(Authentication)以判断是否可以使用该服务(比如年龄不到不允许使用上网服务)。

当通过鉴权后会给发给你一个令牌(Token),每次你要使用项目中某项服务的时候只需要出示令牌即可。

比如你还需要买方便面时只需要出示令牌由管理员进行记账即可,不需要再次鉴权。

另外,为了便于管理还可以将若干个用户分为若干组(Group),如VIP组收费打八折,一般会员组收费打九折,这实际是进行批量权限设定,你进了这个组就有了这个组的所有权限。

随着业务扩大,又开设了很多连锁加盟店(不同的项目),显然每个加盟店有自己的用户,不能拿着一个网吧的会员卡到另一个网吧消费。

此时我们可以把部分项目(Project)和用户(User)划到一个域(Domain)中,并规定只有本域中的用户才能使用本域中项目的资源。

其中域(Domain)、项目(Project)、组(Group)、用户(User)、角色(Role)的关系图如图11.1所示。

图11.1域、项目、组、用户和角色关系模型图

(1)项目(Project)

Project是可供用户访问的资源集合,不同的项目(Project)之间资源是隔离的。

(2)用户(User)

User指代任何拥有身份验证信息来使用OpenStack的实体,它属于特定的域(Domain),可以是真正的使用人、其他系统或者服务。

OpenStack中自带了“admin”用户,该用户从属于“admin”项目并且分配有“admin”角色。

用户必须要指定一个项目(Project)才可以申请使用OpenStack的服务。

(3)域(Domain)

Domain是项目(Project)和用户(User)的集合。

默认存在“default”域,如果没有创建域,所有项目和用户都使用“default”域。

(4)角色(Role)

Role是预定义的权限集合。

OpenStack自带两个预定义角色,即“admin”和“member”。

“member”角色提供普通用户访问权限。

“admin”角色提供整个OpenStack环境的管理特权。

如果项目中的用户被分配了“admin”角色,则该用户获得与“admin”用户相同的特权。

“admin”用户不仅是所属项目的管理员,还能够管理OpenStack环境中的所有项目。

(5)组(Group)

Group是域中的部分用户的集合。

通过分配角色到组,可以批量向在该组中的所有用户分配权限。

(6)凭据(Credentials)

是Keystone验证用户身份时需要的身份验证数据。

这些数据包含用户名、密码、项目名、域名等信息。

(7)鉴权(Authentication)

鉴权(Authentication)是Keystone通过检查用户的凭据(Credentials)来确定用户的身份的过程。

当用户的凭据(Credentials)通过验证后,Keystone给用户提供身份验证令牌(Token),让用户能够访问该服务。

(8)令牌(Token)

令牌(Token)是一个加密字符串,作为访问资源的“通行证”。

一个Token包含了在指定范围和有效时间内可以被访问的资源信息。

(9)服务(Service)

即Openstack中提供的组件服务,如计算服务、镜像服务等。

(10)端点(Endpoint)

一个可以通过网络来访问和定位某个服务(Service)的地址,通常是一个URL地址。

如“http:

//controller:

5000/v3”就是Keystone组件对外提供服务的端点。

Endpoint分为三类:

1 admin-url:

给管理员提供服务的地址

2 internal-url:

给OpenStack内部组件提供服务的地址

3 public-url:

给其他用户提供服务的地址

在OpenStackTrain版中这三类端点是一样的,只是保留了不同的定义而已。

11.1.2Keystone基本架构

图11.2Keystone服务后端支持模块

如图11.2所示,Keystone的服务(Service)是由Token、Catalog、Identity、Policy四大后端模块所支持的。

(1)Tokenbackend

顾名思义该模块用来生成和管理Token令牌。

(2)Catalogbackend

用来存储和管理服务(Service)、服务端点(Endpoint)。

(3)Identitybackend

用来管理项目(Project)、用户(User)、角色(Role)和提供验证服务。

(4)Policybackend

用来管理所有访问的权限。

11.1.3Keystone认证的基本步骤

图11.3虚拟机生成步骤示意图

从图11.3可以看出,对OpenStack中任何服务的访问都要经过Keystone的鉴权。

Keystone的鉴权分为两种:

(1)判断用户凭证是否合法

用户初次使用服务时需要提交给Keystone用户名、密码等用户凭证信息。

Keystone进行鉴权判断是否为合法用户,如果是则颁发令牌(Token)。

在颁发的令牌中包含有用户对服务的使用权限、令牌的失效时间等信息。

拿着令牌就可以在系统内通行了。

(2)判断用户令牌是否合法

当用户(User)使用OpenStack的任一组件服务时都需要提交已获得的令牌。

提供服务的组件将收到的令牌提交给KeyStone判断该令牌是否合法,是否过期,是否有权获得服务等。

只有通过了KeyStone的验证后服务才会响应相应的请求。

第1章

第2章

第3章

第4章

第5章

第6章

6.1

11.2安装与配置Keystone认证服务

为了避免接下来的工作中由于操作不当造成系统重装的风险,我们将前期工作进行拍摄快照保存。

由于本章工作只在控制节点上实施,因此只需要给控制节点拍摄快照。

详细操作请参阅任务6.4。

11.2.1安装和配置Keystone

(1)安装Keystone软件包

[root@controller~]#yuminstallopenstack-keystonehttpdmod_wsgi-y

这里安装了三个软件:

“openstack-keystone”,“httpd”,“mod_wsgi”。

openstack-keystone是Keystone的软件包;Keystone组件实际是一款基于服务器网关接口(WSGI)协议的Web应用,它需要在支持WSGI协议的Web服务器上运行;Httpd是一个Web服务器,当它安装上mod_wsgi扩展模块就能支持WSGI协议,以满足Keystone的运行需要。

在安装openstack-keystone包的时候,同时也会在系统自动创建名为“keystone”的用户以及同名用户组。

我们可以用如下两种方式查看系统自动生成的“keystone”用户和“keystone”用户组的相关信息。

1查看keystone用户信息

[root@controller~]#cat/etc/passwd|grepkeystone

能看见已经存在“keystone”用户。

2查看keystone用户组信息

[root@controller~]#cat/etc/group|grepkeystone

能看见已经存在“keystone”用户组。

(2)创建keystone数据库并授权

1进入数据库

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

因为MariaDB数据库完全兼容MySql数据库,因此在使用方式上是与MySql数据库是一样的。

该命令的参数-u后为用户名,-p后为密码,不需要空格。

2建立keystone数据库

MariaDB[(none)]>CREATEDATABASEkeystone;#创建一个名为keystone的数据库

【提示】SQL命令需要“;”作为结束符,不要忘记。

3为数据库授权

MariaDB[(none)]>GRANTALLPRIVILEGESONkeystone.*TO'keystone'@'localhost'IDENTIFIEDBY'KEYSTONE_DBPASS';

MariaDB[(none)]>GRANTALLPRIVILEGESONkeystone.*TO'keystone'@'%'IDENTIFIEDBY'KEYSTONE_DBPASS';

上面两条语句把“keystone”数据库所有表(keystone.*)的所有权限(ALLPRIVILEGES)赋予本地主机('localhost')及任意远程主机('%')中名为keystone的用户,验证密码为“KEYSTONE_DBPASS”。

【提示】OpenStack的密码都可以根据实际需要进行设置,但一定要记住它们!

4退出数据库

MariaDB[(none)]>exit;

(3)修改Keystone配置文件

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

这是一个很长的配置文件,我们首先配置Keystone组件使用的数据库。

利用vi的搜索功能,搜索到[database]区域,增加或者修改

connection=mysql+pymysql:

//keystone:

KEYSTONE_DBPASS@controller/keystone

该行配置数据库连接信息:

用户“keystone”和密码“KEYSTONE_DBPASS”(keystone:

KEYSTONE)去连接controller主机中的名字叫“keystone”的数据库(@controller/keystone)。

【提示】这里设置的用户名和密码要和数据库里对keystone数据库授权时设置的用户名和密码一致。

然后在[token]区域下取消注释让下面设置生效。

provider=fernet

Keystone令牌有三种生成方式:

UUID、PKI、Fernet。

其中“Fernettoken”是当前主流推荐的token加密格式。

它是一种轻量级的消息格式,不需要存储于数据库,减少了磁盘的IO,带来了一定的性能提升。

一个“Fernettoken”的样子长得像这样的:

gAAAAABeuBugyxPug1qqhcvgl-4rHhlrd6VT71g0LdjbtnpvnKANkSqzndDcwHky-o0c06nU7jfaZhEpgnEnw8Csrw7nxrBeIMY3xBtLwLY0DJBQhHyd55b890lOt9UzXiv--YZNk7jPYP3RzfUg8HmBUSI2SUmHd2eYcrowUq32c7hv7gODLoA

在这个字符串中存储了用加密密钥加密后的用户信息、权限信息、过期时间信息等。

Keystone在验证的时候将用解密密钥进行解密获得原始信息。

(4)同步数据库

Keystone安装后已经提供了数据库的基础表数据,但还没有导入到数据库中,我们需要手动将数据同步导入到数据库中。

[root@controller~]#sukeystone-s/bin/sh-c"keystone-managedb_sync"

【命令解释】

sukeystone:

切换到keystone用户,因为只有keystone用户(安装时自动创建的用户)拥有对keystone数据库完全操作的权限所以要切换到keystone用户来执行同步,执行完后将把用户切换回root用户;

-s/bin/sh:

-s为su命令的参数,指定用什么编译器(Shell)来执行命令,“/bin/sh”就是指定的编译器;

-c:

为su的参数,后面在引号内的是具体执行的命令;

keystone-manage:

是用来同Keystone服务进行交互的命令行工具。

keystone-manage的命令格式:

keystone-manage[参数]具体操作(action)

keystone-manage常见操作:

db_sync:

同步数据库;

fernet_setup:

创建一个“Fernetkey”仓库,用于令牌(token)加密;

credential_setup:

创建一个“Fernetkey”仓库,用于凭证(credential)加密;

bootstrap:

认证引导服务,初始化Keystone的登录信息;

token_flush:

清除过期的token。

(5)检查同步后的数据库

[root@controller~]#mysql-uroot-p000000#进入到数据库

MariaDB[(none)]>usekeystone;#转换到keystone数据库

MariaDB[keystone]>showtables;#查询该数据库中所有的表

见到如上数据库表列表时表示数据库导入成功。

11.2.2Keystone组件初始化

(1)初始化Fernet密钥存储库

[root@controller~]#keystone-managefernet_setup--keystone-userkeystone--keystone-groupkeystone

该命令将自动创建“/etc/keystone/fernet-keys/”目录,并生成两个Fernet密钥放到目录下。

此密钥用于加密和解密令牌(token)。

[root@controller~]#keystone-managecredential_setup--keystone-userkeystone--keystone-groupkeystone

该命令将自动创建“/etc/keystone/credential-keys/”目录,并生成两个Fernet密钥放到目录下。

此密钥用于验证用户凭证的正确性。

当token过期后需要重新输入用户名和密码等相关凭证,该密钥完成对凭证的加密和解密工作。

(2)初始化身份认证引导

已知OpenStack有一个默认用户为“admin”,但现在还没有对应的密码等登录所必需的信息。

下面我们用“keystone-managebootstrap”命令来给admin用户初始化它的登录信息。

以后登录时只需要比对用户名、密码等信息就可以进行鉴权。

[root@controller~]#keystone-managebootstrap--bootstrap-passwordADMIN_PASS--bootstrap-admin-urlhttp:

//controller:

5000/v3/--bootstrap-internal-urlhttp:

//controller:

5000/v3/--bootstrap-public-urlhttp:

//controller:

5000/v3/--bootstrap-region-idRegionOne

【命令及参数解释】

keystone-managebootstrap:

给系统初始化鉴权所需要的登录信息;

--bootstrap-password:

设置admin用户的密码;

--bootstrap-admin-url:

设置admin用户使用的服务地址(endpoint);

--bootstrap-internal-url:

设置内部用户使用的服务地址(endpoint);

--bootstrap-public-ur:

设置其他用户使用的服务地址(endpoint);

--bootstrap-region-id:

设置区域ID名称,用于配置集群服务。

从命令中可以看到admin-url、internal-url、public-ur都是同样的地址,均指向Keystone的服务端点。

(3)创建wsgi配置文件软链接

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

该命令将wsgi-keystone.conf文件软链接到了“/etc/httpd/conf.d/”这个目录下面,链接完成后在该目录下可以看到“wsgi-keystone.conf”文件。

这里并不是把该文件拷贝过去,只是建立了一个映射,类似于快捷方式。

因为“/etc/httpd/conf.d/”目录下的conf文件都是Apache的配置文件,所以这个命令让“wsgi-keystone.conf”也成为Apache的配置文件之一。

该配置文件让Apache能够应用mod_wsgi模块以支持WSGI协议。

(4)修改Apache配置,启动Apache服务

Keystone本质上是一个WEB应用,所以要借助WEB服务器运行。

Apache就是一个WEB服务器应用,它的服务名为“httpd”。

1 修改Apache配置

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

配置服务器的名称为控制节点的名称:

ServerNamecontroller

2 重启Apache服务

[root@controller~]#systemctlenablehttpd#开机启动

[root@controller~]#systemctlrestarthttpd#重新启动

11.3鉴权并验证Keystone服务

11.3.1鉴权

在以上的操作中,我们设置了OpenStack用户“admin”的密码为“ADMIN_PASS”。

现在该如何通过Keystone的认证登入系统呢?

我们首先需要鉴权,判断用户是否是合法用户。

我们可以通过环境变量传送用户名及密码等相关登录信息给KeyStone,由它进行鉴权。

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

[root@controller~]#viadmin-openrc

在文件中写入如下命令

exportOS_USERNAME=admin

exportOS_PASSWORD=ADMIN_PASS

exportOS_PROJECT_NAME=admin

exportOS_USER_DOMAIN_NAME=Default

exportOS_PROJECT_DOMAIN_NAME=Default

exportOS_AUTH_URL=http:

//controller:

5000/v3

exportOS_IDENTITY_API_VERSION=3

exportOS_IMAGE_API_VERSION=2

在这里面我们定义了要登录OpenStack系统用户名(OS_USERNAME)是“admin”,登录密码(OS_PASSWORD)是“ADMIN_PASS”,用户属于的域(OS_USER_DOMAIN_NAME)是“Default”,项目属于的域(OS_PROJECT_DOMAIN_NAME)是“Default”,认证地址(OS_AUTH_URL)是“http:

//controller:

5000/v3”,Keystone版本号(OS_IDENTITY_API_VERSION)是“3”,镜像管理应用的版本号(OS_IMAGE_API_VERSION)是“2”。

(2)导入环境变量进行鉴权

[root@controller~]#.admin-openrc#运行

[root@controller~]#export-p#查看环境变量

能看到如上结果,说明环境变量导入成功。

这里的环境变量就是模拟用户登录时将用户名、密码等信息提供给KeyStone来验证是否允许其登录。

11.3.2验证Keystone服务

(1)创建service项目

[root@controller~]#openstackprojectcreate--domaindefaultservice

【命令解释】

“openstackprojectcreate”:

创建一个项目;

“--domaindefault”:

该项目建立在“default”这个域下,该域名必须存在;

“service”:

这是新项目的名。

【提示】系统存在一个默认名为“Default”、ID名为“default”的域,由于在“--domain”后的输入既可以是域的名字,也可以是域的ID,所以在这里输入Default和default均可以。

[root@controller~]#openstackprojectlist#查看现有项目列表

(2)创建user的角色

[root@controller~]#openstackrolecreateuser

(3)登入系统查看系统已有的域、项目、用户和角色信息

如果在后面操作中看到“Missingvalueauth-urlrequiredforauthpluginpassword”这样的错误信息,说明用户的登录信息还没有导入系统,只需将上面创建的“admin-openrc”导入到环境变量即可。

1 查看已有域(Domain)

[root@c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1