




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE76云计算基础平台搭建与应用课程教案授课题目:第11讲OpenStack的认证中心——Keystone教学时数:3授课类型:R理论课R实践课教学目的、要求:了解OpenStack的基本名词了解Keystone的功能了解Keystone的组件构成及功能了解Keystone的基本工作过程能够安装配置Keystone认证组件教学重点:了解OpenStack的基本名词Keystone的组件构成及基本工作过程安装配置keystone服务教学方法和手段:通过微课讲解跟着视频实作教学条件:网课参考资料:
云计算基础平台搭建与应用课程教案教学内容及过程旁批课前准备:检查自己前面的系统配置是否完全完成,必须完成后才能进入这一段学习。教学引入:OpenStack云计算平台是由OpenStack的多个功能组件组成。犹如搭积木一样,各个功能组件构成了云计算平台,那应该先搭建哪一个组件呢?由于OpenStack的所有组件都要通过“Keystone”组件的认证才能够进入云管理平台,因此首先安装身份认证组件:“Keystone”。教学内容与教学设计:11.1Keystone的基本概念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域、项目、组、用户和角色关系模型图项目(Project)Project是可供用户访问的资源集合,不同的项目(Project)之间资源是隔离的。用户(User)User指代任何拥有身份验证信息来使用OpenStack的实体,它属于特定的域(Domain),可以是真正的使用人、其他系统或者服务。OpenStack中自带了“admin”用户,该用户从属于“admin”项目并且分配有“admin”角色。用户必须要指定一个项目(Project)才可以申请使用OpenStack的服务。域(Domain)Domain是项目(Project)和用户(User)的集合。默认存在“default”域,如果没有创建域,所有项目和用户都使用“default”域。角色(Role)Role是预定义的权限集合。OpenStack自带两个预定义角色,即“admin”和“member”。“member”角色提供普通用户访问权限。“admin”角色提供整个OpenStack环境的管理特权。如果项目中的用户被分配了“admin”角色,则该用户获得与“admin”用户相同的特权。“admin”用户不仅是所属项目的管理员,还能够管理OpenStack环境中的所有项目。组(Group)Group是域中的部分用户的集合。通过分配角色到组,可以批量向在该组中的所有用户分配权限。凭据(Credentials)是Keystone验证用户身份时需要的身份验证数据。这些数据包含用户名、密码、项目名、域名等信息。鉴权(Authentication)鉴权(Authentication)是Keystone通过检查用户的凭据(Credentials)来确定用户的身份的过程。当用户的凭据(Credentials)通过验证后,Keystone给用户提供身份验证令牌(Token),让用户能够访问该服务。令牌(Token)令牌(Token)是一个加密字符串,作为访问资源的“通行证”。一个Token包含了在指定范围和有效时间内可以被访问的资源信息。服务(Service)即Openstack中提供的组件服务,如计算服务、镜像服务等。端点(Endpoint)一个可以通过网络来访问和定位某个服务(Service)的地址,通常是一个URL地址。如“http://controller:5000/v3”就是Keystone组件对外提供服务的端点。Endpoint分为三类:admin-url:给管理员提供服务的地址internal-url:给OpenStack内部组件提供服务的地址public-url:给其他用户提供服务的地址在OpenStackTrain版中这三类端点是一样的,只是保留了不同的定义而已。11.1.2Keystone基本架构图11.2Keystone服务后端支持模块如图11.2所示,Keystone的服务(Service)是由Token、Catalog、Identity、Policy四大后端模块所支持的。Tokenbackend 顾名思义该模块用来生成和管理Token令牌。Catalogbackend 用来存储和管理服务(Service)、服务端点(Endpoint)。Identitybackend 用来管理项目(Project)、用户(User)、角色(Role)和提供验证服务。Policybackend 用来管理所有访问的权限。11.1.3Keystone认证的基本步骤图11.3虚拟机生成步骤示意图从图11.3可以看出,对OpenStack中任何服务的访问都要经过Keystone的鉴权。Keystone的鉴权分为两种:判断用户凭证是否合法用户初次使用服务时需要提交给Keystone用户名、密码等用户凭证信息。Keystone进行鉴权判断是否为合法用户,如果是则颁发令牌(Token)。在颁发的令牌中包含有用户对服务的使用权限、令牌的失效时间等信息。拿着令牌就可以在系统内通行了。判断用户令牌是否合法当用户(User)使用OpenStack的任一组件服务时都需要提交已获得的令牌。提供服务的组件将收到的令牌提交给KeyStone判断该令牌是否合法,是否过期,是否有权获得服务等。只有通过了KeyStone的验证后服务才会响应相应的请求。11.2安装与配置Keystone认证服务为了避免接下来的工作中由于操作不当造成系统重装的风险,我们将前期工作进行拍摄快照保存。由于本章工作只在控制节点上实施,因此只需要给控制节点拍摄快照。详细操作请参阅任务6.4。11.2.1安装和配置Keystone安装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”用户组的相关信息。查看keystone用户信息[root@controller~]#cat/etc/passwd|grepkeystone能看见已经存在“keystone”用户。查看keystone用户组信息[root@controller~]#cat/etc/group|grepkeystone能看见已经存在“keystone”用户组。创建keystone数据库并授权进入数据库[root@controller~]#mysql-uroot-p000000因为MariaDB数据库完全兼容MySql数据库,因此在使用方式上是与MySql数据库是一样的。该命令的参数-u后为用户名,-p后为密码,不需要空格。建立keystone数据库MariaDB[(none)]>CREATEDATABASEkeystone;#创建一个名为keystone的数据库【提示】SQL命令需要“;”作为结束符,不要忘记。为数据库授权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的密码都可以根据实际需要进行设置,但一定要记住它们!退出数据库MariaDB[(none)]>exit;修改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=fernetKeystone令牌有三种生成方式:UUID、PKI、Fernet。其中“Fernettoken”是当前主流推荐的token加密格式。它是一种轻量级的消息格式,不需要存储于数据库,减少了磁盘的IO,带来了一定的性能提升。一个“Fernettoken”的样子长得像这样的:gAAAAABeuBugyxPug1qqhcvgl-4rHhlrd6VT71g0LdjbtnpvnKANkSqzndDcwHky-o0c06nU7jfaZhEpgnEnw8Csrw7nxrBeIMY3xBtLwLY0DJBQhHyd55b890lOt9UzXiv--YZNk7jPYP3RzfUg8HmBUSI2SUmHd2eYcrowUq32c7hv7gODLoA在这个字符串中存储了用加密密钥加密后的用户信息、权限信息、过期时间信息等。Keystone在验证的时候将用解密密钥进行解密获得原始信息。同步数据库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。检查同步后的数据库[root@controller~]#mysql-uroot-p000000#进入到数据库MariaDB[(none)]>usekeystone;#转换到keystone数据库MariaDB[keystone]>showtables;#查询该数据库中所有的表见到如上数据库表列表时表示数据库导入成功。11.2.2Keystone组件初始化初始化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过期后需要重新输入用户名和密码等相关凭证,该密钥完成对凭证的加密和解密工作。初始化身份认证引导已知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的服务端点。创建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协议。修改Apache配置,启动Apache服务Keystone本质上是一个WEB应用,所以要借助WEB服务器运行。Apache就是一个WEB服务器应用,它的服务名为“httpd”。修改Apache配置[root@controller~]#vi/etc/httpd/conf/httpd.conf配置服务器的名称为控制节点的名称:ServerNamecontroller重启Apache服务[root@controller~]#systemctlenablehttpd#开机启动[root@controller~]#systemctlrestarthttpd#重新启动11.3鉴权并验证Keystone服务11.3.1鉴权在以上的操作中,我们设置了OpenStack用户“admin”的密码为“ADMIN_PASS”。现在该如何通过Keystone的认证登入系统呢?我们首先需要鉴权,判断用户是否是合法用户。我们可以通过环境变量传送用户名及密码等相关登录信息给KeyStone,由它进行鉴权。创建初始化环境变量文件[root@controller~]#viadmin-openrc在文件中写入如下命令exportOS_USERNAME=adminexportOS_PASSWORD=ADMIN_PASSexportOS_PROJECT_NAME=adminexportOS_USER_DOMAIN_NAME=DefaultexportOS_PROJECT_DOMAIN_NAME=DefaultexportOS_AUTH_URL=http://controller:5000/v3exportOS_IDENTITY_API_VERSION=3exportOS_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”。导入环境变量进行鉴权[root@controller~]#.admin-openrc#运行[root@controller~]#export-p#查看环境变量能看到如上结果,说明环境变量导入成功。这里的环境变量就是模拟用户登录时将用户名、密码等信息提供给KeyStone来验证是否允许其登录。11.3.2验证Keystone服务创建service项目[root@controller~]#openstackprojectcreate--domaindefaultservice【命令解释】“openstackprojectcreate”:创建一个项目;“--domaindefault”:该项目建立在“default”这个域下,该域名必须存在;“service”:这是新项目的名。【提示】系统存在一个默认名为“Default”、ID名为“default”的域,由于在“--domain”后的输入既可以是域的名字,也可以是域的ID,所以在这里输入Default和default均可以。[root@controller~]#openstackprojectlist#查看现有项目列表创建user的角色[root@controller~]#openstackrolecreateuser登入系统查看系统已有的域、项目、用户和角色信息如果在后面操作中看到“Missingvalueauth-urlrequiredforauthpluginpassword”这样的错误信息,说明用户的登录信息还没有导入系统,只需将上面创建的“admin-openrc”导入到环境变量即可。查看已有域(Domain)[root@controller~]#openstackdomainlist#查看域列表这里我们就能够看到存在一个名为Default,ID为default的域。查看已有项目(Project)[root@controller~]#openstackprojectlist#查看项目列表查看已有用户(User)[root@controller~]#openstackuserlist#查看用户列表查看已有角色(Role)[root@controller~]#openstackrolelist#查看角色列表更新令牌[root@controller~]#openstacktokenissue每一次运行该命令将重新生成一个令牌,令牌过期时间也会重新计算。这里的id对应的数据就是token值,expires是token的过期时间,project_id是项目id,user_id是用户id。检查Keystone服务端点(Endpo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Module9单元整体(教学设计)-2024-2025学年外研版(三起)英语四年级上册
- 2025年游艺用品及室内游艺器材项目发展计划
- 2025年超细合金粉末合作协议书
- 电影广告在线平台行业跨境出海战略研究报告
- 任务十五断面图表达一断面图的概念二断面图的画法三实训任务
- 2025年导静电胶管合作协议书
- 风能咨询服务行业跨境出海战略研究报告
- 社交媒体+零售购物体验企业制定与实施新质生产力战略研究报告
- 烧伤治疗药物创新企业制定与实施新质生产力战略研究报告
- 2025年机床附件及辅助装置项目建议书
- (高清版)DZT 0305-2017 天然场音频大地电磁法技术规程
- 消化道出血的PBL教学查房
- 放射科护理查房
- 放射诊疗设备的辐射安全防护设计
- 人音版四年级音乐下册全册教学设计教案表格式
- 计算机应用基础(Windows10+Office2016)(第3版)-教案 情境5、6 Word2016基本操作、实验 Word 2016基本操作
- 《铁路建设项目质量安全红线管理规定》
- 叉车培训课件模板
- 企业管理的创新管理
- 心脏康复评估量表-完整版
- 养老机构重大事故隐患判定标准与安全管理提升
评论
0/150
提交评论