zoukankan      html  css  js  c++  java
  • OpenStack的Keystone组件详解

    一:简介

        一、作用

           1. 用户管理:验证用户身份信息合法性

           2. 认证服务:提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库。

           3. Keystone是Openstack用来进行身份验证(authN)及高级授权(authZ)的身份识别服务,目前支持基于口令的authN和用户服务授权。

        二、概念

           1. 租户(Project):个人或服务所拥有的资源集合。在一个Project(Tenant)中可以包含多个User,每一个User都会根据权限的划分来使用Project(Tenant)中的资源。

           2. 用户(User):访问OpenStack的对象。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。

           3. 证书(Credentials):确认用户身份的凭证。可以是用户名和密码、用户名和API Key和Token。

           4. 令牌(Token):一个字符串表示,作为访问资源的令牌。Token包含了在指定范围和有效时间内可以被访问的资源,具有时效性。

           5. 角色(Role):用于划分权限。可以通过给User指定Role,使User获得Role对应的操作权限。Keystone返回给User的Token包含了Role列表,被访问的Services会判断访问它的User和User提供的Token中所包含的Role。

           6. Policy:用来控制User对Project中资源(包括Services)的操作权限。对于Keystone service来说,Policy就是一个JSON文件,默认是/etc/keystone/policy.json。

           7. Authentication:确定用户身份的过程

           8. 服务(Service):Openstack中运行的组件服务

           9. Endpoint:通过网络来访问和定位某个Openstack service的地址,通常是一个URL。分为三类:

               1. admin url —>管理员用户使用 ,Port:35357

               2. internal url —>openstack内部组件间互相通信(内部访问), Port:5000 (组件之间通信基于Restful api)

               3. public url —> 其他用户访问地址(全局访问),Port:5000

              

    二:架构

        一、工作原理

          

           1. 首先User向Keystone提供自己的Credentials(凭证:用于确认用户身份的数据,EG. username/password)。

           2. Keystone根据User提供的Credentials从SQL Database中进行身份和权限校验,验证通过返回User一个Token和Endpoint 。

           3. User得到授权(Token)和Endpoint后根据自身权限操作OpenStack的资源

        二、在各个组件中的作用

          

           1. User通过命令行或者API的方式登录后,提供自己的Credentials(凭证:用于确认用户身份的数据,EG. username/password)。

           2. Keystone根据User提供的Credentials从SQL Database中进行身份和权限校验,验证通过返回User一个Token和Endpoint。

           3. 此后User所有的Request都会使用该Token进行身份验证。

           4. 从以上过程可以看出,用户的角色管理在 Keystone 中是很重要的工作。在Keystone V3之前,用户的权限管理以每一个用户为单位,需要对每一个用户进行角色分配,并不存在一种对一组用户进行统一管理的方案,这给系统管理员带来了额外的工作和不便。此外,Keystone V3之前的版本中,资源分配是以 Tenant 为单位的,这不太符合现实世界中的层级关系。如一个公司在 Openstack 中拥有两个不同的项目,他需要管理两个Tenant来分别对应这两个项目,并对这两个 Tenant 中的用户分别分配角色。由于在 Tenant 之上并不存在一个更高层的概念,无法对 Tenant 进行统一的管理,所以这给多 Tenant 的用户带来了不便。为了解决这些问题,Keystone V3 提出了新的概念Domain和Group。

        三、访问流程

         

           1. User/API 想创建一个实例,首先会将自己的Credentials发给Keystone。认证成功后,keystone会颁给User/API一个临时的令牌(Token)和一个访问服务的Endpoint。

           2. User/API 把临时Token提交给Keystone,Keystone返回一个Tenant(Project)。

           3. User/API 向Keystone发送带有特定租户的凭证(交互权限),告诉Keystone User/API在哪个项目中,Keystone收到请求后,会发送一个项目的Token到User/API (访问权限),User/API 拿着Token和Endpoint找到可访问服务。

           4. 服务向keystone进行认证,Token是否合法,它允许访问使用该服务(判断用户/API中role权限)?

           5. Keystone向服务提供额外的信息。User/API是允许方法服务,这个Token匹配请求,这个Token是User/API的

           6. 服务执行User/API发起的请求,创建实例

           7. 服务会将状态报告给用户/API。最后返回结果,实例已经创建

     

    三:常用操作

        

        

  • 相关阅读:
    对javascript匿名函数的理解(透彻版)
    js操作Cookie
    C# WinForm WebBrowser (一) MSDN资料
    asp.net 生成静态HTML方法
    ASP.NET 操作XML
    c# WinForm 登陆 Program.cs 中代码
    Jquery 将后台返回的字符串转换成Json格式的数据
    获取数据库中的所有用户表、取数据表的描述信息包括描述说明
    asp.net 发送QQ邮件
    设置服务器文件的访问权限
  • 原文地址:https://www.cnblogs.com/mh20131118/p/12942346.html
Copyright © 2011-2022 走看看