(原创)OpenStack服务如何使用Keystone(一)---Keystone端的操作
(一)Keystone端的操作
(二)如何在OpenStack服务上部署Keystone中间件
OpenStack项目如果要使用Keystone作为统一的身份与权限管理系统, 需要做一定的设置工作, 我们将这些设置划分为在Keystone端进行的操作和在其他OpenStack服务端进行的操作, 本文介绍在Keystone端如何为其他服务建立对应的"服务用户"和维护整个系统的服务目录.
OenStack中用户使用身份凭证登录系统, 获得Keystone签发的令牌, 其后在整个OpenStack系统中使用该令牌访问其他的服务(如Nova等)直至令牌失效或被撤销. 令牌在OpenStack系统内提供了单点登录的支持, 简化了系统对用户的认证, 成为用户身份和权限管理的重要对象.
用户在使用已经获得的令牌请求OpenStack的其他服务时, 这些服务必须验证令牌的有效性--即这个令牌确实是Keystone已经签发的,且没有过期和被撤销. 这个验证工作由项目名称为"keystonemiddleware"的Keystone中间件完成. Keystone中间件部署在OpenStack其他服务上, 调用项目(或库)"python-keystoneclient"提供的接口, 验证用户令牌的有效性. Keystone中间件进行的验证工作需要访问Keystone的身份API, 这个操作需要一定的权限才能完成. 因此需要在Keystone端先为Keystone中间件创建用户, 再为这个用户指派具有相应权限的角色.由于部署和配置Keystone中间件的工作在其他OpenStack服务端完成, 因此将创建用户和授予角色等操作针对服务进行, Keystone中间件直接使用自己部署在的服务具有的账户信息即可. (当然, 也可以直接绕过身份认证, 将Keystone中间件的令牌设置成引导Keystone时设置的"admin_token", 这样Keystone中间件默认具有最高权限).
Keystone端的工作主要包括以下两个方面:
1. 创建"服务用户"并指派角色.
2. 维护整个OpenStack系统的服务目录.
下文就围绕这两方面工作详细展开.
一. 创建"服务用户"并指派角色
1. 创建"服务项目"
从上文可以看出, OpenStack服务或部署在其上的Keystone中间件实质上也是Keystone的用户. 通常我们为所有的OpenStack服务创建一个统一的项目, 如"service". 这里使用openstackclient完成命令行操作, 所有的操作都是基于第三版的身份API完成.
首先与系统建立一个会话,
$ openstack --os-token admin_token --os-url keystone_url --os-identity-api-version #Press Enter
一旦认证成功, 系统显示如下的提示符, 表示进入到openstackclient提供的脚本界面.
(openstack) YOUR_COMMAND_HERE
接着创建一个包含所有将要部署的OpenStack服务的"服务项目", 这里将其命名为"service".
(openstack) project create service
为具体类型的OpenStack服务(这里以Nova为例)创建属于他们的用户(当然也可以多个服务使用一个用户名).
(openstack) user create --password PassWord --project service nova
在已经配置好Keystone, 创建和定义了具体的管理员角色后, 为刚刚新建的"服务用户"授予项目内的管理员角色, 确保其能够调用验证令牌的身份API. 这里以授予系统默认的"admin"角色为例.
(openstack) role add admin --project service --user nova
这样用户"nova"就具有了在项目"service"上的"admin"角色.
二. 维护整个OpenStack系统的服务目录
Keystone在OpenStack系统中提供的一项重要支持就是维护着整个系统中所有服务的目录. 包括服务的类型, 名称, 具体的端点URL等. 其他服务如Dashboard非常依赖这些信息. Keystone自带两种服务目录存储驱动, 既可以将服务目录存储在文件中, 也可以存储在SQL后端中. 当然, 前端的用户接口都是一样的.
在向OpenStack系统中添加服务时, 应将其注册到Keystone的服务目录下, 这样其他服务才能通过服务目录找到它.
(openstack) service create nova --type compute \
--description "Nova Compute Service"
(openstack) service create glance --type image \
--description "Glance Image Service"
(openstack) service create keystone --type identity \
--description "Keystone Identity Service"
(openstack) service create swift --type object-store \
--description "Swift Service"
OpenStack系统中服务只是一个抽象的概念, 具体的功能是通过访问服务对应的端点(URL)完成的, 因此必须在成功部署某个服务端点后其添加到系统的服务目录.
(openstack) endpoint create keystone public http://201.111.129.48:5000/
上面的指令将一个端点添加到了服务“keystone”的公共界面. 端点可以属于特定的地理域, 具体操作可以查阅这里.
这里就完成了部署OpenStack服务时在Keystone端进行的操作. 前文已经说过, 其他服务与Keystone的交互通常是由Keystone中间件完成的, 下一篇随笔将介绍如何在OpenStack服务上部署Keystone中间件.
(原创)OpenStack服务如何使用Keystone(一)---Keystone端的操作的更多相关文章
- (原创)OpenStack服务如何使用Keystone(三)---详细配置Keystone中间件
(一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 前文我们介绍了如何部署Keystone中间件以及中间 ...
- (原创)OpenStack服务如何使用Keystone (二)---部署和配置Keystone中间件
(一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 部署OpenStack时一般先安装Keystone服 ...
- openstack安装记录(二)keystone安装
先决条件 在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌. 完成下面的步骤以创建数据库: 用数据库连接客户端以 root 用户连接到数据库服务器: $ mysql -u ...
- openstack项目【day23】:keystone组件基础
本节内容 一 什么是keystone 二 为何要有keystone 三 keystone的功能 四 keystone概念详解 五 keystone内包含的组件 六 keystone与openstack ...
- openstack项目【day24】:keystone部署及操作
阅读目录 一 前言 二 版本信息 三 部署keystone 四 keystone操作 五 验证 六 创建脚本 七 keystone使用套路总结 一 前言 任何软件的部署都是没有技术含量的,任何就部署讲 ...
- [ Openstack ] OpenStack-Mitaka 高可用之 认证服务(keystone)
目录 Openstack-Mitaka 高可用之 概述 Openstack-Mitaka 高可用之 环境初始化 Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...
- OpenStack服务默认端口号
在某些部署中,例如已设置限制性防火墙的部署,您可能需要手动配置防火墙以允许OpenStack服务流量. 要手动配置防火墙,您必须允许通过每个OpenStack服务使用的端口的流量.下表列出了每个Ope ...
- OpenStack 服务状态检查
openstack服务不正常 使用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@node-5 TimaIaas]# nova- ...
- 为openstack服务使能debug模式
Most OpenStack services use the same configuration options to enable the debug logging that is also ...
随机推荐
- android alipay
"java.security.spec.InvalidKeySpecException" KeyFactory keyFactory =KeyFactory.getInstance ...
- 【delphi】TStringList类常用属性方法详解
TStringList 常用方法与属性 var List: TStringList; i: Integer; begin List := TStringList.Create; List.Add('S ...
- tensorboard简单使用
代码写的再好,没有图别人也不知道好在哪. 我们在使用tensorflow的时候,使用tensorboard可以直观的看到我们的网络结构,甚至它可以计算卷积和池化的维度(我不知道是不是因为我已经运行了一 ...
- JS获取电脑或手机屏幕的分辨率
s = " 屏幕分辨率的高:"+ window.screen.height+"\n"; s += " 屏幕分辨率的宽:"+ window.s ...
- 有用sql语句一
DECLARE @retval int, @param1 int EXECUTE @retval=master.dbo.xp_fileexist 'D:\TkSoft\SamplePic\Fabric ...
- python3 scrapy 安装记录
一开始,想通过pycharm 直接安装,没想到出现下面的错误: Microsoft Visual C++ 14.0 is required... 的错误 网上有方法,是通过安装 VC++14.0 ,但 ...
- log_bin_trust_function_creators
log_bin_trust_function_creators错误解决 当有mysql本地或远程建立function或procedure时报上面的错误 或者如果开启了二进制日志,但是用户没有suppe ...
- 简单防范SYN_RECV攻击
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 这条语句返回结果如下 TIME_WAIT FIN_WAIT1 ...
- Entity Framework应用:根据实体的EntityState状态实现增删改查
在上一篇文章中,我们讲解了使用EF实现简单的增删改成,在这篇文章中我们使用实体的EntityState状态来优化数据的增删改查. 一.修改数据 上篇文章中的修改数据的方法是EF官方推荐的方式,即先查询 ...
- 【Django】 积累
■ 数据库的长连接 众所周知,数据库的长连接可以在一定程度上提高整个应用的读写效率,节省创建和销毁数据库连接的成本.Django在1.6版本之后就已经支持了长连接的设置,是在settings中的DAT ...