Openstack私有云之keystone简介

一、keystone概述

Keystone是一项OpenStack服务,通过实现OpenStack的Identity API来提供API客户端身份验证,服务发现和分布式多租户授权 。同时它也同Nova, Cinder, Glance,Neutron一样是OpenStack的核心组件

二、keystone基本概念

User(用户)

  • 在openstack中,用户是使用openstack云服务的人、系统或服务。用户可以登录或使用指定的token访问云中的资源,并可以被指派到指定的项目或角色。
  • 认证服务通过 对用户身份的确认,来判断一个请求是否被允许。用户通过认证信息如密码、 API Keys等进行验证

project(项目/租户)

  • 租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。
  • 项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。在Nova服务中项目可以是云主机,在 Swift和Glance中项目可以是镜像存储,在Neutron中项目可以是网络资源。默认情况下,用户总是被绑定到项目中。一个项目中可以有多个用户,一个用户可以属于一个或多个项目。

Role(角色)

  • Role即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。
  • Users可以被添加到任意一个全局的或租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。

Service(服务)

  • Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务

Endpoint(端点)

  • Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息
  • 一个endpoint 模板包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。publicurl可以被全局访问(如http://compute.example.com),privateurl只能被局域网访问(如http://compute.example.local),admin url被从常规的访问中分离。

token(令牌)

  • 是一串数字字符串,用于访问openstack服务的API以及 资源。一个令牌可以在特定的时间生效,并可以在任意时间释放

三、keystone认证的流程图

在这里插入图片描述
1、用户通过dashboard界面或者命令行的形式登录

2、keystone会对用户进行验证,通过后会发送一个令牌和端点模板给用户

3、用户查看端点模板可以看见所有存在的服务endpoints信息,比如用户此时想创建一个实例,会拿着令牌通过端点地址访问nova模块,nova会拿着令牌向keystone校验,通过后nava模块启动,开始调用glance模块和neutron模块

4、glance和neutron模块会拿着令牌再次向keystone校验,认证成功后开始工作。

5、nova模块开始创建实例,并将信息返回给user

四、keystone常用命令

user(用户)

  • 列出keystone用户
openstack user-list
  • 创建用户
openstack user create [-h] [-f {json,shell,table,value,yaml}]
			[-c COLUMN] [--max-width <integer>]
			[--print-empty][--noindent][--prefix PREFIX]
			[--domain <domain>] [--project <project>]
			[--project-domain <project-domain>]
			[--password <password>] [--password-prompt]
			[--email <email-address>]
			[--description <description>]
			[--enable | --disable] [--or-show]
			<name>
  • 删除用户
openstack user delete <user-id>
  • 显示用户详细信息
openstack user show <user-id>
  • 更新用户的信息
openstack user set [-h] [--name <name>] [--domain <domain>]
			[--project <project>]
			[--project-domain <project-domain>]
			[--password <password>] [--password-prompt]
			[--email <email-address>]
			[--description <description>] [--enable | --disable]
			<user>

project(项目)

  • 显示项目列表
openstack project list
  • 创建项目
openstack project create (--domain domain名字) name 
  • 删除项目
openstack project delete <project-id>
  • 更新项目信息
	openstack project set [-h] [--name <name>] [--domain <domain>]
			[--description <description>]
			[--enable | --disable] [--property <key=value>]
			<project-id>
  • 显示项目详细信息
	openstack project show <project-id>

Role(角色)

  • 显示角色列表
	openstack role list

  • 创建角色
	openstack role create name
  • 删除角色
	openstack role delete <role-id>
  • 显示角色详细信息
	openstack role show <role-id>
  • 赋予用户一个角色
	openstack role add --project(项目名) --user(用户名) role(角色名)

  • 查看用户与角色的对应关系—显示的表格是id
openstack role assignment list
  • 删除用户的一个角色
	openstack role remove [-h] [--domain <domain> | --project <project>]
				[--user <user> | --group <group>]
                [--group-domain <group-domain>]
                [--project-domain <project-domain>]
                [--user-domain <user-domain>] [--inherited]
                <role-id>

Service(服务)

  • 显示服务列表
	openstack service list
  • 创建服务
	openstack service create [-h] [-f {json,shell,table,value,yaml}]
			[-c COLUMN] [--max-width <integer>]
			[--print-empty] [--noindent] [--prefix PREFIX]
			[--name <name>] [--description <description>]
			[--enable | --disable]
			<type>
  • 删除服务
	openstack service delete <service-id>
  • 显示服务详细信息
	openstack service show <service-id>

Endpoint(端点模板)

  • 显示Endpoint列表
	openstack endpoint list
  • 创建Endpoint
	openstack endpoint create [-h] 
			[-f {json,shell,table,value,yaml}]
			[-c COLUMN] [--max-width <integer>]
			[--print-empty] [--noindent]
			[--prefix PREFIX] [--region <region-id>]
			[--enable | --disable]
			<service> <interface> <url>
  • 删除Endpoint
	openstack endpoint delete <endpoint-id>
  • 显示Endpoint详细信息
	openstack endpoint show <service-id>
发布了59 篇原创文章 · 获赞 66 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42953006/article/details/104828968