OPENSTACK组件介绍:
keystone
swift
glance
cinder
nova
neutron
swift 对象存储
glance 镜像管理
cinder 云硬盘管理 block存储
nova 计算服务管理
neutron 网络管理
glance里面是需要去keystone认证鉴权的,如下: 鉴权uri,用户,密码,以及租户名称:tenantname
其他的服务也需要到keystone来认证鉴权的。
openstack 框架介绍:
控制节点
网络节点
存储节点
计算节点
neutron是负责网络的,但是neutron这个组件里面包含了很多个服务
neutron-server 是控制节点运行的服务
neutron-dhcp,neutron-l3,neutron-metadata是网络节点的服务,neutron-ovs-agent是计算节点运行的服务
nova服务
openstack-nova-compute.service 是运行在计算节点的。
所有的这些组件想合法工作的话,必须和keystone进行注册。
AMQP: 高级消息队列协议
两种实现方式:rabbitmq和qpid
所有相关服务都需要连接到AMQP,使得服务之间可以通信,如果没有AMQP,它们之间是不能通信的。
Keystone功能介绍与认证实现流程
Keystone这个子项目为Openstack通过了Account、Authentication、Authorization服务——简称3A。在安装OpenStack Identityservice后,其他的OpenStack service必须要在Identity service中注册才能被使用。
Identity service功能列表:
身份认证(Authentication):令牌的发放和校验
用户授权(Authorization):授予用户在一个服务中所拥有的权限
用户管理(Account)
服务目录(Service Catalog):包含可用服务的API point
Keystone认证服务中的概念
User(用户):一个People or System orService在OpenStack中的数字表示。用于身份认证,也能够通过为登录到Openstack的用户分配令牌环,以此获得访问资源的权限。同一个用户可以被关联到给若干个租户,就像用户可以隶属于若干个不同的组。
Tenant(租户):一个资源或对象的抽象表示。租户可以包含多个用户,不同租户之间相互隔离。根据service运行的需求,租户可以映射为账户、组织、项目或服务。
Role(角色):可定制化的包含有特定用户权限的权限集合,可以关联到若干个User-Tenant对,来为User-Tenant对赋予权限。
Token(令牌):用于限定User-Tenant对进行OpenStack API和资源访问的字符串表示。一个临牌会持续一段时间有效,也可以随时撤销。
Credentials(凭证):用于确认用户身份的数据,例如:Username/Password
Authentication(检验):是确定用户身份的过程。
Service(服务):Openstack service,即Openstack中运行的组件服务。
Endpoint(端点):一个可以通过网络来访问和定位某个Openstackservice的地址,通常是一个URL。使用RESTful的设计思想,详见RESTful_URI资源 。
Keystone Client(Keystone CLI):Keystone的命令行工具,可以完成诸如创建用户,角色,服务和端点等绝大多数的Leystone管理功能,是非常常用的CLI接口。
简单来说
User 使用凭证(username/password) 到 keystone 验证并获得一个临时的 Token 和 Generic catalog(全局目录)
,临时的 Token 会存储在keystone-client(cache UUID locally) 和 keystone-backend 中。
User 使用这个临时 Token 发送给 keystone 并获得一个该 User 能访问的 Tenants 列表
User 再跟 keystone 发送一个请求,表明希望访问的 Tenants
keystone 就会向 User 发送一个管理这个 Tenants 的 Services 列表和允许访问这个 Tenants 的 Token (TenantsToken)
User 会通过这个 Services 和 Generic catalog(全局目录) 映射找到 Services 的 endpoint,并通过 endpoint 找到实际 Services 组件的位置
然后 User 再拿着 Tenant Token 和 endpoint 来访问实际上的 Service 组件
Service 组件会拿着这个 User-Tennat Token 对到 keystone 做进一步的验证(Openstack 要保证每一步操作都是安全的)
如果通过了 7. 的验证的话,keystone 会返回一系列的确认信息和附加信息(User 希望操作的内容)给 Services
最后 Services 执行一系列的操作