• (原创)OpenStack服务如何使用Keystone(一)---Keystone端的操作


      (一)Keystone端的操作

      (二)如何在OpenStack服务上部署Keystone中间件

      (三)详细配置keystonemiddleware

      OpenStack项目如果要使用Keystone作为统一的身份与权限管理系统, 需要做一定的设置工作, 我们将这些设置划分为在Keystone端进行的操作和在其他OpenStack服务端进行的操作, 本文介绍在Keystone端如何为其他服务建立对应的"服务用户"和维护整个系统的服务目录.

      OenStack中用户使用身份凭证登录系统, 获得Keystone签发的令牌, 其后在整个OpenStack系统中使用该令牌访问其他的服务(如Nova等)直至令牌失效或被撤销. 令牌在OpenStack系统内提供了单点登录的支持, 简化了系统对用户的认证, 成为用户身份和权限管理的重要对象.

      用户在使用已经获得的令牌请求OpenStack的其他服务时, 这些服务必须验证令牌的有效性--即这个令牌确实是Keystone已经签发的,且没有过期和被撤销. 这个验证工作由项目名称为"keystonemiddleware"的Keystone中间件完成. Keystone中间件部署在OpenStack其他服务上, 调用项目(或库)"python-keystoneclient"提供的接口, 验证用户令牌的有效性. Keystone中间件进行的验证工作需要访问Keystone的身份API, 这个操作需要一定的权限才能完成. 因此需要在Keystone端先为Keystone中间件创建用户, 再为这个用户指派具有相应权限的角色.由于部署和配置Keystone中间件的工作在其他OpenStack服务端完成, 因此将创建用户和授予角色等操作针对服务进行, Keystone中间件直接使用自己部署在的服务具有的账户信息即可. (当然, 也可以直接绕过身份认证, 将Keystone中间件的令牌设置成引导Keystone时设置的"admin_token", 这样Keystone中间件默认具有最高权限).

      Keystone端的工作主要包括以下两个方面:  

      1. 创建"服务用户"并指派角色.

      2. 维护整个OpenStack系统的服务目录.

      下文就围绕这两方面工作详细展开.

    一. 创建"服务用户"并指派角色

      1. 创建"服务项目"

      从上文可以看出, OpenStack服务或部署在其上的Keystone中间件实质上也是Keystone的用户. 通常我们为所有的OpenStack服务创建一个统一的项目, 如"service". 这里使用openstackclient完成命令行操作, 所有的操作都是基于第三版的身份API完成.

      首先与系统建立一个会话,

    $ openstack --os-token admin_token --os-url keystone_url --os-identity-api-version 3 #Press Enter

      

      一旦认证成功, 系统显示如下的提示符, 表示进入到openstackclient提供的脚本界面.

    (openstack) YOUR_COMMAND_HERE

      

      接着创建一个包含所有将要部署的OpenStack服务的"服务项目", 这里将其命名为"service".

    (openstack) project create service

      

      为具体类型的OpenStack服务(这里以Nova为例)创建属于他们的用户(当然也可以多个服务使用一个用户名).

    (openstack) user create --password PassWord --project service nova

      

      在已经配置好Keystone, 创建和定义了具体的管理员角色后, 为刚刚新建的"服务用户"授予项目内的管理员角色, 确保其能够调用验证令牌的身份API. 这里以授予系统默认的"admin"角色为例.

    (openstack) role add admin --project service --user nova

      这样用户"nova"就具有了在项目"service"上的"admin"角色.

    二. 维护整个OpenStack系统的服务目录

      Keystone在OpenStack系统中提供的一项重要支持就是维护着整个系统中所有服务的目录. 包括服务的类型, 名称, 具体的端点URL等. 其他服务如Dashboard非常依赖这些信息. Keystone自带两种服务目录存储驱动, 既可以将服务目录存储在文件中, 也可以存储在SQL后端中. 当然, 前端的用户接口都是一样的.

      在向OpenStack系统中添加服务时, 应将其注册到Keystone的服务目录下, 这样其他服务才能通过服务目录找到它.

    (openstack) service create nova --type compute 
                                    --description "Nova Compute Service"
    (openstack) service create glance --type image 
                                      --description "Glance Image Service"
    (openstack) service create keystone --type identity 
                                        --description "Keystone Identity Service"
    (openstack) service create swift --type object-store --description "Swift Service"

      

      OpenStack系统中服务只是一个抽象的概念, 具体的功能是通过访问服务对应的端点(URL)完成的, 因此必须在成功部署某个服务端点后其添加到系统的服务目录.

    (openstack) endpoint create keystone public http://201.111.129.48:5000/

      

      上面的指令将一个端点添加到了服务“keystone”的公共界面. 端点可以属于特定的地理域, 具体操作可以查阅这里.

      这里就完成了部署OpenStack服务时在Keystone端进行的操作. 前文已经说过, 其他服务与Keystone的交互通常是由Keystone中间件完成的, 下一篇随笔将介绍如何在OpenStack服务上部署Keystone中间件.

  • 相关阅读:
    用感知机(Perceptron)实现逻辑AND功能的Python3代码
    xpadder教程:自定义设置游戏手柄的图片
    用Python实现小说中的汉字频率统计
    天猫精灵X1智能音箱使用感想
    一道常被人轻视的前端JS面试题
    jQueryNotes仿QQ空间添加标记
    JQ对象到底是什么
    正则匹配规则
    自定义右键菜单
    IIS处理并发请求时出现的问题及解决
  • 原文地址:https://www.cnblogs.com/Security-Darren/p/4143072.html
Copyright © 2020-2023  润新知