(原创)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 ...
随机推荐
- 每日英语:The Risks of Big Data for Companies
Big data. It's the latest IT buzzword, and it isn't hard to see why. The ability to parse more infor ...
- u3d中刚体与碰撞体的理解以及is Trigger属性的意义
刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件. 碰撞体:个人理解就是计算碰撞后的物理量(如:弹力). 刚体与碰撞体的关系:个人理解判断碰撞体就是需要计算力,如果碰撞的物体 ...
- 02-老马jQuery教程-jQuery事件处理
1. 绑定简单事件 在DOM中DOM0级绑定事件的方式是直接给事件属性赋值,但是这样有个缺点就是每次指定的事件处理程序会把之前的覆盖掉. jQuery简单绑定事件的方式,可以让我绑定多个事件处理程序跟 ...
- redis过期回调以及键空间通知
背景 最近需要涉及一个定时通知的业务,之前的办法是采用定时任务,每秒查询一次.后来了解到Redis的键空间通知机制,其中的过期通知,和业务非常贴合. 键空间通知 下面是Redis中文文档的介绍 键空间 ...
- 【linux】提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低
原文链接:http://www.myexception.cn/linux-unix/1622052.html [linux]提示"libc.so.6: version `GLIBC_2.14 ...
- EF中的1:0或1:1关系以及1:n关系
先给出1:0关系 User表包括用户名和密码 public class User { public int ID { get; set; } public string UserName { get; ...
- PHP判断当前页面是电脑登录,还是手机登录
//判断是否是电脑登录,还是手机登录 public function isMobil() { $useragent = isset($_SERVER['HTTP_USER_AGENT']) ? $_S ...
- Spring-boot 启动完成时执行指定任务
在服务启动完成时,如果需要执行一些特定的预加载任务,则可以通过实现 CommandLineRunner 接口来实现. 实现 @Component public class Started implem ...
- C#中的Partial
Partial关键词定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理. 首先看一段在C#中经常出现的代码,界面和后台分离,但是类名相同. public partial class Fo ...
- shell常用命令大全
目录: 一.文件目录类命令 二.文件压缩和归档类命令 三.系统状态类命令 四.网络类命令 五.其他 一.文件目录类命令 1.查看联机帮助信息. man命令.#man ls info命令. #info ...