欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2023-11-19 13:45:10
openstack identity(keystone)服务为运行openstack compute上的openstack云提供了认证和管理用户、帐号和角色信息服务,并为o...

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)身份服务、体系结构与中间件 ,希望对大家有所帮助