keystone组件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keystone组件相关的知识,希望对你有一定的参考价值。
引: 什么是keystone
为何要有keystone
keystone的功能
keystone概念详解
keystone与openstack其他组件关系
keystone与其他组件协同工作流程
keystone工作流程详解
一、什么是keystone
keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理与授权的组件。
主要功能:实现用户的身份认证,基于角色的权限管理,及openstack其他组件的访问地址和安全策略管理。
二 、为何要有keystone
Keystone项目的主要目的是给整个openstack的各个组件(nova,cinder,glance...)提供一个统一的验证方式:
openstack是由众多组件构成的一套系统,该系统的功能是对外提供服务,因而我们可以将其定义为一个‘庞大的软件’,没有软件不考虑安全因素,Keystone对于通常的应用场景所不同的是他要解决分布式环境下的统一认证。
三、keystone的功能
openstack是一个SOA(面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来)架构,理论上各子项目独立提供相关服务,互不依赖。如nova提供计算服务,glance提供镜像服务等。
实际上所有的组件都依赖keystone,它有两个功能:
(1)用户管理:验证用户身份的合法性。
(2)服务目录管理:提供服务目录(ServiceCatalog:包括service和endpoint)服务,类似于UDDI服务的概念,用户(无论是Dashboard, APIClient)都需要访问Keystone获取服务列表,以及每个服务的地址(Openstack中称为Endpoint)
四、 keystone概念详解
User:
使用 OpenStack Service 的的对象被称为用户,这里的用户可以是人、服务、系统。
Credentials:
用于确认用户身份的凭证,
具体可以是:
1、用户名和密码
2、用户名和API key
3、一个 Keystone 分配的身份token
Authentication:
确定用户身份的过程。
1、是验证用户身份的过程。Keystone 服务通过检查用户的 Credential 来确定用户的身份。
2、最开始,使用用户名/密码或者用户名/API key作为credential。当用户的credential被验证后,Kestone 会给用户分配一个 authentication token 供该用户后续的请求使用。
3、Keystone中通过Policy(访问规则)来做到基于用户角色(Role)的访问控制。
Token:
1、令牌,使用一个字符串表示。
2、Token一般被用户持有,Token包含了在指定范围和有效时间内可以被访问的资源。在Nova中一个tenant可以是一些虚拟机,在Swift和Glance中一个tenant可以是一些镜像存储,在Network中一个tenant可以是一些网络资源。
Role:
1、本质就是一堆ACL的集合,用于划分权限
2、可以通过给User指定Role,使User获得Role对应的操作权限。
3、Keystone返回给User的Token包含了Role列表,被访问的Services会判断访问它的User和User提供的Token中所包含的Role,及每个role访问资源或者进行操作的权限。
4、系统默认使用管理Role admin和成员Role _member_ 。
5、user验证时必须带有Project(Tenant)
Policy:
1、对于Keystone service来说,Policy就是一个JSON文件,默认是/etc/keystone/policy.json。通过配置这个文件,Keystone实现了对User基于Role的权限管理。
2、OpenStack对User的验证除了OpenStack的身份验证以外,还需要鉴别User对某个Service是否有访问权限。Policy机制就是用来控制User对Project(Tenant)中资源的操作权限。
Service:
指Openstack中运行的组件服务。
Endpoint:
1、是一个可以通过网络来访问和定位某个Openstack service的地址,通常是一个URL
2、不同的region有不同的endpoint(我们可以通过endpoint的region属性去定义多个region)。
3、当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。
4、Endpoint 分为三类:
admin url –> 给admin用户使用,Port:35357
internal url –> OpenStack内部服务使用来跟别的服务通信,Port:5000
public url –> 其它用户可以访问的地址,Port:5000
V3新增的概念:
Tenant 重命名为 Project
添加了 Domain 的概念
添加了 Group 的概念
本文出自 “游走的风” 博客,请务必保留此出处http://774148515.blog.51cto.com/10937712/1892967
以上是关于keystone组件的主要内容,如果未能解决你的问题,请参考以下文章