当前位置: 首页 > 编程笔记 >

OpenStack Identity(Keystone)身份服务、体系结构与中间件讲解

慕麒
2023-03-14
本文向大家介绍OpenStack Identity(Keystone)身份服务、体系结构与中间件讲解,包括了OpenStack Identity(Keystone)身份服务、体系结构与中间件讲解的使用技巧和注意事项,需要的朋友参考一下

OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户、帐号和角色信息服务,并为OpenStack Object Storage提供授权服务。

Keystone体系结构

Keystone 有两个主要部件:验证和服务目录

验证:提供了一个基于令牌的验证服务,主要有以下几个概念:

租户(Tenant)

使用OpenStack相关服务的一个组织。一个租户映射到一个Nova的“project-id”,在对象存储中,一个租户可以有多个容器。根据不同的安装方式,一个租户可以代表一个客户、帐号、组织或项目。

用户(User)

代表一个个体,OpenStack以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。

证书(credentials)

为了给用户提供一个令牌,需要用证书来唯一标识一个Keystone用户的密码或其它信息

令牌(token)

一个令牌是一个任意比特的文本,用于与其它OpenStack服务来共享信息,Keystone以此来提供一个central location,以验证访问OpenStack服务的用户。一个令牌可以是“scoped”或“unscoped”。一个scoped令牌代表为某个租户验证过的用户,而unscoped令牌则仅代表一个用户。令牌的有效期是有限的,可以随时被撤回。

角色(Role)

一个角色是应用于某个租户的使用权限集合,以允许某个指定用户访问或使用特定操作。角色是使用权限的逻辑分组,它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户。

服务目录(Service Catalog)

Keystone为OpenStack安装提供了一个REST API端点列表并以此作为决策参考。主要的概念包括:

服务(Service)

一个OpenStack服务,例如nova、swift、glance或keystone。一个服务可以拥有一个或多个端点,通过它用户可以与OpenStack的服务或资源交互。

端点(Endpoint)

一个可以通过网络访问的地址(典型地,一个URL),代表了OpenStack服务的API接口。端点也可以分组为模板,每个模板代表一组可用的OpenStack服务,这些服务是跨区域(regions)可用的。

模板(Template)

一个端点集合,代表一组可用的OpenStack服务端点。

Keystone的组件

Keystone包含一个命令行接口,可以与Keystone API交互以管理keystone和相关服务。

keystone - 运行keystone-admin和keystone-service
keystone-admin - 操作keystone的管理API
keystone-service - 用于验证的,面向用户的AP
keystone-manage - 管理keystone的命令行接口
Keystone还包括WSGI中间件以为Nova和Swift提供验证服务。
Keystone使用一个内置的SQLite数据库 - 为验证用户,将来也可能使用一个外部LDAP服务来代替存储证书

中间件(Middleware)

Keystone中间件位于OpenStack服务前面,处理进来的请求验证。中间件的设计遵循如下的规范。

中间件的源代码位于Keystone/middleware。

中间件支持两个接口:WSGI和REST/HTTP。

REST & HTTP API

如果进来一个未经认证的调用,中间件将响应一个401 Unautorized错误。根据每HTTP的标准,它也会返回一个WWW-Authenticate包头以通知调用者支持哪个协议。对于Keystone验证,响应的语法格式如下:

WWW-Authenticate: Keystone uri="url to Keystone server"The client can then make the necessary calls to the Keystone server, obtain a token, and retry the call with the token.

令牌使用 X-Auth-Toke包头传递。

WSGI API(包头)

当成功验证后中间件经为下行的WSGI应用发送如下包头:

X-Identity-Status

提供请求是否被验证的信息。

X-Tenant

提供了租户ID(在Keystone中以URL的形式出现)。在Keysotne转为采用ID/Name模式之前,它为租户提供了对任意遗留实现的支持。

X-Tenant-Id

唯一不变的租户ID。

X-Tenant-Name

唯一但可变的租户名字。

X-User

用于登录的用户名。

X-Roles

分配给用户的角色。

以上所述是小编给大家介绍的OpenStack Identity(Keystone)身份服务、体系结构与中间件 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 总而言之,我们有: 产品类别: 产品ID、产品名称 订单类别: 订单ID、产品ID、用户ID、订单日期 这些方法中的任何一种可以被认为是最佳实践吗?还是有不同的解决方案?

  • 我是事件驱动微服务的新手,也是微服务本身的新手。我正在开发的系统并不大,它处理一堆文件,然后根据调用不同服务的数据。所以在我看来,一个好主意是,不要让服务调用其他服务来完成这项工作,而是将这些消息发送到发布/订阅队列,处理它们并将它们发送到相关主题,然后每个服务将订阅其中一个或几个主题,每隔几分钟,每个服务都会提取它们订阅的消息并发挥它们的魔力。这些服务也可以通过Rest来公开,以防您想强制执行它

  • 我正在从事一个基于微服务架构的大型项目,所以考虑一下我有10个服务,其中一些有自己的数据库,这些数据库采用不同的技术(mysql、mongodb、elastic等) 那么,备份和恢复服务集合的最佳做法是什么? 真正的问题是这些数据库相互关联,例如,在我的逻辑后端服务器中,我保留来自oauth服务器的每个用户的oauhId, 现在考虑分别恢复这两个数据库,现在logic server中的my use

  • 冯·诺依曼体系结构 计算机处理的数据和指令一律用二进制数表示 顺序执行程序 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 数据的机内表示 二进制表示 机器数 由于计算机中符号和数字一样,都必须用二进制数串来表

  • 问题内容: 我是Web服务,JAX-WS等的新手,所以也许是菜鸟问题… 因此,我想实现一个Web服务以使两个系统通信。“客户端”系统对在“服务器”系统上生成的事件感兴趣。但是“客户端系统”本​​身就是用于其他应用程序的服务器。服务器是Java(tomcat中的WAR)。客户端是.Net。 应该只有一个客户端系统,但是客户端系统内部应该有几个客户端进程,每个进程都对不同类别的事件感兴趣。 我将实现服